A large LED-based display board to indicate the number of currently open Bugs and Change Requests currently active in the issue tracker at my employer.
- Cost – Initially, this was being funded out of my own pocket because I thought it was cool and really, really wanted to build it. After it was done, the company was kind enough to pick up the tab, but I still couldn’t blow my brains out on the budget.
- Ease of completion – This was a spare time project, and as such I couldn’t devote a ton of time to it.
- Integration – Had to fairly reliably integrate with existing systems without major modification to those systems.
- Appearance – The final product could not look like crap.
- Research. I helped research into the available APIs for our issue tracking service, and worked with another developer to specify what data should be available from our own locally-hosted processing code that interfaced with said API..
- Parts Selection. To make sure others would be able to pick up where I left off – in a company that focuses on Web development rather than embedded systems – I had to make sure to choose fairly easily-replaced parts. I went with an Ethernet-equipped Arduino board, as well as some display boards both designed by myself and sourced over eBay.
- Circuit Board Layout. I had to design smaller display boards that worked with the larger ones I got from eBay over the same bus, that were large enough to see across the room, and also came in at under 5cm x 5cm to fit inside the cheapest Seeedstudio PCB size.
- Programming. Had to interface with a Web service (which would up being plain ASCII) written by a coworker. Wound up writing a very basic HTTP parser for the Arduino, along with a parser for the ASCII format we came up with as well.
- HTTP Parsing – One of those things I don’t want to do again if I don’t have to. My solution was based on a state machine that examined the incoming data one character at a time – since the AVR has very limited memory available, this was the best I could come up with. Since then, an actual proper HTTP parsing library has become available, and I’d very much like to replace what I wrote with that so that people can better understand what’s going on there.
- Power supply – I hadn’t bothered looking up what the current draw of the Ethernet chip on the Arduino board is. Turns out, it’s a lot. The whole thing was powered by a 12V power brick (switching type) that was stepped down to 5V and 3.3V by LDOs on the Arduino board. That board got very, very warm – warm enough to reset itself with some regularity, especially in warmer weather. The manufacturer had specified that the board could work at 12V, but that was clearly pushing it. I eventually used a cheap buck regulator from eBay to step the 12V down to 7V for the Arduino board.