Public transport trash to functioning utility display – Repurposing an old LED display from a bus

Posted by

Introduction

A few weeks ago, I got my hands on an LED display recycled from an old bus used for public transport. However, getting this hardware to work with tools I had access to in my workshop was incredibly difficult. From strange data transfer protocols to completely gutting the insides of this piece of technology, this is the story of how I got this LED display working for my purposes.

Step one of this process was figuring out how to talk to the LED display in the first place. I looked up the spec sheet for this LED display and found very little information. This was clearly a piece of technology not intended for consumer use. If you look for information online about it, you will find very limited information about how to communicate with it. I did, however, find one thing.

A Wild Goose Chase

The J1587 communication protocol – I had never heard of this protocol before doing research for this board, and I doubt many other people have (I asked both of my robotics and engineering teachers about the protocol, both are senior engineers in the field, and neither of them knew about it). Apparently, this is a protocol used for heavy-duty transportation specifically in vehicles.

Now, this came as quite a shock to me. I had no idea how to communicate using the J1587 library, and after hours of work, could not make any progress on communicating to the matrix. It seemed like I was just going nowhere with this. This is when I had another idea – cracking open the LED matrix and seeing what’s inside.

LED display panel
LED display control board
The two PCBs that were inside of the LED matrix

I noticed this display had two PCBs inside of it. One of them was clearly used for controlling all the LEDs, and the other one just has the LEDs and some shift registers on it.

Making Progress!

I was trying to control this screen with an Arduino – therefore, I couldn’t use the control PCB and I would have to figure out how to directly talk to the LEDs. After a few hours of messing around with the shift registers and chip select lines, I was able to light up any LEDs I wanted on the board.

I had to push to the shift registers as well as pull down the correct chip select line in order to light up a select LED on the board. If I repeated this many times per second, I would be able to print whatever I wanted on the board.

The Arduino hooked up to the LED matrix!

Now, I just had to finish up programming and mount the screen. I drilled two holes in the back of the screen and screwed it into my wall, and I programmed it to tell me when the next bus to the city arrives nearby.

All in all, working on this project was really fun. I learned a bunch of stuff, from lesser-known communication protocols to actually hacking industrial devices. If you ever get your hands on similar technology, I totally suggest giving something like this a shot!