This is a plugin being developed for the RotorHazard timing system with the following features:
- Send OSD messages to pilots using compatible equipment (such as the HDZero goggles)
- Allows for the race manager to start the race from their transmitter
- Automatically switching pilot's video channels and output power
This plugin is built to control to an external device or chip running the ExpressLRS Timer backpack over a serial port. This allows the timing system to communicate with other devices with an ELRS backpack built into them giving the timer the ability to receive state messages from a pilot's transmitter, or send messages to display OSD information directly to a pilot's goggles.
Currently, the only device supported for receiving OSD race messages from the ELRS backpack is the HDZero goggles. They come with
an internal ESP32 chip installed for the ExpressLRS backpack. Update the goggles's video receiver backpack to the latest version by either using the
ExpressLRS Configurator or the
ExpressLRS Web Flasher. Follow this guide for
the first time installation process. If assistance is needed with the installation or upgrading the goggle firmware,
ask for help in the help-and-support
channels of the ExpressLRS Discord.
Important
REMEMBER YOUR BACKPACK BIND PHRASE: The timer's backpack will use it to send OSD messages from the timer to your HDZero goggles. You will likely need to provide the bind phrase to the race director if you want OSD information at your race.
Note
The backpack bind phrase can either be the same or different than the bind phrase used for the ExpressLRS radio protocol. Setting the same bind phrase will not cause the backpack to interfere with the radio protocol.
The list below is of some of the known compatible devices for the RotorHazard Timer Backpack. It is recommended to use a chip that is capable of connecting an external WIFI antenna to help improve the range of the timer's backpack.
ELRS Device | Compatible Hardware |
---|---|
EP82 Module (DIY) | ESP8266 NodeMCU |
EP32 Module (DIY) | ESP32-DevKitC |
EP32C3 Module (DIY) | ESP32-C3-DevKitM-1U |
EP32S3 Module (DIY) | ESP32-S3-DevKitC-1U |
NuclearHazard | NuclearHazard Board v7 or newer |
Tip
While other specific development boards with similar chipsets may be supported by the targets in the table, it is not guaranteed that they work. For example, the Seeed Studio XIAO ESP32C3/S3 board do not work with the targets listed above, but when using the ExpressLRS Toolchain for building the backpack firmware, the platformio settings can be changed to build compatible firmware for XIAO boards.
Note
While a normal ExpressLRS reciever can be flashed with backpack firmware and be used for the timer backpack, this is not recommended. The primary reason behind this is that the ELRS backpack is based on ESPNow which uses the WIFI hardware of the ESP32/ESP82. Recievers typically have a small ceramic antenna installed seperately for connecting to the web UI over WIFI; this antenna is different than the the one(s) reserved for the radio protocol. The ceramic antennta would likely be less performant over an ESP32 devkit with an external WIFI antenna connected.
To build and flash the firmware, use the ExpressLRS Configurator or the ExpressLRS Web Flasher
- Connect the device to the computer over USB.
If Windows doesn't recognize the device connected over USB, a driver install or update may be required. Espressif designed boards typically either use the CP210x or FTDI USB to serial converter chips
- Select the backpack firmware mode
- If using the configurator, select
Backpack
on the left side menu. - If using the Web Flasher, select
Race Timer
under the Backpack Firmware section
- If using the configurator, select
- Select the 1.5.0 (or a newer) release
- Select the RotorHazard device category
- Select the target for the device
- Select the UART flashing method
- Enter the backpack bind phrase (for race control from the director's transmitter)
- Select the COM port for the device
- Build and flash the firmware
To build the firmware, use the ExpressLRS Configurator or the ExpressLRS Web Flasher
- Select the backpack firmware section
- If using the configurator, select
Backpack
on the left side menu. - If using the Web Flasher, select
Race Timer
under the Backpack Firmware section
- If using the configurator, select
- Select the 1.5.0 release (or a newer version)
- Select the RotorHazard device category
- Select NuclearHazard as the device
- Select the method
- If using the configurator, select
WIFI
. - If using the Web Flasher, select
Local Download
- If using the configurator, select
- Enter the backpack bind phrase (for race control from the director's transmitter)
- Build the firmware
- Follow this guide to flash the on board ESP32. Instead of downloading the backpack bin files, use the files built with the configurator.
- Verify RotorHazard v4.1.0+ is installed on the timer
- Follow the instructions in the latest release of the plugin to complete the installation process.
There is a feature to control the race from the race director's transmitter by tracking the position of the DVR Rec
switch setup within the transmitter's backpack. It currently works
by binding the race timer's backpack to the race director's backpack bind phrase similar to the process used with the transmitter and VRx backpacks.
Currently only starting and stopping the race are supported. Setting up this feature will not prevent other users from receiving OSD messages.
Important
This feature requires the Race Director to have the ELRS Backpack setup on their transmitter. Please ensure this is setup before completing the following instructions.
- Setup the
DVR Rec
switch in the ELRS backpack- Open the ExpressLRS Lua script (v3 is recommended) on the transmitter
- Open up the Backpack settings
- Set the AUX channel for
DVR Rec
Note
This will not stop the ability to start recording DVR through this switch. It is just a state that the race timer's backpack listens for.
- Bind the Race Timer backpack to the Transmitter. This step can be skipped if flashing the timer's backpack with firmware that contains the race director's backpack bind phrase.
- Start the RotorHazard server with the ESP32 connected.
- Navigate to the
ELRS Backpack General Settings
panel. - Click the
Start Backpack Bind
button. - Within the ExpressLRS Lua script on the transmitter, click
Bind
To test to see if the backpack was bound successfully, navigate to the Race
page within RotorHazard, and use the DVR Rec
switch to start the race.
Start Race from Transmitter
or Stop Race from Transmitter
will need to be enabled under ELRS Backpack General Settings
Tip
Anytime the backpack needs to be bound to a new transmitter, it will be easiest to reflash the ESP32 with the firmware in the latest release, and then rebind.
Some users have like to use the following 3D printable case available on Printables for
an externally connected ESP32-DevKitC-1U
board.
The quality and reliability of the ExpressLRS backpack is significantly dependent on the HDZero goggle's ability to receive the backpack messages from the timer. Since the antenna for the goggle's backpack is inside and there may be additional RF interference on the 2.4 GHz with pilot's radio protocols, a WIFI signal booster may help increase the reliability of the backpack.
My personal setup:
- ESP32-DevKitC
- U.FL to RP-SMA Cables
- 800mW Pen Bi-Directional Booster Module
- USB Power Cable for powering the booster from the RaspberryPi
- A high gain 2.4 GHz WIFI antenna with RP-SMA connection
Note
An ESP32 typically has a maximum power setting less than 100 milliwatts without a signal booster
Some groups have had good luck with moving the ESP32 closer to the pilots by using a long USB cable or a USB extension cable.
Note
The RotorHazard development team is looking into setting up the ability to peform a serial-over-https connection. This will allow groups to connect the timer backpack directly to the race director's computer instead of the timer.
The pilot's individual bind phrase for their backpack. If a bind phrase is not set, the pilot's callsign will be used as a fallback bind phrase instead.
Turns the pilot's ELRS OSD on/off
Allows the race director to start the race from their transmitter. Please navigate here for binding the backpack.
Allows the race director to stop the race from their transmitter. Please navigate here for binding the backpack.
Triggers the timer to scan the serial devices for a backpack device. Only works if the timer is not already connected to a backpack device
Puts the timer's backpack into a binding mode for pairing with the race director's transmitter.
Tip
After successfully completing this process, the timer's backpack will inherit the race director's bind phrase from the transmitter.
Will display OSD messages on HDZero goggles with a matching bind phrase. Used for testing if the timer's backpack successfully inherited the transmitter's bind phrase.
Starts the backpack's WIFI mode. Used for over-the-air firmware updates.
Tip
To connect to the backpack's web user interface, verify the backpack is setup to connect to the same network as the device used to access the web user interface,
or connect the device to the wireless network the backpack created. Open http://elrs_timer.local
in the device's browser to connect to the web user interface.
Note
It is a goal of this project to eventually move all the OSD settings in this section to be pilot configurable through the ExpressLRS VRx backpack's web user interface. The current implementation is noted to be a work around until enough progress has been completed on the VRx backpack for individual pilot configuration.
Shows the race's heat name to pilots when active
Shows the race's round number to pilots when active. Also requires Show Heat Name
to be active.
Shows the race's class name to pilots when active
Shows the race's event name to pilots when active
- TOGGLED ON: Shows current position and current lap when multiple pilots are in a race
- TOGGLED OFF: Only shows current lap
- TOGGLED ON: Shows the gap time to next pilot if using a compatible win condition for the race
- TOGGLED OFF: Shows lap result time
The pilot will be shown results when they finish the race. It is recommended to have pilots turn off Post Flight Results
in Betaflight so the results won't be overridden when the pilot lands.
The message shown to pilots when the timer is staging the race
The message shown to pilots when the race first starts
The message shown to pilots when the pilot finishes
The message shown to pilots when the time runs out
The message shown to pilots when the race is stopped
The message shown to pilots when Show Gap Time
is enabled and the pilot is leading the race
The length of time Race Start Message
is shown to pilots
The length of time Pilot Done Message
and Race Finish Message
is shown to pilots
Length of time the pilot's lap or gap time is shown after completing a lap.
Length of time to show announcements to pilots. (e.g. When a race is scheduled)
Row to show the heat name on when the race is staging.
Row to show the class name on when the race is staging.
Row to show the event name on when the race is staging.
Row to show announcements such as when a race is scheduled. This row is also used by Show Race Name on Stage
Row to show race status messages.
Row to show current lap and position
Row to show lap or gap time
The row to start showing a pilot's post race statistics on. It will also use the follow row in conjunction with the entered one.