[Adrian] and [Obelix] wanted to have an easy way to know when to expect the public transportation, so they hacked an LED dot matrix display to show arrival times for stops near their dorm.
They found the display on Ebay with a defective controller which they replaced with an ATmega328p. They connected the display to the internet by adding a small TP-Link MR3020 router and connecting it to the ATmega328p via a serial line. Their local transportation office’s web page is polled to gather wait times for the stops of interest. All rendering of the final image to display to the dot matrix display is done on their PC, which then gets pushed through to the MR3020, which in turn pushes it out to the ATmega328p for final display.
[Adrian] and [Obelix] warn about setting proper watchdog timers on the display driver to make sure bugs in the controller don’t fry the dot matrix elements. Their ATmega328p dot matrix driver code can be found on [Adrian]’s GitHub page.
Check out a video of the display in action after the jump.
Sup fellow Karlsruher students!
Also: first :P
HaDiKo!! Nice work guys, I really like your write-up and effort. I recently discovered the REST Api and I’m planning something pretty similar
For a second there I forgot what public transportation was (I catch it everyday) and it took me about 3 reads of that first paragraph before I realised it was talking about bus/train arrivals and not time travellers/terminators. I think I need more coffee.
I was working on the exact same thing (even the same bus tour) … paused during exam period.
Great work!
I thought “What a nice evening project to rebuild it using an Arduino, the network shield and some duct tape” … turns out the RAM is too small to fit the whole JSON request :P
I build my own Arduino module with an ENC28J60 Ethernet chip for this job, but I’ve trouble getting the correct response from the transportation offices webserver.
http://live.kvv.de/webapp/departures/bystop/de:8212:1103?maxInfos=10&key=377d840e54b59adbe53608ba1aad70e8 is for the stop “Knielinger Allee” for example. The stop id is set after /bystop/ … that should help .. At least I hope so.
No sry I tried this before, works fine with everything but I only get “HTTP/1.1 500 Internal Server Error” with my GET request from the Arduino… I even sniffed the TCP packet and to me it locks exactly the same as the package send by the browser ….
How did you find out the id of your stop ?
They even use the same key everytime: http://live.kvv.de/js/app.min.js
Couldn’t you just run the data fetching and processing on the MR3020? It should have enough of free RAM I guess.
They did it that way. I thought this would make a nice project for an evening. I think I’ll go and use a router instead then :)
Where do you want to place it? Something like that would be nice in the ATIS pool room (KIT Building 50.34).
[Adrian] and [Obelix]? Surely it’s [Asterix] and [Obelix]?
(c:
Nope – Asterix is someone else ;)
Should also check out https://remotesign.mixmox.com/p/download.html
It fetches German or Swiss data and displays it on either a tiny RemoteSign OLED screen or RemoteSign on Windows