The Bus Sign is a piece of Dedicated Single Purpose Hardware, made specifically for connecting to the NextBus API and displaying when the next bus will arrive on any one of the four routes that are near my house.
How to Read The Sign
The Bus Sign displays the time (in minutes) for the next two approaching buses on each route. So for example, in the second picture below, there is a 101 bus headed to Malden in 3 minutes and another one following in 16 minutes.
If the time is below 1 minute, the display will actually kick over and show seconds. The 89/101 bus to Sullivan currently shows a bus in 46 seconds and another bus 10 minutes after that.
The Bus Sign receives updates from the cloud (read in a funny voice... theeee cloooooooooud) every 30 seconds.
I'm responsible for the embedded software, cloud hosted software, mechanical design, electrical design, and graphic design on this project.
How Does It Work?
In plain english, a program running in Amazon's cloud gets and processes information from NextBus. That program sends commands to another company, called Particle, which manages the live internet connection to the Particle microcontroller in the sign itself. The microcontroller then tells the display which numbers to show.
With a little more technical jargon: I'm using a custom PCB to power the displays, controlling them using a 7 segment driver via i2c with a Particle as the embedded microcontroller. A Python program running on an EC2 instance in Amazon's cloud processes the NextBus API and sends commands to Particle's API. Particle hides a lot of the heavy lifting and provides the back end system that sends commands to the Particle controller itself.
If you want to look under the hood, check out
Everything starts with an idea. At this point, I had some sketches and I was just kicking some ideas around in a graphic design program. (I'd also just seen Star Wars: Rouge One).
One of the challenges at this point is not knowing what's available for 7 segment displays. Without having a good sense of size / cost / appearance of a range of displays, it's hard to make informed design choices.
In the next stage, it becomes very important to actually buy some displays and get hands on with them and start prototyping.
The prototype circuit board was designed with flexibility in mind. I wasn't sure what the final mechanical packaging would be and I wanted to be able to tinker with the spacing of the displays. The circuit boards were therefore designed to support an IDC ribbon cable.
IDC stands for insulation displacement connector. They're pretty slick, in that you can have any length of ribbon. The connector has a bunch of little teeth that when installed, bite into the wires inside the ribbon and make electrical contact, making it easy to make a custom "wire harness" from off the shelf parts.
The ribbon gave me the flexibility to rearrange the display segments into a cardboard mockup. There's no substitute for carving things up with your own two hands!
Looks Like / Works Like and Quotable Alphas
The prototypes served their purpose, but I wanted to push farther towards commercialization of the Bus Sign. I wanted something that looked better, wasn't made out of cardboard, and would be easier to assemble.
This stage is about getting as close as possible to to something that looks and works like what a production unit would be, while still using appropriate, but higher fidelity prototyping methods.
The cardboard prototypes informed the sign dimensions, which allowed me to go back and revise the graphics, the circuit board, and the mechanical housing.
Putting it All Together
This is what the Bus Sign looks like in its current incarnation. As always, room always remains for improvement.
To start, I'd love to play more with texture and finish on the sign. I'm currently using laser cut acrylic, but I'd really love powder coated and silk screened sheet metal, or at least something masked off and painted.
Technical Challenges to Commercialization
The biggest technical hurdle to full scale commercialization is customization of each sign to the individual location.
Mechanically, this could be implemented with movable letters, or a fully custom, albeit more expensive, ordering process.
Software wise, it would mean building out a UI, either locally hosted on the Particle itself, or via a phone or web app, to select the appropriate Bus Routes. There are long term maintenance challenges as this depends on the availability of NextBus's API.
I have no short term plans for mass commercialization of the Bus Sign, but if you really want one, I'm planning on a limited run of custom installs!
Hey, our email list is pretty awesome! We share projects, discounts, and other cool stuff we're working on. Sign up below!