Skip to the content
PCBKitNew board
2 layers68.6 × 53.3 mmShield, the printed circuit board in 3D

Custom PCB sensor node using ESP8266, KiCad, MQTT/Wi-Fi telemetry, and cloud dashboard data reporting.

Size
68.6 × 53.3 mm
Copper layers
2
Thickness
1.6 mm
Parts
23
Nets
36
Pads
74
Tracks, vias
80, 0
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
10 Jun 2026
Updated
19 Sep 2026

Overview

Shield is an open-source printed circuit board by DestinyU7, from the DestinyU7/iot-sensor-node-pcb repository on GitHub. It is a 2-layer board of 68.6 × 53.3 mm with 23 parts on 36 nets, routed with 80 tracks and 0 vias.

Its parts include 8 resistors, 5 connectors, 3 capacitors, 2 diodes and 1 IC. It belongs with the home automation and IoT and radio and wireless boards and the ESP8266 boards of this library.

README

README.md

IoT Sensor Node — Custom Arduino Shield PCB

A two-layer PCB designed from scratch in KiCad, fabricated at JLCPCB, hand-assembled, and running firmware that publishes live temperature telemetry to a cloud dashboard over Wi-Fi.

Overview

University of Delaware coursework: ELEG 298, ECE Design Challenges (Spring 2025). My first board taken end to end — schematic capture through layout, design rule check, Gerber generation, fabrication order, assembly, and bring-up.

The board is an Arduino Uno shield carrying a DHT20 temperature/humidity sensor interface, an ESP-01S Wi-Fi module on a UART link, status LEDs, and the supporting passives. Firmware reads temperature, classifies the trend as rising, falling or stable, signals that trend on two LEDs, and publishes each reading to an Adafruit IO feed over Wi-Fi.

KiCad PCB layout Fabricated board, hand-assembled and powered

Left: the two-layer layout in KiCad. Right: the fabricated board hand-assembled, with the ESP-01S module fitted and a Grove sensor attached.

Hardware

FunctionPart
HostArduino Uno (shield form factor)
Wi-FiESP-01S (ESP8266) over software UART
SensorDHT20 temperature / humidity (I²C, Grove connector)
Indicators2 × LED with 1 kΩ current-limiting resistors
PowerBulk 1000 µF electrolytics + 0.1 µF decoupling
Level/pull-ups1 kΩ / 2 kΩ divider network, 4.7 kΩ I²C pull-ups

Two copper layers (F_Cu, B_Cu), silkscreen on both sides, mounting holes, and an ICSP header passthrough.

Software / Tools

  • KiCad — schematic capture, PCB layout, DRC, Gerber and drill file export
  • Arduino C++ — SoftwareSerial, Grove DHT library
  • JLCPCB — fabrication
  • Adafruit IO — cloud feed and dashboard
  • DigiKey-sourced BOM with costed line items

Architecture

mermaid
flowchart LR
    DHT["DHT20 sensor<br/>temperature + humidity"] -->|I2C| UNO
    UNO["Arduino Uno<br/>trend classifier"] -->|software UART<br/>9600 baud| ESP["ESP-01S<br/>ESP8266 Wi-Fi"]
    UNO --> LEDS["Red / green LEDs<br/>trend indication"]
    ESP -->|Wi-Fi| AIO["Adafruit IO<br/>temperature-feed"]
    AIO --> DASH["Cloud dashboard"]

The Uno drives the ESP-01S through a simple text command protocol over software serial (wifi_ssid=, wifi_pass=, io_user=, io_key=, setup_io, setup_pubfeed=, send_data=), with per-command timeouts and a hardware reset line to bring the module up cleanly at boot.

Key Engineering Work

Full PCB workflow, not just a schematic. Component placement, two-layer routing with 45° trace angles and no right-angle bends, an 8 mil minimum line/space rule, silkscreen reference designators and polarity markers on both sides, DRC to zero errors and zero airwires, then Gerber + drill export and a fabrication-portal preview check before ordering. The Gerber set that was actually sent to the fab is in hardware/gerbers/.

Designing for hand assembly. The board mixes through-hole and SMD parts, with part choice and spacing driven by what could realistically be soldered by hand and reworked if wrong — a constraint that shaped the layout as much as the electrical requirements did.

Trend classification instead of raw reporting. Firmware compares each reading against the previous one with a ±0.1 °C tolerance band and tracks the last rising value, so the LEDs show direction of change rather than flickering on sensor noise, plus a stable-band indication between 22–24 °C.

