After a long hiatus due to classes getting busier, finals week has arrived. Which means: watching movies and working on projects (and maybe studying a little bit).
Over the weekend, I finally got around to making the NeoPixels work. I ran into a frustrating issue with the blue LEDs not lighting when I had more than a few other LEDs on. Thanks to some scope work, it turned out that I had wired the NeoPixels to 3.3V instead of 5V so that I wouldn't need to use the level shifter. Giving it 5V was enough to fix it. Another issue I had was that the pixels would flicker very annoyingly. Adding a 1,000 μF capacitor from Vcc to ground fixed it. (I realize that to an electrical engineer, these must seem painfully obvious, but not so much to a computer science major.)
I also fixed up the software by refactoring the NeoPixel code into its own ClockDisplay class and adding a timeout/retransmit loop for the NTP implementation. More software changes are coming eventually. I'd like to add the following features:
- Ad-hoc network setup if no known networks were found, a la Chromecast
- Settings page on the local network for changing timezone, colors, Wi-Fi settings, etc.
- More robust networking code
- Taking into account network delay in NTP implementation
I'm planning to build the housing at the local fab lab and solder everything to perfboard later this week.