It's really nice that all boardhouses, ever, send multiple copies of a PCB. If they gave me the option, I would probably usually only order one. That would bite me in the ass, every time.
I like to butcher the first one with cut-up USB cables for power and through-hole LEDs crappily soldered into whatever socket I can access, for initial bring-up and debugging. And a little hot glue, for strength.
Smoke-test and blinky went okay, so I put it all on the real hardware for further development.
Here it is, plugged into my PicKit 3:
Looks awesome! The LEDs are actually slightly too bright to look at while debugging.
I was a little bit worried that all of the LEDs at full brightness might be too much current for the PIC to sink, but it seems to but completely fine. No heating up, and stress-testing is going fine. The code is now adjusted so that each bank of 4 LEDs is on at a time, so technically they're all PWMed at 25%.
I'm releasing the initial PIC code as a file on this project. It's very alpha so there are a few niggling bugs, and it requires some more testing and features, but, if someone wants to get a PCB made and flash it, they totally could.
- Image->C code processing (via Python script and then reflashing)
- Sleep mode and wakeup via vibration sensor/LDR combo (not fully tested)
- Binary on/off to display 1-bit images
Planned features, supported by the current hardware:
- Communication with flash chip for storing a retrieving image data
- UART communication via standard USB-UART dongle, to handle image data, settings, and modes without requiring complete reflashing of the PIC
- Hall effect sensor to detect start/end of image instead of fixed delays
- Dynamic frame delays to stretch or compress images appropriately
- "Greyscale" images (brightness control, LEDs are a fixed colour)
So there's still lots to come, although most of it will be code changes!