FANET compatibility - alex-43/SoftRF GitHub Wiki

Testbed

The test unit has SoftRF LoRa module connected.
A picture of the module (purple) in comparison with NRF905 (green):

Settings

Test SoftRF unit has D99C19 device ID and is configured to communicate in accordance with FANET protocol:

FANET link partner

One of commercial implementations for FANET protocol is Skytraxx:

But "behind the scenes" of the Skytraxx is that the FANET was contributed there by Juergen Eckert.
His FANET R&D is actually open for public and located at GitHub.
This is the link on FANET : https://github.com/3s1d/fanet
And this is the link on FANET+ : https://github.com/3s1d/fanet-stm32

Genuine FANET hardware platform is STM32 L1/L4 MCU and Semtech SX1272 radio.
Genuine FANET software platform is Arduino/Eclipse IDE.

At first I've made a quick port of the FANET onto NodeMCU (ESP8266) and Semtech SX1276 radio (SoftRF LoRa module):

FANET command line interface

Genuine FANET firmware is controlled over UART port at 115200 baud rate.
Full set of commands is listed here: https://github.com/3s1d/fanet/blob/master/com/serial.h
When entered instruction is invalid or empty, the CLI gives an error response:

This is explanation of four basic commands:

  1. Set vendor and device IDs of a FANET unit:
    Syntax: #FNA <Vendor ID>, <Device ID>

    Example:

       #FNA AB,CDEF
       #FNR OK
  1. Set aircraft type and online logging flag:
    Syntax: #FNC <Aircraft type>, <online logging>

    Example:

       #FNC 1,1
       #FNR OK
  1. Enable or disable RF module:
    Syntax: #DGP <state>

    Example:

       #DGP 1
       #DGR OK
  1. Set FANET state:
    Syntax: #FNS <lat>,<lon>,<alt>,<speed>,<climb>,<heading>,<turn>

    Example:

       #FNS 56.0092,38.3710,430,10,3,45,7
       #FNR OK

Transmission

As soon as FANET unit gets configured with #FNA, #FNC and #DGP instructions it starts to receive
packets been transmitted from nearby SoftRF unit:

Reception of each packet is indicated by #FNF status line.
You may noticed that each line contains D9,9C19 which is ID of the transmitting SoftRF unit.

Reception

Let's configure FANET unit with this sequence:

       #FNA AB,CDEF
       #FNC 1,1
       #DGP 1

Then we set state of the unit multiple times:

       #FNS 56.0092,38.3710,430,10,3,45,7
       #FNS 56.0092,38.3710,430,10,3,45,7
       ...
       #FNS 56.0092,38.3710,430,10,3,45,7

Each time the #FNS command is issued, the FANET unit is transmitting an RF packet.
SoftRF unit located nearby is receiving the packets and displaying the traffic on XCSoar's "FLARM view" screen:

⚠️ **GitHub.com Fallback** ⚠️