Furgone
FURGONE — ESP8266 OLED Controller
Firmware PlatformIO per ESP8266 (ESP‑12E) con display OLED 128×32 (SSD1306, I²C), interfaccia web su LittleFS e modulo Meteo basato su OpenWeatherMap. Consente di:
- Visualizzare varie schermate su OLED: Wi‑Fi, Ora/Data, Eyes, Meteo, Game of Life, Triangolo animato, ciclo schermi
- Configurare rete Wi‑Fi e nome mDNS da web UI
- Recuperare condizioni meteo correnti via API OpenWeatherMap
Requisiti
- PlatformIO (VS Code estensione o CLI)
- Scheda ESP8266 ESP‑12E (o compatibile, es. NodeMCU)
- Librerie Arduino (installate nella tua cartella Arduino o come
lib_deps):- ESP8266WiFi (core ESP8266)
- ESP8266HTTPClient (core ESP8266)
- ESP8266mDNS (core ESP8266)
- LittleFS (core ESP8266)
- ArduinoJson
- Adafruit GFX Library
- Adafruit SSD1306
Il progetto è configurato in platformio.ini per l’ambiente esp01_1m e usa lib_deps per gestire automaticamente le dipendenze.
Hardware
- MCU: ESP8266 ESP‑12E
- Display: OLED 128×32 SSD1306 via I²C (indirizzo 0x3C)
- Pin I²C ESP8266 di default: SDA = D2 (GPIO4), SCL = D1 (GPIO5)
Struttura progetto
src/Furgone.ino: firmware principale (OLED, web server, Wi‑Fi, mDNS, gestione schermate)src/meteo.cpp,src/meteo.h: modulo meteo (OpenWeatherMap, parsing JSON)src/screen.*,src/eyes.*,src/GOL.*,src/Button.*: componenti di visualizzazione/controllodata/: file per LittleFS (interfaccia web e configurazioni)INDEX.HTM: controller web (selezione schermate, stato dispositivo)SETUP.HTM: pagina di setup della rete Wi‑FiWIFI_SID.TXT,WIFI_PWD.TXT: SSID e password Wi‑FiMDNS_NM.TXT: nome mDNS (es.FURGONE)SCREEN.TXT: indice schermata da avviareMETEO_API.TXT: query string per OpenWeatherMap (vedi sotto)
Configurazione (LittleFS)
Il firmware legge le impostazioni da LittleFS all’avvio. Prepara i file nella cartella data/ prima di caricare l’immagine del filesystem:
-
WIFI_SID.TXT: SSID della rete -
WIFI_PWD.TXT: password della rete -
MDNS_NM.TXT(opzionale): nome mDNS (es.FURGONE), usato anche come SSID in modalità AP -
SCREEN.TXT(opzionale): numero schermata iniziale (es.1) -
METEO_API.TXT: parte di query per OpenWeatherMap, per es.:id=<CITY_ID>&cnt=1&units=metric&lang=it&appid=<API_KEY>
Sicurezza: evita di committare chiavi/API e credenziali. Mantieni METEO_API.TXT, WIFI_* fuori dal VCS o usa segreti separati.
Build e Upload
Da VS Code (PlatformIO):
- Upload LittleFS: target “Upload Filesystem Image” (carica il contenuto di
data/) - Compila e flash: target “Upload” sull’ambiente
esp01_1m
Da CLI:
- Build:
pio run -e esp01_1m - Upload LittleFS:
pio run -e esp01_1m -t uploadfs - Upload firmware:
pio run -e esp01_1m -t upload
Utilizzo
- All’avvio il dispositivo legge le credenziali da LittleFS e prova a connettersi in modalità STA.
- Se fallisce, avvia un Access Point aperto con SSID uguale al nome mDNS (es.
FURGONE) e mostra l’IP su OLED. - Interfaccia web:
- In STA:
http://<mdns>.local/oppurehttp://<ip> - In AP:
http://<ip_ap>(mostrato su OLED)
- In STA:
- Dalla Home puoi cambiare schermata (Wi‑Fi, Ora, Eyes, Meteo, GOL, Triangolo, ciclo) e accedere a “Setup Wi‑Fi” per salvare SSID/password/mDNS.
Endpoint HTTP
/wifi→ schermata 0 (info Wi‑Fi)/time→ schermata 1 (ora/data)/eyes→ schermata 2 (eyes)/meteo→ schermata 3 (meteo)/gol→ schermata 4 (Game of Life)/tri→ schermata 5 (Triangolo animato)/cycle→ schermata 6 (attiva ciclo automatico, mostra schermo "CICLO")/status→ JSON con stato rete (ip, mdns, rssi, mode, ap_ip)/oled→ JSON con buffer OLED in hex/setup→ pagina di configurazione credenziali Wi‑Fi/mDNS
Il modulo Meteo usa OpenWeatherMap: il metodo classMeteo::Update() effettua una GET su http://api.openweathermap.org/data/2.5/weather? concatenando il contenuto di METEO_API.TXT (temperatura, umidità, vento, descrizione, icona, eventuale neve 1h).
Note di sviluppo
- Board e framework: vedi
platformio.ini - Display:
Adafruit_SSD1306a 0x3C - File principali:
src/Furgone.ino,src/meteo.cpp,src/meteo.h
Licenza
Specifica qui la licenza del progetto (es. MIT). Attualmente nessuna licenza è dichiarata.
Per il codice sorgente e gli altri progetti visita il profilo GitHub di rsodvd79 .