GithubHelp home page GithubHelp logo

alessandroau / chorus32-esp32laptimer Goto Github PK

View Code? Open in Web Editor NEW
82.0 25.0 32.0 24.33 MB

This is an ESP32 port of the popular Chorus RF Laptimer

License: GNU General Public License v3.0

C 31.06% C++ 49.58% CSS 10.14% HTML 6.69% JavaScript 2.35% Shell 0.17%

chorus32-esp32laptimer's People

Contributors

alessandroau avatar jyesmith avatar luisdiazugena avatar mike-levenick avatar nandox7 avatar rumpelst1lzk1n avatar smeat avatar swampmonster avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chorus32-esp32laptimer's Issues

Oled shows garbage

Hi, i have build it today, so far its working but didn't shows the right Information on oled instead it shows garbage.
Its an 128x64 oled.

Hardware

Hi!

I was wondering if you can share a link to the board that you're using to built this.

TY.

Missing "brzo_i2c.h" file from compile

Hello, I am getting the following error when trying to compile the project:

C:\Users\AlphaFPV\Documents\Arduino\libraries\ESP8266_and_ESP32_OLED_driver_for_SSD1306_displays\src/SH1106Brzo.h:35:22: fatal error: brzo_i2c.h: No such file or directory

The libraries have been correctly installed, and the error happens both with the .zip lib or with the downloaded one.

Webserver - Error

Hi Allesandro

I tried to get the webserver runnig, when im doing the sketch data upload - the following message will display:

Arduino: 1.8.7 (Windows 10), Board: "ESP32 Dev Module, Disabled, Minimal SPIFFS (Large APPS with OTA), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

[SPIFFS] data : C:\Users\motte\OneDrive\Dokumente\Chorus Lap Timer\19-03-10 Chorus32-ESP32LapTimer-master\Chorus32-ESP32LapTimer-master\ESP32LapTimer\data
[SPIFFS] start : 4001792
[SPIFFS] size : 188
[SPIFFS] page : 256
[SPIFFS] block : 4096
/assets/css/images/overlay1.png

/assets/css/images/overlay2.png

/assets/css/images/overlay3.svg

/assets/css/images/overlay4.svg

/assets/css/main.css

/assets/css/slider.css

/err.html

/ESP32FS.java

/flag.svg

/GetStaticVars.js

/index.html

/index_.html

/jquery-3.3.1.min.js

SPIFFS_write error(-10001): File system is full.

error adding file!

SPIFFS Create Failed!
[SPIFFS] data : C:\Users\motte\OneDrive\Dokumente\Chorus Lap Timer\19-03-10 Chorus32-ESP32LapTimer-master\Chorus32-ESP32LapTimer-master\ESP32LapTimer\data
[SPIFFS] start : 4001792
[SPIFFS] size : 188
[SPIFFS] page : 256
[SPIFFS] block : 4096
/assets/css/images/overlay1.png

/assets/css/images/overlay2.png

/assets/css/images/overlay3.svg

/assets/css/images/overlay4.svg

/assets/css/main.css

/assets/css/slider.css

/err.html

/ESP32FS.java

/flag.svg

/GetStaticVars.js

/index.html

/index_.html

/jquery-3.3.1.min.js

SPIFFS_write error(-10001): File system is full.

error adding file!

SPIFFS Create Failed!

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

File ESPmDNS.h is missing for compile/upload

I try to upload the laptimer code, but arduino ide - gives the following error message:

ESP32LapTimer:7:21: error: ESPmDNS.h: No such file or directory

compilation terminated.

exit status 1
ESPmDNS.h: No such file or directory

Thanks for your help

OTA Programming

Makes sense we should have this and will be useful those of us that bury our boards in a case.

Pulls could also be accompanied with a .bin for easy uploading and testing.

Connect to Chorus RF Laptimer

Hi!

I've been trying to use the chorus RF laptimer App as listed on the README, and I can't see any of the info in the app.

