Sommario:

Flash ESP-01 (ESP8266) senza adattatore da USB a seriale utilizzando Raspberry Pi: 3 passaggi
Flash ESP-01 (ESP8266) senza adattatore da USB a seriale utilizzando Raspberry Pi: 3 passaggi

Video: Flash ESP-01 (ESP8266) senza adattatore da USB a seriale utilizzando Raspberry Pi: 3 passaggi

Video: Flash ESP-01 (ESP8266) senza adattatore da USB a seriale utilizzando Raspberry Pi: 3 passaggi
Video: How to programme the ESP8266 board using a USB adapter, Raspberry Pi, or Arduino 2024, Novembre
Anonim
Flash ESP-01 (ESP8266) senza adattatore da USB a seriale utilizzando Raspberry Pi
Flash ESP-01 (ESP8266) senza adattatore da USB a seriale utilizzando Raspberry Pi

Questo Instructable ti guida su come iniziare a programmare il tuo microcontrollore ESP8266 su un modulo WIFI ESP-01. Tutto ciò di cui hai bisogno per iniziare (oltre al modulo ESP-01, ovviamente) è

  • Lampone Pi
  • Ponticelli
  • Resistenza da 10K

Volevo rinnovare una vecchia lampada da comodino in una moderna lampada da notte a LED controllata da Alexa. Niente di speciale, basta accenderlo/spegnerlo usando il comando vocale. Ho ordinato il modulo WIFI ESP-01 più semplice, il relè e il cavo con LED online e ho completamente dimenticato di ordinare l'adattatore da USB a seriale per programmare il microcontrollore ESP8266. Ma dal momento che avevo un Raspberry Pi e sia il Raspberry Pi che la scheda ESP-01 avevano pin UART, ho pensato di poter usare il mio RPi per programmare ESP8266 senza l'adattatore.

Passaggio 1: configura Rapberry Pi

Configura Rapberry Pi
Configura Rapberry Pi

Ho usato Raspberry Pi 3 Model B+, tuttavia, le istruzioni dovrebbero funzionare su altre versioni, specialmente sul modello B.

Quindi, per prima cosa: dobbiamo abilitare UART su Pi.

Vai alle impostazioni di configurazione di RPi. Nella finestra del terminale esegui

$ sudo raspi-config

Vai a 5 Opzioni di interfaccia, quindi seleziona Seriale P6. Quindi hai chiesto Vuoi che una shell di accesso sia accessibile tramite seriale? selezionare poiché non vogliamo utilizzare UART per eseguire il Pi senza testa, ma per comunicare con altri dispositivi, quindi nella schermata seguente quando richiesto Vuoi che l'hardware della porta seriale sia abilitato? Selezionare. Riavvia il Pi come richiesto. UART dovrebbe ora essere abilitato per la comunicazione seriale su pin RX e TX di Raspberry Pi 3. Nota: dopo questo dovrebbe apparire una nuova voce enable_uart=1 alla fine di /boot/config.txt.

Passaggio 2: collega ESP-01 a Raspberry Pi

Collega ESP-01 a Raspberry Pi
Collega ESP-01 a Raspberry Pi

Ora passiamo a collegare tutto insieme.

Innanzitutto, identifica sul tuo RPi 3.3V i pin di alimentazione e GND (massa) per alimentare il microcontrollore ESP8266, i pin TXD (trasmissione) e RXD (ricezione) per comunicare e due pin generici per far funzionare ESP8266 (pin che possono essere impostati in alto o basso). Cerca la disposizione dei pin su pinout.xyz o digita il terminale:

$ pinout

In secondo luogo, identifica i pin necessari su ESP-01. Ma all'inizio abbiamo bisogno di capire i pin ESP-01. Ho trovato una serie di risorse utili disponibili su Internet per aiutarti in questo senso. Questo è il più breve, mentre questo dà una spiegazione molto migliore. In breve: ci sono 8 pin, ne avremo bisogno 7, vale a dire i pin di alimentazione VCC e GND (massa) per l'alimentazione, i pin TXD e RXD per la comunicazione e RST (reset), CH_PD (Chip Power Down, a volte etichettato CH_EN o chip enable) e GPIO0 per far funzionare il modulo. Di solito ESP8266 funziona in modalità normale, ma quando si carica un codice su ESP8266 si presta a essere in modalità flash. Per la modalità di funzionamento normale o normale il modulo deve essere collegato all'alimentazione (ovviamente), ma anche il pin CH_PD deve essere collegato a VCC tramite un pull-up da 10K (questo valore varia in diversi ricorsi, ho trovato valori fino a 3K). resistenza all'avvio. dall'altro lato, per entrare in modalità lampeggiante o di programmazione è necessario mettere a terra il pin GPIO0 all'avvio. Per evitare un flusso di corrente illimitato tramite GPIO0 quando collegato a terra, si consiglia di collegare GPIO0 a terra tramite un resistore a bassa resistenza da 300 - 470 (maggiori informazioni qui). Il pin RST, come suggerisce il nome, ripristina (o riavvia) l'MCU. Durante il normale funzionamento può essere collegato a VCC tramite un resistore di pull-up da 10K, ma deve essere messo a terra per ripristinare il microcontrollore. Sebbene sia sempre possibile utilizzare i pulsanti fisici per mettere a terra i pin RST e GPIO0 (o anche unire manualmente i fili per simulare un pulsante), è un'esperienza molto più piacevole utilizzare i pin Raspberry Pi per impostare la tensione alta e bassa sull'RST e GPIO0 del modulo perni. Inoltre non sono necessarie resistenze da 10K e 470Ω.

