Tracking Antenna Controller Improvements (M3)
Table of Contents
IMPORTANT
This board had issues. There is one usable rework which is documented in the user guide below. It should only be used for EFS testing as we await the fixed rev 2. If you are looking for rev 2, see M3 Tracking antenna controller rev 2 - Electrical - WARG
Links
Altium: https://warg.365.altium.com/designs/BAA43D18-D61B-477A-A049-0D788FA35A7D#design
User Guide: Tracking Antenna Controller M3 End User Guide
Introduction
Context
What it will not have
support ardupilot as a backup
support Bluetooth
design around nucleo
similar to pixracer
6S or 3S battery cell monitor
What it will have
Fix servo backfeed issue
seeduino xiao
main proccessor EFS is already devving around
needs to have access to pins for EFS debugging w/ logic analyzer
gps connector for external gps
contains compass as well
Neo M9N or M9P (see arch doc for link)
same as we use on the drone
this device has the CMOS battery inside of it
wifi module on the board or external, EE designer choice
barometer on the board
Doing it offboard since efs doesn’t really need it right now.
a few neopixels on the board
low battery indicator (need to have input voltage sense) → done already?
power supplies support 6S 5S 4S and 3S battery input
maximize mechanical packaging benefits
support 30.5x30.5mm mounting pattern
just do connectors to sensors instead of on the same pcba
sd card on board for logging → done already? Not in this rev for the sake of pin space
Display screen on board or external (TFT variant)
support 1:1 harnesses for all external modules
JST connectors for all off board stuff
Add diode for Neopixel supply voltage, drop 0.7V to meet data sheet supply voltage to logic voltage ratio
If possible usb port for debugging mavlink? - Not mandatory
Why
improve functionality for ease of development and connectivity
integrated in one thing for flight tests, easy to verify it looks good
Justified in Tracking Antenna Long Term Vision & 2024-06-01 EFS Director Sync
Who
@Ryan Scomazzon
When
For Tracking Ant M3
Engineering
@Ryan Scomazzon
@Siddharth Muralikrishnan
Architecture
Very straight forward
To-do
Here is an action list to help with collaboration with Siddharth. Set status to “In Progress” when you start something so I don't take it. Put “Finished” when done. I can start with the pcb after the schematic is done. I will base it off of the nucleo shield file to make life easy.
Schematic/Pre-PCB Tasks | Status |
---|---|
Fix servo backfeed issue | Completed |
Add seeeduino xiao to schematic
| Completed |
Determine the correct connector for the gps and add to the schematic | Completed |
Add wifi module to schematic (connector)
| Not Doing |
Bonus tasks: Can be saved for next rev but good if time |
|
---|---|
Select and add neopixels
| Completed |
Select barometer and add to schematic
| Completed |
| Completed |
| Not doing |
PCB Tasks (Moreso reminders here) |
|
---|---|
|
|
Changes to existing board
I am basing the schematic off of the current nucleo shield board. I made a new schematic for the new onboard devices and removed the interface sheet for the nucleo interconnectors. The Seeeduino has way less pins than the nucleo so things have changed. I have removed the additional servo pins that do not have overcurrent protection since we only need three pins. I have also removed the SD card reader/writer since debug data is sent over WiFi. I am also removing the protocol connectors that we don’t need and putting everything that uses the same bussed protocols on the same bus.
The I2C pullup resistors have been switched from 3.3k to 4.7k since this is a more common value for I2C and in the E3 series. I am using this resistor since it is already in the WARG Altium library. RC0402FR-074K7L YAGEO | Resistors | DigiKey
Low battery indicator
Removed this and connected the voltage sense to the MCU.
Connectors
“For now the sensors we are using on the tracking antenna: GPS(UART), IMU(I2C/SPI), WIFI(SPI).” “the imu we were using I believe only has i2c.“ Discord - Group Chat That’s All Fun & Games
GPS
The GPS uses UART. The Pixhawk standard connectors for UART are either the telemetry connector or the standard GPS connector which has UART and I2C in one. Right now our GPS (SAM-M8Q) only uses the UART but we plan to switch use a GPS+Compass module (M9N), which uses this GPS connector. Therefore, I will use that connector standard. When using another GPS, we might need a harness but this would be needed anyways since our other GPS uses header pins for UART.
I2C
One I2C connector is needed for the IMU (when separate from the GPS)
Adding one more for the barometer (for if it is chosen to be added in the future.
I am adding another spare one because it adds zero extra pin usage to put another device on the same I2C bus.
One additional connector will be added for the display. This one will not use the Pixhawk standard since the display has its own connector and a 1:1 connection would be easier for integration.
SPI
Not adding SPI anymore since it is only needed for the WIFI module and it takes too many pins. Since the WIFI will be part of the MCU breakout, this would just be a spare anyways.
WIFI Module
We will no longer be adding the WIFI module since it takes too many pins from the seeeduino. Instead, we are choosing a different processor board which has WIFI built in.
Deciding to keep this on board (removable via headers) to make integration easy and reliable. The board we use (Overview | Adafruit AirLift - ESP32 WiFi Co-Processor Breakout | Adafruit Learning System) needs SPI and two more pins, so it won’t fit a standard Pixhawk connector anyways.
Barometer
EFS doesn’t seem to care too much about it. I think the play is to not add it on board and just use the extra I2C connector if we need one and connect it to an external baro breakout board. This also allows us to defer the job of breaking out the IC to someone else so this board is easier to solder and more reliable.
ICP-20100 TDK InvenSense | Sensors, Transducers | DigiKey
Plopping this here for now since it is what the pixhawk uses but it is probably too small and I have to check with EFS to make sure they are cool with it using I2C (since we are out of pins on the seeeduino and I2C is the only one where we can just throw it in the existing bus).
USB debug port
Not doing this since it is just a nice to have and we do not have more pins for another serial port.
Display
For the display we are using https://www.digikey.ca/en/products/detail/seeed-technology-co-ltd/104020208/10667534?s=N4IgjCBcpgrALFUBjKAzAhgGwM4FMAaEAeygG0QBmWANgE4wAOEAXSIAcAXKEAZU4BOASwB2AcxABfIgFoATEhCpIggK6ES5ELFbSQMmouVqNpSBUq7ZEaEvTZ8RMxTh0A7CCJyabxC0l6CuYgADIAwgAiAASsRDq27FBgHImQcrB6hrZCACY8MmAADIWeIFw8pZwAnux4PBg4qAFAA . Its cheap and has the supporting electronics on board to make integration easy. It interfaces through I2C so we can throw it on the same bus as everything else and not waste more pins. It also has nothing on the bottom so it can sit flat on the assembly. This does however mean it has a connector on the too for I2C. This still makes integration easy since we only need to have a connector on the board to interface with the display. To keep the connector 1:1, we are using the Grove 4 pin connector, which is on the display. I am picking the surface mount version to keep it consistent with all the other connectors. Here is the selected connector and cable needed to join the board and the display. Note that these parts come in packs of multiple units, so do not order 5 of them for 5 boards. See how many the pack comes with when choosing how many to order.
Connector:
114020163 Seeed Technology Co., Ltd | Development Boards, Kits, Programmers | DigiKey
Cable:
110990036 Seeed Technology Co., Ltd | Development Boards, Kits, Programmers | DigiKey
This is the smallest cable you can buy for the grove connectors.
Seeeduino
Turns out the Seeduino XIAO SAMD21 (our current one) does not even have enough pins for the bare minimum of what we need. I will be selecting a different board instead. We will use the seeeduino XIAO ESP32C3 because it has WIFI built in so we can free up the SPI pins.
113991054 Seeed Technology Co., Ltd | Development Boards, Kits, Programmers | DigiKey
The datasheet isn’t great so I will be using these ones instead that I found elsewhere
Seeed-Studio-XIAO-Series-SOM-Datasheet.pdf (seeedstudio.com)
Seeed-Studio-XIAO-Series-Package-and-PCB-Design.pdf (seeedstudio.com) for the pad layout.
XIAO ESP32C3.sch (seeedstudio.com) for the schematic
The seeeduino with headers has 7 adjacent 2.54mm headers on either side. For the header pins, this should do PH1-07-UA Adam Tech | Connectors, Interconnects | DigiKey. For the female header sockets, these should do PPPC071LFBN-RC Sullins Connector Solutions | Connectors, Interconnects | DigiKey. I plan to mount them in the correct place for the seeeduino and then have another set just mounted outside of that for EFS to use for debugging. Female headers should be best for that anyways since they are more protected. The footprint for the seeeduino will just be two of these headers in the right spot.
The battery power pins are on the bottom of the board and must be soldered, so when connected with the header pins, we can not access that. To fix this, we can just connect our 5V buck to the USB 5V power rail. The seeeduino has a fair bit of protection on the inputs, but it will still short the USB to the battery if both are connected at once. I will place a diode from the 5V buck to the input/USB power so the USB power does not get fed into the battery. However due to the design of the Seeduino, I can not prevent current from feeding from the battery towards the laptop, however the laptop should not be drawing excess current and it should have robust input protection.
There is internally a regulator to drop the voltage to 3.3V so I will use a Shottkey diode so the input voltage to this regulator is high enough.
ESP32 datasheet for power reference esp32-c3_datasheet_en.pdf (espressif.com) - this suggests 1A of output current could theoretically be pulled. The schematic shows the regulator only can withstand 750mA anyways so I will design towards that spec when choosing the diode. I will choose something at least 1A To be sage. Since diodes are cheap, I will give lots of overhead and go for a minimum 1.5A of rectified current diode.
There are thousands of diodes that meet this spec. This one meets this spec and was the lowest forward voltage I can find at a cheap price.
CRS15I30B(TE85L,QM Toshiba Semiconductor and Storage | Discrete Semiconductor Products | DigiKey
Vf = 400mV
If = 1.5A
Nathan’s seeeduino tracking antenna board is here for reference hardware/Projects/Arduino_AAT at master · UWARG/hardware (github.com).
Neopixels
Picking smaller Neopixels. Looks better and cheaper (if buying 6+). Also, no decoupling caps are needed on the small ones according to the datasheet. Note, on digikey they are ordered in bags of 10: 4684 Adafruit Industries LLC | Optoelectronics | DigiKey
Future Improvements
As we notice room for improvement on this board during the design process, I will put them here. If I have time to add them I will do so and remove them from this list but we would like to get this order out soon. Anything left here should be added in the next iteration of the board.
Pick a new 5V buck that does not need an external LDO to reduce part count/footprint/cost.
Add on board antenna for the seeduino rather than replying on attaching one to it