I connect my android device to the Chorus32 network and signed into the network. I can see and change the setup. If I go to the Chorus RF Laptimer app, I can connect to the network (and it toast a "connected to 192.168.4.1". But there is nothing at all on the Freq and Pilots tabs.

On Race there is two buttons "calibrate timers" and "start race", which are disabled.

I've seen that in comms.ino there is a lot of functions related to chorus API, so that make me think that it's already implemented, but I'm not sure if I'm missing something.

Thanks.

Multifunction use, long range omni diversity (passive antenna tracker)

If the software could set all 6 modules, to the same Rx frequency and select the strongest output, via a video switch f.i. 2x CD4066, the unit could be also used as a long range multi diversity basestation with several hi gain antenna.

As here:
https://hobbyking.com/en_us/quanum-overlord-5-8ghz-40ch-6-antenna-diversity-receiver-w-raceband.html
Fi combined with these:
https://www.maartenbaert.be/quadcopters/antennas/triple-feed-patch-array-antenna/

Unable to connect to wifi configurator

Hi!

I was trying to use this project and I'm not being able to connect to the wifi configurator.

I've flashed the code with no issues. Also flashed href="https://github.com/me-no-dev/arduino-esp32fs-plugin pluging and uploaded esp32 sketch data.

I can connect to wifi AP, but android doesn't ask me to sign in the network. I've looked into the code, and the wifi AP seems to be 192.168.1.4, so I've tried to log using chrome, not luck again.

Here is my serial monitor output.

ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1100
load:0x40078000,len:10088
load:0x40080400,len:6380
entry 0x400806a4
[V][esp32-hal-i2c.c:1483] i2cInit(): num=0 sda=21 scl=22 freq=0
[V][esp32-hal-i2c.c:1677] i2cSetFrequency(): freq=100000Hz
[V][esp32-hal-i2c.c:1692] i2cSetFrequency(): cpu Freq=240Mhz, i2c Freq=100000Hz
[V][esp32-hal-i2c.c:1698] i2cSetFrequency(): Fifo delta=1
[V][esp32-hal-i2c.c:1677] i2cSetFrequency(): freq=700000Hz
[V][esp32-hal-i2c.c:1692] i2cSetFrequency(): cpu Freq=240Mhz, i2c Freq=700000Hz
[V][esp32-hal-i2c.c:1698] i2cSetFrequency(): Fifo delta=5
Booting....
EEPROM LOADED
6
6
[V][esp32-hal-i2c.c:1483] i2cInit(): num=0 sda=21 scl=22 freq=0
[V][esp32-hal-i2c.c:1677] i2cSetFrequency(): freq=701754Hz
[V][esp32-hal-i2c.c:1692] i2cSetFrequency(): cpu Freq=240Mhz, i2c Freq=701754Hz
[V][esp32-hal-i2c.c:1698] i2cSetFrequency(): Fifo delta=5
off
[D][WiFiGeneric.cpp:342] _eventCallback(): Event: 0 - WIFI_READY
[D][WiFiGeneric.cpp:342] _eventCallback(): Event: 14 - AP_STOP
[E][WiFiSTA.cpp:211] begin(): connect failed!
[D][WiFiGeneric.cpp:342] _eventCallback(): Event: 2 - STA_START
[D][WiFiGeneric.cpp:342] _eventCallback(): Event: 2 - STA_START
[D][WiFiGeneric.cpp:342] _eventCallback(): Event: 13 - AP_START
[D][WiFiGeneric.cpp:342] _eventCallback(): Event: 13 - AP_START
on
HTTP server started
[E][WiFiClient.cpp:264] setOption(): 9
setModuleChannelBand
0,4
32
a = 5740
setModuleChannelBand
2,4
34
a = 5780
setModuleChannelBand
4,4
36
a = 5820
setModuleChannelBand
6,4
38
a = 5860
setModuleChannelBand
0,0
0
a = 5658
setModuleChannelBand
7,0
7
a = 5917
Starting ADC reading task on core 1
Task created...
E (10695) event: mismatch or invalid event, id=63
E (10696) event: default event handler failed!
[D][WiFiGeneric.cpp:342] _eventCallback(): Event: 15 - AP_STACONNECTED
[D][WiFiGeneric.cpp:342] _eventCallback(): Event: 15 - AP_STACONNECTED
dhcps: send_offer>>udp_sendto result 0
[D][WiFiGeneric.cpp:342] _eventCallback(): Event: 17 - AP_STAIPASSIGNED

Compilation error 'touch_pad_filter_start' was not declared in this scope

Hello,

I cloned the code
Entered the ESP32LapTimer folder
Then trying to upload:

pio run -e BOARD_OLD -t upload

src/Buttons.cpp: In function 'void newButtonSetup()':
src/Buttons.cpp:63:3: error: 'touch_pad_filter_start' was not declared in this scope
   touch_pad_filter_start(BUTTON1);
   ^~~~~~~~~~~~~~~~~~~~~~
src/Buttons.cpp:63:3: note: suggested alternative: 'touch_trigger_src_t'
Compiling .pio/build/BOARD_OLD/src/HardwareConfig.cpp.o
   touch_pad_filter_start(BUTTON1);
   ^~~~~~~~~~~~~~~~~~~~~~
   touch_trigger_src_t
src/Buttons.cpp:64:3: error: 'touch_pad_set_filter_period' was not declared in this scope
   touch_pad_set_filter_period(BUTTON1);
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
Compiling .pio/build/BOARD_OLD/src/Laptime.cpp.o
*** [.pio/build/BOARD_OLD/src/Buttons.cpp.o] Error 1

Wlan connection with activated Bluetooth not possible

Hey Guys,
thanks for your project but i have one issue.
because i cant connect with the app over wifi, i activated bluetooth.
This works ok with the App but if i want to change something in the WIFI settings Page,
the Module reboot directly after i connect to the wifi Network, closed the wifi,start it again and dont show the page.
do you know something about this issue?

BR Peschi :)

