È un progetto basato su microcontrollore (ottimizzato per ESP32-S3) che trasforma un piccolo schermo e-paper da 1.54" in un display secondario per la navigazione turn-by-turn. Progettato per essere compatto, leggibile sotto la luce diretta del sole e a bassissimo consumo energetico, il dispositivo funge da "ripetitore" delle indicazioni stradali, ricevendo i dati in tempo reale da uno smartphone tramite connessione Bluetooth Low Energy (BLE). Il progetto è stato pensato per interfacciarsi con app di automazione Android, come Tasker.
Il codice sorgente è concepito per essere compilato e flashato su un modulo Waveshare ESP32-S3-ePaper-1.54 utilizzando Arduino IDE.
Sul telefono sono necessarie le seguenti app: Tasker, AutoNotification e BLE Tasker Plugin.
Importare in Tasker il profilo Android_Moto.prf.xml che si occupa di intercettare le notifiche di Google Maps e di trasmetterle al display nel formato corretto.
Il sistema agisce come un Server BLE in attesa di connessione. Una volta collegato allo smartphone, esegue le seguenti funzioni:
- Ricezione dati in tempo reale: Riceve pacchetti di dati via Bluetooth contenenti le istruzioni di navigazione (strutturati nel formato
distanza|indicazione testuale|codice icona|info viaggio). - Interfaccia di guida e stato: Interpreta il payload ricevuto e lo disegna sul display e-ink, mostrando all'utente:
- L'icona grafica della manovra da eseguire (svolte, rotonde, uscite, arrivo a destinazione, ecc.).
- La distanza esatta dalla prossima manovra.
- L'indicazione testuale (es. il nome della via o la direzione).
- Informazioni generali sul viaggio in corso (es. tempo di arrivo stimato).
- Lo stato del dispositivo nelle fasi di attesa o disconnessione (indirizzo MAC per facilitare l'associazione BLE e percentuale residua della batteria).
- Gestione intelligente del display: Per garantire reattività durante la guida ed evitare il fastidioso effetto "ghosting" tipico degli schermi e-ink, il software alterna aggiornamenti parziali (velocissimi, per i dati che cambiano spesso come la distanza) ad aggiornamenti totali periodici dello schermo.
- Gestione del Risparmio Energetico: Il sistema monitora costantemente l'alimentazione. Se il dispositivo perde la connessione Bluetooth per più di un minuto, interrompe fisicamente l'alimentazione spegnendosi del tutto (o entra automaticamente in modalità Hibernate / Deep Sleep se collegato via cavo), mostrando prima un'icona di splash per massimizzare la durata della batteria.
- Multitasking nativo: Sfrutta le capacità FreeRTOS dell'ESP32 separando la logica di ricezione Bluetooth dall'aggiornamento grafico del display su core e task differenti, evitando blocchi e garantendo una ricezione fluida dei dati.