Skip to the content
PCBKitNew board
2 layers40 × 55.9 mmDaughterboard, the printed circuit board in 3D

Code for the kamikaze bot

Size
40 × 55.9 mm
Copper layers
2
Thickness
1.6 mm
Parts
39
Nets
49
Pads
155
Tracks, vias
187, 10
Pours
8
Routed
Yes
KiCad
KiCad 4
Created
25 Jun 2017
Updated
29 May 2022

Overview

Daughterboard is an open-source printed circuit board by funrollloops, from the funrollloops/kamikaze repository on GitHub. It is a 2-layer board of 40 × 55.9 mm with 39 parts on 49 nets, routed with 187 tracks and 10 vias.

It is built around the ATMEGA328P-AU, ULN2803A and TIP120. Its parts include 13 resistors, 11 diodes, 8 connectors, 3 capacitors and 2 ICs. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

3

README

README.md

Build instructions

bash
sudo apt install \
  cmake ninja-build git build-essential pkg-config qt4-default python3-pip \
  libavcodec-dev libavformat-dev libswscale-dev libavutil-dev libjpeg-dev
pip install conan
mkdir -p build/Release
(cd build/Release && conan install ../.. --build=missing)
cmake -B build/Release -DCMAKE_BUILD_TYPE=Release -GNinja \
  -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_CXX_CLANG_TIDY=/usr/bin/clang-tidy-14
ninja -C build/Release

Using a virtualenv, CC=clang-14, CXX=clang++-14 are recommended. conan should use the same compiler for dependencies as the main build. direnv can be used to automate loading the virtualenv and setting the compiler options.

Run the Blaster controller

The main program is kamikaze; run with all features enabled:

bash
ninja -C build kamikaze &&
build/kamikaze --logtostderr \
  --spi /dev/spidev0.0 \
  --save_directory=$(pwd)/output

--spi enables talking to the slave over SPI, which will only work on a Raspberry Pi connected to the daughterboard with a flashed Atmega328p (see the arduino/ folder). If using the prototype that communicates over USB Serial, pass --arduinoio_tty=/dev/ttyACM0 (or ACM1 etc) instead of --spi.

On a dev machine leave off both --spi and --arduinoio_tty to stub out all daughterboard communication.

CLI for controlling the hardware

Test the Arduino communication code with robot_test:

bash
ninja -C build robot_test && build/robot_test

The uploader binary

The uploader binary lives in uploader/. It monitors the shots directory, or any directory that is passed to it, and uploads any files that it finds that meet the specification. To run it, first install the requirements in uploader/requirements.txt:

$ sudo pip install -r uploader/requirements.txt

Next, obtain a copy of aws_credentials.secret, which contains the AWS credentials in the boto3 format. This format is documented on the boto3 site Basically, if you have an aws_access_key_id and an aws_secret_access_key, you can easily create this plain text file for yourself. Otherwise, you can obtain credentials from a teammate.

Finally, run the binary with an environment variable, like a normal python script:

AWS_SHARED_CREDENTIALS_FILE=aws_credentials.secret python uploader/uploader.py --watch_dir=/path/to/shots --upload_db=path/to/uploads.sqlite

The AWS_SHARED_CREDENTIALS_FILE environment variable is consumed by the boto3 AWS integration library and used automatically to connect to S3, where the files are uploaded to. Also note that by default the images are uploaded to the blaster-gallery bucket in the US West (N. California) region.

The --watch_dir flag is the directory that will be monitored for images in the specified format.

The --upload_db flag is the path to the sqlite database file that will be used to track uploads. It's perfectly fine to pass the path to a file that does not exist yet, and it will be created.

See also the repo that handles the display of these images (private): raygun

Install services (optional)

Install the systemd service to auto-start the controller with

bash
sudo systemctl enable $(pwd)/kamikaze-controller.service
./configure_autossh.sh  # Might need some configuration.

Parts