New Race Mode Needed for LiveTime

For full LiveTime compatibility, a call to Chorus to get the time must be on the same clock as time reported for lap crossings.
This would require a new Race mode.

Requested addition:

3 = Race mode 3: lap times are relative to the time value in milliseconds from Arduino startup, in sync with the time send when making the 'r' call

Required hardware?

Can I just hook up an RX5808 to a ESP32 and run this project or do I need the PCB including all the other components?

By the way if there's a better place to ask questions like these please let me know!

Json package with data

I was thinking about a json rest api to communicate to and from apps.

Could be really easy to create and android app that allows to configurate the project instead of using a webserver.

The app also could be used to visualise lap times.

I have already started digging into how to create the json parser in the esp32, and got plenty of experience in software developing.

Will be nice if you can point out what needs to be changed with the app. I'm thinking about:

Timer active
Frecuency of video
Vbat scale

Dev chat for the project

Hi!

I was thinking that it would be nice to have a chat (telegram or slack will be nice) in where the people who are developing the project could chat about it. I think it will decrease dev time.

I'm going to be coding a lot for the project and would love to have a chat room to discuss some stuff.

@AlessandroAU Please, let me know what do you think about it.

Changing channel from webserver

Hi!

I started to create the interface for updating band and channel from webserver:

image

The select items are showing bands and channels and will be showed with the parsed value from the configuration data.NumRXs. So, ie: if data.NumRXs = 4, only 4 VRX configuration will be showed.

Channels can be chossed from 1 to 8 and bands ussing their "names":

image

As I click the update button on index, the url will be:

updateGeneral?NumRXs=7&band1=R&channel1=1&band2=R&channel2=2&band3=R&channel3=3&band4=R&channel4=4&band5=R&channel5=5&band6=R&channel6=6

Where each band and channel are sended ussing the same pattern.

I assume data transfer is going to be recieved at this line in webserver.ino

And needed to be stored in the eepromsettings. I think they need to be stored in RXBand, RXChannel and RXFrequencies.

I don't have the project with me, so I can't test it out. but will do during this week and let you know.

If you got any suggestions, please, feel free to contact me.

Wifi drop

Hi, after flashing scetch in Network manager i see Chorus LapTimer wifi. Connecting, and after 2 second my connection is dropping and phone trying another wifi net. Im Using DOIT ESP32 DEVKIT 1.
My flash log is below:

