Project update 5 of 7
Hurray, we reached our funding goal! Also, the campaign is almost over! Time flies when you’re having fun I guess. Time also flies when you’re very busy. :)
In this update I wanted to talk about the test fixture used to test each unit before it gets shipped to you.
Modern electronics assembly at professional manufacturing houses is quite good, but it’s still not good enough to just trust that every unit that rolls off the line will be perfect. There are generic QA methods that can catch some issues, such as PCB connectivity tests and optical inspection, which ensure the parts are connected as expected and no parts are obviously misplaced. But in the end, if you want to make sure something works, you have to turn it on and see if it does what it’s supposed to do. This is called functional test.
For the first 100 Early Bird boards, I had KingTop Technology (my contract manufacturer) do a simple functional test: plug in a PoE powered Ethernet cable, and check that the power section put power on the 5V pad. I don’t know if they had any units that didn’t at first work, but I know that all units I received produced power as expected. But there were 5 units that weren’t able to communicate over Ethernet. Why? Because this hadn’t been tested, and was due to some invisible defect that wasn’t caught any other way.
So I had to make a test fixture that would exercise every one of the subsystems on the board to ensure they are all functional and within spec.
In this case, I built a one/off fixture using perf board:
To be able to quickly connect and disconnect the relevant FeatherWing pads in a production setting, we use pogo pins. These are pins with spring action and are available with different style heads for various use cases. To connect well to the ring of the through-hole pads, I used a variant with a hexagonal head, so the hex edges connect well to the inner rim of the pad. There are two metal posts (filed off screws) that insert into the FeatherWing’s mounting holes, to make sure everything is positioned and aligned correctly, and the pins will connect to the correct pads.
Since this is a FeatherWing, the easiest way to test it seemed to me to use a Feather. :) I used an Adafruit Feather M4 Express, running CircuitPython. You can see it mounted on the bottom board in the picture below. To round things out, there’s a resistive divider that scales the PoE voltage for measurement with the ADC, LEDs with current limiting resistors to indicate PASS/FAIL states, and two power resistors to put a load on the PoE power supply and to make sure the supply has the expected power capability:
The code that runs on the fixture’s Feather M4 Express can be found on Github. After initializing the hardware, the script attempts to read the MAC address from the 24AA02E48 chip, and indicates success or failure on the "MAC" LEDs.
Next, the script initializes the W5500 and attempts to get an IP address from the network’s DHCP server. You may note in the code that the W5500 is set up using the default MAC address, instead of the one we read from the 24AA02E48 chip. Why? Because it turns out many routers will quickly run out of IP addresses to lease if every unit tested presents their unique MAC. By re-using the same MAC, all units tested lease the same IP address and we avoid such network issues.
Lastly, the voltage produced by the PoE power system is measured while under load from the power resistors, and checked against limits. If all three tests light up their green LED and the Ethernet jack’s LEDs show activity as well, the unit passes the test. If not, the LEDs indicating failure can help the technician pinpoint and fix the problem.
One of the last risk factors for the campaign was getting the test fixture to KingTop in China. They have now received it and have successfully used it to rework and test the 5 units that had failed Ethernet communication before. They are now ready to start production as soon as we determine the number of units to build!