Skip to the content
PCBKitNew board
2 layers70 × 100 mmBadge v2, the printed circuit board in 3D

Badges made for the largest Student run hackathon in europe

Size
70 × 100 mm
Copper layers
2
Thickness
1.6 mm
Parts
233
Nets
119
Pads
618
Tracks, vias
1,449, 353
Pours
36
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
29 Jan 2025
Updated
1 Feb 2025

Overview

Badge v2 is an open-source printed circuit board by ICRS, from the ICRS/IC-Hack-Badge repository on GitHub. It is a 2-layer board of 70 × 100 mm with 233 parts on 119 nets, routed with 1,449 tracks and 353 vias.

It is built around the RP2040, SY8089A1AAC and 74HC595D,118, with the USBLC6-2SC6, DO2302E-Q and NRVB130T1G among its other parts. Its parts include 143 diodes, 36 resistors, 19 capacitors, 8 connectors and 7 ICs. It belongs with the lEDs and displays boards and the RP2040 boards of this library.

Main components

10

README

README.md

IC-Hack-Badge

Repository for how to use and program the IC Hack PCB badges. They are functionally very similar to the Raspberry Pi Pico, and any guides for that board will likely work for this one too.

Microcontrollers are small but flexible computers that are great at interacting with the real world. We hope that by giving everyone a powerful microcontroller like the RP2040, they are able to give embedded programming a go and make something cool!

Kits of sensors and electronics are available from ICRS to help build whatever you have in mind. ICRS can also provide knowledge and help with anything relating to hardware projects and the badges.

hacker-front

The badges were designed using KiCad and all the design files and schematics are available in the /Hardware folder.

Contents

Features

The features of the board are listed below:

  • RP2040: Dual Arm Cortex M0+ cores up to 133MHz
  • 264kB RAM
  • 2MB Flash
  • 24*5 Pixel LED Matrix
  • Light up LED logo
  • CR2450 Battery holder
  • USB C

Pinout

The functions of each pin are shown here from the back side.

pinout

These pins can be connected to using standard Dupont 2.54mm jumper cables.

There are also pins that connect to things internally on the board:

Pin NumberFunction
0Button Y
1Button B
2Button X
3Button A
4Logo H
5Logo C
6Logo I
15Display serial data
16Display enable
17Display serial clock
18Display latch

Writing Code

There are several ways of programming the board using either C/C++ or MicroPython.

Arduino

Arduino is an open source platform for programming microcontrollers in C++. An Arduino library has been written for the board that makes using the built in LED matrix easy.

To get started, download Arduino.

Once you have it running go to file > preferences and add the following link to Additional boards manager URLs: https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

arduino_preferences

You then need to install support for the RP2040 by going to the board manager tab on the left, searching for "Raspberry Pi Pico" and installing the one by Earle F. Philhower, III.

arduino_board_manager

Go to the board selector in the top, and set the current board to the Raspberry Pi Pico.

arduino_board_select arduino_board_and_port

Finally, we need to install the library made for this board by going to the library manager tab on the left, searching for IC Hack Badge, and installing the most recent version.

arduino_library_manager

You can then check out example code in File > Examples > IC Hack Badge, or start writing your own code.

To program the badge, put the board in boot mode and select the port it is connected to through the same menu where you chose the current board. You may need to check the Show all ports box. Then press the upload arrow in the top left.

MicroPython

To use MicroPython first upload the interpreter to the badge using the latest firmware from Raspberry Pi, which you can upload using the instructions in Uploading Code & Boot Mode.

You can then connect to the serial port using a program such as PuTTY on Windows, or Minicom on Linux, and start executing code in the MicroPython shell.

micropython_shell

Here we are printing "Hello World" over USB, and then setting pin 4 high, which turns on the H LEDs on the badge's logo. The mapping of pins to their functions is shown in the Pinout section.

You can use the MicroPico VS Code extension, or Thonny to write programs that you can then upload to the badge.

See the documentation by Raspberry Pi for more info and APIs.

Currently there is no MicroPython code for writing to the LED matrix, but both the Arduino library and the default firmware have implementations in C++ that could be ported to Python.

VS Code & C/C++ SDK

The C/C++ SDK is the official way released by Raspberry Pi for programming the RP2040 microcontroller. It offers more depth and features than Arduino, but lacks Arduino's abstractions and libraries, that can make using it harder.

Setting it up can be a bit more challenging than using Arduino too (especially on Windows), and we recommend following Raspberry Pi's guides if you want to do so.

The firmware flashed to all the badges was written using the C/C++ SDK, and can be found in the /SDK folder for reference. Sorry for the spaghetti, blame Haotian -_-

Uploading Code & Boot Mode

Plug the board into a computer using the USB C connector. Then in order to program the board it needs to be put into "boot mode". This is done by holding down both the reset button (RST) on the top of the board and the boot button (BOOT) on the bottom of the board. Then release RST, wait a bit and release BOOT.

This will make the board show up as a USB drive that you can drag and drop compiled uf2 binaries into.

Resetting Your Badge

The default firmware is firmware.uf2 and you can upload it to your badge with a USB C cable after putting it in boot mode.

Running From Battery

Coin cells are able to supply a maximum of around 10mA continuously (ideally <2mA), but the RP2040 when running at full speed can draw well over 20mA. This means that the power consumption needs to be lowered by changing the CPU frequency and voltage so it can be run on the battery.

This can be done in C/C++ using the following lines:

C
#include "pico/stdlib.h"
#include "hardware/vreg.h"

void main() {
  vreg_set_voltage(VREG_VOLTAGE_0_90);
  set_sys_clock_khz(18000, false);
  ...
}

