Chorus [ˈkɔr əs] - 1. (Music) a group of persons singing in unison.
NOTE: This project is currently in a "public beta" stage. Changes to schematic and software are very likely. Feel free to contribute and/or share your usage results to improve the project.
This is a VTX Radio Frequency Lap Timing solution for drone racers - the evolution of a Solo DIY RF Laptimer project. Several updated Solo Laptimer devices connected together make up a Chorus Laptimer device which is capable of tracking several drones at once. This is a "lightweight" alternative to IR lap timing systems having the advantage that it does not require any additional equipment on drones except VTX.
- Chorus RF Laptimer Facebook group: https://www.facebook.com/groups/ChorusRFLaptimer/
- Chorus RF Laptimer discussion thread @ RC Groups: https://www.rcgroups.com/forums/showthread.php?2801815
- PC GUI Interface project for Chorus RF Laptimer: https://github.com/anunique/ChorusGUI
- Delta5 Race Timer Facebook group: https://www.facebook.com/groups/Delta5RaceTimer/
- Terminology
- Features
- Limitations
- How it works
- Hardware
- Software
- Setup and Usage Guide
- Troubleshooting
- Contributors
- Contacts
Solo - device for tracking a single drone. Parts cost about $12. Consists of Arduino Pro mini, RX5808 module, connectors, optional buzzer, optional resistors:
Chorus - several (2+) connected Solo devices:
- No additional equipment besides 5.8GHz Video Transmitter required on a drone.
- Measure lap times with 1ms resolution.
- Android application for controlling the device via Bluetooth.
- 5V * 250 mA power consumption (per device)
- Low cost (around $16 per device, excluding power supply), compared to similar solutions available on market.
- Can be tuned to any RF band/channel
- Monitors several frequencies simultaneously (corresponding to a number of devices)
- Expandable: make one Solo device and track your solo flight times; make more devices, connect them into a Chorus and compete with teammates
- Automatic detection of a number of Solo devices in a Chorus
- Spoken notifications, including lap results
- Adjustable LiPo battery monitoring and spoken notifications of low battery
- Compatible with EasyRaceLapTimer software v.0.6 (can act as simple VTx sensor but still needs to be preliminarily set up via Bluetooth).
- Tracks up to 100 laps.
- Doesn't work with digital VTx equipment (like Connex)
- Settings and measurements data is kept on Arduino side and gets lost when the Laptimer device is powered off.
- Although expandable, definitely has a physical limit on a number of stacked devices (depending on UART throughput of the last device in a chain)
- No software for iOS so far (iOS develpers, please join!).
Each Solo device measures a VTx signal strength (RSSI value) and compares it with a threshold set up. If the RSSI value is above the threshold, the corresponding drone is considered passing a finish gate.
- RX5808 (with SPI patch) (N items)
- Arduino Pro Mini 5V 16MHz or Nano v.3.0 (N items)
- HC-06/HC-05 Bluetooth module (1 item)
- 5V power supply (for example 2-4S LiPo with 5V BEC) (1 item)
- Piezo buzzer (5V, without built-in generator) - optional (N items)
- 2 Resistors (1K and 10K) for LiPo Voltage monitoring - optional (N items)
Make sure your bluetooth module baud rate is set to 115200 (use any of numerous tutorials on internet).
Generalized steps:
- Connect HC-06 -> USB-UART Adapter -> PC
- Open Arduino IDE, set adapter's COM port, run Serial Monitor
- Send command: "AT+BAUD8" (module replies "OK115200")
You might also like to change BT device name and default PIN (which is "1234") using commands "AT+NAMEdevicename" and "AT+PINxxxx" respectively.
(copied from sheaivey/rx5808-pro-diversity repo)
In order to get the RX5808 to use SPI you will need to open it and remove a single SMD resistor.
For older versions of RX5808 use these instructions.
Parts may be connected directly without using any additional components:
UPDATE: powering RX5808 from Arduino's VCC was a bad idea - Pro Mini's linear regulator might not be able to provide enough power for RX, so use raw 5V power instead.
Note the resistor divider for LiPo Battery monitoring. Although just one of the Solo devices in a Chorus should be connected to LiPo battery for monitoring, but make sure to have A0 Arduino pins on all other Solo devices connected to Ground (via 1K resistor) or just solder the resistors on each Solo device according to schematic.
It seems to work fine being connected this way, however adding 100 Ω resistors in line on SPI wires (Arduino pins 10, 11, 12) is a good idea to prevent possible glitches with channel selection:
Schematic and PCB design in DipTrace format are available in the DipTrace folder.
Correct positioning of RX5808 module against the finish gate area is vital for correct measurements.
I tried using different types of antennas and shields with RX5808 to achieve the best possible accuracy, and finally found that the module itself works as a short-range directional antenna. The non-shielded side of the module is a surface that should face the gate, so consider this fact upon assembling.
- Make several Solo devices.
- Connect them together.
- Connect a Bluetooth module to the last Solo device in a chain.
- Use a jumper on the first Solo device to shorten two upper pins.
- Attach 5V power supply to one of the Solo devices (make sure to supply enough power - each Solo device consumes about 250mA).
- Optionally attach LiPo battery to one of the solo devices that has a resistor divider for LiPo Monitoring feature
Download the project from Arduino folder, open chorus-rf-laptimer.ino file with Arduino IDE and upload to each Solo device.
Download the ChorusRFLaptimer-release.apk file from Android/app folder and install on your Android device or use the following QR code to download:
(Make sure to allow installation from unknown sources in your Android device settings).
Application startup screen:
Use "⋮" menu to connect/disconnect to your Chorus device.
Once connected to Chorus device, the app automatically detects a number of stacked Solo devices and shows corresponding controls.
The app consists of 4 tabs:
- SETUP - race preconditions and device settings:
- FREQ - VTX channel/band for each Solo device
- PILOTS - Pilot name and RSSI threshold for each channel
- RACE - start/stop race and race results
Controls on the tabs are mostly self-explanatory. Still some clarifications might be useful:
- Enable device sounds: tick to enable device buzzers.
- Minimal Lap Time: use +/- to increase/decrease minimal lap time. Set enough time to let a drone leave the "above-threshold RSSI area" after lap time is captured.
- Skip first lap: tick if start table is located before the start/finish gate (first lap time will be skipped because it's not a full lap); untick if start table is located right behind the laptimer (first lap time will be tracked only if minimal lap time is passed after the race start).
- RSSI Threshold: use +/- to fine-tune RSSI threshold.
- Set/Clear: tap to capture/clear currently measured RSSI value as a threshold.
- Calibrate Timers: different Arduino devices have different oscillators accuracy and it may slightly deviate from 16MHz. In order to make sure that same timespan is measured equally on different devices, you need to calibrate them before the race.
- Start Race: tap to start tracking laps. This same button is used to Stop the race.
When you stop the race, Chorus device immediately clears saved lap times, but they remain visible in the application until new race is started.
LiPo Monitoring feature has a "hidden" possibility for adjustment. If voltage measured by LiPo Monitor in Android App doesn't correspond to real voltage of your battery, perform a long tap on a voltage value to see the Adjustment controls:
Adjust until measured voltage corresponds to the voltage of your LiPo battery while it's powering the Chorus device.
- Power on the Chorus device and place it on one side of the finish gate.
- Start the Android app and connect to the Chorus device.
- Setup VTX Band/Channel for each Solo device in Android app (on the "Freq" tab)
- Fully prepare racing drones and power them up (VTX must be powered in racing mode).
- Go a bit beyond the opposite side of the gate with the powered drone (normally 3-4 meters from the installed Chorus Laptimer).
- Capture current RSSI value as a threshold using the Android app (use "Set" button for appropriate channel on "Pilots" tab).
- Repeat steps 5,6 for each drone taking part in a race.
- Calibrate timers using the corresponding button on a "Race" tab (in case you have more than 1 Solo device).
- Start Race in the app.
- Fly the track and see the lap times being captured.
Also consider shielding the Chorus device with a piece of metal on one side where drones are approaching from. It might increase the accuracy by partially blocking the VTx signal before a drone is inside a gate.
If the app connects to Bluetooth module but doesn't seem to communicate with the device, check the following:
- Arduino must be 5V 16Mhz (proper work of 3.3V 8Mhz is not guaranteed)
- Bluetooth module baud rate must correspond to Arduino's: 115200 baud
- Loopback jumper must be in place.
- Wiring :)
Big thanks to all contributors to this project:
Android app:
- Louis Plett (highway11) - voice speaking
- Ray Erik Rabe (raveerk) - CSV reports generation
- evgen48 - display frequencies in MHz
- YouTube channel: https://www.youtube.com/user/voroshkov
- Facebook: https://www.facebook.com/andrey.voroshkov
- RCGroups discussion thread: https://www.rcgroups.com/forums/showthread.php?2801815
Feel free to ask questions, suggest improvements, report your usage results.
Happy flying!