Skip to the content
PCBKitNew board
2 layers34.5 × 26.5 mmIoT Devices Blink, the printed circuit board in 3D

IoT Devices Blink

ImSeanConroy/iot-devices1

A monorepo for AWS IoT experiments and hardware prototypes

Size
34.5 × 26.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
6
Nets
16
Pads
26
Tracks, vias
12, 0
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
16 Mar 2026
Updated
23 Mar 2026

Overview

IoT Devices Blink is an open-source printed circuit board by ImSeanConroy, from the ImSeanConroy/iot-devices repository on GitHub, published under the MIT licence. It is a 2-layer board of 34.5 × 26.5 mm with 6 parts on 16 nets, routed with 12 tracks and 0 vias.

It is built around the WS2812B. Its parts include 2 connectors, 1 capacitor, 1 resistor, 1 diode and 1 switch. It belongs with the home automation and IoT boards of this library.

Main components

1

README

README.md

IoT Devices

A monorepo for AWS IoT experiments and hardware prototypes built around ESP32 boards, MQTT messaging, custom PCB designs, and a local dashboard for visualizing device events.

This repository contains end-to-end building blocks for connected devices:

  • ESP32 firmware publishers/subscribers
  • AWS IoT Core infrastructure defined with Terraform
  • KiCad PCB projects for multiple device types
  • A Blink dashboard (Node.js backend + React frontend)

Table of Contents

Monorepo Structure

  • Firmware/ - Arduino firmware for Blink, Generic, Door Sensor, GPS, and Temperature device variants.
  • Terraform/ - Infrastructure as code for AWS IoT Things, certificates, and policies.
  • Dashboard/ - Local dashboards built with node and express.
  • PCB/ - KiCad projects for Blink, Door Sensor, GPS, and Temperature hardware.
  • Case/ - Mechanical/case assets.

Getting Started

Before starting, install:

ToolPurposeLink
Node.js (>=18)Dashboard backend/frontend runtimeDownload
npmJavaScript package managerDownload
TerraformAWS IoT infrastructure provisioningInstall Guide
AWS CLIAWS authentication and account setupAWS CLI
Arduino IDEBuild/upload firmwareArduino IDE
KiCadOpen PCB projectsKiCad

1. Clone the Repository

bash
git clone git@github.com:ImSeanConroy/iot-devices.git
cd iot-devices

2. Provision AWS IoT Infrastructure

  1. Configure AWS credentials (or run aws configure).
bash
export AWS_ACCESS_KEY_ID=<your-access-key>
export AWS_SECRET_ACCESS_KEY=<your-secret-key>
export AWS_REGION=<your-region>
  1. Deploy infrastructure.
bash
cd Terraform
terraform init
terraform apply
  1. Retrieve generated values.
bash
terraform output root_ca_url
terraform output device_client_ids
terraform output device_certificates
terraform output device_private_keys

3. Configure and Flash Firmware

  1. Choose a firmware target, for example:

    • Firmware/BlinkPublisher/BlinkPublisher.ino
    • Firmware/BlinkSubscriber/BlinkSubscriber.ino
    • Firmware/GenericPublisher/GenericPublisher.ino
    • Firmware/GenericSubscriber/GenericSubscriber.ino
  2. In the selected folder, copy secrets.h.template to secrets.h.

  3. Update secrets.h with:

    • WIFI_SSID and WIFI_PASSWORD
    • AWS_IOT_ENDPOINT
    • Root CA certificate
    • Device certificate and private key
  4. Compile and upload from Arduino IDE.

4. Run the Blink Dashboard

The Blink dashboard lives in Dashboard/blink/.

  1. Prepare backend cert files:
