My personal credo / bad habit of saying YES to opportunity recently paid off as I got to work with the talented designer Mayo Nissen on a hardware hacking project. Mayo was invited to reincarnate a project of his called City Tickets for a show at the Boston Society of Architects Space called Reprogramming the City, and our mutual friend Debbie Chachra introduced us. Since I work a few blocks from the BSA Space and ride past the building daily, I couldn’t say no.
The challenge? Reprogram a city parking ticket kiosk and connect it to Boston’s Citizen’s Connect service API. The idea of the project is that this expensive infrastructure is equipped with solar power, wireless networking, and a printer–can it be used for any purpose other than spitting out parking receipts? Show curator Scott Burnham convinced the BTD to loan us a Parkeon Strada with the electronics removed, and we went to work with just a few short weeks before the show’s opening.
The bulk of the work would be done on a Mac Mini inside the kiosk, printing several example tickets with live data from the Citizen’s Connect API. We had to replace the display screen on the kiosk and map the kiosk’s buttons into printing actions. I had some experience with the Adafruit RGB LCD Shield, so that was my starting point. We should be able to connect the kiosk’s buttons to the shield buttons, hook the whole thing to an Arduino, and be done in a day or so.
By themselves, these old LCD character displays are really a pain to work with. 18 lines seems like a lot of wire–and a lot of soldering–for someone spoiled on 4-pin SPI and I2C interfaces. Luckily Adafruit provide an interface board that puts an I2C I/O expander between your Arduino and the LCD, and a complete software library. And they include 5 buttons on the shield!
NOTE: Unfortunately Adafruit are currently listing the RGB LCD Shield out of stock with no ETA for restock.
We were replacing a larger LCD screen on the Parkeon unit, and it would have been nice to use a bigger, brighter display, but I convinced Mayo that the 16x2 LCD shield was the shortest path to success. Unfortunately the buttons proved to be far more complicated. I spent an hour with a multimeter and the Parkeon button assembly, and studied the schematic from the LCD Shield, and couldn’t get them working together. I did manage to figure out enough of the pinout from the button assembly to build a circuit to read the buttons and light an LED.
Once I got this working for 3 buttons I moved it to a protoboard along with a BBLeo, a really nice breadboard-friendly Leonardo-compatible package designed by Paul Badger at Modern Device in Providence.
Once I had the circuit working I had my daughter help me with this demo:
We were ready for finaly assembly, just a few days before the show opening. Mayo came up from NYC with a thermal printer, and his friend JD Hollis built a Rails app to pull information from the Citizen’s Connect API. The Rails app runs on the Mac Mini, rendering the tickets onto a map centered around the Gallery location. The printed pages are formatted to paper the same size as used in the Boston parking kiosks, and use many of the same graphical assets, so they look quite official. Since the Leonardo can act as a USB HID Device, we mapped the Parkeon buttons to USB keyboard sequences to select the appropriate page and print. And in case you’re wondering: yes, a Leonardo powered over USB can send keyboard signals over the same USB connection.
While the Parkeon Strada has wireless networking capabilities as well as a large solar-charged battery, we used the gallery’s WiFi and AC power for this prototype.
Mayo painstakingly replaced all the signage on the outside of the kiosk, subtly rebranding it. Getting the tickets to print pixel perfect on the thermal printer was one of the biggest challenges–the path through the browser’s print-screen function and the system printer driver resulted in printed images which were lower quality than hoped. I think that if we were to do that part over again, and we had more time and budget, we would probably write a lower level printer driver in order to get direct control of each rendered pixel on the paper.
Below are samples of two of the printed tickets. On the left is a report ticket, showing reported problems and recently fixed problem tickets in the immediate area. On the right is a form which can be used by citizens to report traffic light problems, potholes, or graffiti that needs cleaning up.
The Reprogramming The City show runs through late September. If you’re in the area and you want to see it in person, it’s only a block from Dewey Square, Boston’s best weekday selection of food trucks. My treat!