Our PCBA production was ramping up to thousands of wireless sensor boards so we really needed a more automated way of testing and programming these boards.
Most test engineers would use a Windows PC, a bunch of DAQ (data acquisition) modules, power supplies, an interface circuit board and a separate pogo pin test fixture which all would take up a lab bench or test rack.
Instead, this tester design shrinks everything into the size of a shoe box.

A Tiny Read-Only Computer
A Raspberry Pi 3B+ running Linux was used. I configured the Pi’s root filesystem to be read only. This means the file system cannot be corrupted by improper shutdown. In fact there’s no OFF switch: you just pull the AC cord and put the tester away!
In this mode, the OS creates a file system in RAM (Overlay File System). Any files that are “written” are actually updated in RAM. On reboot, changes are lost and the system starts up completely fresh.

USB Hub, SWD Programmer and Test Instrumentation
The host PC connects to this with a single USB connection, to an on-board USB hub (Adafruit 5999). This tiny hub’s downstream connections are:
- the DUT’s USB port
- an ST-Link V2 SWD programmer
- a thermal receipt printer
- an MCP2221A USB-to-I2C/UART/GPIO/ADC/DAC converter, which controls:
- 128x32 pixel OLED display
- additional GPIO for reading DUT state
- load switches
- reading DUT analog voltages

The DUT has a Nordic MCU. Instead of a $300 J-Link JTAG programmer, I used a $5 ST-Micro ST-Link V2 programmer thanks to the open-source OpenOCD project. I added external ESD diodes to make the bare SWD pins more robust.
DAQ in a Chip
The Microchip MCP2221A is really a neat chip. It does USB 2.0 to a host and gives you I2C, ADC, DAC, UART and GPIO interfaces. So it’s basically a DAQ but in SOIC package. Add some decoupling caps and your ready to do data acquisition and control the world!
Of course for the size and price, the interface blocks are low performance (10-bit ADC, 5-bit DAC) but it’s perfect for functional testing.
Probe Board and Tester Board in One
The tester board is also the probe board. This keeps the system compact and simple. The circuitry has to be carefully placed in the spare areas between pogo/spring pins.

Test Software
The test software I wrote in Python using off-the-shelf libraries for the MCP2221A IO chip, Bluetooth scan function and ESC/POS printer.
The DUT is programmed with a special test firmware to put it into special test modes during testing. If the test passes, the DUT is reprogrammed with the production firmware.
Instructional Video
Here’s a short on how easy this tester is to use for assembly technicians.