Sommario:

ESP8266 Utilizzo dei pin GPIO0/GPIO2/GPIO15: 4 passaggi
ESP8266 Utilizzo dei pin GPIO0/GPIO2/GPIO15: 4 passaggi

Video: ESP8266 Utilizzo dei pin GPIO0/GPIO2/GPIO15: 4 passaggi

Video: ESP8266 Utilizzo dei pin GPIO0/GPIO2/GPIO15: 4 passaggi
Video: 🔴 TASMOTA TUYA жалюзи/ролики - обнаружение LINE AC LINE на Arduino 2024, Luglio
Anonim
ESP8266 Utilizzo dei pin GPIO0/GPIO2/GPIO15
ESP8266 Utilizzo dei pin GPIO0/GPIO2/GPIO15

Aggiornamento 1 luglio 2018 - Aggiunta nota sulla riprogrammazione quando GPIO0 è un output

Questa è una breve nota su come utilizzare i pin GPIO0 / GPIO2 e GPIO15 sul modulo ESP8266.

Aggiornamento: controlla anche Come utilizzare i pin ESP8266-01

introduzione

ESP8266 è un chip abilitato Wi-Fi a basso costo. È disponibile in una varietà di tipi di moduli e può essere programmato in vari modi. Tutti i moduli rendono accessibili GPIO0 e GPIO2. La maggior parte dei moduli, oltre a ESP8266-01, rende accessibile anche GPIO15. Questi GPIO controllano come si avvia il modulo e come tali richiedono una gestione speciale se devono essere utilizzati. Anche GPIO6-GPIO11 richiedono un trattamento speciale come descritto di seguito.

Passaggio 1: pin GPIO flash – da GPIO6 a GPIO11

La maggior parte delle schede ESP8266 ha un chip flash collegato ad alcuni o tutti i GPIO6-GPIO11. La maggior parte dei programmi utilizza la memoria flash, oltre alla RAM, quindi, a meno che tu non ti assicuri specificamente che il tuo codice venga eseguito solo dalla RAM, non puoi utilizzare questi pin per altri scopi.

Il numero esatto di pin utilizzati nell'intervallo da GPIO6 a GPIO11 dipende dal tipo di hardware flash utilizzato sul modulo. Quad IO utilizza 4 linee per i dati (6 pin in totale) fino a 4 volte la velocità dello standard. Il doppio I/O utilizza 2 linee per i dati (4 pin in totale) Lo standard utilizza una singola linea per i dati (3 pin in totale).

A meno che tu non sappia esattamente cosa richiede la tua scheda, è meglio ignorare semplicemente GPIO6 a GPIO11 e non fare riferimento ad essi dal tuo codice.

Passaggio 2: pin GPIO0, GPIO2 e GPIO15

Pin GPIO0, GPIO2 e GPIO15
Pin GPIO0, GPIO2 e GPIO15

Questi pin determinano in quale modalità si avvia il chip.

Per la normale esecuzione del programma, GPIO0 e GPIO2 devono essere portati fino a Vcc (3,3 V) e GPIO15 devono essere portati a GND, ciascuno con un resistore nell'intervallo da 2K a 10K. Un resistore da 2K offre una migliore immunità ai disturbi. OLIMEX utilizza resistori da 2K SparkFun utilizza resistori da 10K. Uso resistori 3K3.

Le impostazioni di questi ingressi vengono verificate solo durante l'accensione (o il ripristino) del chip. Successivamente i pin sono disponibili per l'uso generale, ma come discusso di seguito il loro utilizzo è limitato da questi resistori pull up/down esterni.

Passaggio 3: utilizzo di GPIO0, GPIO2 e GPIO15 come output

Utilizzo di GPIO0, GPIO2 e GPIO15 come output
Utilizzo di GPIO0, GPIO2 e GPIO15 come output

