Circuit board design
ImperialSpaceSociety/picotracker-Lora
This is the code base and hardware design files for the Lora pico tracker to be flown around the world

Rust based application for custom designed PCB.
Pcbdesign is an open-source printed circuit board by viktorfrom, from the viktorfrom/e7020e-embedded-system-design repository on GitHub, published under the MIT licence. It is a 2-layer board of 50 × 50 mm with 32 parts on 52 nets, routed with 203 tracks and 17 vias.
It is built around the CMWX1ZZABZ-078 and LM1117-ADJV. Its parts include 15 capacitors, 5 resistors, 3 connectors, 2 ICs and 2 switches.
Project designed and written in Rust in conjunction with the E7020E Embedded System Design course at Luleå University of Technology.

The purpose of this project is to create a breathalyzer to estimate the blood alchohol content (BAC) in a person's breath. To do this a prototype PCB will be designed connected to an alchohol sensor, a button to start the breathalyzer and a small display to show the alchohol permille detected. Over LoRa this device will also alert a ThinkBoard server that this user's breath contains too much alchohol, i.e. they are about to pass out.
The goal is to package this is in a simple and safe to use way for users to interact with. The data that is sent to the ThinkBoard server could be seen as sensitive data and would be ideal to encrypt it before transmitting it.
There is no sure way to calibrate this device as the project team does not have access to a real industry-grade breathalyzer. Thus this device can only very roughly estimate the BAC of a person's breath and SHOULD NOT be trusted in any serious situation where it is critical to know the real BAC.
Install rustup by following the instructions at https://rustup.rs.
Then install the following tools for rustup and cargo:
rustup component add llvm-tools-previewrustup target add thumbv6m-none-eabicargo install cargo-binutilsBelow are the absolute minimum packages you will need for Linux. Names might vary depending on your distribution, you might need to install it manually if you can't find it using your distribution's package manager.
openocd
arm-none-eabi-gdb
gcc / gcc-c++ (as well as their respective dev packages)
llvm-8.0 (and its dev package)All the tools can be install using Homebrew:
brew cask install gcc-arm-embedded
brew install openocdThe design of the breathalyzer can be found in /pcbdesign. It was created and can be opened with KiCad. The program has been written especially for that design.
First confirm that the correct runner is chosen in .cargo/config, as the gdb package name might be different depending on you OS. Then build the project
cargo build --features="radio"Connect to the card using the Nucleo F401RE dev board as a programmer with the given configuration
openocd -f openocd.cfgThen build the project and flash the card
cargo run --features="radio" --releaseLicensed under the MIT license. See LICENSE for details.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 5 | 100n | Capacitor_SMD:C_0805_2012Metric | C1, C13, C15, C16, C19 |
| 4 | 0.1u | Capacitor_SMD:C_0805_2012Metric | C2, C7, C9, C12 |
| 2 | 10u | Capacitor_SMD:C_0805_2012Metric | C8, C11 |
| 2 | 10u | Capacitor_SMD:CP_Elec_5x5.3 | C14, C17 |
| 2 | 1200 | Resistor_SMD:R_0805_2012Metric | R3, R5 |
| 2 | 680 | Resistor_SMD:R_0805_2012Metric | R2, R4 |
| 2 | SW_Push | Button_Switch_SMD:SW_Push_1P1T_NO_6x6mm_H9.5mm | SW1, SW2 |
| 1 | 100 | Resistor_SMD:R_0805_2012Metric | R6 |
| 1 | 100n | Inductor_SMD:L_0805_2012Metric | L1 |
| 1 | 10n | Capacitor_SMD:C_0805_2012Metric | C20 |
| 1 | 1u | Capacitor_SMD:C_0805_2012Metric | C10 |
| 1 | Buzzer | ProjectPCB:PKM13EPYH4000_piezo | BZ1 |
| 1 | CMWX1ZZABZ-078 | ProjectPCB:CMWX1ZZABZ_longer_pads | U1 |
| 1 | Conn_01x04_Male | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | Breathalizer1 |
| 1 | Conn_01x06_Male | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | J1 |
| 1 | Conn_01x07_Male | Connector_PinHeader_2.54mm:PinHeader_1x07_P2.54mm_Vertical | SSD1306-SPI1 |
| 1 | Conn_Coaxial | Connector_Coaxial:U.FL_Molex_MCRF_73412-0110_Vertical | J3 |
| 1 | LM1117ADJ | Package_TO_SOT_SMD:SOT-223 | U2 |
| 1 | LOGO | ProjectPCB:BEER_SMALL | G*** |
| 1 | USB_B_Micro | Connector_USB:USB_Micro-B_Wuerth_629105150521 | J2 |
It measures 50 × 50 mm and has 2 copper layers, 1.6 mm thick.
32 parts, built around the CMWX1ZZABZ-078 and LM1117-ADJV. 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 viktorfrom/e7020e-embedded-system-design repository on GitHub, at the commit this page was made from: the board is pcbdesign/pcbdesign/pcbdesign.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
ImperialSpaceSociety/picotracker-Lora
This is the code base and hardware design files for the Lora pico tracker to be flown around the world


jsjolund/dmx512-controller-board
Controller board for DMX512 compatible devices, built around the STM32F4 processor



hoglet67/RGBtoHDMI
Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!