Reset sequencing. The ESP-01S is held in reset at boot and released deliberately before any command is sent, which avoids the race where configuration commands are transmitted before the module's UART is listening.

Testing / Validation

  • DRC and airwire check in KiCad before Gerber export; fabrication-portal preview reviewed against the intended layout.
  • Continuity and power-rail checks on the bare board before any active parts were fitted.
  • Incremental bring-up — power, then LEDs, then sensor over I²C, then the ESP-01S link, then cloud publishing.
  • End-to-end verification by watching readings appear on the Adafruit IO dashboard while warming the sensor by hand and confirming the LED trend indication matched.

Repository Structure

text
firmware/           iot_sensor_node.ino - Arduino firmware
hardware/
  kicad/            schematic and two-layer board layout
  gerbers/          fabrication set sent to JLCPCB (copper, mask, silk, paste, drill)
docs/               final project design report
media/              layout render and photo of the assembled board

Security Note

The Adafruit IO key and Wi-Fi credentials are redacted from the committed firmware (IO_KEY = "REPLACE_WITH_ADAFRUIT_IO_KEY"). Supply your own credentials to run it. No live key appears anywhere in this repository or its commit history.

What I Learned

The layout was where the real learning was. A schematic that passes electrical rules can still be a board that is painful to assemble, hard to probe, and awkward to mount — trace angles, part spacing, silkscreen legibility and test-point access are decisions you only appreciate once you are holding the fabricated board with an iron in your hand.

Ordering it was the other half. Once Gerbers are submitted there is no undo, which forces a much more careful review pass than any purely simulated assignment ever did.

Academic Context

University of Delaware, ELEG 298 — ECE Design Challenges, Spring 2025. Design, layout, firmware and assembly are my own work.

Parts

23
QtyValueFootprintReferences
41kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R3, R5, R6
4MountingHole_3.2mmArduino_MountingHole:MountingHole_3.2mmMH1, MH2, MH3, MH4
21000uCapacitor_THT:CP_Radial_D10.0mm_P5.00mmC1, C2
22kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR2, R4
24.7Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR7, R8
2LEDLED_THT:LED_D5.0mmD1, D2
10.1uCapacitor_THT:C_Disc_D7.5mm_W5.0mm_P5.00mmC3
1AnalogConnector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ3
1Conn_01x04Connector:NS-Tech_Grove_1x04_P2mm_VerticalJ5
1Digital/PWMConnector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ4
1Digital/PWMConnector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_VerticalJ2
1ESP8266-01_ESP-01ESP8266-01_ESP-01 (2):XCVR_ESP8266-01_ESP-01U1
1PowerConnector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ1

Questions

How big is the Shield PCB?

It measures 68.6 × 53.3 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Shield use?

23 parts. 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 Shield KiCad files?

From the DestinyU7/iot-sensor-node-pcb repository on GitHub, at the commit this page was made from: the board is hardware/kicad/Shield.kicad_pcb and its schematic hardware/kicad/Shield.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Shield design in my own project?

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

Similar boards

  • 2 layers65 × 56 mmPi servo hat, the printed circuit board in 3D

    Pi servo hat

    earthtojake/text-to-cad

    Design physical products with AI

    23 parts26kMIT
  • 2 layers14 × 100 mmYunomi, the printed circuit board in 3D

    Yunomi

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    23 parts3kApache-2.0
  • 2 layers50.8 × 52.2 mmFuhhni, the printed circuit board in 3D

    Fuhhni

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    23 parts915
  • 2 layers138.8 × 89.8 mmKeyboard pcb, the printed circuit board in 3D

    Keyboard pcb

    diepala/cantor

    Cantor keyboard, a 42 key diodeless split keyboard.

    23 parts756GPL-3.0
  • 2 layers32.9 × 53.3 mmGoatgdo, the printed circuit board in 3D

    Goatgdo

    Kaldek/rat-ratgdo

    Open source schematics for ratgdo PCB

    23 parts511MIT
  • 2 layers35.5 × 50 mmTobo, the printed circuit board in 3D

    Tobo

    kelu124/echomods

    Open source ultrasound processing modules and building blocks

    23 parts463
  • 2 layers19 × 19 mmKeybit, the printed circuit board in 3D

    Keybit

    notaroomba/keybytes

    A truly modular keyboard

    23 parts444
  • 2 layers88.5 × 28 mmExpBreakout, the printed circuit board in 3D

    ExpBreakout

    Duet3D/Duet-2-Hardware

    The KiCAD source for the Duet 3d printer controller see www.duet3d.com

    23 parts258