Come notato sopra, questi pin avranno già un resistore collegato a VCC (GPIO0 e GPIO2) o GND per GPIO15. Questo determina come deve essere collegato un qualsiasi dispositivo esterno, come un relè o un led+resistenza. Per GPIO0 e GPIO2, è necessario collegare un relè esterno tra VCC e il pin in modo che non interferisca con l'azione del resistore di pull up. Viceversa un relè esterno collegato a GPIO15 deve essere collegato tra GND e il pin in modo che non interferisca con l'azione della resistenza di pull down.

Per attivare il dispositivo esterno, GPIO0 o GPIO2 deve essere impostato su BASSO (Active LOW) mentre GPIO15 deve essere impostato su HIGH (Active HIGH).

Lo schema sopra mostra come utilizzare GPIO0 e GPIO2 e GPIO15 come uscite. Questo circuito include anche le necessarie resistenze pullup/pulldown. Notare che il modulo relè 5V pilotato da GPIO0 è optoisolato e ha una connessione comune separata per l'ingresso. È importante che la tensione 5V VCCA non sia applicata al pin ESP8266.

Come riprogrammare quando si utilizza GPIO0 come output

Nota: GPIO0 deve essere messo a terra per entrare in modalità di programmazione. Se lo schizzo lo sta guidando in alto, la messa a terra può danneggiare il chip ESP8266. Il modo sicuro per riprogrammare l'ESP8266 quando il codice pilota l'uscita GPIO0 è: a) Spegnere la scheda b) cortocircuitare GPIO0 su gnd c) accendere la scheda che va in modalità di programmazione a causa del cortocircuito su GPIO0 d) rimuovere il cortocircuito da GPIO0 in modo da non cortocircuitare l'uscita quando il programma viene eseguito e) riprogrammare la scheda f) spegnere e riaccendere la scheda se necessario.

Passaggio 4: utilizzo di GPIO0, GPIO2 e GPIO15 come input

Utilizzo di GPIO0, GPIO2 e GPIO15 come input
Utilizzo di GPIO0, GPIO2 e GPIO15 come input

Usare questi pin come input è un po' complicato. Come notato sopra all'accensione e durante il ripristino, questi pin devono essere tirati su o giù come richiesto per avviare il modulo ESP8266 in modalità di funzionamento normale. Ciò significa che, in generale, non è possibile collegare semplicemente un interruttore esterno a questi pin perché all'accensione di solito non è possibile garantire che l'interruttore non attiri l'ingresso a massa e quindi impedisca al modulo di avviarsi correttamente.

Il trucco è non collegare l'interruttore esterno direttamente dal GPIO0 o GPIO2 a GND ma collegarlo invece a un altro pin GPIO che viene portato a terra (come uscita) solo dopo l'avvio di ESP8266. Ricorda, quando vengono utilizzati come uscite, i pin GPIO forniscono una connessione a resistenza molto bassa a VCC o GND a seconda che siano guidati ALTO o BASSO.

Qui verranno presi in considerazione solo GPIO0 e GPIO2. Usando questo metodo puoi ottenere un (1) input aggiuntivo usando questi due (2) GPIO.

Un metodo simile può essere utilizzato per GPIO15 utilizzando un altro pin GPIO per collegare il suo interruttore a +VCC, ma questo non ottiene un input extra, potresti anche usare l'altro pin GPIO direttamente come input.

Il circuito sopra utilizza il modulo ESP8266-01 come esempio. Senza usare questo trucco, ESP8266-01 non ha pin liberi da usare come input se stai già usando i pin RX/TX per una connessione UART.

Poiché il metodo setup() dello sketch viene eseguito solo dopo l'avvio del modulo ESP8266, è sicuro rendere l'output GPIO0 LOW e quindi fornire una massa per S1 collegato a GPIO2. Puoi quindi utilizzare digitalRead(2) altrove nel tuo schizzo per leggere l'impostazione dell'interruttore.

Conclusione

Questa breve nota mostra come utilizzare GPIO0, GPIO2 e GPIO15 come output e come ottenere un input aggiuntivo utilizzando GPIO0 e GPIO2 insieme.

Consigliato: