A subway arrivals sign using an off-the-shelf sign and a Raspberry Pi. Powered by the goodservice.io API.
New in 0.5!: Also supports buses & transit globally (font support only for latin-1 right now) via transit.land.
Each time the display updates, the sign will display Load, ok ok,
HC-1, and the display resolution. This process takes about 3 seconds.
signpi.webm
You will need
- A Raspberry Pi Zero W
- A 192 x 32 LED sign with a HC-1 controller. These can be found on ebay, aliexpress, amazon.
Now, download the release zip: https://github.com/mdejean/signpi/releases/download/v0.4/signpi-0.4.zip
-
Insert your microSD card into the reader and open up rpi-imager. Choose Raspberry Pi OS (unfortunately Lite does not have python3-pil preinstalled)
-
Adjust the advanced settings, especially the wireless network settings. Uncheck the eject after complete option.
-
Write the microSD card.
-
Open up the 'bootfs' drive
i. Copy
signpi.debto it. ii. edit cmdline.txt: After rootwait addmodules-load=dwc2iii. edit config.txt: At the bottom of the file, under[all]add a line withdtoverlay=dwc2iv. Add these two lines to the bottom of the fileuser-dataruncmd: - dpkg -i /boot/firmware/signpi.deb -
Eject, put the microSD card in your Pi and plug it in to the sign.
-
Wait about 6 minutes for the first-run process on the Pi to complete. When it's done you should have a functioning sign, displaying arrivals at 72nd St.
-
To change the station, unplug the Pi from the sign and plug it into your computer. It will appear after 15-20 seconds as a flash drive. Open the
config.inifile on the flash drive and edit the station. To find your station's code, go to https://goodservice.io/stations and click on your station. The station's code is at the end of the page's address. For example Nevins Street ishttps://goodservice.io/stations/234so the code is234
These displays allow the user to program the sign using some software
which puts a file (COLOR_01.PRG) on a flash drive which is then plugged
in to the sign. signpi makes the Raspberry Pi Zero W pretend to be a
flash drive containing that file, and 'unplugs' itself to get
the sign to display the image it has created.
signpi_adsb.mov
Displays the nearest aircraft to a location.
For aircraft location this repeatedly calls the adsb.lol API which is free. For route information this uses the flightaware API which is not free - it costs $0.005 per request, with up to $5/mo free. signpi tries to make only one request per plane, but in busy areas this still adds up quickly. You must create an account and put the api key in config.ini to use the flightaware api.
Except as otherwise noted, this software is distributed under the terms of the GNU General Public License, version 2 or later. See LICENSE for the full text.

