alessandroau / chorus32-esp32laptimer Goto Github PK
View Code? Open in Web Editor NEWThis is an ESP32 port of the popular Chorus RF Laptimer
License: GNU General Public License v3.0
This is an ESP32 port of the popular Chorus RF Laptimer
License: GNU General Public License v3.0
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
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.
We've never specified a license.
We are also required to attribute the original project (if we have any original code left).
Personally I'd prefer a license with copyleft (like the GPL), but would also be fine with the MIT license like the original project.
Whatever we choose, we need permission from all contributors.
Thoughts? @JyeSmith @AlessandroAU @LuisDiazUgena @mike-levenick @swampmonster
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?
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
Hi! I just noticed the iOS app was no longer available.
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.
I'm building a setup based on this wiring schema.
Does this schema match the BOARD_DEFAULT
or the BOARD_OLD
build target?
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.
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.
Mistakenly I connected the battery when USB cabel was attached.
It fried the regulator on the ESP32
The ESP32LapTimer.ino file says to check the readme but the information there is quite sparse :)
UPDATE: Here is how I did it.
upload_port = /dev/cu.Repleo-CP2102-0001
)pio run -e BOARD_OLD -t upload
pio run -e BOARD_OLD -t uploadfs
Chorus32 LapTimer
wifiUse BOARD_OLD
if you are using this wiring schema and BOARD_DEFAULT
if you're using the PCB v2.2 wiring schema.
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.
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?
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...
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
I have found this on Youtube and was wondering if it was possible to integrate this in Chorus32?
Move Platformio.ini and .gitignore out of ESP32LapTimer folder
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.
Use with LiveTime requires serial correct?
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/
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
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.
We are currently only using a threshold based approach, where we trigger a new lap as soon as the threshold is reached. I think I don't have to explain, why this isn't ideal.
I did some test with a simple max based approach, which showed a significant difference in time (about 50ms): https://github.com/Smeat/Chorus32-ESP32LapTimer/wiki/Data
The original project also has another trigger mode which might be worth a look
Hi!
How do you modify channels assigned to each ADC?
please resubmit the app
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.
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.
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
Hi, is this still in Developing?
I Have no Speaking on IOS, iPhone 14 up to date.
Greets Andreas
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.
Build in VScode with platformio extension. In Buttons.cpp change:
from
#ifdef USE_NORMAL_BUTTONS
to
#ifndef USE_NORMAL_BUTTONS
Another, got issue #127
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
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.
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 :)
Hi!
I started to create the interface for updating band and channel from webserver:
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":
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.
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!
Hi!
I was wondering if you can share a link to the board that you're using to built this.
TY.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.