bash
cd Dashboard/blink/backend/src/certs
cp cert.pem.example cert.pem
cp key.pem.example key.pem
cp rootCA.pem.example rootCA.pem
  1. Start backend (default http://localhost:3000).
bash
cd ../../
npm install
npm run dev
  1. Start frontend (Vite, usually http://localhost:5173).
bash
cd ../frontend
npm install
npm run dev

5. Open PCB Projects (Optional)

Open any KiCad project in PCB/, for example:

  • PCB/IoT_Devices_Blink/IoT_Devices_Blink.kicad_pro
  • PCB/-IoT_Devices_Door_Sensor/
  • PCB/-IoT_Devices_GPS/
  • PCB/-IoT_Devices_Temperature_Sensor/

Device Topics and Roles

Terraform currently defines devices in Terraform/main.tf.

  • Active by default:
    • door_sensor_publisher -> topic iot-devices/door-sensor
  • Present but commented out:
    • Blink publisher/subscriber/dashboard
    • Generic publisher/subscriber
    • Temperature publisher
    • GPS publisher

To enable additional roles, uncomment the corresponding entries in local.iot_devices and re-run terraform apply.

Hardware Notes

  • Firmware targets Seeed Studio XIAO ESP32C3-class boards.
  • Blink subscriber firmware expects a WS2812-compatible LED connected to the configured pin.
  • PCB designs are maintained in KiCad and can be exported for fabrication.

Contributing

Contributions are welcome. Please open an issue or fork the repository, create a new branch (feature/your-feature-name) and submit a pull request for any enhancements or bug fixes.

License

This project is licensed under the MIT License - see the LICENSE file for information.

Support

If you are having problems, please let me know by raising a new issue.

Acknowledgments

This project was made possible thanks to the following resources:

  • AWS re:Post - Publish a MQTT Message to IOT Core inside a Lambda function with Node and SDK 3
  • AWS Samples - Several Arduino examples for AWS IoT projects using ESP32.

Parts

6
QtyValueFootprintReferences
2Conn_01x07_SocketConnector_PinSocket_2.54mm:PinSocket_1x07_P2.54mm_VerticalJ1, J2
11000µFCapacitor_THT:CP_Radial_D8.0mm_P3.80mmC1
1330Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR1
1SW_PushButton_Switch_THT:SW_PUSH_6mmSW1
1WS2812BCustom:WS2812DD1

Questions

How big is the IoT Devices Blink PCB?

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

What parts does the IoT Devices Blink use?

6 parts, built around the WS2812B. 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 IoT Devices Blink KiCad files?

From the ImSeanConroy/iot-devices repository on GitHub, at the commit this page was made from: the board is PCB/IoT_Devices_Blink/IoT_Devices_Blink.kicad_pcb and its schematic PCB/IoT_Devices_Blink/IoT_Devices_Blink.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the IoT Devices Blink 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

  • 4 layers99 × 53.3 mmPSLab, the printed circuit board in 3D

    PSLab

    fossasia/pslab-hardware

    PSLab Hardware Design and Schematics https://pslab.io

    199 parts1.7kApache-2.0
  • 2 layers26 × 30 mmMicrocontroller, the printed circuit board in 3D

    Microcontroller

    FrameworkComputer/ExpansionCards

    Reference designs and documentation to create Expansion Cards for the Framework Laptop

    34 parts1.1kCC-BY-4.0
  • 4 layers82.6 × 82.5 mmJumperless2, the printed circuit board in 3D

    Jumperless2

    Architeuthis-Flux/Jumperless

    A jumperless breadboard

    208 parts914
  • 2 layers95.3 × 161.9 mmDfh badge, the printed circuit board in 3D

    Dfh badge

    tanaes/whopping_Voron_mods

    135 parts787GPL-3.0
  • 2 layers42.8 × 28.8 mmMM Skirt, the printed circuit board in 3D

    MM Skirt

    PrintersForAnts/Micron

    If you want to purchase full kits there are 3 available (Kits are slowly updating to R1 hardware just make sure to double check the included hardware in your kit and if you have any questions reach out in the discord)

    11 parts741GPL-3.0
  • 2 layers149.6 × 127.1 mmErgodash, the printed circuit board in 3D

    Ergodash

    omkbd/ErgoDash

    keyboard

    187 parts732MIT
  • 2 layers285.5 × 95 mmReviung46 ver1 1, the printed circuit board in 3D

    Reviung46 ver1 1

    gtips/reviung

    The REVIUNG41 is 41-key column staggered keyboard.

    119 parts517MIT
  • 2 layers177.7 × 144.5 mmCOMM PANEL, the printed circuit board in 3D

    COMM PANEL

    jrsteensen/OpenHornet

    OpenHornet 1:1 F/A-18C Simulator Repository

    275 parts431