Custom PCB design and code for DefCon 25 badge. Credits to @mschuldt for help with the PCB design.
For fun. Also I just wanted to learn how to do something I don't know how to do. At all.
Coming up with the final design took about 5 months of continuous redesigning and prototyping. It also took a long time mostly because I didn't know anything about EE before this project. :) The main goals of the PCB was that we would be able to fit all the components desired within the smallest surface area possible, while also looking pleasant and something you'd want to wear around your neck.
- Each individual badge will connect to (unfortunately) hardcoded WiFi network.
- Once connected to a WiFi network, the badges will try to find their "sibling" badges by broadcasting itself on the network.
- A badge will never learn a sibling badge twice, but will try to find as many nearby siblings as possible.
- When a badge knows of at least one sibling in nearby viscinity it will start communicating.
- All badges will communicate to each other independently, and all badges will communicate to all other badges that is learned.
- Custom PCB printed by fab of your choice
- For this badge, I used Oshpark
vers2_cheaper.kicad_pcbis the KiCAD file you can upload.
- SSD1306 OLED Screen
- ESP8266 NodeMCU
- 220 Ohm resistors x 11
- RGB LED x 3
- 3mm LED x 2
- 3.7v 500mAh LiPo battery
- Male microUSB connector, part only
- Basically solder on all the parts.
- Flash ESP with the arduino code using Arduino IDE version 1.6.4 and above
- To compile correctly, you must have these libraries installed:
- Adafruit_GFX_Library
- Adafruit_SSD1306 Library
- Use board manager to install ESP modules. You'll be using the NodeMCU 1.0 ESP 12E board module.
- You must flash in NodeMCU 1.0 ESP 12E mode. This mode has all the settings you need for the board so you should not have to touch anything.
- To compile correctly, you must have these libraries installed:
- The battery does need manual assembly:
- Clip off the JST end off of the LiPoly battery and solder onto the male microUSB part.