Build options changed, rebuilding all
Archiving built core (caching) in: /var/folders/vh/7yvqz7hs4mb3hx6h7yhhwkgh0000gn/T/arduino_cache_787905/core/core_esp32_esp32_esp32_PSRAM_disabled,PartitionScheme_min_spiffs,FlashMode_qio,FlashFreq_80,FlashSize_4M,UploadSpeed_115200,DebugLevel_none_c000cfe2de910e434d508ffe474b5bc9.a
Sketch uses 1328918 bytes (67%) of program storage space. Maximum is 1966080 bytes.
Global variables use 82732 bytes (25%) of dynamic memory, leaving 244948 bytes for local variables. Maximum is 327680 bytes.
esptool.py v2.3.1
Connecting........__
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 8192 bytes to 47...

Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 8221.8 kbit/s)...
Hash of data verified.
Compressed 15072 bytes to 9733...

Writing at 0x00001000... (100 %)
Wrote 15072 bytes (9733 compressed) at 0x00001000 in 0.9 seconds (effective 139.9 kbit/s)...
Hash of data verified.
Compressed 1329056 bytes to 779928...

Writing at 0x00010000... (2 %)
Writing at 0x00014000... (4 %)
Writing at 0x00018000... (6 %)
Writing at 0x0001c000... (8 %)
Writing at 0x00020000... (10 %)
Writing at 0x00024000... (12 %)
Writing at 0x00028000... (14 %)
Writing at 0x0002c000... (16 %)
Writing at 0x00030000... (18 %)
Writing at 0x00034000... (20 %)
Writing at 0x00038000... (22 %)
Writing at 0x0003c000... (25 %)
Writing at 0x00040000... (27 %)
Writing at 0x00044000... (29 %)
Writing at 0x00048000... (31 %)
Writing at 0x0004c000... (33 %)
Writing at 0x00050000... (35 %)
Writing at 0x00054000... (37 %)
Writing at 0x00058000... (39 %)
Writing at 0x0005c000... (41 %)
Writing at 0x00060000... (43 %)
Writing at 0x00064000... (45 %)
Writing at 0x00068000... (47 %)
Writing at 0x0006c000... (50 %)
Writing at 0x00070000... (52 %)
Writing at 0x00074000... (54 %)
Writing at 0x00078000... (56 %)
Writing at 0x0007c000... (58 %)
Writing at 0x00080000... (60 %)
Writing at 0x00084000... (62 %)
Writing at 0x00088000... (64 %)
Writing at 0x0008c000... (66 %)
Writing at 0x00090000... (68 %)
Writing at 0x00094000... (70 %)
Writing at 0x00098000... (72 %)
Writing at 0x0009c000... (75 %)
Writing at 0x000a0000... (77 %)
Writing at 0x000a4000... (79 %)
Writing at 0x000a8000... (81 %)
Writing at 0x000ac000... (83 %)
Writing at 0x000b0000... (85 %)
Writing at 0x000b4000... (87 %)
Writing at 0x000b8000... (89 %)
Writing at 0x000bc000... (91 %)
Writing at 0x000c0000... (93 %)
Writing at 0x000c4000... (95 %)
Writing at 0x000c8000... (97 %)
Writing at 0x000cc000... (100 %)
Wrote 1329056 bytes (779928 compressed) at 0x00010000 in 69.0 seconds (effective 154.0 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 144...

Writing at 0x00008000... (100 %)
Wrote 3072 bytes (144 compressed) at 0x00008000 in 0.0 seconds (effective 1452.8 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Compiling on Platformio?

The ESP32LapTimer.ino file says to check the readme but the information there is quite sparse :)

UPDATE: Here is how I did it.

  • Pull Chorus32 from github
  • Install Atom
  • Install Platformio
  • Import Arduino project in Platformio
  • Specify the upload port in platformio.ini (eg. upload_port = /dev/cu.Repleo-CP2102-0001)
  • Start Platformio Terminal (shift+command+T)
  • Run pio run -e BOARD_OLD -t upload
  • Hold boot button (important on my board!)
  • Run pio run -e BOARD_OLD -t uploadfs
  • Hold boot button
  • Connect to Chorus32 LapTimer wifi
  • Open http://192.168.4.1/
  • You should now see the configuration page

Use BOARD_OLD if you are using this wiring schema and BOARD_DEFAULT if you're using the PCB v2.2 wiring schema.

[Feature request] Add beeper support

Seems like we have some beeper code, but it isn't really used anywhere.

A solution would require the use of "vTaskDelay" or a similar approach, which doesn't use a busy wait (aka "delay") as well as the implementation of the "sound" message to disable/enable the sound.

Connection Diagram needed

Hi

I want to use an OLED board for this Project.
So can you provide Connection diagram for connecting ESP32 and RX5808 module

Sorry I don't know how to contact you for further Info about this Project.
Waiting for your reply

Thanks in Advance
SHIRISH

INA219 incorrect reading

The reading from my INA219 off by about 0.3v compared to when I read voltage with a multimeter across the battery + and -.

I've got the VIN- connected to + terminal of the battery according to this schema.

Did a miss a wire or setting somewhere?

FPV Trackside

Does anyone have succesfully connect chorus32 to fpv trackside?
There is chorus32, but I have no luck to make it work.
With android chorus app it works well
image

RSSI on RX4 spiking a bit with PCB v2

I've noticed that the ADC4 value on my new build is spiking around a bit. With nothing transmitting, RX 1-3 report RSSI bouncing between ~78-83ish, fluctuating by 5 or so.

RX4 reports RSSI bouncing from 78 up to 110 or more at times, briefly, and then back down. I've also noticed the OLED will show that bar fill completely (like, off the chart) for a brief moment and then settle down--although in-app RSSI monitoring does not show those massive spikes.

After seeing similar interference from the jumper pads under the OLED, I'm wondering if it has something to do with a voltage rail near the ADC4 trace or something, since my point-to-point build does not exhibit this behavior. Especially since RX4 is powered from a different power rail than RX 1-3 are (the upper buck converter vs the lower one).

I will be double checking all my solder joints, and also try a different ESP32 (I bought a 3 pack, and socketed the ESP32 into the board for easy swapping), but was wondering if anyone else has seen similar behavior. Perhaps a different type of filtering or something?

IOS no Speaking

Hi, is this still in Developing?
I Have no Speaking on IOS, iPhone 14 up to date.

Greets Andreas

Multiplexing channels to reduce RX5808 Count.

Both TBS and Immersions personal tracker offerings both use one module. I think this is worth perusing even loss of resolution. Might not be a good solution for large races, but practice days 1-4 pilots or even tinywhoop might be a good idea.
According to Immersions laprf app:
1 Pilot - 30ms/160kmh
2 - 60/90
3- 90/75
4-120/50

Plus battery life will be better, lower price, reduced BOM count, and smaller form factor.

Fast scanning to reduce vrx

Would be possible to implement a mode in which esp32 makes the vrx jumps through channels really quick?

That way it would be possible to reduce the number of vrx to complete the project.

RSSI calibration setup

A calibration setup is going to be needed to optimise the Rx multiplexing feature. This is the same as what Fatshark modules do e.g. checkout https://github.com/sheaivey/rx5808-pro-diversity and how it normalised a max and min RSSI.

Multiplexing a single Rx to multiple frequencies will work as is using the Rx raw RSSI and current threshold method. But let's say you have 6 Rx modules and want to run 8 quads?

You could use all 6 Rx modules to measure quads 1-6 RSSI, and then use Rx 1-2 to measure quad 7-8. This will also work with current raw RSSI readings and threshold. But you now have 60ms between every quad RSSI measurement.

Or we can use Rx 1-6 to measure quad 1-6, then Rx 1-6 for quad 7,8,1,2,3,4, then Rx 1-6 for quad 5,6,7,8,1,2, etc. See how this drops the measurements time for each quad to 30ms with an occasional 60ms gap.

The problem being that quads will be measured using different Rx modules, so an RSSI calibration is needed.

How? Add a start Calibration button to the web server. With a quad set to 25mW 1m from the laptimer the Rx modules will sweep the frequency table looking for high and low values. These are used to map the raw RSSI readings.

Not connecting on iOS

I can’t locate the lap timer on my iOS device(iPhone 6S Plus and IPad Pro).

Does not show up in Bluetooth at all, and when I try connect via WiFi it crashes the app or I get an API version error (node(1 has API version: 4 and node(0 has API version: 4)

Am I doing something wrong? I do see it on my MacBook under Bluetooth but not on any mobile devices.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.