Difference between revisions of "Apogee/v1.00"
Dianzhichong (talk | contribs) |
|||
(34 intermediate revisions by 7 users not shown) | |||
Line 11: | Line 11: | ||
== Overview == | == Overview == | ||
* STMicroelectronics | * STMicroelectronics STM32F405RGT6 Cortex M4 168MHz processor featuring a Floating point unit (FPU), up to 192k of RAM and 1024k of FLASH. | ||
* 9(6) DOF integrated IMU MPU-9150(6050) based | * 9(6) DOF integrated IMU MPU-9150(6050) based | ||
* 1 x Barometer/altimeter MPL3115A2 (I2C, MPU slave capability) | * 1 x Barometer/altimeter MPL3115A2 (I2C, MPU slave capability) | ||
Line 29: | Line 29: | ||
* 1 x 5v / 500mA power switch | * 1 x 5v / 500mA power switch | ||
* 4 x status LEDs | * 4 x status LEDs | ||
* | * 10.4 grams (0.37 oz) | ||
* 53 x 25mm (2.1" x 0.98"), shares the same external dimensions and mounting points as UmarimLite | * 53 x 25mm (2.1" x 0.98"), shares the same external dimensions and mounting points as UmarimLite | ||
* 4 layers PCB design | * 4 layers PCB design | ||
Line 46: | Line 46: | ||
=== SDIO (MicroSD card) === | === SDIO (MicroSD card) === | ||
* | * software support available with '''v5.2''' and above | ||
* | * hi-cap power designed to give enough time to cleanly save buffer and close file(s) when power outage detected | ||
* USB-storage mode when plugging an USB cable after startup | |||
=== 6 or 9 DOF IMU === | === 6 or 9 DOF IMU === | ||
Apogee v1.00 PCB offer two [http://www.invensense.com/ Invensense] IMU chip options: | |||
* [http://www.invensense.com/mems/gyro/mpu6050.html MPU-6050] : 6 DOF, 3 axis Accelerometer + 3 axis Gyroscope | |||
* [http://www.invensense.com/mems/gyro/mpu9150.html MPU-9150] : 9 DOF, 3 axis Accelerometer + 3 axis Gyroscope + 3 axis Magnetometer | |||
=== USB Modes === | === USB Modes === | ||
* usb plugged before autopilot is powered : enter DFU mode to be flashed | |||
* usb plugged after autopilot is powered : stop ap task, enter usb storage mode to made sdcard content easily avalaible, after the host has mounted;copied;dismounted storage;unplugged usb, ap restart | |||
=== SWD: Serial Wire Debug === | === SWD: Serial Wire Debug === | ||
permits flash and source level debugging via swd part of cheap discovery card, or via more capable, fastest, more expensive probe like black magic probe | |||
=== R/C Serial === | === R/C Serial === | ||
In addition to the classic PPM input, that mostly require receiver modification, one pin of the R/C connector is routed to the MCU UART2 receive input through a '''controlled inverter'''.<br> | |||
This new feature allow '''direct connection''' (3 pin) of several brand off-the-shelf receivers '''without hardware modification''' or external encoder board. | |||
* '''RX2_POL(PB13) = 0''' => R/C serial (Rx2) is '''non-inverted''' : allow use standard polarity serial receivers (Spektrum, FlyElectric...) | |||
* '''RX2_POL(PB13) = 1''' => R/C serial (Rx2) is '''inverted''' : allow use of S.BUS protocol compatible receivers (Futaba, FrSky,...) | |||
(see [[RC_Receivers_and_Radios | R/C Receivers and Radios page]] for serial compatible receiver) | |||
=== Real Time Clock === | === Real Time Clock === | ||
supercap powered rtc, permit to associate correct time and date on sdcard log files, when ap is unpowered between flights | |||
=== Power Switch === | === Power Switch === | ||
'''5V''' power output pin on '''AUX connector''' ("5Vaux",#2) '''can be switched ON and OFF''' on demand using APSW (MCU GPIO output PB12). | |||
* APSW = 0 => 5V Aux OFF | |||
* APSW = 1 => 5V Aux ON (default) | |||
The internal switch TPS2051B is designed to withstand 500mA continuous current and is '''short-circuit and thermally protected'''.<br> | |||
(see [http://www.ti.com/product/tps2051b TPS2051B] datasheet for recommended operation conditions) | |||
== Pictures == | |||
<gallery> | <gallery> | ||
Image:Apogee_v100_3D_bottom.png|Apogee v1.00 3D bottom view | Image:Apogee_v100_3D_bottom.png|Apogee v1.00 3D bottom view | ||
Image:Apogee_v100_3D_top.png|Apogee v1.00 3D top view | Image:Apogee_v100_3D_top.png|Apogee v1.00 3D top view | ||
Image:Apogee_v100_bottom.JPG|Apogee v1.00 bottom view | |||
Image:Apogee_v100_top_1E.JPG|Apogee v1.00 top view | |||
Image:Apogee&UmarimLitePCBs.JPG|Apogee v1.00 and Umarim-Lite<br>footprint comparison | |||
</gallery> | </gallery> | ||
Line 75: | Line 100: | ||
{|border="1" cellspacing="0" style="text-align:center" cellpadding="2%" width="70%" | {|border="1" cellspacing="0" style="text-align:center" cellpadding="2%" width="70%" | ||
|+'''SRV0/1/2/3/4/5''' | |+'''SRV0/1/2/3/4/5''' | ||
!width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Description | !width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Description'' | ||
|- | |- | ||
|1 | |1||style="background:black; color:white"|GND||PWR||common ground | ||
|- | |- | ||
|2 | |2||style="background:Orange; color:white"|+5V||PWR||5V Rail from autopilot | ||
|- | |- | ||
|3||SRVx||OUT||Servo signal (PWM) | |3||SRVx||OUT||Servo signal (PWM) | ||
|} | |} | ||
Line 87: | Line 112: | ||
{|border="1" cellspacing="0" style="text-align:center" cellpadding="2%" width="70%" | {|border="1" cellspacing="0" style="text-align:center" cellpadding="2%" width="70%" | ||
|+'''R/C''' | |+'''R/C''' | ||
!width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Description | !width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Description'' | ||
|- | |- | ||
|1 | |1||style="background:black; color:white"|GND||PWR||common ground | ||
|- | |- | ||
|2 | |2||style="background:Orange; color:white"|+5v||PWR||5V Rail from autopilot | ||
|- | |- | ||
|3||PPM in||IN||PPM Stream from R/C Receiver (5V tolerant) | |3||style="background:white; color:black"|PPM in||IN||PPM Stream from R/C Receiver (5V tolerant) | ||
|- | |- | ||
|4||RX2||IN||UART2 Serial Input (5V Tolerant) | |4||style="background:green; color:white"|RX2||IN||UART2 Serial Input (5V Tolerant) through [[#R/C Serial|controlled inverter]] | ||
|} | |} | ||
Line 101: | Line 126: | ||
{|border="1" cellspacing="0" style="text-align:center" cellpadding="2%" width="70%" | {|border="1" cellspacing="0" style="text-align:center" cellpadding="2%" width="70%" | ||
|+'''UART1/4/6''' | |+'''UART1/4/6''' | ||
!width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Description | !width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Description'' | ||
|- | |- | ||
|1 | |1||style="background:black; color:white"|GND||PWR||common ground | ||
|- | |- | ||
|2 | |2||style="background:Orange; color:white"|+5V||PWR||5V Rail from autopilot | ||
|- | |- | ||
|3|| +3.3V||PWR||3.3V Rail from autopilot | |3||style="background:Red; color:white"|+3.3V||PWR||3.3V Rail from autopilot | ||
|- | |- | ||
|4||RX1/4/6||IN||UART1/4/6 Serial Input (3.3V level, 5V | |4||style="background:green; color:white"|RX1/4/6||IN||UART1/4/6 Serial Input (3.3V level, UART1 and UART6 are 5V tolerant, UART4 '''IS *NOT* 5V''' tolerant) | ||
|- | |- | ||
|5||TX1/4/6||OUT||UART1/4/6 Serial Output (3.3V level) | |5||style="background:blue; color:white"|TX1/4/6||OUT||UART1/4/6 Serial Output (3.3V level) | ||
|} | |} | ||
Line 117: | Line 142: | ||
{|border="1" cellspacing="0" style="text-align:center" cellpadding="2%" width="70%" | {|border="1" cellspacing="0" style="text-align:center" cellpadding="2%" width="70%" | ||
|+'''I2C1/2''' | |+'''I2C1/2''' | ||
!width="7%"|''Pin #''!!width="10%"|''Name''!!width="12%"|''Type''!!''Description | !width="7%"|''Pin #''!!width="10%"|''Name''!!width="12%"|''Type''!!''Description'' | ||
|- | |- | ||
|1 | |1||style="background:black; color:white"|GND||PWR||common ground | ||
|- | |- | ||
|2 | |2||style="background:Orange; color:white"|+5V||PWR||5V Rail from autopilot | ||
|- | |- | ||
|3|| +3.3V||PWR||3.3V Rail from autopilot | |3||style="background:red; color:white"|+3.3V||PWR||3.3V Rail from autopilot | ||
|- | |- | ||
|4||SDA1/2||Open Drain I/O<br>(1.5k pull-up)||I2C1/2 bus Serial DAta | |4||style="background:sienna; color:white"|SDA1/2||Open Drain I/O<br>(1.5k pull-up)||I2C1/2 bus Serial DAta | ||
|- | |- | ||
|5||SCL1/2||Open Drain I/O<br>(1.5k pull-up)||I2C1/2 bus Serial CLock | |5||style="background:blue; color:white"|SCL1/2||Open Drain I/O<br>(1.5k pull-up)||I2C1/2 bus Serial CLock | ||
|} | |} | ||
Line 133: | Line 158: | ||
{|border="1" cellspacing="0" style="text-align:center" cellpadding="2%" width="70%" | {|border="1" cellspacing="0" style="text-align:center" cellpadding="2%" width="70%" | ||
|+'''USB''' | |+'''USB''' | ||
!width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Description | !width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Description'' | ||
|- | |- | ||
|1 | |1||style="background:black; color:white"|GND||PWR||common ground | ||
|- | |- | ||
|2||USB+||I/O||USB bidirectional D+ line | |2||style="background:green; color:white"|USB+||I/O||USB bidirectional D+ line | ||
|- | |- | ||
|3||USB-||I/O||USB bidirectional D- line | |3||style="background:white; color:black"|USB-||I/O||USB bidirectional D- line | ||
|- | |- | ||
|4||VBUS||IN||Indicates the presence of USB bus power (5V level), DFU or USB storage Mode selection | |4||style="background:orange; color:white"|VBUS||IN||Indicates the presence of USB bus power (5V level), DFU or USB storage Mode selection | ||
|} | |} | ||
''Note: MiniUSB and Molex USB connectors are in parallel, only one can be connected at a time.'' | ''Note: MiniUSB and Molex USB connectors are in parallel, only one can be connected at a time.'' | ||
Line 148: | Line 173: | ||
{|border="1" cellspacing="0" style="text-align:center" cellpadding="2%" width="70%" | {|border="1" cellspacing="0" style="text-align:center" cellpadding="2%" width="70%" | ||
|+'''SPI1''' | |+'''SPI1''' | ||
!width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Description | !width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Description'' | ||
|- | |- | ||
|1 | |1||style="background:black; color:white"|GND||PWR||common ground | ||
|- | |- | ||
|2 | |2||style="background:Orange; color:white"|+5V||PWR||5V Rail from autopilot | ||
|- | |- | ||
|3|| +3.3V||PWR||3.3V Rail from autopilot | |3||style="background:red; color:white"|+3.3V||PWR||3.3V Rail from autopilot | ||
|- | |- | ||
|4||CS1||OUT||Slave Select. Selects the SPI slave | |4||style="background:sienna; color:white"|CS1||OUT||Slave Select. Selects the SPI slave (PB9) | ||
|- | |- | ||
|5||MOSI1||I/O||SPI1 Master Out Slave In. Data output from master / data input to slave | |5||style="background:Grey; color:white"|MOSI1||I/O||SPI1 Master Out Slave In. Data output from master / data input to slave | ||
|- | |- | ||
|6||MISO1||I/O||SPI1 Master In Slave Out. Data input to master / data output from slave | |6||style="background:Green; color:white"|MISO1||I/O||SPI1 Master In Slave Out. Data input to master / data output from slave | ||
|- | |- | ||
|7||SCK1||I/O||SPI1 Serial clock. Clock output from master or input to slave | |7||style="background:Yellow; color:black"|SCK1||I/O||SPI1 Serial clock. Clock output from master or input to slave | ||
|} | |} | ||
Line 168: | Line 193: | ||
{|border="1" cellspacing="0" style="text-align:center" cellpadding="2%" width="70%" | {|border="1" cellspacing="0" style="text-align:center" cellpadding="2%" width="70%" | ||
|+'''AUX''' | |+'''AUX''' | ||
!width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Port!!''Description | !width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Port!!''Description'' | ||
|- | |- | ||
|1 | |1||style="background:black; color:white"|GND||PWR||||common ground | ||
|- | |- | ||
|2|| + | |2||style="background:Orange; color:white"|+5Vaux||PWR||||5V from autopilot through [[#Power Switch | Power Switch]] | ||
|- | |- | ||
|3|| +3.3V||PWR||||3.3V Rail from autopilot | |3||style="background:Red; color:white"|+3.3V||PWR||||3.3V Rail from autopilot | ||
|- | |- | ||
|4||AUX1||I/O||PB1||General Purpose I/O #1 or ADC_1 Input or PWM6 | |4||AUX1||I/O||PB1||General Purpose I/O #1 or ADC_1 Input or PWM6 | ||
|- | |- | ||
|5||AUX2||I/O||PC5||General Purpose I/O #2 or ADC_2 Input | |5||AUX2||I/O||PC5||General Purpose I/O #2 or ADC_2 Input | ||
|- | |- | ||
|6||AUX3||I/O||PC4||General Purpose I/O #3 or ADC_3 Input | |6||AUX3||I/O||PC4||General Purpose I/O #3 or ADC_3 Input | ||
|- | |- | ||
|7||AUX4||I/O||PB15||General Purpose I/O #4 | |7||AUX4||I/O||PB15||General Purpose I/O #4 (also spektrum bind pin) | ||
|} | |} | ||
Line 188: | Line 213: | ||
{|border="1" cellspacing="0" style="text-align:center" cellpadding="2%" width="70%" | {|border="1" cellspacing="0" style="text-align:center" cellpadding="2%" width="70%" | ||
|+'''SWD''' | |+'''SWD''' | ||
!width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Description | !width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Description'' | ||
|- | |- | ||
|1 | |1||style="background:black; color:white"|GND||PWR||common ground | ||
|- | |- | ||
|2|| +3.3V||PWR||3.3V Rail from autopilot | |2||style="background:red; color:white"|+3.3V||PWR||3.3V Rail from autopilot | ||
|- | |- | ||
|3 | |3||style="background:white; color:black"|RST||IN||MCU Reset | ||
|- | |- | ||
|4 | |4||style="background:blue; color:white"|SWCLK||IN||Serial Wire Clock | ||
|- | |- | ||
| | |5||style="background:sienna; color:white"|SWDIO||I/O||Serial Wire Data Input/Output | ||
|} | |} | ||
Line 205: | Line 230: | ||
<br style="clear:both"> | <br style="clear:both"> | ||
== PCB == | == PCB == | ||
=== Gerber & Drill Files === | === Gerber & Drill Files === | ||
PCB design [http://www.eurocircuits.com/images/stories/ec09/ec-classification-english-1-2010-v2.pdf Eurocircuits 6-C class] compliant: | |||
'''''[[Media:Apogee_v100_gerber_files.zip|Download Apogee v1.00 gerber & drill files (zip)]]''''' | |||
RS274X, units = Inches, format = 2:5 | |||
:*Apogee_v100_Silkscreen_TOP.GBR (Top Component Print Layer) | |||
:*Apogee_v100_Soldermask_Top.GBR (Top Solder Mask) | |||
:*Apogee_v100_Paste_Mask_Top.GBR (Top Paste Mask, stencil) | |||
:*Apogee_v100_Signal_Top.GBR (Top Copper Layer) | |||
:*Apogee_v100_Internal_Plane_1.GBR (Internal Copper Layer GND) | |||
:*Apogee_v100_Internal_Plane_2.GBR (Internal Copper Layer +3.3V) | |||
:*Apogee_v100_Signal_Bottom.GBR (Bottom Copper Layer) | |||
:*Apogee_v100_Paste_Mask_Bottom.GBR (Bottom Paste, stencil) | |||
:*Apogee_v100_Soldermask_Bottom.GBR (Bottom Solder Mask) | |||
:*Apogee_v100_Outline.GBR (Board Outline) | |||
:*Apogee_v100_Drill.GBR (NC XY coordinates & Drill tools sizes) | |||
== Assembly == | == Assembly == | ||
Line 226: | Line 264: | ||
Image:Apogee_v100_top_components.png|Apogee v1.00 top components detail | Image:Apogee_v100_top_components.png|Apogee v1.00 top components detail | ||
</gallery> | </gallery> | ||
=== Bill Of Material === | === Bill Of Material === | ||
== PCB and assembled boards suppliers == | '''''[[Media:Apogee_v100_BoM.zip|Download Apogee v1.00 Bill of Material (zipped .xls file)]]''''' | ||
<br> | |||
<br> | |||
=== PCB and assembled boards suppliers === | |||
Check availability on [[Get_Hardware|Get Hardware]] page | Check availability on [[Get_Hardware|Get Hardware]] page | ||
Line 247: | Line 290: | ||
** required software : st_flash and st_util, have to be compiled from source (https://github.com/texane/stlink) | ** required software : st_flash and st_util, have to be compiled from source (https://github.com/texane/stlink) | ||
=== Source code | ==On-board Data Logging== | ||
It is possible to write data on the embedded SD card from the main autopilot program. In order to cope with a real-time constraints of the autopilot, a light RTOS called [http://http://www.chibios.org ChibiOS] is used to split the logging task from the rest of the system. Two modules are necessary to enable the logging system: the driver of the SD card system that also handle the file system (using FATFS) and a dynamic memory allocation system called TLSF. | |||
In order to enable this features for your apogee board, you need to select the correct board type and add the required modules to the firmware section of your airframe file (logging is currently only available for '''fixedwing''' firmware): | |||
<firmware name="firmware"> | |||
... | |||
<target name="ap" board="apogee_1.0_chibios"> | |||
... | |||
</target> | |||
... | |||
<module name="tlsf"/> | |||
<module name="logger" type="sd_chibios"/> | |||
</firmware> | |||
This will active the automatic opening of a new log file (30 seconds) after each startup of the autopilot. Then you can freely write ASCII or binary data into this file (see a simple example logging for [https://github.com/paparazzi/paparazzi/blob/master/sw/airborne/modules/meteo/mf_ptu.c meteorological data logging]). | |||
The file is '''automatically''' closed upon battery disconnection, no need to press any button to stop the logging. | |||
To recover the data on the SD card, just power up the board '''without''' the USB plugged (otherwise it will enter in DFU boot mode), then plus the USB cable to the board and to your computer. This will stop the main autopilot program and will mount the SD card as a regular mass storage with a FAT file system. The log files are placed in a PPRZ folder. Unplugging the USB will reset the autopilot. | |||
In addition to this, you can also load a [http://docs.paparazziuav.org/latest/module__flight_recorder.html '''flight recorder''' module] (it also needs the '''pprzlog''' module for supporting the specific paparazzi binary log format). | |||
<firmware> | |||
... | |||
<module name="pprzlog"/> | |||
<module name="flight_recorder"/> | |||
... | |||
</firmware> | |||
with the appropriate telemetry file (conf/telemetry/fixedwing_flight_recorder.xml). This will automatically open a second file where telemetry messages described in the FlightRecorder section of the telemetry file will be logged in [[Data_Logger#Storage_format|binary format]]. The files are store in a separated FR folder on the SD card. The decoding procedure is the same than [[Openlog#Decoding|OpenLog]] and is using the '''sd2log''' tool: | |||
~/paparazzi/sw/logalizer/sd2log [log_file] [optinal_output_dir] | |||
This will produce 3 files: a ''.log'' and a ''.data'' files similar to the normal [[Logs|ground station log]] and ''.tlm'' file that is a simple copy of the binary file (but rename with the same base name than the two others). | |||
==Debugging== | |||
===Debugging with STM Discovery ST-LINK/V2 embedded debug tool=== | |||
[[Image:SWD_Discovery_to_Apogee.png|Apogee debugging with Discovery dev board]] | |||
===Debugging with [[CricketProbe/v1.00 | CricketProbe]]=== | |||
[[Image:SWD_CricketProbe_to_Apogee.png|800px|Apogee debugging with CricketProbe]] | |||
===Debugging with Black Magic Probe=== | |||
[[Image:SWD_BlackMagicProbe_to_Apogee.png|700px|Apogee debugging with Black Magic Probe]] | |||
== Source Files == | |||
''[[Media:Apogee_v100_Protel_Design.zip|Apogee v1.00 hardware design (zipped Protel99SE SP6 database file)]]'' | |||
== Source code == | |||
Available in latest git master branch | Available in latest git master branch | ||
== Where to Buy == | |||
You can purchase Apogee V1.00 from one of the following stores: | |||
* [http://www.drotek.com/shop/en/home/739-apogee-paparazzi-flight-controller.html Drotek] | |||
* [http://www.droneasy.com/index.php/electronics/flight-controllers-2/paparazzi-apogee.html EasyDrone] | |||
* [http://www.goodluckbuy.com/ppz-paparazzi-apogee-uav-stm32f405-flight-control-for-fpv-quadcopter.html GoodluckBuy (xD)] | |||
* [https://www.alibaba.com/product-detail/paparazzi-apogee-UAV-Flight-Control-ppz_60277228722.html Alibaba] | |||
* [https://item.taobao.com/item.htm?spm=a230r.1.14.19.74a52fefYM2t2B&id=40105908067&ns=1&abbucket=19#detail.html TaoBao] | |||
[[Category:Autopilots]] | [[Category:Autopilots]] |
Latest revision as of 06:22, 2 August 2018
Overview
- STMicroelectronics STM32F405RGT6 Cortex M4 168MHz processor featuring a Floating point unit (FPU), up to 192k of RAM and 1024k of FLASH.
- 9(6) DOF integrated IMU MPU-9150(6050) based
- 1 x Barometer/altimeter MPL3115A2 (I2C, MPU slave capability)
- 1 x MicroSD card slot, 4 bit SDIO interface (high speed data logging)
- 1 x USB : DFU mode (download) or USB storage (direct access to MicroSD card)
- 6 x Servo PWM outputs
- 1 x R/C receiver PPM frame input
- 1 x R/C receiver serial input with inverter (Futaba S.BUS, Spektrum, etc.)
- 3 x UART
- 2 x I2C bus
- 1 x SPI bus
- RTC with backup capacitor
- SWD(ARM download/debug interface)
- 4 x Auxiliary I/O (General Purpose and/or ADC and/or servo PWM)
- 5v / 1.5A switching power supply (input voltage range 5.5V min → 17.0v max)
- 3.3v / 1A linear regulator
- 1 x 5v / 500mA power switch
- 4 x status LEDs
- 10.4 grams (0.37 oz)
- 53 x 25mm (2.1" x 0.98"), shares the same external dimensions and mounting points as UmarimLite
- 4 layers PCB design
Hardware Revision History
Version # | Release Date | Release Notes |
---|---|---|
v1.00 | 07/2013 | Initial release of Apogee |
Detailed Features
SDIO (MicroSD card)
- software support available with v5.2 and above
- hi-cap power designed to give enough time to cleanly save buffer and close file(s) when power outage detected
- USB-storage mode when plugging an USB cable after startup
6 or 9 DOF IMU
Apogee v1.00 PCB offer two Invensense IMU chip options:
- MPU-6050 : 6 DOF, 3 axis Accelerometer + 3 axis Gyroscope
- MPU-9150 : 9 DOF, 3 axis Accelerometer + 3 axis Gyroscope + 3 axis Magnetometer
USB Modes
- usb plugged before autopilot is powered : enter DFU mode to be flashed
- usb plugged after autopilot is powered : stop ap task, enter usb storage mode to made sdcard content easily avalaible, after the host has mounted;copied;dismounted storage;unplugged usb, ap restart
SWD: Serial Wire Debug
permits flash and source level debugging via swd part of cheap discovery card, or via more capable, fastest, more expensive probe like black magic probe
R/C Serial
In addition to the classic PPM input, that mostly require receiver modification, one pin of the R/C connector is routed to the MCU UART2 receive input through a controlled inverter.
This new feature allow direct connection (3 pin) of several brand off-the-shelf receivers without hardware modification or external encoder board.
- RX2_POL(PB13) = 0 => R/C serial (Rx2) is non-inverted : allow use standard polarity serial receivers (Spektrum, FlyElectric...)
- RX2_POL(PB13) = 1 => R/C serial (Rx2) is inverted : allow use of S.BUS protocol compatible receivers (Futaba, FrSky,...)
(see R/C Receivers and Radios page for serial compatible receiver)
Real Time Clock
supercap powered rtc, permit to associate correct time and date on sdcard log files, when ap is unpowered between flights
Power Switch
5V power output pin on AUX connector ("5Vaux",#2) can be switched ON and OFF on demand using APSW (MCU GPIO output PB12).
- APSW = 0 => 5V Aux OFF
- APSW = 1 => 5V Aux ON (default)
The internal switch TPS2051B is designed to withstand 500mA continuous current and is short-circuit and thermally protected.
(see TPS2051B datasheet for recommended operation conditions)
Pictures
Pinout
Pins Name and Type are specified with respect to the Autopilot Board
Pin # | Name | Type | Description |
---|---|---|---|
1 | GND | PWR | common ground |
2 | +5V | PWR | 5V Rail from autopilot |
3 | SRVx | OUT | Servo signal (PWM) |
Pin # | Name | Type | Description |
---|---|---|---|
1 | GND | PWR | common ground |
2 | +5v | PWR | 5V Rail from autopilot |
3 | PPM in | IN | PPM Stream from R/C Receiver (5V tolerant) |
4 | RX2 | IN | UART2 Serial Input (5V Tolerant) through controlled inverter |
Pin # | Name | Type | Description |
---|---|---|---|
1 | GND | PWR | common ground |
2 | +5V | PWR | 5V Rail from autopilot |
3 | +3.3V | PWR | 3.3V Rail from autopilot |
4 | RX1/4/6 | IN | UART1/4/6 Serial Input (3.3V level, UART1 and UART6 are 5V tolerant, UART4 IS *NOT* 5V tolerant) |
5 | TX1/4/6 | OUT | UART1/4/6 Serial Output (3.3V level) |
Pin # | Name | Type | Description |
---|---|---|---|
1 | GND | PWR | common ground |
2 | +5V | PWR | 5V Rail from autopilot |
3 | +3.3V | PWR | 3.3V Rail from autopilot |
4 | SDA1/2 | Open Drain I/O (1.5k pull-up) |
I2C1/2 bus Serial DAta |
5 | SCL1/2 | Open Drain I/O (1.5k pull-up) |
I2C1/2 bus Serial CLock |
Pin # | Name | Type | Description |
---|---|---|---|
1 | GND | PWR | common ground |
2 | USB+ | I/O | USB bidirectional D+ line |
3 | USB- | I/O | USB bidirectional D- line |
4 | VBUS | IN | Indicates the presence of USB bus power (5V level), DFU or USB storage Mode selection |
Note: MiniUSB and Molex USB connectors are in parallel, only one can be connected at a time.
Pin # | Name | Type | Description |
---|---|---|---|
1 | GND | PWR | common ground |
2 | +5V | PWR | 5V Rail from autopilot |
3 | +3.3V | PWR | 3.3V Rail from autopilot |
4 | CS1 | OUT | Slave Select. Selects the SPI slave (PB9) |
5 | MOSI1 | I/O | SPI1 Master Out Slave In. Data output from master / data input to slave |
6 | MISO1 | I/O | SPI1 Master In Slave Out. Data input to master / data output from slave |
7 | SCK1 | I/O | SPI1 Serial clock. Clock output from master or input to slave |
Pin # | Name | Type | Port | Description |
---|---|---|---|---|
1 | GND | PWR | common ground | |
2 | +5Vaux | PWR | 5V from autopilot through Power Switch | |
3 | +3.3V | PWR | 3.3V Rail from autopilot | |
4 | AUX1 | I/O | PB1 | General Purpose I/O #1 or ADC_1 Input or PWM6 |
5 | AUX2 | I/O | PC5 | General Purpose I/O #2 or ADC_2 Input |
6 | AUX3 | I/O | PC4 | General Purpose I/O #3 or ADC_3 Input |
7 | AUX4 | I/O | PB15 | General Purpose I/O #4 (also spektrum bind pin) |
Pin # | Name | Type | Description |
---|---|---|---|
1 | GND | PWR | common ground |
2 | +3.3V | PWR | 3.3V Rail from autopilot |
3 | RST | IN | MCU Reset |
4 | SWCLK | IN | Serial Wire Clock |
5 | SWDIO | I/O | Serial Wire Data Input/Output |
Schematic
PCB
Gerber & Drill Files
PCB design Eurocircuits 6-C class compliant:
Download Apogee v1.00 gerber & drill files (zip)
RS274X, units = Inches, format = 2:5
- Apogee_v100_Silkscreen_TOP.GBR (Top Component Print Layer)
- Apogee_v100_Soldermask_Top.GBR (Top Solder Mask)
- Apogee_v100_Paste_Mask_Top.GBR (Top Paste Mask, stencil)
- Apogee_v100_Signal_Top.GBR (Top Copper Layer)
- Apogee_v100_Internal_Plane_1.GBR (Internal Copper Layer GND)
- Apogee_v100_Internal_Plane_2.GBR (Internal Copper Layer +3.3V)
- Apogee_v100_Signal_Bottom.GBR (Bottom Copper Layer)
- Apogee_v100_Paste_Mask_Bottom.GBR (Bottom Paste, stencil)
- Apogee_v100_Soldermask_Bottom.GBR (Bottom Solder Mask)
- Apogee_v100_Outline.GBR (Board Outline)
- Apogee_v100_Drill.GBR (NC XY coordinates & Drill tools sizes)
Assembly
Components Layout
Bill Of Material
Download Apogee v1.00 Bill of Material (zipped .xls file)
PCB and assembled boards suppliers
Check availability on Get Hardware page
Mechanical Dimensions
Programming
Apogee autopilot can reprogrammed in two different ways:
- using the MCU native (embedded in rom) DFU USB bootloader over the on-board USB header (so pre-loading an "external" bootloader is useless)
- required hardware : usb cable with usb-mini connector
- required software : dfu_util tool (present in ubuntu repository)
- using the SWD (Serial Wire Debug) connector
- required hardware : usb cable with usb-mini connector, molex to 2.54mm pitch pin cable, swd part of a cheap stm32 evaluation board (any discovery board, start @ 8$)
- required software : st_flash and st_util, have to be compiled from source (https://github.com/texane/stlink)
On-board Data Logging
It is possible to write data on the embedded SD card from the main autopilot program. In order to cope with a real-time constraints of the autopilot, a light RTOS called ChibiOS is used to split the logging task from the rest of the system. Two modules are necessary to enable the logging system: the driver of the SD card system that also handle the file system (using FATFS) and a dynamic memory allocation system called TLSF. In order to enable this features for your apogee board, you need to select the correct board type and add the required modules to the firmware section of your airframe file (logging is currently only available for fixedwing firmware):
<firmware name="firmware"> ... <target name="ap" board="apogee_1.0_chibios"> ... </target> ... <module name="tlsf"/> <module name="logger" type="sd_chibios"/> </firmware>
This will active the automatic opening of a new log file (30 seconds) after each startup of the autopilot. Then you can freely write ASCII or binary data into this file (see a simple example logging for meteorological data logging). The file is automatically closed upon battery disconnection, no need to press any button to stop the logging.
To recover the data on the SD card, just power up the board without the USB plugged (otherwise it will enter in DFU boot mode), then plus the USB cable to the board and to your computer. This will stop the main autopilot program and will mount the SD card as a regular mass storage with a FAT file system. The log files are placed in a PPRZ folder. Unplugging the USB will reset the autopilot.
In addition to this, you can also load a flight recorder module (it also needs the pprzlog module for supporting the specific paparazzi binary log format).
<firmware> ... <module name="pprzlog"/> <module name="flight_recorder"/> ... </firmware>
with the appropriate telemetry file (conf/telemetry/fixedwing_flight_recorder.xml). This will automatically open a second file where telemetry messages described in the FlightRecorder section of the telemetry file will be logged in binary format. The files are store in a separated FR folder on the SD card. The decoding procedure is the same than OpenLog and is using the sd2log tool:
~/paparazzi/sw/logalizer/sd2log [log_file] [optinal_output_dir]
This will produce 3 files: a .log and a .data files similar to the normal ground station log and .tlm file that is a simple copy of the binary file (but rename with the same base name than the two others).
Debugging
Debugging with STM Discovery ST-LINK/V2 embedded debug tool
Debugging with CricketProbe
Debugging with Black Magic Probe
Source Files
Apogee v1.00 hardware design (zipped Protel99SE SP6 database file)
Source code
Available in latest git master branch
Where to Buy
You can purchase Apogee V1.00 from one of the following stores: