
Circuit board design
ImperialSpaceSociety/Project-Mach-1
This is the code and hardware designs for the high powered rocketry project at the Imperial College Space Society

This is the code and hardware designs for the high powered rocketry project at the Imperial College Space Society
Circuit board design is an open-source printed circuit board by ImperialSpaceSociety, from the ImperialSpaceSociety/Project-Mach-1 repository on GitHub. It is a 4-layer board of 30.5 × 82.6 mm with 89 parts on 101 nets, routed with 1,008 tracks and 152 vias.
It is built around the ATSAMD21J18A-AU, MAX-M8C-0 and IIS2MDC, with the W25Q64JVSSIM, SI7232DN and 0433BM41A0019E among its other parts. Its parts include 34 capacitors, 20 resistors, 13 ICs, 7 connectors and 4 inductors. It belongs with the SAM D and SAM boards of this library.
This repository contains information to support the high powered rocketry project at the Imperial College Space Society. It documents the electronic Command and Control Modules which are used within the project.
The repository structure is based on the high level electronics modules:
Each Module description has the following structure:
The following is intended to provide a view for the casual browser of the project content.
This flight computer was launched in July 2021 but was not recovered. Its now very easy to program using platform.io. No need to mess with board files.
However, the flight computer has 4 major issues.
It may be best to start from scratch using a well known processor, such as an ESP32, and a well designed radio module. From the flight, we discovered that the radio has to work flawlessly. Or else, we will loose the rocket. So maximising range and reliablity of the telemetery is vital. An off the shelf radio module as they will likely have all the RF systems optimised. Its quite hard to do it on a custom PCB.
We use the Arduino development environment to program the rocket flight computer. We use the arduino board files based off the Adafruit ItsyBitsy M0 Express, which uses the G variant of the SAMD21. The flight computer uses the J variant.
The main buses are as follows:
wire is the main I2C bus for the sensors including the:
wire1 is connected to a grove connector on the PCB, but not currently connected to anything.
Serial is used for printing out debug info via USB to a serial monitor(running on a computer)
Serial1 is used for a secondary connection to the Ublox MAX M8Q: GPS module
SPI1 is used to connect the Winbond w25q64JV: Flash chip 64 Mbytes
SPI is used to connect to the Sillicon Labs SI4463: 433 Mhz ISM band Telemetry radio transceiver




Memories tab. You will now burn the custom Arduino boot loader into SAMD21 on the flight computer with Atmel Studio. The bootloader is found in the latest releases by adafruit: https://github.com/adafruit/uf2-samdx1/releases/. Look for the bootloader for the itsybitsy_m0. We can use the same bootloader as the Itsybitsy M0 from adafruit. Download the bootloader to your computer and select that file.
Click the Program button once selected the right bootloader: 
Ideally, once the Arduino bootloader is uploaded, the Segger debugger will not be necessary anymore; All future programming can be done with the Arduino IDE.
We use Platform.io to program the flight computer as its much more conventient than using the Arduino environment. The platform.ini file captures all the dependencies(libraries, board files) and automatically downloads them. It even downloads the complilers all in the background, so its a simple matter of a single click on theupload button to compile and upload to the flight computer.
There are 4 pieces of code that are required.
gps_unix_time, gps_millisecond, timestamp, longitude, latitude, altitude, temperature, pressure, h3lis_gyro[0], h3lis_gyro[1], h3lis_gyro[2], h3lis_accelerometer[0], h3lis_accelerometer[1], h3lis_accelerometer[2], lsm9d_gyro[0], lsm9d_gyro[1], lsm9d_gyro[2], lsm9d_accel[0], lsm9d_accel[1], lsm9d_accel[2], lsm9d_mag[0], lsm9d_mag[1], lsm9d_mag[2]OK into the serial terminal inorder for the erase to happen.To get platform.io, install Visual Studio code. Then get the platform.io plugin. Then open the flight computer project you want to use. It should look like in the picture below. Hit the upload button as shown in the picture below to compile and upload to the flight computer. Also, ensure your computer in connected to the device via a USB cable. If all fails, try uploading the boot loader again as described in the Burning the bootloader section.

This was the old way of programming the flight computer, but its no longer used. Use the method described in the Using Platform.io to program the flight computer section.
https://adafruit.github.io/arduino-board-index/package_adafruit_index.json to Additional Board Manager Urls like so: 


Adafruit SAMD Boards into the search bar.
C:\Users\Medad\Documents\ArduinoData.
.ArduinoData\packages\adafruit\hardware\samd where you will find a folder like 1.5.9. Now you need to delete this folder, and replace it with our custom folder of board files that can be found in this repo: Project-Mach-1\Flight computer\Software\Custom board files for flight computer\1.5.9.

Project-Mach-1\Flight computer\Software\Arduino code\i2c_scanner on the arduino editor. You will see data on the serial port like this: 
Assuming you have completed the previous steps, navigate to Project-Mach-1\Flight computer\Software\Arduino code\main_flight_computer_code and run main_flight_computer_code.ino on the Arduino editor. This is where we will be doing further updates to the main project. Note how we directly add the library files into this project. These can be seen in the tabs at the top of the editor: 
The reason why we do this is the stock libraries downloaded directly from Arduino often have minor bugs which we have to fix. Therefore, we make a copy of the library files and load them directly into this project.
All our libraries are kept here: Project-Mach-1/tree/master/Flight%20computer/Software/Arduino%20code/libraries
Get Device Info:
Revision: 11
Part: Si4463
Part Build: 0
Id: F
Customer: 0
ROM_ID: 3 (3 = revB1B, 6 = revC2A)
Rev External: 3
Rev Branch: 0
Rev Internal: F
Patch: 0
Func: 1
Radio Temperature: 27.88 deg C
Radio Voltage: 3.29 VoltsInitialising..........
Chip Diagnostics initiated.
No Chip size defined by user. Checking library support.
Chip identified. This chip is fully supported by the library.
SPIMemory Library version: 3.3.0
JEDEC ID: 0xEF7017
Man ID: 0xEF
Memory ID: 0x70
Capacity: 8388608
Max Pages: 32768
Unique ID: 114518745233664, 0x688C52A779213900
-----------------------------------------------------------------------------------------------------------------------------
Testing library code
-----------------------------------------------------------------------------------------------------------------------------
Function Test result Runtime
-----------------------------------------------------------------------------------------------------------------------------
Power Down PASS 53 us
Power Up PASS 45 us
Erase Chip PASS 13.618 s
Erase 72KB PASS 214.66 msImage shows the view on SDR sharp when transmitting, and the RX data on a second flight computer. Transmissions done on the first one.

