<<<
etheli.com Home Page
PX4MINIAIO / MINIPX4 Flight Controller
The PX4MiniAIO is an ArduPilot
/ PX4 / Pixhawk compatible
flight controller manufactured by Airbot.
Listing page: http://www.readytoflyquads.com/rtf-px4miniaio-v1-3
Discussion thread: http://www.rcgroups.com/forums/showthread.php?t=2500796
I've been flying PX4MiniAIO boards with ArduPlane and ArduCopter
firmware with good results. See below for firmware files, issues and fixes for
these boards.
Update 7/2018: This board has been discontinued, but I
have a couple of builds still using it and have been able to upgrade to
the latest ArduPilot
versions. The one issue I ran into is that the telemetry radio on
UART2 stopped working. I figured out a fix and posted a GitHub-PR-patch here. For firmware files patched with this fix, see the 'px4_etPx4v1UartDFix' directory here.
Note: Most (if not all) of the issues and fixes below have been addressed in later releases of ArduPilot.
Firmware files
These are various firmware files for the PX4MiniAIO board that address the issues described in the sections that follow.
ArduCopter v3.3.3 release build with mod to make all compasses external. This build also features a
modified startup script ("rc.APM") that will check access to the SD
card and reboot the board if the check fails. This can
work around an issue where the bootup sometimes fails with a
steady-white LED. (Full source for this build is here
and here.)
Quad: ArduCopter_v3.3.3rel_rcApmAllCompExt_20160428_px4v1_px4.zip
Hexa: ArduCopter_v3.3.3rel_rcApmAllCompExt_20160428_px4v1hexa_px4.zip
Tri: ArduCopter_v3.3.3rel_rcApmAllCompExt_20160428_px4v1tri_px4.zip
ArduCopter v3.3.3 release build with mod to make all compasses external and RSSI_CHANNEL parameters (see here
for info) and modified startup script ("rc.APM"). The
RSSI_CHANNEL parameters are implemented in the current ArduPlane
release and will be implemented in a future ArduCopter release.
For this firmware I've applied the changes for the RSSI_CHANNEL
parameters to version 3.3.3. (Full source for this build is here
and here.)
Quad: ArduCopter_v3.3.3rel_rssiChRcApmAllCompExt_20160501_px4v1_px4.zip
Hexa: ArduCopter_v3.3.3rel_rssiChRcApmAllCompExt_20160501_px4v1hexa_px4.zip
Tri: ArduCopter_v3.3.3rel_rssiChRcApmAllCompExt_20160501_px4v1tri_px4.zip
ArduPlane v3.6.0 release build with a modified startup script
("rc.APM") that will check access to the SD card and reboot the board
if the check fails. This can work around an issue where the
bootup sometimes fails with a steady-white LED. With this
version, if a second compass is installed the COMPASS_EXTERN2 parameter
should be set to 2 for "forced external". (Full source for this
build is here
and here.)
ArduPlane_v3.6.0rel_modRcApm_20160625_px4v1_px4.zip
To use the above firmware builds, extract the '.px4' firmware file from
the '.zip' and upload
it to the PX4MiniAIO flight controller using the Mission Planner (under
"Install Firmware" | "Load custom firmware").
Note: These firmware files should be considered test
releases and are to be used at your own risk.
Boot Fail with Red LED Issue
When I load the "APM:Copter V3.3.3
Quad" firmware via the Mission Planner and run it, the bootup
consistently fails with the steady red LED -- same as others are
reporting. (BTW, when this happens, the error message via the NSH serial
console is "looking for microSD... / nsh: mount: mount failed: No
such device.")
However, I've found that if I build the same AC 3.3.3 version from
source ("make px4-v1"), the resulting firmware boots up much better; I
never seem to
see that error. My best guess is there's something different
about the
PX4Firmware / PX4NuttX sub-modules on my development system vs. the
official release. (My development system is a Windows 7 machine;
reported versions are: cc.exe (GCC) 4.6.2, GNU Make 3.81, Python
2.7.3)
Note that if the PX4MiniAIO board is booted without an SD card
installed, it will exhibit the same boot fail with red LED, so be sure
that a working SD card is installed. Sometimes formatting the SD
card on a computer can fix issues (do a "full" format, not "quick").
Hopefully there will be an official fix for this at some point, but in the
meantime, links to my builds are above.
Battery Monitor
A power module (like this one)
can be attached to power the PX4MiniAIO board and provide voltage and
current readings. The wiring of the "Voltage input" and "Current
input" lines should be checked to make sure they match on both
sides. These are the settings I've found work well with the power
module:
BATT_AMP_OFFSET,0
BATT_AMP_PERVOLT,7.2
BATT_CURR_PIN,11
BATT_MONITOR,4
BATT_VOLT_MULT,1.78
BATT_VOLT_PIN,10
[set BATT_CAPACITY to about 75% of battery mAh]
The values for BATT_VOLT_MULT and
BATT_AMP_PERVOLT can be different depending on the power module used. The BATT_VOLT_MULT value can be calibrated by measuring the battery voltage with a meter and adjusting the BATT_VOLT_MULT value until the reading in Mission Planner matches the meter reading.
Calibrating the BATT_AMP_PERVOLT value is trickier and tends to have more variation. I've done it by attaching a Watt Meter
to the copter, displaying "current" in the 'Tuning' graph in the
Mission Planner, flying the copter briefly in a hover, and then
comparing the maximum-amperage reading on the meter vs. the peak
reading on the graph. After a few iterations of this I can get it
at least in the ballpark of an accurate reading.
(To display the 'Tuning' graph in Mission Planner, click the 'Tuning'
checkbox at the bottom of the main screen. To show live battery
current, double-click on the graph, uncheck any selected items, and
select the "current" item.)
See here for ArduPilot documentation on power module configuration.
Compass
There's an issue with the PX4MiniAIO board where, when a compass
is connected to the IIC2/GPS connector, that compass is always forced
to be "internal" in the configuration. This is problematic
because then a compass orientation cannot be configured. The
above firmware builds have a modification that makes all connected
compasses be set to "external." In future, official firmware
releases will have COMPASS_EXTERNAL settings support a value of 2 for
"forced external" -- see here for more info.
See here for a post on compass orientation. The
pic below shows how I have mine mounted, and I have "COMPASS_ORIENT,8"
("Roll180") in my settings. I'm using a GPS that does not have a
compass, and I've had good results with this setup.
If you're seeing "Compass Variance" messages, these indicate a
mismatch between the compass reading and the other sensors
(accelerometer, etc). If the compass is mounted properly, the
heading in the Mission Planner should track the vehicle. If it's
not working right you can try doing another compass calibration, or
moving the location of the compass (and redoing the calibration).
See here for info in the APM docs.
MinimOSD and Telemetry
If you connect a MinimOSD board to UART2 -- all four wires, and without
a telemetry module also connected -- you can get it working with these
settings:
SERIAL2_BAUD,57
SERIAL2_PROTOCOL,1
SR2_EXT_STAT,2
SR2_EXTRA1,5
SR2_EXTRA2,2
SR2_EXTRA3,3
SR2_POSITION,2
SR2_RAW_SENS,2
SR2_RC_CHAN,5
(If you also have a telemetry module connected to the same port then
the TX pin on the MinimOSD should be left unconnected and the above
settings are optional.)
If you're connecting MinimOSD or Telemetry (or both) to UART2, you also
need this setting (otherwise the output tends to fail on first boot
after being off for a while):
BRD_SER2_RTSCTS,0
Bootloader SBUS/PPM-In Stuck Boot Issue
There is an issue with the PX4MiniAIO (and other PX4-V1 boards) where
the bootup can get stuck when a receiver connected to the SBUS/PPM-IN
pin (PA10) is not receiving data from a transmitter. If that PA10
pin is pulled low at startup, the bootloader code goes into a "wait"
mode and stays there until the pin goes high. It seems that only
some receivers work this way. When I tested with an
OpenLRSng-DTFUHF receiver, its PPM output was not pulled low when not
receiving data. Others, however, have reported the issue where
the PX4MiniAIO board will not boot up when the transmitter is not
turned on.
In the bootloader code, this functionality is described in the comments
as "forcing the bootloader." Interestingly, there is a similar
functionality for the PX4-V2 (Pixhawk) boards, but it was disabled in
response to PX4-Bootloader issue #46.
It seems reasonable, then, that this functionality should also be
disabled in the PX4-V1 code. (This is accomblished by commenting
out the "#BOARD_FORCE_BL..." lines in the "hw_config.h" file, as shown here.)
Here is a modified bootloader file, compiled from the
"diydrones/Bootloader" code (with the updated "hw_config.h"): px4fmu_bl_bin_diyd_NoV1ForceBlPin_20160207.zip
(extract "px4fmu_bl.bin" file from '.zip')
The full modified source code may be found in this diydrones_Bootloader_NoV1ForceBlPin_20160207.zip
file, and here on github: https://github.com/ethomas997/diydrones_Bootloader/tree/NoV1ForceBlPin
I've posted a github issue on this in the PX4/Bootloader project:
https://github.com/PX4/Bootloader/issues/50
Note that if your PX4MiniAIO board and receiver setup is not
experiencing this issue then there is no reason to update the
bootloader. The bootloader files posted on this page should be
considered beta-test releases and are to be used at your own risk.
The PX4 bootloader can be updated using the 'blupdate' command via the 'nsh'
console (see the PX4-bootloader page
for general info). However, when the ArduCopter firmware is
running, the 'blupdate' command can fail because of not enough memory
available. (One workaround is to temporarily load the
AntennaTracker firmware.) This is a procedure I've found works
well:
1. Power off the PX4MiniAIO board, remove the SD card and plug it into
a computer.
2. Copy the modified "px4fmu_bl.bin" file to the SD card (top-level
directory).
3. Create a file called "nostart" and copy it into the "APM" directory
on the SD card. The "nostart" file can be empty. If there
is no "APM" directory then create one. (The "nostart" file will
make the board boot into the 'nsh' console.)
4. Unmount the SD card from the computer ("safely remove hardware" on
Windows), and plug it back into the PX4MiniAIO board.
5. Connect the PX4MiniAIO board to the computer via the USB cable.
6. Run the Mission Planner software, select the COM port (on the upper
right) for the USB connection, click on the 'Terminal' button, select
"PX4/PIXHAWK" in the pull-down on the upper left, and click
'Connect'. You should see text scroll by as the terminal is
connected to the 'nsh' console, ending with the "nsh>" prompt.
7. At the "nsh>" prompt, enter: bl_update
/fs/microsd/px4fmu_bl.bin
8. The response should be:
bl_update: image validated, erasing bootloader...
bl_update: flashing... bl_update: verifying...
bl_update: bootloader update complete
9. At the next "nsh>" prompt, enter: rm /fs/microsd/APM/nostart
(This will remove the "nostart" file, allowing the board to boot
normally.)
10. Click 'Disconnect' and unplug the USB cable for the PX4MiniAIO
board.
At this point the PX4MiniAIO board should boot normally and the
SBUS/PPM-input issue should be fixed. If there was a problem with
the bootloader update resulting in a board that cannot be booted or
communicated with, the bootloader can be repaired using the "Upload via
DFUse" option on the PX4-bootloader
page.
Older firmware builds:
ArduPlane v3.5.3 release build with mod to make all compasses external
and modified startup script ("rc.APM"). (Full source for this
build is here
and here.)
ArduPlane_v3.5.3rel_rcApmAllCompExt_20160501_px4v1_px4.zip
ArduCopter v3.3.3 release build. This build also features a
modified startup script ("rc.APM") that will check access to the SD
card and reboot the board if the check fails. This can
work-around an issue where the bootup sometimes fails with a
steady-white LED.
ArduCopter_v3.3.3rel_modRcApm_20160404_px4v1_px4.zip
ArduCopter v3.3.3 release build with RSSI_CHANNEL parameters (see here
for info) and modified startup script ("rc.APM"). The
RSSI_CHANNEL parameters are implemented in the current ArduPlane
release and will be implemented in a future ArduCopter release.
For this firmware I've applied the changes for the RSSI_CHANNEL
parameters to version 3.3.3. (Full source for this build is here
and here.)
ArduCopter_v3.3.3rel_rssiChanModRcApm_20160404_px4v1_px4.zip
ArduPlane v3.5.2 release build. This build also features a
modified startup script ("rc.APM") that will check access to the SD
card and reboot the board if the check fails. This can
work-around an issue where the bootup sometimes fails with a
steady-white LED.
ArduPlane_v3.5.2rel_modRcApm_20160404_px4v1_px4.zip
ArduRover v3.0.0 release build. This build also features a
modified startup script ("rc.APM") that will check access to the SD
card and reboot the board if the check fails. This can
work-around an issue where the bootup sometimes fails with a
steady-white LED. (Full source for this build is here
and here.)
APMrover2_v3.0.0rel_modRcApm_20160423_px4v1_px4.zip
ArduCopter_v3.3.2rel_7f16e4d6_etBuild_px4v1_px4.zip
Here is a build for "traditional helicopter" using the same
ArduCopter
3.3.2 code ("make px4-v1-heli"):
ArduCopter_v3.3.2rel_7f16e4d6_etBuild_px4v1_heli_px4.zip
Here is a build for ArduPlane v3.5.0beta1:
ArduPlane_v3.5.0beta1_eec1b95f_etbuild_px4v1_px4.zip
My ArduPilot patches may be found here.
Click here to
contact me
Back to etheli.com home page