ARM Cortex M0+ Atmel SAM D20 E
The board is centred around the Atmel SAM D20 microcontroller. We use the smallest E variant in a QFN-32 package (-M)
From the datasheet we can see there’s a few RAM/ROM size options:
|-14||16 KBytes||2 KBytes|
|-15||32 KBytes||4 KBytes|
|-16||64 KBytes||8 KBytes|
|-17||128 KBytes||16 KBytes|
|-18||256 KBytes||32 KBytes|
The SAM D series implements Generic Clocks (GCLKs) which allow us to divide, route and disable clock signals internally as required. These are used particularly for APRS.
Thanks to an error in Revision C silicon we can’t configure the correct pin layout for the SERCOM used to talk to the radio. Currently it’s just being bit-banged as both Mouser and Farnell appear to have bought large quantities of Revision C silicon. TODO: Fix in future board revision??
Global Positioning System ublox MAX-M8C
The MAX-M8C module is used for positioning. The -M8C variant has a 1.65V - 3.6V supply but doesn’t include a RTC crystal. The ARM Cortex communicates over 9600 baud UART using the UBX protocol.
The module is set in flight mode (Platform Model =
1G). Whilst the module is capable of receiving two GNSS contellations
at once it is set to only receive GPS. This allows the receiver to be
set in power save mode (
lpMode = 1 in the
message). TODO: Update this after experiments with advanced
HAB Supplies is a great supplier for this module.
Radio Si 4063/60
The tracker uses the Si4063/60 transmitter from Si-Labs, although the Si446x series of transceivers is pin-compatible. With a 1.8V - 3.6V supply and 142 - 1050MHz frequency range this transmitter is ideal.
The Si4060 specifies a max output power of +13dBm, and the Si4063 specifies +20dBm. Thus far we have used the Si4063 on a reduced power setting to give +6dBm of output power as measured by a signal analyser. TODO: More testing to bring the output power up to the +10dBm limit.
For FSK modes (RTTY, Contestia) the radio is set in CW mode and the
MODEM_FREQ_OFFSET parameter is used to set the tone. The 16.369MHz
clock from the TCXO gives a frequency resolution of 7.8053 Hz in this
For AFSK (APRS) the radio is set in 2GFSK mode and the
MODEM_FREQ_DEV parameter is used to set the FM deviation. GPIO1 is
then used in direct mode as a modulation input. The radio applies a
gaussian filter to this square wave which results in an acceptable
spectrum. See this ipython notebook for more details on how the
MODEM_TX_NCO_MODE parameters are chosen et cetera. (The internal
filter is a 17-tap FIR filter that is by default configured as
You can build your own or buy one online.
Memory 128Mbit SPI Flash
This hasn’t been used for anything yet, and we haven’t even written the drivers. Potentially could be used in future?
Sometimes we don’t populate this.
Here’s the datasheet.
The Pin 1 marker is a perfect circle.
It has a supply voltage of 1.7V - 3.3V. This was one of the harder
parts for find for a 1.8V volt supply. The output waveform is
specified at 0.8Vpk-pk and in test it’s about 0.9Vpk-pk. This is no problem
for the radio but ideally would be higher for the CLKIN pin of the ARM
Cortex. We’ve had no problems with a 1.8V supply, but at 3.3V the ARM
Cortex never locks on the clock. In this case the
USE_XOSC option in firmware can be set false.
The frequency tolerance is given at ±2 parts-per-million (ppm) at 25°C, with ±1 ppm per year aging at 25°C. The temperature range is given at -30°C to 85°C with another ±2 ppm variation over this range. We’ve tested it to -55°C by dropping it unprotected into the jet stream (as you do) and it got rather drifty (10 ppm??) before the board cut out. TODO: Cold chamber testing
A 1/4 wave piece of guitar wire is used for the GPS antenna. This has vertical polarisation which means it will be 3dB down compared to a right-hand circularly polarised antenna. However the antenna has such a clear view of the sky that this isn’t an issue. TODO: Good picture
The telemetry antenna is a 1/4 wave ground plane antenna that is tuned to 434 MHz. It’s built from guitar wire with little bits of kapton tape on the end.
TODO How does this perform on 2 meters for APRS?
Windowed Hardware Watchdog
5th order Chebyshev
The tracker transmits Radio Teletype (RTTY).
The tracker alternately transmits Contestia Mode.
The tracker also transmits Automatic Packet Reporting System (APRS) packets.
The tracker uses geofences to decide which frequencies to operate on etc. APRS transmissions essentially follow this map and this list with exceptions for areas where airboune operation is not permitted.
See this ipython notebook used to automatically generate the C header files used for geofencing.
TODO: Actually test this