39
QtyValueFootprintReferences
8 LEDs:LED_0805D2, D3, D4, D5, D6, D7, D8, D9
8500Resistors_SMD:R_0805_HandSolderingR1, R2, R3, R4, R5, R6, R7, R8
2100Resistors_SMD:R_0805_HandSolderingR9, R12
222pFCapacitors_SMD:C_0805_HandSolderingC2, C3
1100nFCapacitors_SMD:C_0805_HandSolderingC1
110KResistors_SMD:R_0805_HandSolderingR11
112V_JACKfootprints:BARREL_JACKCON1
11KResistors_SMD:R_0805_HandSolderingR10
11N4007Diodes_ThroughHole:Diode_DO-41_SOD81_Vertical_AnodeUpD1
18MHzCrystals:HC-49VY1
1ATMEGA328P-AHousings_QFP:TQFP-32_7x7mm_Pitch0.8mmIC1
1AZIMUTHPin_Headers:Pin_Header_Straight_1x05P4
1CONN_13X2Pin_Headers:Pin_Header_Straight_2x13P3
1ELEVATIONPin_Headers:Pin_Header_Straight_1x05P5
1REDLEDs:LED_0805D11
1SHORTResistors_ThroughHole:Resistor_Vertical_RM5mmR13
1TIP120Power_Integrations:TO-220Q1
1ULN2803AHousings_SOIC:SOIC-18_7.5x11.6mm_Pitch1.27mmU1
1VALVEPin_Headers:Pin_Header_Straight_1x02P7
1X_ADC67Pin_Headers:Pin_Header_Straight_1x02P6
1X_PB01Pin_Headers:Pin_Header_Straight_1x02P1
1X_PC1Pin_Headers:Pin_Header_Straight_1x01P2
1YELLOWLEDs:LED_0805D10

Questions

How big is the Daughterboard PCB?

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

What parts does the Daughterboard use?

39 parts, built around the ATMEGA328P-AU, ULN2803A and TIP120. 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 Daughterboard KiCad files?

From the funrollloops/kamikaze repository on GitHub, at the commit this page was made from: the board is pcb/daughterboard.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Daughterboard design in my own project?

Its repository states no licence, so its author keeps all rights: ask funrollloops before reusing the design.

Similar boards

  • 2 layers66.7 × 61.7 mmVday, the printed circuit board in 3D

    Vday

    niteshkadyan/Hearty-LED-Necklace-Badge

    Kicad project files and Android app for the Hearty LED wearable necklace cum badge

    179 parts10MIT
  • 2 layers364.4 × 167.3 mmRedherring, the printed circuit board in 3D

    Redherring

    dcpedit/redherring

    Red Herring Keyboard PCB and case files

    226 parts253CC-BY-4.0
  • 2 layers148.8 × 132.2 mmUsbflashprog, the printed circuit board in 3D

    Usbflashprog

    robsonsmartins/usbflashprog

    A memory device programmer (Flash/EPROM/E2PROM) board and software, connected to PC by USB port.

    125 parts36
  • 2 layers489.6 × 170.7 mmMission control, the printed circuit board in 3D

    Mission control

    dcpedit/mission-control

    Modern replacement PCB for the IBM Model M 122

    286 parts31CC-BY-4.0
  • 2 layers168 × 123 mmV2 - 2, the printed circuit board in 3D

    V2 - 2

    RudgeLab/FluoPi

    Code and teaching materials for UC/BackyardBrains raspberry pi "macro" scope.

    131 parts26
  • 2 layersCatozap, the printed circuit board in 3D

    Catozap

    jones139/catocam

    Uses a custom trained YoloV8 model on a Raspberry Pi to Detect Cats in CCTV images and Unleash a Cat Deterrent

    3 parts18GPL-3.0
  • 2 layers32.5 × 21.2 mmTaptap, the printed circuit board in 3D

    Taptap

    dcpedit/taptap

    TapTap is a solenoid breakout board for those who are interested in adding a solenoid to their existing project. All you need are the following components, and an extra data pin on your microcontroller.

    9 parts13CC-BY-4.0
  • 2 layers323.8 × 169.8 mmAegis, the printed circuit board in 3D

    Aegis

    Koumbaya/Aegis

    unibody CRBKD-compatible PCB and cases.

    110 parts12