All projects
Hardware2026

PocketSense

A pocket-sized room monitor on a circuit board I designed from scratch. Temperature, humidity, pressure, UV and WiFi signal on a small screen, paged through with three buttons and running off AA batteries.

Breadboard, then schematic, then board, then switching it on. I wrote the code, drew the circuit, laid out the board, and soldered every part by hand.

Part 1 · Breadboard and firmware
Nothing got committed to a board until it worked on a breadboard first: the whole program was written and proven before I drew a single line of the circuit.
  • →The sensor and the screen share one set of wires to the processor, a clash worth finding while it is still a jumper wire away from fixed
  • →The UV sensor sits on a pin that keeps working while the WiFi radio is on
  • →Deliberately small interface: five screens, three buttons
ESP32ArduinoI2CAdafruit GFXSSD1306BME280
Breadboard prototype showing the Temperature screen reading 23.3 C
The breadboard build, running the finished firmware. Every screen and every pin was proven here before the pinout was frozen.
Part 2 · Schematic and PCB
Drawn as four blocks: power, reset, startup, and the connector I program it through.
  • →Three AA cells feed a regulator through a switch that cuts the supply itself, so the board is genuinely dead when off
  • →Four layers, with solid power and ground through the middle and a deliberate gap left under the antenna
  • →Design checks came back clean, and I previewed the manufacturing files with the fab house before ordering
Altium DesignerSchematic CapturePCB Layout4-Layer StackupJLCPCB
Schematic split into power, reset, startup, and programming connector blocks
The schematic, in four blocks: power, reset, startup, and the connector I program it through.
Four-layer board layout with a clear gap left under the antenna at the top edge
Four-layer layout. Wiring on the outside, solid power and ground through the middle, and a clear gap under the antenna.
3D render of the assembled PocketSense board
The 3D view, the last check before the files go out. Mostly: does anything collide, and does the display actually fit.
Part 3 · Assembly
The boards came back from the fab house and I soldered every part by hand, flat parts first while nothing tall was in the way.
  • →The switch that arrived had more pins than the footprint I drew, so I traced it with a meter and found the three that line up, rather than reordering
  • →Checked power and ground for a short before any voltage went near the board. No beep, safe to switch on
SMD SolderingSOT-2230603 / 0805Continuity Testing
Bare PocketSense PCB with the ESP32 module placed and unpopulated footprints visible
Fresh from the fab, with the module dry-fitted. Surface mount work goes first, while the board is still flat.
Fully populated PocketSense board with ESP32, OLED, BME280, UV sensor and six buttons
Fully populated. Purple board is the environment sensor, red is the UV sensor, and the three buttons along the bottom are back, scroll, and select.
Back of the PocketSense board with a three-cell AA battery holder mounted over the LDO
The back, with the battery holder mounted over the regulator. It runs off cells you can buy anywhere.
Part 4 · UART bring-up
This board has no circuit to put itself into programming mode, so you do it by hand: hold one button, tap the other, let go, all within the second the computer is trying to connect.
  • →It works: the chip answers and the transfer starts, meaning the reset circuit, data lines and power supply are all doing their jobs
  • →Then the transfer dies partway, and the meter explains why: the supply sags under real current and the board cuts out mid-upload
  • →A battery and regulator problem, not a layout one
FT232RUARTesptoolHardware Bring-up
PocketSense wired to a USB adapter with the upload running on screen
First power-up, over a USB adapter. The chip answers and the upload starts, right up until the supply gives out.
Highlights
→Five sensor screens on one small display, all driven by three buttons. No phone, no app, no cloud
→The bug that almost shipped: two buttons were wired to pins reserved for the chip’s own memory. Caught it against the datasheet before the board went out
→The antenna gap took a second pass: clearing the outer layers doesn’t clear the solid copper underneath, which has to be cut away separately
→The program runs about 927 KB, roughly 70% of the space set aside for it, a lot for something that draws five screens
→Every stage was mine end to end: code on a breadboard, circuit and layout, files to the fab house, every part soldered by hand
→One step from done: the upload cuts out when the batteries sag, and the fix is a steadier supply, not a new board
Austin Zhai