Things have been moving steadily along at AwkwardEngineer, which means lots of pictures of the Bus Sign project.
On the mechanical front, I used the graphics mockup from the last update to start work on a CAD model for how this will go together. All the work is in OnShape (free, in browser CAD!) and is publicly available here.
My approach is to mount and wire the electronics to a sub plate (it has extra access cutouts to accommodate second thoughts on my wiring plan), then the front face will mount to standoffs and cover everything.
I'm still thinking about tweaking the form, maybe rounding some corners off or putting filters over the LCD displays and the render tools I had don't quite capture the weathered feel I'm going for, but this conveys the general idea.
After building up the first prototype circuit boards for the Bus Sign, I think I counted something like nine errors in about 2 square inches of board area. I decided I wanted to give it another whirl and have made a large number of improvements to the board.
I've said in the past that I didn't have any serious intentions of commercializing this, but I started looking into component kitting services, and with a cleaned up board, I could make it worthwhile to sell a "make your own" set that people could solder together, even in batches as small as 3 sets or less. Maybe I'll even look into licensing it to SparkFun?
Also, one of the key ideas with this board was to ditch the ribbon cable from the last build and put 4 displays on one board (the maximum the driver chip can handle) and eliminate all harnessing. If for some reason, the board configuration doesn't match what you want, say a 4x1 row, or a row of 1 and a row of 3, then the board is meant to be snapped apart, and then a ribbon cable can be added.
Working vs. Product Software/Firmware
The BeagleBone computer that's running the firmware for the clock is running with a wifi dongle now, so it's untethered from my laptop and a true embedded system. There's probably a longer essay or blog post I could write about the topic, but operating "without strings" means that a whole host of issues that mark the difference between "working" and "production ready" code are becoming readily apparent.
In short, having the code drive the displays under ideal conditions is one thing, but handling all the edge cases is another. Here's a list of things that have crashed the display and could have led to a potential customer return.
- unplugged i2c connection caused crash
- internet down caused crash
- NextBus feed down caused crash
- hitting NextBus feed rate limit caused crash
- rebooting lost wifi dongle settings
- rebooting lost TCP/IP gateway route settings
- rebooting didn't automatically restart the display program.
- and so on.
Even just getting this thing solid enough to where I could leave it unattended in my living room meant all sorts of error handling and mucking about with what I call linux administrivia.
Next steps at this point are to go out and build stuff! The next update should have lots of (hopefully awesome!) pictures. I'll send more updates as I make progress!
Hey, we like to think our email list is pretty awesome! We share projects, discounts, and other cool stuff we're working on. Sign up below!