Close
0%
0%

Tube Train/Bus Bedside Departure Board

Want to time leaving home to perfection so you arrive just in time for next train or bus? You need a departure board in your own bedroom!

Similar projects worth following
Using the TFL API it's easy to pull live train or bus departure information, which can then be displayed on a 16x2 LCD display connected to the NodeMCU ESP8266 Arduino.

Build instructions as follows:

Connect your Arduino to the LCD Display using instructions and circuit at:

https://www.arduino.cc/en/Tutorial/HelloWorld

Note that I use the pins_arduino.h header to specify the GPIO pins connected the display, if you're using something other than the NodeMCU/ESP8266 you should change the LiquidCrystal initialisation pins in line 23.

Test with the hello world code to make sure you can see the text on the screen.

Next up, download the code from https://github.com/terryspitz/train/blob/master/train/train-clean.ino 

Customise as follows:

1. Enter your Wifi ssid and password in lines 8, 9

2. Visit https://api-portal.tfl.gov.uk/admin, create an account, click the email it sends to verify your address, then copy and paste the app_id and app_key in line 26.

3.  Visit https://api.tfl.gov.uk/swagger/ui/index.html?url=/swagger/docs/v1#!/StopPoint/StopPoint_Search to find your station / stop ID, and cut and paste into line 24.

4. If you want to filter by a particular platform, start by running the code and checking available platforms in the Serial window, then update line 27 and uncomment line 199.

5. That's it, compile and upload to your board.  You may need to restart a couple of times for it the connect and display the departures.  Check for Serial window for any errors.

  • Bedside Hackathon

    terryspitz07/05/2018 at 18:31 0 comments

    My other project  https://hackaday.io/project/19698-peace-clock got paused after I trashed the microstepper trying to squeeze it into a 3D printed case that was a bit too small! So I went back to debugging this beauty.  Progress!

    1. I learned to solder!  I read a Webpage and realised I'd been melting the solder onto the parts, but finding it didn't bond... When I should be heating the parts then the solder is melted by them and bonds properly.

    2. Added a separate power board driven by a 9V adapter which then drives the LCD display at 5V and the Arduino/node MCU via USB. This solves the issues with the MCU not booting.

    3. I switched the NodeMCU to an even smaller WeMos D1 mini which I bought a few of for almost n throwaway price .. https://rover.ebay.com/rover/0/0/0?mpre=https%3A%2F%2Fwww.ebay.co.uk%2Fulk%2Fitm%2F322536706047 £2.99/unit.

    However, weirdly, it doesn't like Serial.begin(...) Which causes it to crash. So... No serial diagnostics. Luckily it's got an LCD display so that's where to write diagnostics!!

    The 8 D1-4 & TX/RX/G/5V pins of the WeMos fit beautifully into the 8 display pins of the LCD (DB0-7 of which only DB4-7 are used) which makes the circuit easy to assemble and nice and tightly packed.

    4. Added a Blynk phone app! https://www.blynk.cc. Wow it's easy.  Echoing the LCD display from the circuit into a virtual LCD in the app was two lines of code! The app lets you change station name from a list populated by the device!  Needs a little more work to filter on underground line, and populate lines and stains from the TFL API.

    5. I got kings cross working! The TFL arrivals info for this is a JSON requiring around 100KB which was too much memory for my little WeMos D1. Actually it was working at 5am (when I was having time sleeping) but stopped at 5.30am when more reasons started arriving! Solution was found on this page: https://arduinojson.org/v5/faq/how-to-reduce-memory-usage/ under Deserialise in Chunks... Which recommends parsing each arrival object separately. Works like a dream.

    Next up: work on app and then try another circuit board. Also work out the separate components used in the power board. Finally, the orange LCD display which matches the real London underground display only works intermittently, needs some persuading (debugging). Wish me luck!

  • Help!

    terryspitz04/04/2018 at 08:51 0 comments

    Everything was going well on this project until I started trying to solder together a stripboard prototype. I must have shorted something. Now my nodemcu can boot and run fine, but only when I disconnect the display while first booting it. After that I can connect the display and it runs fine. Anyone have any ideas?

    Also I bought a few even smaller WiFi/Arduino chips, the WeMos D1 mini, but these also have problems powering the 1602 LCD display.  Time to break out the multimeter.

  • Lots to do!

    terryspitz03/11/2018 at 12:54 0 comments

      OK so v0.1 works, but I realise there's lots to do (I've starting raising these as Issues on https://github.com/terryspitz/train/issues):


      1. Check for Timetabled trains as well as Arrivals (this is important at my local station Pinner since there is often only one train into London showing in Arrivals API).
      2. Add a GUI for selecting WiFi and Password (nearly done)
      3. Add a GUI for selecting Station and Line
      4. Add support for Bus Stops
      5. Support arrival time in mins vs. actual time
      6. Add Station/Line Status check - very important!
      7. Add sleep/wake times

      I've also like to productionise the hardware: solder onto a stripboard or even learn how to design and order a PCB, add an on/off button, and build (3D print) a case.

      Anyone think I could sell these on the web???

      terry

View all 3 project logs

Enjoy this project?

Share

Discussions

idlem1nd wrote 03/04/2018 at 20:24 point

I no longer consult to TfL now Terry, but thanks for the comment on my blog article. I like what you’ve done here a lot, great job!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates