Con questo progetto (inutile, come al solito) ho approfondito il funzionamento della più piccola scheda wi-fi sul mercato,la scheda ESP8266-01. La complessità del lavoro sta nel fatto che la scheda ha pochi pin disponibili, che è difficile collegarla al computer per caricare i sorgenti e che è ancora più difficile effettuare il debug.
Il Mini Quiz con ESP8266, cosa è
Il progetto Mini Quiz è un piccolo gioco a quiz, in cui le domande sono memorizzate su un sito Internet (così posso ampliare e modificare il set di domande senza toccare il software sul Mini Quiz) e vengono lette dalla scheda ESP8266-01 che preleva il testo, fa il parsing e mostra le domande sullo schermo Oled.
Per rispondere al quiz vengono utilizzati due pulsanti, gestiti tramite i pin GPIO0
e GPIO2
. Le domande sono tutte con risposta binaria: vero/falso, sì/no. Il software sul Mini Quiz include un timer col tempo a scalare e un contatore del punteggio: +1 ad ogni risposta corretta e -1 ad ogni risposta errata.
E’ possibile avviare il dispositivo come access point, così si può configurare l’accesso wi-fi. E’ infatti necessario inserire i dati di accesso alla rete wi-fi per permettere al dispositivo Mini Quiz di collegarsi ad Internet per prelevare il file delle domande/risposte (spesso per rapidità si usa cablare nel sorgente user e password del proprio wi-fi, ma così non si può portare il Mini Quiz in un’altra casa, perché la connessione ad Internet non funzionerebbe).
Questo è il risultato del Mini Quiz assemblato e pronto per il gioco:
Le piccole dimensioni finali erano state pensate per farlo entrare nel case di un cellulare giocattolo recuperato tra i giochi delle mie figlie, e di cui volevo riutilizzare i bottoni per scegliere le risposte alle domande del Mini Quiz:

Il Mini Quiz doveva entrare nel case di un vecchio cellulare giocattolo.
Tuttavia non ci sono riuscito. Pazienza. Tengo lì il case giocattolo, non butto via niente e lo metto nella scatola dei pezzi rotti.
Idee per l’assemblaggio di un progetto
Quando lavoro ad un progetto costruisco tutto sulla breadboard, con componenti e fili sparsi. Poi quando tutto sembra ok di solito procedo a caso a dare la forma finale al lavoro. Questa volta, invece, proprio perché volevo inserire tutto in un case, ho scoperto alcuni accorgimenti per incastrare le parti in maniera intelligente, in poco spazio.
Le parti importanti, cioè la scheda ESP8266 e lo schermo OLED sono infatti smontabili. E’ importante che la scheda ESP8266 sia smontabile perché bisogna toglierla e ricollegarla al PC per poter caricare il nuovo firmware. Lo schermo OLED è anch’esso smontabile e questo mi server per accedere all’alloggiamento della batteria. Che è una pila ricaricabile da 3.6 Volt.
Qui un dettaglio della scheda forata che alloggia tutti i pezzi:
Segue lo schema del circuito e l’elenco dei componenti utilizzati.
Elenco componenti utilizzati:
- 1× esp8266-01
- 1× I2C schermo oled SD1306 128×64
- 2× 5.1k resistenze
- 2× bottoni
- 1× 3.6V LIR2032 batteria ricaricabile
- 1x alloggiamento pila
- 1x interruttore
- 1x scheda millefori
- un po’ di jumper per collegamenti
- connettori per alloggiare ESP8266 e Oled
Mi sono poi procurato un carica pile LIR2032, perché il Mini Quiz ha un’autonomia di una decina di minuti.
Il software è stato scritto con l’interfaccia Arduino IDE e utilizza le librerie ufficiali disponibili su Github sia per il modulo ESP8266 che per gli schermi OLED. I sorgenti del Mini Quiz sono disponibili qui.
Tra i vari sorgenti c’è il modulo wi-fi manager che è probabilmente la parte più utile e riutilizzabile per altri progetti, che permette di gestire la connessione ad Internet e la gestione del pannello di input dei dati via cellulare quando si attiva l’access point.
Caricare i sorgenti da Arduino IDE ad ESP8266-01
Il caricamento dei sorgenti dal PC alla scheda ESP8266 avviene attraverso la porta USB utilizando un Arduino UNO come “ponte”. Quando si usa un altro microprocessore come tramite per arrivare sulla ESP bisogna ricordarsi che l’Arduino “ponte” deve avere caricato un programma vuoto, che non fa nulla, se no qualunque output del programma di Arduino passa per i pin TX
e RX
e compromette la comunicazione con la ESP8266-01.
In alternativa si può utilizzare una scheda FTDI da collegare al computer al posto dell’Arduino.
Per avviare la scheda ESP8266 in modalità bootloader (o flashing mode), cioè per caricare il proprio programma sulla scheda, è necessario mettere il pin GPIO0
a GND
(online si trovano un’infinità di articoli a proposito), quindi non è propriamente comodo e conviene costruirsi un circuito per fare quest’operazione più rapidamente possibile.
Il mio è fatto così:
Collegare un mini schermo OLED ad una scheda ESP8266-01
Come si vede dallo schema di collegamento la connessione I2C tra lo schermo e la ESP8266 avviene attraverso i pin TX
e RX
, perché i pin GPIO0
e GPIO2
vengono utilizzati dai due bottoni.
Questa situazione preclude l’utilizzo dei pin TX
e RX
come output sul serial monitor dell’interfaccia di sviluppo di Arduino. In pratica si fa il codice, si carica sulla scheda ESP (con modulo fatto a mano o con FTDI), si stacca la scheda ESP e la si collega nel proprio progetto.
Non è quindi possibile debuggare col serial monitor e il debug avviene per forza direttamente sul piccolo schermo Oled, dove in fase di sviluppo ho riservato gli ultimi 10×128 pixel dello schermo, in basso, per stampare messaggi di controllo del corretto funzionamento del software.
Tutti i sorgenti del Mini Quiz, nonché ulteriori informazioni tecniche, sono disponibili sul sito Hackaday.io.