Hardware is Licensed under CERN OHL v.1.2 or later https://www.ohwr.org/documents/294 No warranty is provided for this documentation implied or otherwise.
Software is licensed under MIT License.
MIT License
Copyright (c) 2018 Imperial College Space Society
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 13 | 100nF | Capacitor_SMD:C_0603_1608Metric | C3, C4, C6, C7, C11, C23, C28, C29, C31, C33, C89, C91, C93 |
| 6 | 100K | Resistor_SMD:R_0603_1608Metric | R5, R15, R21, R22, R28, R29 |
| 6 | 10uF | Capacitor_SMD:C_0603_1608Metric | C1, C2, C5, C12, C32, C92 |
| 4 | 1K | Resistor_SMD:R_0603_1608Metric | R1, R12, R25, R26 |
| 4 | 1uF | Capacitor_SMD:C_0603_1608Metric | C22, C35, C36, C90 |
| 4 | 27K | Resistor_SMD:R_0603_1608Metric | R6, R16, R23, R24 |
| 4 | 3.3K | Resistor_SMD:R_0603_1608Metric | R3, R13, R17, R18 |
| 4 | MountingHole_Pad | MountingHole:MountingHole_3.2mm_M3_Pad | H1, H2, H3, H4 |
| 3 | 10nF | Capacitor_SMD:C_0402_1005Metric | C8, C20, C34 |
| 2 | 15pF | Capacitor_SMD:C_0402_1005Metric | C86, C88 |
| 2 | 220nF | Capacitor_SMD:C_0603_1608Metric | C30, C77 |
| 2 | Conn_Coaxial | Connector_Coaxial:U.FL_Hirose_U.FL-R-SMT-1_Vertical | J6, J7 |
| 2 | Screw_Terminal_01x04 | flight-computer:TerminalBlock_TE_282834-4_1x04_P2.54mm_Horizontal | J3, J5 |
| 2 | Si7232DN | Package_SO:Vishay_PowerPAK_1212-8_Dual | U5, U6 |
| 1 | 0433BM41A0019E | Johanson_frontend:BALUN_0433BM41A0019E | U2 |
| 1 | 0R | Inductor_SMD:L_0402_1005Metric | L3 |
| 1 | 10 Ohm | Resistor_SMD:R_0402_1005Metric | R2 |
| 1 | 16MHz | flight-computer:Crystal_SMD_2520-4Pin_2.5x2.0mm | Y3 |
| 1 | 220nH | Inductor_SMD:L_0603_1608Metric | L8 |
| 1 | 270pF | Capacitor_SMD:C_0402_1005Metric | C9 |
| 1 | 270pf | Capacitor_SMD:C_0402_1005Metric | C19 |
| 1 | 27nH | Resistor_SMD:R_0402_1005Metric | L2 |
| 1 | 33nF | Capacitor_SMD:C_0402_1005Metric | C21 |
| 1 | ATSAMD21J18A-AU | Package_QFP:TQFP-64_10x10mm_P0.5mm | U7 |
| 1 | BLUE_LED | LED_SMD:LED_0603_1608Metric | D2 |
| 1 | BMI088 | BMI088:PQFN50P450X300X100-16N | U10 |
| 1 | Buzzer | Buzzer_Beeper:Buzzer_12x9.5RM7.6 | BZ1 |
| 1 | Conn_01x02 | Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_Vertical | J4 |
| 1 | Conn_01x05 | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | J1 |
| 1 | DFLS130L | Diode_SMD:D_PowerDI-123 | D3 |
| 1 | IIS2MDC | Package_LGA:LGA-12_2x2mm_P0.5mm | U1 |
| 1 | LD3985G33R_TSOT23 | Package_TO_SOT_SMD:TSOT-23-5 | U15 |
| 1 | L_Core_Ferrite | Inductor_SMD:L_0603_1608Metric | L1 |
| 1 | MAX-M8C | RF_GPS:ublox_MAX | U4 |
| 1 | MAX40200AUK | Package_TO_SOT_SMD:SOT-23-5 | U14 |
| 1 | MS5607-02BA | Package_LGA:LGA-8_3x5mm_P1.25mm | U8 |
| 1 | NF | Capacitor_SMD:C_0402_1005Metric | C10 |
| 1 | NF | Resistor_SMD:R_0402_1005Metric | R7 |
| 1 | RED_LED | LED_SMD:LED_0603_1608Metric | D1 |
| 1 | STF202-22T1G | Package_SO:TSOP-6_1.65x3.05mm_P0.95mm | U9 |
| 1 | Si4463 | Package_DFN_QFN:QFN-20-1EP_4x4mm_P0.5mm_EP2.6x2.6mm_ThermalVias | U3 |
| 1 | TM-32.000-AF3-33-S-Oscillator | Crystal:Crystal_SMD_2520-4Pin_2.5x2.0mm | X1 |
| 1 | USB_B_Micro | flight-computer:USB_Micro-B_Molex-105017-0001 | J2 |
| 1 | W25Q64JVSSIM | Package_SO:SOIC-8_5.23x5.23mm_P1.27mm | U11 |
| 1 | Yageo434 | flight-computer:Yageo434 | ANT1 |

ImperialSpaceSociety/Project-Mach-1
This is the code and hardware designs for the high powered rocketry project at the Imperial College Space Society


Terrapin-Rocket-Team/SRAD-Avionics
Code and PCBs for the avionics subteam for the SRAD flight computer and side projects

shorlee/TeleSTERN
The TeleSTERN Project is an Open Source Rocketry Flight Computer based on the TeleMega by Altus Metrum.

Kev1n8088/OshTelemega
The Mega3080 FCU is an evolved clone of the Altus Metrum Telemega. Using the same firmware (meaning the same sensor suite), the primary developments are: - USB-C - Wago style spring terminals - Better GPS RF routing…

ImperialSpaceSociety/Flight-Computer
HPR project by undergraduate students from Imperial College Space Society.
ImperialSpaceSociety/picotracker-Lora
This is the code base and hardware design files for the Lora pico tracker to be flown around the world

daedalus-ind/icarus-hardware
Hardware of the onboard flight computer for the Icarus rocket.

It measures 30.5 × 82.6 mm and has 4 copper layers, 1.6 mm thick.
89 parts, built around the ATSAMD21J18A-AU, MAX-M8C-0, IIS2MDC and W25Q64JVSSIM. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the ImperialSpaceSociety/Project-Mach-1 repository on GitHub, at the commit this page was made from: the board is Hardware/circuit board design/circuit board design.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask ImperialSpaceSociety before reusing the design.