Ora, essendo a conoscenza delle peculiarità dei pin ESP-01, possiamo iniziare a collegare tutto insieme. È possibile utilizzare la seguente tabella come riferimento insieme al disegno sopra:

ESP-01 Raspberry Pi

  • VCC (3,3 V) pin n. 1 (3,3 V)
  • GND pin #6 (GND)
  • Pin TXD n. 10 (RXD / BCM 15)
  • Pin RXD #8 (TXD / BCM 14)
  • CH_PD pin n. 1 (3,3 V)
  • Pin 3 RST (BCM 2)
  • GPIO 0 pin #5 (BMC 5)

Collegare il pin VCC per ultimo. L'istanza in cui hai collegato il pin VCC al tuo modulo Wi-Fi si accenderà. Utilizzare screen o minicom per verificare se RPi ed ESP8266 possono comunicare tramite UART (nota: potrebbe essere necessario installare prima screen o minicom, poiché non sembrano essere installati su Raspbian per impostazione predefinita).

Usando l'esecuzione dello schermo:

$ sudo screen /dev/serial0 115200

Usando minicom esegui:

$ sudo minicom -b 115200 -o -D /dev/serial0

Nota: molte risorse online suggeriscono di connettersi a ESP8266 su /dev/ttyAMA0, ma questo non funziona con RPi 3 o successivo (incluso zero W) come da documentazione RPi. Connettiti tramite /dev/serial0 invece o /dev/ttyS0.

Dopo aver inserito screen o minicom, usa i comandi AT per comunicare con ESP8266. Digitare AT, quindi premere Invio e quindi premere Ctrl+J per inviare il comando. Dovresti ottenere OK in risposta. L'elenco dei comandi AT disponibili è disponibile su espressiff.com o semplicemente qui.

Quando i dispositivi sono fisicamente collegati e parlano tra loro, possiamo passare alla programmazione dei pin GPIO RPi e, infine, allo stesso ESP8266.

Passaggio 3: installazione del software (Python per operare e Arduino IDE per programmare)

PARTE 1. Usare Python per cambiare modalità ESP8266

Come accennato in precedenza, è conveniente utilizzare i pin GPIO di RPI per cambiare le modalità operative di ESP8266. Ho scritto due codici Python di base che mettono ESP8266 in modalità normale o di programmazione.

Modalità normale: per mettere il microcontrollore in modalità di funzionamento normale, dobbiamo solo alimentarlo e collegare CH_PD tramite resistore di pull-up a VCC, ma per far passare l'MCU dalla programmazione alla modalità normale dobbiamo ripristinarlo (si pensi al riavvio). Per farlo su RPi, abbasseremo brevemente il GPIO di RPi collegato al pin RST su ESP-01 (per impostazione predefinita il pin RPi che ho usato per il ripristino è impostato su HIGH). Quanto brevemente? Per me è una domanda speculativa. Puoi provare diversi intervalli di tempo, ma ho scoperto che 200 - 500 ms funzionano bene. Scrivi nei commenti se hai un'idea migliore. Salva il tuo codice come reset.py

#!/usr/bin/python

import RPi. GPIO as GPIO import time GPIO.setmode(GPIO. BOARD) # imposta l'identificazione GPIO tramite numeri di pin fisici resetPin = 3 # identifica il pin fisico RPi connesso al pin RST di ESP8266 GPIO.setup(resetPin, GPIO. OUT) # imposta reset pin come output GPIO.output(resetPin, GPIO. LOW) # abbassa la tensione sul pin RST time.sleep(.2) # aspetta.2 s GPIO.output(resetPin, GPIO. HIGH) # ripristina la tensione sul pin RST GPIO. cleanup() # ripristina i pin su RPI per evitare futuri avvisi di runtime

  • Modalità di programmazione: per mettere l'MCU in modalità di programmazione, dobbiamo alimentare ESP8266 con GPIO0 collegato a terra, o in alternativa ripristinarlo e mettere a terra GPIO0 durante l'avvio (di nuovo la durata esatta delle cadute di tensione non mi è del tutto nota, quindi non essere strettamente guidato dai valori utilizzati). Salva il codice come flash.py o scaricalo qui sotto. La successione delle azioni è la seguente:

    • tira giù il perno RST
    • tira giù il pin GPIO0
    • tirare su il perno RST
    • tirare su il pin GPIO0

