3.5 KiB
QuadMeUp Crossbow
QuadMeUp Crossbow is a DIY project that gives 5km (at least) of RC link for UAV (airplanes and drones) for a price below $40. I uses SX1278 (LoRa 868MHz/915MHz) compatible (like HopeRF RFM95W) radio modules connected to Arduino compatible boards. It can be regular Arduino connected via SPI to SX1278 or dedicated board like Adafruit Feather 32u4 RFM LoRa or LoRa32u4 II
Current state
Works:
- Getting data from OpenTX radio using SBUS protocol
- Transmitting 10 channels to RX modules
- Frequency hopping
- Getting basic telemetry from RX module
- Sending 10 channels using SBUS to flight controller
Needs implementation:
- Binding
- TX module configuration
- Allowing to use OLED on TX to get basic data
- RX configuration from TX module
- Sending telemetry from TX to OpenTX radio
Protocol
| Byte | Description | Notes |
|---|---|---|
| 1 | Frame type & used radio channel | bits 7-5 defines frame, bits 4-0 current radio channel |
| 2 - 33 | Payload | lenghth defined by frame type |
| payload length + 2 | CRC | using crc8_dvb_s2 method |
CRC
CRC is computed using crc8_dvb_s2 method. Initial CRC value for each frame CRC is equal to CRC of 4 bind bytes (unique for transmitter module).
Frame types
| Value | Value hex | Description | Direction | Payload length |
|---|---|---|---|---|
| 0000 | 0x0 | RC channels data RC_DATA |
TX -> RX | 9 |
| 0001 | 0x1 | Receiver health and basic telemetry RX_HEALTH |
RX -> TX | 6 |
| 0010 | 0x2 | Request receiver configuration | TX -> RX | no used |
| 0011 | 0x3 | Receiver configuration | RX -> TX | no used |
| 0100 | 0x4 | Set receiver configuration | TX -> RX | no used |
| 0101 | 0x5 | PING frame, uses 9 byte payload | TX -> RX | 4 |
| 0110 | 0x6 | PONG frame, the same payload as PING | RX -> TX | 4 |
RC_DATA frame format
Protocol allows to send 10 RC channels in total encoded as following
- channels 1 to 4 encoded using 10 bits each (5 bytes)
- channels 5 to 6 encoded using 8 bits each (2 bytes)
- channels 7 to 10 encoded using 4 bits per channel (2 bytes)
Total length of RC_DATA payload is 9 bytes
RX_HEALTH frame format
| Byte | Description |
|---|---|
| 1 | RX RSSI |
| 2 | RX SNR |
| 3 | RX supply volatage, sent in 0,1V |
| 4 | RX analog input 1 sent in 0,1V |
| 5 | RX analog input 2 sent in 0,1V |
| 6 | Flags |
Flags
| Bit | Meaning |
|---|---|
| 00000001 | Device in Failsafe mode |
PING and PONG frames
PING and PONG frames are to determine packet roundrip between TX and RX module.
TX sends PING frame with curent micros. If RX receives PING frame, it respons
its payload as PONG frame.
OpenTX setup
OpenTX 2.2.1 or newer is required with enabled External RF SBUS.
- Mode:
SBUS - Channel Range:
1-16 - Refresh rate:
12.0msor14.0msnormal
Tested with:
- FrSky X9D Plus


