Pawel Spychalski (DzikuVx) 3ea77891f1 TX module LED indication
2018-04-27 23:05:44 +02:00
2018-04-27 23:05:44 +02:00
2018-04-27 23:05:44 +02:00
2017-11-19 13:46:50 +01:00
2018-02-11 19:41:00 +01:00
2017-09-22 21:05:20 +02:00
2018-04-26 21:29:52 +02:00
2017-10-25 12:58:07 +02:00

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.

TX module connection diagram

Diagram

RX module connection diagram

Diagram

Description
No description provided
Readme 1.1 MiB
Languages
C++ 90.3%
C 9.7%