You would think this is the perfect case for the SMT Assembly service offered by JLCPCB — all components on one side, no sockets, a lot of tiny parts that are best assembled by a machine. Unfortunately, they don't do 0.6mm boards, and that's a hard requirement here. Also, their service doesn't accept Fritzing's PNP files, so I would have to write one manually, specifying the placement of all the 64 LEDs. So I decided that I will try and assemble at least one prototype by hand, using a hot air gun.
Even before I started the assembly, I noticed a small problem — there is an extra trace in the LED matrix on the bottom side, connecting two rows that should not be connected. Can you spot it? In any case, a quick cut with a knife solved that. The final version will have that fixed, of course.
Another problem I noticed is that the footprint for those LEDs, which was recommended by the Aliexpress seller, is really a minimal footprint, with nothing sticking out from under the LED. That means that hot air is the only way I can solder it. Next version will have minimally larger pads, as much as space permits.
I didn't yet have the smaller LDO, so I made the footprint for it double, so that I can use either the larger or the smaller one. I'm using the larger one during the tests, later the smaller one arrived and I replaced it. The final version will only have the smaller footprint.
Finally, I'm not happy with the vias inside the microcontroller footprint. This chip has a thermal pad, and the solder mask that JLCPCB uses is really thin and easy to scratch, so I'm worried about shorts in there. For now I put a bit of kapton tape there, but that makes the chip sit a bit higher than it should. I will have to see if I can somehow move that.
My first approach to the assembly was optimistic. I just tinned the pads, heated the solder with the gun and placed each of the LEDs. I had two stripes of 50, that's why you can see two different colors in there — whiter and more yellowish. I expected some of the LEDs to not work and have to be reworked, but I didn't expect what actually happened.
I flashed the firmware with the code for the old #PewPew Standalone — it should work, it would just use only one side of the LEDs, with one color. Once I have that working, I can work on improved code that would handle both colors. Unfortunately what I got as a result is quite random. Multiple LEDs on both rows and columns seem to be shorted together, lighting up in groups and in random colors. I guess my soldering job was worse than I expected.
So now I'm doing a second attempt.
I wrote this simple test program, that lights up each LEDs in each color for a short moment:
import board import digitalio import time _rows = ( digitalio.DigitalInOut(board._R1), digitalio.DigitalInOut(board._R2), digitalio.DigitalInOut(board._R3), digitalio.DigitalInOut(board._R4), digitalio.DigitalInOut(board._R5), digitalio.DigitalInOut(board._R6), digitalio.DigitalInOut(board._R7), digitalio.DigitalInOut(board._R8), ) _cols = ( digitalio.DigitalInOut(board._C1), digitalio.DigitalInOut(board._C2), digitalio.DigitalInOut(board._C3), digitalio.DigitalInOut(board._C4), digitalio.DigitalInOut(board._C5), digitalio.DigitalInOut(board._C6), digitalio.DigitalInOut(board._C7), digitalio.DigitalInOut(board._C8), ) for row in _rows: row.switch_to_output(value=0) for col in _cols: col.switch_to_output(value=1) time.sleep(0.25) col.switch_to_input() row.switch_to_output(value=1) for col in _cols: col.switch_to_output(value=0) time.sleep(0.25) col.switch_to_input() row.switch_to_input()
Now I am soldering one LED at a time and running the test after each. Obviously this is taking much more time, and is much more work, but hopefully I only need to do it once to get the prototype to work. Once I have the firmware ready, the next version with larger pads can be assembled in a fab, with solder paste, stencil and a pnp machine.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.
you need my help... :) i guess...
Are you sure? yes | no
That was the plan, but I wanted to build one first to catch any problems and to develop the firmware.
Are you sure? yes | no