The problem
The device is built for homes in Nigeria, where the phone has to read it directly and the cloud is a bonus. The enclosure was fixed before any electronics at 70 by 70 by 10 mm, with the cell and the board sharing one floor, so every millimetre of board is a millimetre of battery. The contract named an 18650 cell, which is 18 mm thick and can never sit under a 10 mm lid. Weight comes from a partner's load cell platform over a serial line that was still being confirmed.
What I did
The schedule was chosen by the battery. Reading every five minutes costs about 17 mAh a day and needs two 18650s. Reading every 15 minutes and uploading hourly costs about 6.4 mAh a day and fits one 8 mm pouch, close to thirteen months. The client chose that and the pouch replaced the 18650. The board is 70 by 20 mm on two layers around an ESP32-S3-WROOM-1-N8 with native USB, so there is no USB to UART bridge. Its 8 MB flash holds 2,016 offline readings, 21 days against a 7 day requirement.
Readings go hourly by MQTT over TLS with a unique X.509 certificate per device, and Wi-Fi credentials arrive over a BLE GATT service. The NTC is biased from a GPIO so it draws nothing in sleep. Before release I pulled the netlist from the flying probe file the tool writes from its own database and reviewed it. Twelve issues, two of them blockers. The charger's ground pin sat on an unnamed auto generated net that never reached ground. The nearest decoupling capacitor to the module supply pin was 21.4 mm away.
And the real board is 20.07 mm wide, not the 19 mm the enclosure plan assumed, so the cell no longer fit the bay. The board was held until those are fixed.
Decisions that shaped it
- Let the battery set the reporting schedule, not the app.
- One module for Wi-Fi, BLE and USB, and internal flash instead of an external chip.
- Offline first. Nothing is lost when the router is gone.
- Check the netlist before paying for boards. The design rule check had passed.
Result
Architecture signed off, board designed and reviewed, about $8 to $13 in parts per unit. Rev B carries the review fixes.