#!/usr/bin/python

import RPi. GPIO as GPIO import time GPIO.setmode(GPIO. BOARD) # imposta l'identificazione GPIO tramite numeri di pin fisici resetPin = 3 # identifica il pin fisico RPi connesso al pin RST di ESP8266 flashPin = 5 # identifica il pin fisico RPi connesso al pin GPIO0 di ESP8266 GPIO.setup(resetPin, GPIO. OUT) # imposta il pin di reset come output GPIO.setup(flashPin, GPIO. OUT) # imposta il pin flash come output GPIO.output(resetPin, GPIO. LOW) # abbassa la tensione sul tempo del pin RST. sleep(.2) # la necessità di questa attesa è speculativa GPIO.output(flashPin, GPIO. LOW) # abbassa la tensione su GPIO0 time.sleep(.2) # la necessità di questa attesa è speculativa GPIO.output(resetPin, GPIO. HIGH) # avvia l'avvio di ESP8266 time.sleep(.5) # attendi l'avvio di ESP8266 GPIO.ouput(flashPin. GPIO. HIGH) # ripristina la tensione su GPIO pinGPIO.cleanup() # ripristina i pin su RPI per evitare futuri avvisi di runtime

Nei permessi di modifica del terminale:

$ sudo chmod +x flash.py

$ sudo chmod +x reset.py

D'ora in poi ogni volta che devi entrare in modalità di programmazione esegui nel terminale:

$ python /flash.py

dopo aver caricato il codice per accedere alla modalità di funzionamento normale, eseguire:

$ python /reset.py

A questo punto potresti anche voler aggiornare il firmware ESP8266. Ci sono molti tutorial online su come farlo, quindi non entrerò nei dettagli su come farlo.

PARTE 2. Configurazione dell'IDE Arduino

se hai già installato Arduino IDE, potresti comunque voler scorrere la sezione assicurandoti che il tuo IDE sia pronto per ESP8266.

Su Rapberry Pi puoi usare Arduino IDE per programmare il tuo ESP8266. Esistono due modi per installare l'IDE su RPi:

  • tramite la riga di comando dai repository utilizzando apt-get install
  • scarica e installa manualmente da arduino.cc.

Consiglio vivamente di seguire quest'ultima strada. La versione IDE dei repository sembra essere obsoleta e sicuramente dovrai fare di più prima di essere pronto per iniziare a programmare ESP8266. Per evitare il fastidio, vai alla pagina di download di Arduino.cc e scarica la versione Linux ARM. Quindi decomprimi e installa: se il nome del file scaricato assomiglia a questo arduino-X. Y. Z-linuxarm.tar.xz, nella cartella di download esegui:

$ tar -xvf arduino-X. Y. Z-linuxarm.tar.xz

Questo dovrebbe decomprimere il file nella cartella arduino-X. Y. Z. Correre:

$ sudo./arduino-X. Y. Z/install.sh

Questo dovrebbe installare l'IDE. Al termine dell'installazione, avviare l'IDE.

  • Dall'IDE di Arduino vai su File > Preferenze. Cerca "Ulteriori URL di Board Manager" nella parte inferiore della finestra delle preferenze. Immettere https://arduino.esp8266.com/stable/package_esp8266com_index.json nel campo "Ulteriori URL di Board Manager", fare clic sul pulsante "OK".
  • Vai su Strumenti > Bacheca: XXX > Gestore bacheche. Nella finestra utilizzare la ricerca o scorrere verso il basso, selezionare il menu della scheda ESP8266 e fare clic su Installa. Attendi il completamento dell'installazione e chiudi la finestra.
  • Di nuovo vai su Strumenti> Scheda: XXX e cerca le schede ESP8266. Scegli il modulo ESP8266 generico.

Ora IDE è pronto per programmare ESP8266. Digita o incolla il codice desiderato nella finestra IDE e salvalo. Fare clic su Carica. Dal terminale esegui flash.py, questo dovrebbe mettere la tua scheda in modalità di programmazione. Attendi alcuni minuti affinché l'IDE termini la compilazione e il caricamento (nota: ESP-01 in genere viene fornito con 2 LED, il LED blu lampeggerà durante il caricamento del codice) ed esegui reset.py. Ora la tua scheda ESP-01 è pronta per svolgere i compiti.

Consigliato: