Montag, 10. März 2014

Public Transportation Display - LCARS style

Last week I read this post about a Public Transportation Display and recognized this is only a few streets away from my home. And more important, I remembered I started a similar project a month ago as I discovered the web app from our local transportation office (live.kvv.de). If you do a proper GET request the server sends you a json file with the traffic information.
My plan was to use one of my Ethernet boards I developed last year for my LED panels (I will post more about this project in a few weeks). But here is a sneak preview of the board:
  • Powered by an Atmega 644p@20Mhz 
  • ENC28J60 Ethernet controller
  • Micro SD-Card Socket
  • FTDI FT232 USB to serial converter
  • Pinheader for an HD44780 LCD Display
After reading the mentioned hack a day post I remenbered that I had troubles to get the proper request from the webserver. This was the reason I paused the project months ago. This kicked me to investigate my error. For the network chip I used the exellent EtherCard library from jeelabs, but all I got was a "500 Internal Server Error" as request from the server. After hours of tracing TCP packets with wireshark I found my mistake. The default GET request function sends an 
"Accept: text/html"
to the sever what is nonsense if you request a json file. Due to the reason I'm not very familiar with web developing I needed some time to find this mistake. After removing the request I got the correct response from the server. All I had to do now was hacking a function to extract the data I needed and print the information to the LCD. As display I used a common HD44780 compatible 20x4 character LCD. 
An hour later, the prototype was running. 
I spent the rest of the weekend designing a nice case. During the last weeks I started rewatching DS9 so it was only logical to put it in a Star Trek like case. The top panel is printed on the same drawing paper I use as mask to for PCB etching. 
This printed foil is covered by a 2 mm acrylic plate.
The case is of course 3d printed.
The outer frame can be snapped over the inner case and no screws are needed from the outside:
As you can see there are holes for buttons. In the future I hope to get some QTouch buttons working under the acrylic top. But it seems not so easy to get it working besides the Arduino framework - any suggestions? Please tell me.

The Arduino code is quite a mess, if you like to have a look: PTS_Display.ino
And some more pictures: (I have to work on the cable routing)