Skip to the content
PCBKitNew board
2 layers50 × 50 mmPcbdesign, the printed circuit board in 3D

Rust based application for custom designed PCB.

Size
50 × 50 mm
Copper layers
2
Thickness
1.6 mm
Parts
32
Nets
52
Pads
241
Tracks, vias
203, 17
Pours
5
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
20 Jan 2020
Updated
7 Apr 2020

Overview

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.

Main components

2

README

README.md

E7020E Embedded System Design

Project designed and written in Rust in conjunction with the E7020E Embedded System Design course at Luleå University of Technology.

alt text

Project description

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.

Limitations

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.

Components / shopping list

Requirements

  • Rustup 1.14.0+
  • rustc 1.31.0+ (stable)
  • GNU ARM embedded toolchain (check your package manager or manually install it)
  • OpenOCD
  • Nucleo dev board (in programming mode)
  • Breathalyzer PCB

Setup

rustc & cargo

Install rustup by following the instructions at https://rustup.rs.

Then install the following tools for rustup and cargo:

text
rustup component add llvm-tools-preview
text
rustup target add thumbv6m-none-eabi
text
cargo install cargo-binutils

Linux

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

text
openocd
arm-none-eabi-gdb
gcc / gcc-c++ (as well as their respective dev packages)
llvm-8.0 (and its dev package)

MacOS

All the tools can be install using Homebrew:

text
brew cask install gcc-arm-embedded

brew install openocd

PCB

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

Build instructions

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

text
cargo build --features="radio"

Flashing

Connect to the card using the Nucleo F401RE dev board as a programmer with the given configuration

text
openocd -f openocd.cfg

Then build the project and flash the card

text
cargo run --features="radio" --release

Authors

License

Licensed under the MIT license. See LICENSE for details.

Parts

32
QtyValueFootprintReferences
5100nCapacitor_SMD:C_0805_2012MetricC1, C13, C15, C16, C19
40.1uCapacitor_SMD:C_0805_2012MetricC2, C7, C9, C12
210uCapacitor_SMD:C_0805_2012MetricC8, C11
210uCapacitor_SMD:CP_Elec_5x5.3C14, C17
21200Resistor_SMD:R_0805_2012MetricR3, R5
2680Resistor_SMD:R_0805_2012MetricR2, R4
2SW_PushButton_Switch_SMD:SW_Push_1P1T_NO_6x6mm_H9.5mmSW1, SW2
1100Resistor_SMD:R_0805_2012MetricR6
1100nInductor_SMD:L_0805_2012MetricL1
110nCapacitor_SMD:C_0805_2012MetricC20
11uCapacitor_SMD:C_0805_2012MetricC10
1BuzzerProjectPCB:PKM13EPYH4000_piezoBZ1
1CMWX1ZZABZ-078ProjectPCB:CMWX1ZZABZ_longer_padsU1
1Conn_01x04_MaleConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalBreathalizer1
1Conn_01x06_MaleConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ1
1Conn_01x07_MaleConnector_PinHeader_2.54mm:PinHeader_1x07_P2.54mm_VerticalSSD1306-SPI1
1Conn_CoaxialConnector_Coaxial:U.FL_Molex_MCRF_73412-0110_VerticalJ3
1LM1117ADJPackage_TO_SOT_SMD:SOT-223U2
1LOGOProjectPCB:BEER_SMALLG***
1USB_B_MicroConnector_USB:USB_Micro-B_Wuerth_629105150521J2

Questions

How big is the Pcbdesign PCB?

It measures 50 × 50 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Pcbdesign use?

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.

Where can I download the Pcbdesign KiCad files?

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.

Can I use the Pcbdesign design in my own project?

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

Similar boards

  • 2 layers45.1 × 20.1 mmCircuit board design, the printed circuit board in 3D

    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

    55 parts14
  • 2 layers100 × 100 mmLab1, the printed circuit board in 3D

    Lab1

    alagerkvist/E7020E-Project

    This is our git-repo, make it beautiful!

    106 parts2
  • 2 layers54.5 × 31 mmLab1, the printed circuit board in 3D

    Lab1

    jsjolund/dmx512-controller-board

    Controller board for DMX512 compatible devices, built around the STM32F4 processor

    25 parts26
  • 2 layers40 × 40 mmLab, the printed circuit board in 3D

    Lab

    HTheolin/pasc

    31 parts3
  • 2 layers272.7 × 170.7 mmCPU Board, the printed circuit board in 3D

    CPU Board

    jsjolund/sailoraid

    Sensor package for the Laser Pico sail boat

    91 parts3
  • 2 layers50 × 23.2 mmAnalog, the printed circuit board in 3D

    Analog

    hoglet67/RGBtoHDMI

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

    32 parts1kGPL-3.0
  • 2 layers136.8 × 54.2 mmRetropie zero, the printed circuit board in 3D

    Retropie zero

    hackclub/OnBoard

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

    32 parts915
  • 2 layersMooltipass top, the printed circuit board in 3D

    Mooltipass top

    limpkin/mooltipass

    Github repository dedicated to the mooltipass project

    32 parts531