Usare correttamente le uscite GPIO0 e GPIO2 – ESP8266

I moduli ESP-01 hanno a disposizione solo due GPIO e tutti e due vengono coinvolti al boot nella selezione della modalità di funzionamento del processore, secondo la tabella in figura.

Nel modulo citato GPIO15 è tenuta a GND quindi dovremo preoccuparci solo dello stato di GPIO0 che non dovrà MAI valere 0 al boot. A tale proprosito va evitato il suo utilizzo come input e come output si dovrà avere la precauzione di non usare la logica NPN per pilotare magari un relè ma la logica PNP o MOS che lascino il piedino al +Vcc durante il boot, come da schemi di esempio. Per gli altri moduli sarà necessario tenere conto di queste precauzioni anche per GPIO2 nel caso stessimo utilizzando anche GPIO15.

boot table
Tabella di boot e stato GPIO

IO PNP
Uscita con PNP
IO PHOTOCOUPLER
Uscita con Fotoaccoppiatore

6 Risposte a “Usare correttamente le uscite GPIO0 e GPIO2 – ESP8266”

  1. Da poco mi sto cimentando con questi moduli. Prima con banali programmini per far accendere e spegnere LED e poi, con programmi un po’ più impegnativi (grazie al volenteroso aiuto di un amico), comandandoli a distanza con il telefonino tramite WiFi.

    Il problema mi è nato al momento di dover comandare un relè. Se sull’uscita del modulo (pin GPIO2), dove prima comandavo un LED, ci collego un transistor, un darlington od un semplice optoisolatore, quando rialimento l’ESP non risulta più raggiungibile tramite WiFi.

    Smette di funzionare anche se ci collego il solo LED dell’optoisolatore.

    Ho ricominciato da capo collegando un LED ed alimentando l’ESP; verificato il suo funzionamento ho collegato in parallelo un altro LED ed il tutto ha continuato a funzionare normalmente.

    A questo punto – senza interrompere l’alimentazione – ho sostituito il secondo LED con quello dell’optoisolatore, riscontrando che il WiFi continuava a funzionare.

    Togliendo e rimettendo però l’alimentazione non era più raggiungibile.

    Da qualche misura effettuata ad ESP alimentato ho potuto riscontrare che la corrente assorbita dal LED è pari a circa 21mA mentre quella dell’optoisolatore è più o meno la metà.

    A questo punto, avendo sostituito il LED con quello dell’optoisolatore senza collegare altro, non riesco a capire perché con il primo il WiFi non presenta problemi mentre con il secondo non è più accessibile; non sono LED entrambi?

    1. Il problema appare al boot. Durante questa fase alcuni pin devono rimanere in uno stato ben preciso pena il blocco. Nella fattispecie gpio2 e gpio0 devono rimanere scollegati o connessi al positivo (mai a massa neppure tramite resistenza o altri dispositivi). Quindi provvedi a connettere il tuo led o il fotoaccoppiatore in modo che l’uscita dell’ESP funzioni in “sink”, ovvero accenda il led quando è a 0 come spiegato nell’articolo.

  2. Nel caso dell’uscita con fotoaccoppiatore, i valori delle resistenze hanno un valore specifico? che so, R1>R2, R1=R2, R1<R2 o come?
    Sto cercando di pilotare un fotoaccoppiatore dal GPIO0 per poi pilotare un MOSFET senza esiti positivi.
    Grazie in anticipo!

    1. Pilotalo come indicato, ovvero con il fotoaccoppiatore verso il positivo. La resistenza in parallelo può essere omessa, l’altra in serie va bene tra i 330 ed i 680 Ohm.

  3. Non so se sia lo stesso problema che ho io. Ho programmato un modulo ESP8266 connesso su basetta al relay. Il tutto comandato con Blynk. Alla prima alimentazione del modulo relay+ESP chiude per un attimo la bobina, poi forzando GPIO0 a HIGH ho modo di ri-aprire il relay (comportamento inverso). Ho risolto tutte le chiusure spurie tranne quella all’avvio. Temo che però, per necessità di ESP8266, al boot il GPIO0 debba avere quel comportamento. Sapreste dirmi voi?
    Grazie

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.