Thanks to the work of @night_ghost on his own fork with help from @tridge to have it merged in master, we now have a new HAL in Ardupilot master. This new HAL is, as the name suggests, really light because @night_ghost has implemented the functions of a light-weight RTOS in the Scheduler module of the HAL.
This HAL’s small size allows loading it on low cost STM32F405 based flight controllers, such as the OpenPilot Revolution (and Revolution Mini), Airbot F4, Omnibus F4 and many others with similar hardware. I built and flew with success three quadcopters, one for each of the aforementioned boards. @vierfuffzig built and flew a plane with Revolution Mini, and he provided additional details.
I am excited that the F4Light HAL has been merged in ardupilot master because this will lead to an increased size of the user base, due to the lowering of the price necessary to build DIY copter and plane (and maybe also rover and sub, not supported for now).
Now I will add some technical details relative to the compatible boards and connections, extracted from the wiki in @night_ghost fork. This information is not complete at this time, but will be expanded in the future.
Keep in mind that the same target is more stable and usable, and some others have had problems that have to be fixed. In any case it is not possible at this time to flash these boards from Mission Planner or APM Planner 2. The more usable boards are Revolution and RevoMini.
The F4Light HAL supports the following boards:
- OpenPilot Revolution / RevoMini (target revomini_Revolution)
- Airbot F4 (target revomini_Airbot)
- Omnibus F4 V2 Pro (target revomini_AirbotV2)
How to flash: https://github.com/night-ghost/ardupilot/wiki/Flash-firmware
Once the firmware is flashed the various parameters can be configured using a GCS from the Ardupilot project:
- Mission Planner
- APM Planner 2
- MAVProxy
Other than the Ardupilot parameters there are HAL parameters specific for this HAL.
OpenPilot Revolution / RevoMini
Main port -> Serial1 (common use: telemetry)
Flexi port -> Serial2 (common use: OSD)
pin 7,8 (on Revolution) 5,6 (on RevoMini) of RC input port -> Serial3 (common use: GPS)
pin 9,10 (on Revolution) 7,8 (on RevoMini) of RC input port -> SCL, SDA (I2C)
The main differences between Revolution and RevoMini are:
- Lack of radio link in the RevoMini (anyway this HAL don’t use it)
- Flexi-IO aka RC Input has 10 pin on Revolution and 8 pin on RevoMini
RC Input on Revolution
-
Ground
-
+5V
-
NA (PB12, pin 2. Can be used as relay pin)
-
NA (PB13, pin 3. Can be used as relay pin)
-
PPM/SBUS/DSM Input 1
-
PPM/SBUS/DSM Input 2 or Servo7 - see HAL_SERVO_MASK parameter
-
UART6 TX (SERIAL3 as Ardupilot Parameter) or Servo8
-
UART6 RX or Servo9
-
SCL external I2C, Tx SoftSerial if I2C moved to FlexiPort or Servo10
-
SDA external I2C, Rx SoftSerial if I2C moved to FlexiPort or Servo11
RC Input on RevoMini
-
Ground
-
+5V
-
PPM/SBUS/DSM Input 1
-
PPM/SBUS/DSM Input 2
-
UART6 TX (SERIAL3 as Ardupilot Parameter)
-
UART6 RX
-
SCL external I2C, Tx SoftSerial if I2C moved to FlexiPort
-
SDA external I2C, Rx SoftSerial if I2C moved to FlexiPort
Additional information for this board can be found in the Readme file.
Airbot F4
Information for this board is available in the Readme file.
Omnibus F4 V2 Pro
Information for this board is in the Readme file.