This commit is contained in:
Daniel Esteban 2026-04-14 19:04:43 +02:00
parent d669370c61
commit e9b36a62fa
7 changed files with 258 additions and 1 deletions

View file

@ -1,2 +1,98 @@
# badgeconf
# BadgeConf
**BadgeConf** is an electronic conference badge and a hands-on platform for learning [TinyGo](https://tinygo.org/) programming.
Whether you are attending a conference or just getting started with embedded development, BadgeConf gives you a real piece of hardware to hack on, complete with a ready-to-use firmware, step-by-step tutorials, and progressively more advanced examples that unlock every capability of the board.
---
## Features
| Peripheral | Details |
|---|---|
| Color display | Compact full-color screen (FJ08K-S) |
| Buttons | 2 Cherry MX hot-swap mechanical switches |
| Joystick | Alps EC11E rotary encoder with push switch |
| RGB LEDs | 2 × SK6812MINI-E addressable LEDs |
| StemmQT connector | JST SH 4-pin for I2C expansion modules |
| Buzzer | 5.5 mm buzzer for audio feedback |
| Bluetooth | BLE via the nRF52840 on the nice!nano |
| USB HID | Acts as a keyboard/mouse over USB thanks to the nice!nano |
| Battery | Onboard battery cell header (2-pin 2.00 mm) |
The microcontroller is the **[nice!nano](https://nicekeyboards.com/nice-nano/)** (nRF52840), which is fully supported by TinyGo and exposes both USB HID and Bluetooth HID out of the box.
---
## Repository layout
```
badgeconf/
├── hardware/ # KiCad PCB design files
│ └── PCB-kicad/
│ └── production/ # Gerbers, BOM, pick-and-place files
├── firmware/ # Ready-to-use TinyGo firmware (coming soon)
└── tutorials/ # Step-by-step examples (coming soon)
```
---
## Getting started
### Prerequisites
- [TinyGo](https://tinygo.org/getting-started/) ≥ 0.32
- [Go](https://go.dev/dl/) ≥ 1.22
- A BadgeConf board (see hardware section below) or a compatible nice!nano dev board
### Flash the default firmware
```bash
tinygo flash -target=nicenano ./firmware/
```
---
## Hardware
All design files are located in [hardware/PCB-kicad/](hardware/PCB-kicad/).
Production files (Gerbers, BOM, positions) ready for fabrication are in [hardware/PCB-kicad/production/](hardware/PCB-kicad/production/).
### Bill of Materials
| Designator | Value / Part | Footprint | Qty |
|---|---|---|---|
| BT1 | Battery Cell | PinHeader 2×01 P2.00 mm Vertical | 1 |
| BZ1 | Buzzer | Buzzer 5.5 mm | 1 |
| DISPLAY1 | Display connector | PinHeader 1×08 P2.54 mm Vertical | 1 |
| H1, H2, H3, H4 | Mounting Hole | M2 | 4 |
| LED1, LED2 | YS-SK6812MINI-E | SK6812MINI-E | 2 |
| R1, R2 | Resistor | Axial DIN0207 L6.3 mm D2.5 mm P10.16 mm | 2 |
| STEMMAQT1 | StemmQT connector | JST SH SM04B-SRSS-TB 1×04 P1.00 mm | 1 |
| SW1, SW2B1 | Push switch | Cherry MX Hot-swap | 2 |
| SW2 | Rotary Encoder + Switch | Alps EC11E Vertical H20 mm | 1 |
| SW2B, SW2C | Key switch | Strap hole | 2 |
| U1 | nice!nano | nice_nano | 1 |
| U2 | FJ08K-S | FJ08K-S | 1 |
---
## Tutorials & examples
The tutorial series walks you through every peripheral of the badge, starting from blinking an LED and ending with a Bluetooth HID device:
1. Hello, Badge! — blink the RGB LEDs
2. Drawing on the display — TinyGo + TinyDraw
3. Reading buttons and the joystick
4. Playing sounds with the buzzer
5. I2C expansion via StemmQT
6. Going wireless — BLE advertisements and GATT services
7. USB HID — turn the badge into a keyboard
*(Tutorials are coming soon — contributions welcome!)*
---
## License
See [LICENSE](LICENSE).

Binary file not shown.

View file

@ -0,0 +1,13 @@
Designator,Footprint,Quantity,Value,LCSC Part #
BT1,PinHeader_2x01_P2.00mm_Vertical,1,Battery_Cell,
BZ1,buzzer 5.5mm,1,Buzzer,
DISPLAY1,PinHeader_1x08_P2.54mm_Vertical,1,Conn_01x08_Socket,
"H1, H2, H3, H4",M2_HOLE_v2,4,MountingHole,
"LED1, LED2",YS-SK6812MINI-E,2,YS-SK6812MINI-E,
"R1, R2",R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal,2,R,
STEMMAQT1,JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_Horizontal,1,Conn_01x04_Socket,
"SW1, SW2B1",CherryMX_Hotswap,2,SW_PUSH,
SW2,RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm,1,RotaryEncoder_Switch,
"SW2B, SW2C",strap_hole,2,KEY_SWITCH,
U1,nice_nano,1,nice_nano,
U2,FJ08K-S,1,fj08k-s,
1 Designator Footprint Quantity Value LCSC Part #
2 BT1 PinHeader_2x01_P2.00mm_Vertical 1 Battery_Cell
3 BZ1 buzzer 5.5mm 1 Buzzer
4 DISPLAY1 PinHeader_1x08_P2.54mm_Vertical 1 Conn_01x08_Socket
5 H1, H2, H3, H4 M2_HOLE_v2 4 MountingHole
6 LED1, LED2 YS-SK6812MINI-E 2 YS-SK6812MINI-E
7 R1, R2 R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal 2 R
8 STEMMAQT1 JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_Horizontal 1 Conn_01x04_Socket
9 SW1, SW2B1 CherryMX_Hotswap 2 SW_PUSH
10 SW2 RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm 1 RotaryEncoder_Switch
11 SW2B, SW2C strap_hole 2 KEY_SWITCH
12 U1 nice_nano 1 nice_nano
13 U2 FJ08K-S 1 fj08k-s

View file

@ -0,0 +1,19 @@
BT1:1
BZ1:1
DISPLAY1:1
H1:1
H2:1
H3:1
H4:1
LED1:1
LED2:1
R1:1
R2:1
STEMMAQT1:1
SW1:1
SW2:1
SW2B:1
SW2B1:1
SW2C:1
U1:1
U2:1
1 BT1:1
2 BZ1:1
3 DISPLAY1:1
4 H1:1
5 H2:1
6 H3:1
7 H4:1
8 LED1:1
9 LED2:1
10 R1:1
11 R2:1
12 STEMMAQT1:1
13 SW1:1
14 SW2:1
15 SW2B:1
16 SW2B1:1
17 SW2C:1
18 U1:1
19 U2:1

View file

@ -0,0 +1,113 @@
P CODE 00
P UNITS CUST 0
P arrayDim N
317GND VIA MD0118PA00X+028214Y-013017X0236Y0000R000S3
3173V3 VIA MD0118PA00X+014719Y-029293X0236Y0000R000S3
3173V3 VIA MD0118PA00X+042519Y-019435X0236Y0000R000S3
3173V3 VIA MD0118PA00X+014850Y-024532X0236Y0000R000S3
317SK6812MINI-E VIA MD0118PA00X+044850Y-011855X0236Y0000R000S3
317SCL VIA MD0118PA00X+014708Y-030017X0236Y0000R000S3
317SDA VIA MD0118PA00X+015794Y-027949X0236Y0000R000S3
317ROT_B VIA MD0118PA00X+023879Y-016694X0236Y0000R000S3
317SW_1 VIA MD0118PA00X+044078Y-023775X0236Y0000R000S3
317SW_2 VIA MD0118PA00X+043679Y-019559X0236Y0000R000S3
317BATIN VIA MD0118PA00X+013794Y-017285X0236Y0000R000S3
317SCK VIA MD0118PA00X+030494Y-016894X0236Y0000R000S3
317BUZZER BZ1 -1 D0630PA00X+015435Y-030600X1000Y0000R000S0
317GND BZ1 -2 D0630PA00X+017600Y-030600X1000Y0000R000S0
367N/C H3 D1693UA00X+015354Y-033858X1693Y0000R000S0
317ROT_A SW2 -A D0394PA00X+043602Y-013189X0787Y0787R000S0
317ROT_B SW2 -B D0394PA00X+043602Y-015157X0787Y0000R000S0
317GND SW2 -C D0394PA00X+043602Y-014173X0787Y0000R000S0
317N/C SW2 -MP D0591PA00X+046555Y-011969X1260Y0787R000S0
317N/C SW2 -MP D0591PA00X+046555Y-016378X1260Y0787R000S0
317ROT_BTN SW2 -S1 D0394PA00X+049311Y-015157X0787Y0000R000S0
317GND SW2 -S2 D0394PA00X+049311Y-013189X0787Y0000R000S0
327GND Stemma-1 A01X+013956Y-028907X0236Y0610R090S2
3273V3 Stemma-2 A01X+013956Y-029301X0236Y0610R090S2
327SDA Stemma-3 A01X+013956Y-029694X0236Y0610R090S2
327SCL Stemma-4 A01X+013956Y-030088X0236Y0610R090S2
327N/C Stemma-MP A01X+012430Y-028395X0472Y0709R090S2
327N/C Stemma-MP A01X+012430Y-030600X0472Y0709R090S2
367N/C SW1 D0748UA00X+044654Y-029134X0748Y0000R000S0
367N/C SW1 D1181UA00X+045154Y-028134X1181Y0000R000S0
367N/C SW1 D1614UA00X+046654Y-029134X1614Y0000R270S0
367N/C SW1 D1181UA00X+047654Y-027134X1181Y0000R000S0
367N/C SW1 D0748UA00X+048654Y-029134X0748Y0000R000S0
327SW_1 SW1 -1 A02X+043864Y-028134X1004Y0984R180S1
327GND SW1 -2 A02X+048954Y-027134X1004Y0984R180S1
3173V3 R1 -1 D0315PA00X+030400Y-018800X0630Y0000R180S0
317SDO R1 -2 D0315PA00X+026400Y-018800X0630Y0000R180S0
367N/C H4 D1693UA00X+047638Y-033858X1693Y0000R000S0
367N/C SW2b1 D0748UA00X+044654Y-021260X0748Y0000R000S0
367N/C SW2b1 D1181UA00X+045154Y-020260X1181Y0000R000S0
367N/C SW2b1 D1614UA00X+046654Y-021260X1614Y0000R270S0
367N/C SW2b1 D1181UA00X+047654Y-019260X1181Y0000R000S0
367N/C SW2b1 D0748UA00X+048654Y-021260X0748Y0000R000S0
327SW_2 SW2b1 -1 A02X+043864Y-020260X1004Y0984R180S1
327GND SW2b1 -2 A02X+048954Y-019260X1004Y0984R180S1
317SH}P0.06-PAD1) U1 -1 D0430PA00X+013370Y-017717X0690Y0000R000S0
317SH}P0.08-PAD2) U1 -2 D0430PA00X+014370Y-017717X0690Y0000R000S0
317GND U1 -3 D0430PA00X+015370Y-017717X0690Y0000R000S0
317GND U1 -4 D0430PA00X+016370Y-017717X0690Y0000R000S0
317SDA U1 -5 D0430PA00X+017370Y-017717X0690Y0000R000S0
317SCL U1 -6 D0430PA00X+018370Y-017717X0690Y0000R000S0
317ROT_BTN U1 -7 D0430PA00X+019370Y-017717X0690Y0000R000S0
317ROT_A U1 -8 D0430PA00X+020370Y-017717X0690Y0000R000S0
317ROT_B U1 -9 D0430PA00X+021370Y-017717X0690Y0000R000S0
3171-P0.11-PAD10) U1 -10 D0430PA00X+022370Y-017717X0690Y0000R000S0
317SW_1 U1 -11 D0430PA00X+023370Y-017717X0690Y0000R000S0
317SW_2 U1 -12 D0430PA00X+024370Y-017717X0690Y0000R000S0
317BLK U1 -13 D0430PA00X+024370Y-011717X0690Y0000R000S0
317CS U1 -14 D0430PA00X+023370Y-011717X0690Y0000R000S0
317SK6812MINI-E U1 -15 D0430PA00X+022370Y-011717X0690Y0000R000S0
317DC U1 -16 D0430PA00X+021370Y-011717X0690Y0000R000S0
317RES U1 -17 D0430PA00X+020370Y-011717X0690Y0000R000S0
317VR_Y U1 -18 D0430PA00X+019370Y-011717X0690Y0000R000S0
317VR_X U1 -19 D0430PA00X+018370Y-011717X0690Y0000R000S0
317BUZZER U1 -20 D0430PA00X+017370Y-011717X0690Y0000R000S0
3173V3 U1 -21 D0430PA00X+016370Y-011717X0690Y0000R000S0
317(U1-RST-PAD22) U1 -22 D0430PA00X+015370Y-011717X0690Y0000R000S0
317GND U1 -23 D0430PA00X+014370Y-011717X0690Y0000R000S0
317BATIN U1 -24 D0430PA00X+013370Y-011717X0690Y0000R000S0
317SCK U1 -31 D0430PA00X+022370Y-016717X0690Y0000R000S0
317SDO U1 -32 D0430PA00X+022370Y-015717X0690Y0000R000S0
3171-P1.07-PAD33) U1 -33 D0430PA00X+022370Y-014717X0690Y0000R000S0
317N/C U1 -34 D0430PA00X+023090Y-016607X0690Y0000R000S0
317N/C U1 -35 D0430PA00X+023090Y-015607X0690Y0000R000S0
317N/C U1 -36 D0430PA00X+023090Y-014607X0690Y0000R000S0
317N/C U1 -37 D0430PA00X+012370Y-011717X0690Y0000R000S0
317N/C U1 -38 D0430PA00X+012370Y-017717X0690Y0000R000S0
317GND DISPLA-1 D0394PA00X+027953Y-009449X0669Y0669R270S0
3173V3 DISPLA-2 D0394PA00X+028953Y-009449X0669Y0000R270S0
317SCK DISPLA-3 D0394PA00X+029953Y-009449X0669Y0000R270S0
317SDO DISPLA-4 D0394PA00X+030953Y-009449X0669Y0000R270S0
317RES DISPLA-5 D0394PA00X+031953Y-009449X0669Y0000R270S0
317DC DISPLA-6 D0394PA00X+032953Y-009449X0669Y0000R270S0
317CS DISPLA-7 D0394PA00X+033953Y-009449X0669Y0000R270S0
317BLK DISPLA-8 D0394PA00X+034953Y-009449X0669Y0000R270S0
367N/C H1 D1693UA00X+015354Y-009449X1693Y0000R000S0
367N/C U2 D0630UA00X+013275Y-020977X0630Y0000R000S0
367N/C U2 D0630UA00X+018000Y-025701X0630Y0000R000S0
317GND U2 -1 D0433PA00X+016425Y-019953X0600Y0000R000S0
317VR_X U2 -2 D0433PA00X+015637Y-019953X0600Y0000R000S0
3173V3 U2 -3 D0433PA00X+014850Y-019953X0600Y0000R000S0
3173V3 U2 -4 D0433PA00X+019023Y-024126X0600Y0000R000S0
317VR_Y U2 -5 D0433PA00X+019023Y-023339X0600Y0000R000S0
317GND U2 -6 D0433PA00X+019023Y-022552X0600Y0000R000S0
317(U2-SW-A-PAD7) U2 -7 D0433PA00X+018236Y-020189X0600Y0000R000S0
317(U2-SW-B-PAD8) U2 -8 D0433PA00X+018787Y-020741X0600Y0000R000S0
367N/C H2 D1693UA00X+047638Y-009449X1693Y0000R000S0
3173V3 R2 -1 D0315PA00X+036400Y-018800X0630Y0000R180S0
317SCK R2 -2 D0315PA00X+032400Y-018800X0630Y0000R180S0
317BATIN BT1 -1 D0315PA00X+023400Y-019313X0531Y0531R090S0
317GND BT1 -2 D0315PA00X+023400Y-020100X0531Y0000R090S0
3273V3 LED1 -1 A02X+045177Y-022953X0669Y0394R180S1
327ET-(LED1-DOUT) LED1 -2 A02X+045177Y-023504X0669Y0394R180S1
327GND LED1 -3 A02X+047343Y-023504X0669Y0394R180S1
327SK6812MINI-E LED1 -4 A02X+047343Y-022953X0669Y0394R180S1
3273V3 LED2 -1 A02X+045374Y-030827X0669Y0394R180S1
327ED2-DOUT-PAD2) LED2 -2 A02X+045374Y-031378X0669Y0394R180S1
327GND LED2 -3 A02X+047539Y-031378X0669Y0394R180S1
327ET-(LED1-DOUT) LED2 -4 A02X+047539Y-030827X0669Y0394R180S1
999

View file

@ -0,0 +1,16 @@
Designator,Mid X,Mid Y,Rotation,Layer
BT1,59.436,-50.054,270.0,bottom
BZ1,41.954,-77.724,0.0,top
DISPLAY1,79.89,-24.0,90.0,top
LED1,117.5,-59.0,0.0,bottom
LED2,118.0,-79.0,0.0,bottom
R1,72.136,-47.752,180.0,top
R2,87.376,-47.752,180.0,top
STEMMAQT1,33.4472,-74.924,270.0,top
SW1,117.8785,-71.735,0.0,top
SW2,118.0,-36.0,0.0,top
SW2B,49.982,-24.13,0.0,top
SW2B1,117.8785,-51.735,0.0,top
SW2C,109.982,-24.13,0.0,top
U1,46.66,-37.38,0.0,top
U2,41.0,-58.0,0.0,top
1 Designator Mid X Mid Y Rotation Layer
2 BT1 59.436 -50.054 270.0 bottom
3 BZ1 41.954 -77.724 0.0 top
4 DISPLAY1 79.89 -24.0 90.0 top
5 LED1 117.5 -59.0 0.0 bottom
6 LED2 118.0 -79.0 0.0 bottom
7 R1 72.136 -47.752 180.0 top
8 R2 87.376 -47.752 180.0 top
9 STEMMAQT1 33.4472 -74.924 270.0 top
10 SW1 117.8785 -71.735 0.0 top
11 SW2 118.0 -36.0 0.0 top
12 SW2B 49.982 -24.13 0.0 top
13 SW2B1 117.8785 -51.735 0.0 top
14 SW2C 109.982 -24.13 0.0 top
15 U1 46.66 -37.38 0.0 top
16 U2 41.0 -58.0 0.0 top