Folks from [Adafruit] are showing off a neat hack – USB host on RP2040, using the now-famous PIO peripheral. [Adafruit] builds a lot of RP2040 boards, and naturally, you gotta test them before you ship them to customers. They’ve been using very specific Teensies for that, and at some point, those became unobtainium. Based on the work of [sekigon-gonnoc] and with help of [Thach], they’ve made their TinyUSB library support bitbanging of USB over PIO, and successfully ported their test jig firmware to it!
The base Pico-PIO-USB repo by [sekigon-gonnoc] shows a pretty impressive state of affairs – with low-speed and full-speed USB host and full-speed USB device modes supported, and quite a few examples to get you started. [Adafruit]’s work integrates this code into their TinyUSB stack, specifically focusing on MST (mass storage) features – as this is what you need to program a RP2040. Of course, they also provide a mass storage example to boot!
When shipping units in the hundreds rather than thousands, keeping overheads low is key to maintain a sustainable profit margin on each unit sold. Thus, [bald greg] built a rig that would allow for effective testing of devices rather than breaking the bank. The rig also handles programming, saving the cost of purchasing pre-programmed microcontrollers from the manufacturer. A Raspberry Pi runs the show, using its GPIO pins to program boards and saving test results and serial numbers for later reference. A bed of nails fixture is used to connect to each individual board. Additionally, to test each board as realistically as possible, hardware mimicking a real Airsoft electric pistol is used to properly load the hardware.
Test and programming fixtures are great time-savers for anyone who needs to deal with more than a handful of PCBs. Instead of plugging in connectors (or awkwardly holding probe tips or wires) to program some firmware or run tests, one simply pops a PCB into a custom fixture with one hand, and sips a margarita with the other while a program decides whether everything is as it should be. Test fixtures tend to be custom-made for specific board layouts, meaning one tester is needed per board or device type, but this work is easily justified by the huge time savings they offer.
The test unit looks like pretty familiar stuff at first glance: some hardware responsible for running the test program, laser-cut acrylic jig to hold a test PCB in a consistent position, spring-loaded pogo pins to make temporary electrical connections, and LEDs to clearly indicate PASS and FAIL states. The clever part is the way the fixture is designed to accommodate multiple board designs, and how it uses several 74LVC4066 quad bilateral switch ICs to take care of switching which pogo pins are connected and to where.
As mentioned, to be compatible with multiple boards there must be common design elements to exploit. In Sparkfun’s case, the through-hole connections on their breakout boards are all in a row with standard 0.1″ spacing. By using the aforementioned pogo pins and 4066 ICs, different pinouts can be accommodated and multiple board types can be used without any need to swap to different test hardware.
Testing is a key part of any product development cycle. Done right, it turns up unknown bugs and problems, and allows for them to be fixed prior to shipment. However, it can be a costly and time-consuming process. The [Bay Libre] team needed to do some work on power management, but the hardware required was just a little on the expensive side. What else does a hacker do, but build their own?
Enter the Thermo-Regulated Power Measurement Platform. It’s a device designed to control the die temperature of a chip during process characterization. This is where a chip, in this case the iMX8MQ, is run at a variety of temperatures, voltages, and frequencies to determine its performance under various conditions. This data guides the parameters used to run the chip in actual use, to best manage its power consumption and thermal performance.
The rig consists of a Peltier element with controller, a heatsink, and a fan. This is lashed up to a series of Python scripts that both control the chip temperature and run through the various testing regimes. Thanks to this automation, what would normally be a day’s work for an engineer can now be completed in just two hours.
Through a few smart component choices, the team accomplished the job at around one-tenth of the cost of commercial grade hardware. Granted, the average hacker probably won’t find themselves doing process characterization for cutting-edge silicon on a regular basis. Still, this project shows the value in building custom hardware to ease the testing process.
When it comes to production, fast is good! But right the first time is better. Anything that helps prevent rework down the line is worth investing in. Some of the best tools to catch problems are good test fixtures. The folks at Tertill (a solar-powered robot for killing weeds that kickstarted last year) took the time to share two brief videos of DIY test fixtures they use to test components before assembly.
The videos are short, but they demonstrate all the things that make a good test: on the motor tester there are no connectors or wires to fiddle with, the test starts automatically, and there is clear feedback via prominent LEDs. The UI board tester also starts automatically and has unambiguous LED feedback, and sports a custom board holder with a recess just the right shape for the PCB. Once the board is in, the sled is pushed like a drawer to make contact with the test hardware and begin the test. The perfectly formed recesses in both units serve another function as well; they act as a go/no-go test for the physical shape of the components and contacts being tested.
Both videos are embedded below; and while there isn’t much detail on the actual test hardware, we do spy a Raspberry Pi and at least two Adafruit logos among other hacker-familiar elements like laser-cut acrylic, 3D printed plastic, pogo pins, and a PVC junction box.
[Elliot] (no relation, but hey, cool name!) wrote in with his OpenFixture model for OpenSCAD. It’s awesome because it takes a small problem, that nonetheless could consume an entire day, and solves it neatly. And that problem is making jigs to test assembled electrical products: a PCB test fixture.
In the PCB design software, you simply note down the locations of the test points and feed these into the OpenSCAD model. ([Elliot] shows you exactly how to do it using KiCAD.) There are a few more parameters of the model that you can tweak to match your particulars, but you should have a DXF outline for a test jig in short order. Cut that out, assemble, and test.
If you have to make more than a few handfuls of a complicated circuit, it becomes worth it to start thinking about testing them systematically. And with this OpenSCAD model, you can have the test jig up and running before the first prototype boards are back in from the fab. How cool is that?
In our final installment of Tools of the Trade (with respect to circuit board assembly), we’ll look at how the circuit board is tested and programmed. At this point in the process, the board has been fully assembled with both through hole and surface mount components, and it needs to be verified before shipping or putting it inside an enclosure. We may have already handled some of the verification step in an earlier episode on inspection of the board, but this step is testing the final PCB. Depending on scale, budget, and complexity, there are all kinds of ways to skin this cat.