A small, always-on embedded device that polls ATM Milano's GiroMilano endpoint every five seconds and tells me, right there on my desk, when the next bus is coming.
Milan's ATM publishes real-time arrivals for every stop. The official app is fine; an LCD on your desk showing the next two buses at a glance is better. No phone to unlock, no app to open, no notification to miss.
timerDelay ms, it issues an HTTPS request to the GiroMilano endpoint for a configured (lineCode, stopCode).ArduinoJson.The I²C LCD is nominally 5 V, but runs fine at 3.3 V in practice — which is exactly what the ESP8266 hands out on its logic pins, so no level shifter needed.
ESP8266WiFi, ESP8266HTTPClient, WiFiClient, ArduinoJson, LiquidCrystal_I2C.
$ git clone https://github.com/lindaniele/bus-wait-display $ open main.ino in Arduino IDE $ set SSID, password, lineCode, stopCode $ select board: "NodeMCU 1.0 (ESP-12E)" $ Upload
Five seconds is configurable; I keep it at five because the ATM API is generous and because standing at a bus stop staring at an empty display feels worse than it should.