This lowers the core voltage to 0.9V, and the core frequency to 18MHz which draws around 6mA. This was found to be a good balance of low power and stablility, however it means the USB is disabled since it requires a minimum of 48MHz.

[!NOTE] The battery should last for well over 24 hours with the default firmware, so it can be left on for the whole hackathon.

Using the pico extras repo in the C/C++ SDK (sadly not in Arduino) the chip can be put to sleep which only draws 0.7mA. You can find out more about pico_sleep here.

When running MicroPython the RP2040 consumes too much power for the battery, so you should use USB instead.

Credits

Hardware: Ben Smith

Artwork: Anna Votin and Kevin Wang

Firmware: Haotian Wu (+ Ben Smith)

Parts

233
QtyValueFootprintReferences
127REDLED_SMD:LED_0402_1005MetricD1, D10, D11, D100, D101, D102, D103, D104, D105, D106, D107, D108, D109, D110, D111, D112 +111
19680RResistor_SMD:R_0402_1005MetricR1, R2, R3, R4, R5, R6, R10, R11, R12, R17, R30, R32, R33, R35, R36, R38 +3
10100nCapacitor_SMD:C_0402_1005MetricC6, C7, C8, C9, C10, C11, C12, C13, C15, C16
7BLUELED_SMD:LED_0402_1005MetricD137, D138, D139, D140, D141, D142, D143
7ORANGELED_SMD:LED_0402_1005MetricD123, D124, D125, D126, D127, D128, D129
6100kResistor_SMD:R_0402_1005MetricR15, R16, R28, R31, R34, R37
6TS-1089Sbadge_footprints:TS-1089SSW1, SW2, SW3, SW4, SW5, SW6
6~badge_footprints:X6511FRS-04-C85D30J1, J2, J3, J4, J5, J6
51kResistor_SMD:R_0402_1005MetricR19, R20, R21, R22, R23
4DO2302E-QPackage_TO_SOT_SMD:SOT-23Q1, Q3, Q4, Q5
4TestPoint_SmallTestPoint:TestPoint_Pad_D3.0mmTP1, TP2, TP3, TP6
327RResistor_SMD:R_0402_1005MetricR18, R26, R27
32u2Capacitor_SMD:C_0402_1005MetricC5, C14, C17
374HC595D,118Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU1, U2, U3
215pCapacitor_SMD:C_0402_1005MetricC3, C4
222uCapacitor_SMD:C_0603_1608MetricC1, C18
25k1Resistor_SMD:R_0402_1005MetricR24, R25
2LOGOLOGOG***, G***
2NRVB130T1GDiode_SMD:D_SOD-123FD121, D122
11nCapacitor_SMD:C_0402_1005MetricC2
122kResistor_SMD:R_0402_1005MetricR29
122pCapacitor_SMD:C_0402_1005MetricC19
12u2Inductor_SMD:L_1008_2520MetricL1
1DO2301E-QPackage_TO_SOT_SMD:SOT-23Q2
1MSK12C02-HBbadge_footprints:MSK12C02-HBSW7
1MY-2450-01badge_footprints:MY-2450-01J8
1RP2040Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mmU4
1SY8089A1AACbadge_footprints:SOT95P285X130-5NU7
1USB-TYPE-C-016badge_footprints:USB-TYPE-C-016J7
1USBLC6-2SC6badge_footprints:SOT95P280X145-6NU6
1W25Q16JVUXIQ_TRbadge_footprints:SON50P300X200X60-9NU5
1XL2EL89CMI-111YLC-12MCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1

Questions

How big is the Badge v2 PCB?

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

What parts does the Badge v2 use?

233 parts, built around the RP2040, SY8089A1AAC, 74HC595D,118 and USBLC6-2SC6. 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 Badge v2 KiCad files?

From the ICRS/IC-Hack-Badge repository on GitHub, at the commit this page was made from: the board is Hardware/badge_v2/badge_v2.kicad_pcb and its schematic Hardware/badge_v2/badge_v2.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Badge v2 design in my own project?

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

Similar boards

  • 4 layers64.2 × 66.2 mmRP2040, the printed circuit board in 3D

    RP2040

    gamaPhy/Freedom

    Design files of our hall effect sensor analog keypads

    94 parts3CERN-OHL-S-2.0
  • 2 layers50 × 35 mmLoRa E5 BME680, the printed circuit board in 3D

    LoRa E5 BME680

    johflo/Seeed-LoRa-E5_BME680

    Seeed Wio E5 LoraWan BME680 node without seperate MCU. Data from the BM680 is sent through the Helium LoraWan network to Cayenne to visualize the measured data

    13 parts1
  • 2 layers85 × 51 mmProto1, the printed circuit board in 3D

    Proto1

    botagar/CC11-PCB-Badge-Prototype

    86 parts
  • 2 layers80 × 40 mmCryptick token pcb, the printed circuit board in 3D

    Cryptick token pcb

    alphaseneca/cryptick-token-pcb

    Hardware schematics, 2-layer PCB layout, and manufacturing files for Cryptick Token — the 100% open-source biometric hardware security key and cryptographic hardware enclave.

    56 partsMIT
  • 2 layers103.2 × 74.1 mmUno, the printed circuit board in 3D

    Uno

    lukasloetkolben/OpenpilotHardware

    Welcome to the Openpilot Hardware Collection!

    131 parts95MIT
  • 2 layers68 × 42 mmIR Demo V2, the printed circuit board in 3D

    IR Demo V2

    aranya-project/demo-board-v2

    KiCad sources for the Aranya Embedded demo board

    75 parts1
  • 4 layers14.8 × 14.8 mmDcesc ga25, the printed circuit board in 3D

    Dcesc ga25

    baden/dcesc-controllers

    Experiments with DC motors

    111 parts