Difference between revisions of "Apogee/v1.00"

From PaparazziUAV
Jump to navigation Jump to search
 
(21 intermediate revisions by 7 users not shown)
Line 11: Line 11:
== Overview ==
== Overview ==


* STMicroelectronics STM32F405 MCU based
* 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 46: Line 46:
=== SDIO (MicroSD card) ===
=== SDIO (MicroSD card) ===


* work in progress for use within paparazzi
* software support available with '''v5.2''' and above
* usable as datalogger with non paparazzi firmware (not yet published, available on demand)
* hi-cap power designed to give enough time to cleanly save buffer and close file(s) when power outage detected
* 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 ===
Line 57: Line 57:


=== USB Modes ===
=== USB Modes ===
planned behavior :
 
* usb plugged before autopilot is powered : enter DFU mode to be flashed
* 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
* 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
Line 77: Line 77:
=== Power Switch ===
=== Power Switch ===


'''5V''' power output pin on '''AUX connector''' ("5Vs",#2) '''can be switched ON and OFF''' on demand using APSW (MCU GPIO output PB12).
'''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 = 0 => 5V Aux OFF
* APSW = 1 => 5V Aux ON (default)
* APSW = 1 => 5V Aux ON (default)
Line 90: Line 90:
Image:Apogee_v100_bottom.JPG|Apogee v1.00 bottom view
Image:Apogee_v100_bottom.JPG|Apogee v1.00 bottom view
Image:Apogee_v100_top_1E.JPG|Apogee v1.00 top 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 99: 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="5%"|''Color''
!width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Description''
|-
|-
|1||GND||PWR||common ground||style="background:black; color:white"|Black
|1||style="background:black; color:white"|GND||PWR||common ground
|-
|-
|2|| +5V||PWR||5V Rail from autopilot||style="background:Orange; color:white"|Orange
|2||style="background:Orange; color:white"|+5V||PWR||5V Rail from autopilot
|-
|-
|3||SRVx||OUT||Servo signal (PWM)||White
|3||SRVx||OUT||Servo signal (PWM)
|}
|}


Line 111: 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="5%"|''Color''
!width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Description''
|-
|-
|1||GND||PWR||common ground||style="background:black; color:white"|Black
|1||style="background:black; color:white"|GND||PWR||common ground
|-
|-
|2|| +5v||PWR||5V Rail from autopilot||style="background:Orange; color:white"|Orange
|2||style="background:Orange; color:white"|+5v||PWR||5V Rail from autopilot
|-
|-
|3||PPM in||IN||PPM Stream from R/C Receiver (5V tolerant)||style="background:white; color:black"|White
|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), reversible||style="background:green; color:white"|Green
|4||style="background:green; color:white"|RX2||IN||UART2 Serial Input (5V Tolerant) through [[#R/C Serial|controlled inverter]]
|}
|}


Line 125: 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="5%"|''Color''
!width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Description''
|-
|-
|1||GND||PWR||common ground||style="background:black; color:white"|Black
|1||style="background:black; color:white"|GND||PWR||common ground
|-
|-
|2|| +5V||PWR||5V Rail from autopilot||style="background:Orange; color:white"|Orange
|2||style="background:Orange; color:white"|+5V||PWR||5V Rail from autopilot
|-
|-
|3|| +3.3V||PWR||3.3V Rail from autopilot||style="background:Red; color:white"|Red
|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 Tolerant)||style="background:green; color:white"|Green
|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)||style="background:blue; color:white"|Blue
|5||style="background:blue; color:white"|TX1/4/6||OUT||UART1/4/6 Serial Output (3.3V level)
|}
|}


Line 141: 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="5%"|''Color''
!width="7%"|''Pin #''!!width="10%"|''Name''!!width="12%"|''Type''!!''Description''
|-
|-
|1||GND||PWR||common ground||style="background:black; color:white"|Black
|1||style="background:black; color:white"|GND||PWR||common ground
|-
|-
|2|| +5V||PWR||5V Rail from autopilot||style="background:Orange; color:white"|Orange
|2||style="background:Orange; color:white"|+5V||PWR||5V Rail from autopilot
|-
|-
|3|| +3.3V||PWR||3.3V Rail from autopilot||style="background:red; color:white"|Red
|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||style="background:sienna; color:white"|Brown
|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||style="background:blue; color:white"|Blue
|5||style="background:blue; color:white"|SCL1/2||Open Drain I/O<br>(1.5k pull-up)||I2C1/2 bus Serial CLock
|}
|}


Line 157: 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="5%"|''Color''
!width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Description''
|-
|-
|1||GND||PWR||common ground||style="background:black; color:white"|Black
|1||style="background:black; color:white"|GND||PWR||common ground
|-
|-
|2||USB+||I/O||USB bidirectional D+ line||style="background:green; color:white"|Green
|2||style="background:green; color:white"|USB+||I/O||USB bidirectional D+ line
|-
|-
|3||USB-||I/O||USB bidirectional D- line||style="background:white; color:black"|White
|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 ||style="background:orange; color:white"|Orange
|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 172: 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="5%"|''Color''
!width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Description''
|-
|-
|1||GND||PWR||common ground||style="background:black; color:white"|Black
|1||style="background:black; color:white"|GND||PWR||common ground
|-
|-
|2|| +5V||PWR||5V Rail from autopilot||style="background:Orange; color:white"|Orange
|2||style="background:Orange; color:white"|+5V||PWR||5V Rail from autopilot
|-
|-
|3|| +3.3V||PWR||3.3V Rail from autopilot||style="background:red; color:white"|Red
|3||style="background:red; color:white"|+3.3V||PWR||3.3V Rail from autopilot
|-
|-
|4||CS1||OUT||Slave Select. Selects the SPI slave||style="background:sienna; color:white"|Brown
|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||style="background:Grey; color:white"|Grey
|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||style="background:Green; color:white"|Green
|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||style="background:Yellow; color:black"|Yellow
|7||style="background:Yellow; color:black"|SCK1||I/O||SPI1 Serial clock. Clock output from master or input to slave
|}
|}


Line 192: 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="5%"|''Color''
!width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Port!!''Description''
|-
|-
|1||GND||PWR||||common ground||style="background:black; color:white"|Black
|1||style="background:black; color:white"|GND||PWR||||common ground
|-
|-
|2|| +5V||PWR||||5V Rail from autopilot||style="background:Orange; color:white"|Orange
|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||style="background:Red; color:white"|Red
|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 212: 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="5%"|''Color''
!width="7%"|''Pin #''!!width="10%"|''Name''!!width="10%"|''Type''!!''Description''
|-
|-
|1||GND||PWR||common ground||style="background:black; color:white"|Black
|1||style="background:black; color:white"|GND||PWR||common ground
|-
|-
|2|| +3.3V||PWR||3.3V Rail from autopilot||style="background:red; color:white"|Red
|2||style="background:red; color:white"|+3.3V||PWR||3.3V Rail from autopilot
|-
|-
|3||RST||IN||MCU Reset||style="background:white; color:black"|White
|3||style="background:white; color:black"|RST||IN||MCU Reset
|-
|-
|4||SWCLK||IN||Serial Wire Clock||style="background:blue; color:white"|Blue
|4||style="background:blue; color:white"|SWCLK||IN||Serial Wire Clock
|-
|-
|6||SWDIO||I/O||Serial Wire Data Input/Output||style="background:sienna; color:white"|Brown
|5||style="background:sienna; color:white"|SWDIO||I/O||Serial Wire Data Input/Output
|}
|}


== Schematic ==
== Schematic ==
Line 290: 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 07:22, 2 August 2018

Apogee v1.00 bottom side Apogee v1.00 top side

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

Apogee v100 pinout.png

SRV0/1/2/3/4/5
Pin # Name Type Description
1 GND PWR common ground
2 +5V PWR 5V Rail from autopilot
3 SRVx OUT Servo signal (PWM)


R/C
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


UART1/4/6
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)


I2C1/2
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


USB
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.


SPI1
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


AUX
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)


SWD
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

Apogee v1.00 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

Apogee v1.00 Top Mechanical Dimensions Apogee v1.00 Side 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

Apogee debugging with Discovery dev board


Debugging with CricketProbe

Apogee debugging with CricketProbe

Debugging with Black Magic Probe

Apogee 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: