Come configurare smartphone e PC. Portale informativo
  • casa
  • Interessante
  • Firmware ESP8266, programmazione nell'IDE Arduino. Aggiornamento firmware ESP8266

Firmware ESP8266, programmazione nell'IDE Arduino. Aggiornamento firmware ESP8266

Obiettivi e ragioni

Questo è il secondo articolo dell'autore su circuito integrato ESP8266, contenente un microcontroller RISC a 32 bit completo e circuiti Wi-Fi 802.11 b/g/n integrati. descritto utilizzandoArduino IDE per la programmazione ESP8266 e contiene Informazioni importanti, che non verrà qui ripetuto. Se non l'hai letto, ti consigliamo di farlo.

Non mancano le informazioni sull'ESP8266 su Internet; in effetti, potrebbe essercene troppo... sbagliato. Gli sviluppatori del chip, Espressif, avrebbero deciso non solo di evitare l'outsourcing della produzione, ma anche di evitare di essere direttamente coinvolti nello sviluppo della linea di moduli ESP che utilizzano il chip ESP8266. Invece, offrono informazioni e servizi di supporto attraverso un forum per coloro che sono disposti a navigare nel labirinto con tenacia e pazienza. Ad aumentare la confusione c'è l'esistenza di un altro forum che, nonostante si chiami esp8266.com, non è gestito da Espressif. Inoltre, ci sono molti rivenditori, vlogger e scrittori che offrono informazioni che vanno da buone a confuse fino al punto di essere completamente sbagliate.

I moduli ESP sono disponibili in varie fonti, e il firmware contenuto nei chip ESP8266 dei moduli è quasi sempre obsoleto e spesso fa sorgere sospetti sulla loro origine. Talvolta sono sospetti anche gli "aggiornamenti" e gli strumenti disponibili dalle stesse fonti. Pertanto, lo scopo di questo articolo è documentare la procedura per scaricare l'ultimo firmware disponibile direttamente da Espressif e installarlo utilizzando lo strumento di programmazione fornito da Espressif.

Apparecchiature di collegamento

Per aggiornare il firmware su qualsiasi ESP8266, è necessario alimentarlo correttamente e collegarlo al computer. Inoltre, è necessario aggiungere un mezzo per reimpostare il chip e metterlo in modalità di avvio. Lo schema e la fotografia sottostanti mostrano il collegamento consigliato; Si prega di notare che i colori dei fili nello schema corrispondono ai colori nella foto. Come puoi vedere, aggiornerò il firmware sul modulo ESP-01, ma le stesse connessioni funzioneranno su altri moduli purché vengano utilizzati gli stessi I/O ESP8266 come mostrato nel diagramma. Informazioni aggiuntive guarda dentro .

Uno schema firmware più affidabile è fornito in questo articolo.


Programma terminale PuTTY

Una volta completata la connessione hardware, il passaggio successivo è accendere ESP8266 e provare a comunicare con esso. Ciò richiede un semplice programma terminale; useremo PuTTY, programma gratuito, disponibile qui. Puoi usarne un altro programma terminale, ma dovrai considerare le differenze tra questo e PuTTY.

Apri PuTTY e fai clic sul pulsante di opzione Seriale. Inserisci il numero della porta COM (che dovrebbe essere inferiore a 10) e la velocità di trasmissione (molto probabilmente sarà 115200 o 9600).

In una piccola finestra Sessioni salvate immettere ESP8266 e fare clic sul pulsante Salva. La finestra PuTTY dovrebbe assomigliare all'immagine qui sotto.


Fare clic sul pulsante Aprire, che dovrebbe aprire una finestra di sessione del terminale PuTTY.

Attiva Caps Lock sul tuo computer e digita AT, ma non premere Invio. Dovresti vedere AT nella finestra del terminale PuTTY. Se ciò non accade, potresti aver selezionato la porta COM sbagliata o velocità sbagliata trasferimenti. Chiudi PuTTY e inizia questo sottoarticolo dall'inizio. Baud rate accettabili: 9600, 19200, 38400, 74880, 115200, 230400, 460800 e 921600; provali ciascuno a turno finché non ne trovi uno che funzioni.

Quando vedi AT nella finestra del terminale PuTTY, tieni premuto il tasto Ctrl, premi il tasto M e poi J. Rilascia il tasto Ctrl. Dovresti vedere OK nella finestra del terminale PuTTY come mostrato nell'immagine qui sotto.


Tieni presente che se commetti un errore di digitazione in una finestra di sessione del terminale, potresti non essere in grado di correggere l'errore. Invece di provare a modificare e correggere l'errore, spesso è meglio tenere semplicemente premuto il tasto Ctrl e premere prima il tasto M e poi il tasto J, che genererà un messaggio di errore. Quindi puoi ricominciare e inserire il testo corretto.

Quando vedi il primo messaggio OK, significa che hai superato un grosso ostacolo. Ora sai che l'apparecchiatura è collegata correttamente, il modulo ESP funziona e hai selezionato la porta COM e la velocità di trasmissione corrette. OK

Ora avvia nuovamente PuTTY, seleziona la sessione ESP8266 salvata e fai clic sul pulsante Carico Aprire


Nella prima riga sopra vedi il comando AT+GMR che hai digitato. Come forse saprai o avrai intuito, lo schema di comandi che utilizziamo per comunicare con l'ESP8266 è chiamato "Set di comandi AT" perché tutti i comandi iniziano con le lettere "AT".

Sfortunatamente, esistono molte versioni dei set di comandi AT; contengono tutti alcuni degli stessi comandi, ma ci sono molti comandi AT che non sono standard in tutti i set di comandi AT. Anche all'interno della comunità ESP8266 esistono diverse versioni. La seconda riga indica che lo è dispositivo specifico L'8266 è programmato con firmware che utilizza la versione 0.25.0.0 dei comandi AT. C'è un documento da qualche parte che definisce i comandi inclusi nella versione 0.25.0.0, ma anche senza quel documento puoi usare tentativi ed errori per determinare quali comandi AT sono supportati. Nella migliore delle ipotesi questo sarà un processo molto noioso, ma fortunatamente c'è una soluzione che verrà spiegata tra poco.

La terza riga identifica la versione del software (SDK) utilizzata per questo particolare ESP8266 come versione 1.1.1. Ogni SDK include anche una serie di comandi AT che fanno parte del firmware e sono adatti a controllare quel firmware. Apparentemente la versione 0.25.0.0 dei comandi AT funziona con la versione 1.1.1 dell'SDK. Ma hai ancora bisogno del documento che descrive la versione 0.25.0.0 di AT per scoprire quali comandi sono abilitati. Esiste Il modo migliore, descritto nella sezione successiva di questo articolo, ma prima di passare a quello, proviamo un altro comando AT e vediamo cosa succede.

Attiva Caps Lock sul tuo computer e inserisci AT+CWLAP. Quando vedi AT+CWLAP nella finestra del terminale PuTTY, tieni premuto il tasto Ctrl e premi prima il tasto M e poi il tasto J. Rilascia il tasto Ctrl. Dopo alcuni secondi, la finestra del terminale dovrebbe assomigliare allo screenshot qui sotto.


AT+CWLAP forza ESP8266 a elencare tutto Wi-Fi disponibile punti di accesso. Nel caso precedente sono stati trovati due punti di accesso: uno si chiama "ATT936" e il secondo è "tracecom 2.4". Naturalmente, i risultati varieranno e dovrebbero includere la tua rete Wi-Fi e le reti dei tuoi vicini.

Chiudere la finestra della sessione del terminale PuTTY e fare clic su OK quando PuTTY ti chiede se sei sicuro.

Strumento di download Flash ESP

Sebbene sia raramente menzionato online, Espressif, gli sviluppatori del chip ESP8266, hanno creato alcuni software per aggiornare il firmware dei loro chip. Questo è lo strumento di download ESP Flash e questo strumento è disponibile. Scarica, decomprimi e installa l'ultima versione sul tuo computer; al momento in cui scrivo questo è FLASH_DOWNLOAD_TOOLS_v2.4_150924.rar .

Avvia lo strumento e dovresti vedere due finestre aperte: una finestra dell'interfaccia grafica (GUI) con campi di immissione delle informazioni e una finestra di terminale in cui viene conservato un registro delle azioni completate.

Finestra dell'interfaccia utente grafica (GUI) dello strumento di download Flash ESP

Ci sono alcune cose degne di nota, ma non motivo di preoccupazione:

  • (GUI) è identificata come V2.3, mentre la finestra di registro è identificata come V2.4. Apparentemente la finestra della GUI è contrassegnata in modo errato;
  • i campi di selezione della porta COM e della velocità di trasmissione nella finestra della GUI potrebbero già contenere dati;
  • i campi di immissione dell'indirizzo nella finestra della GUI potrebbero già contenere dati;
  • la finestra di registro potrebbe già contenere dati.

Ottenere il firmware più recente

Espressif ha una pagina che elenca il firmware più recente. Vai su bbs.espressif.com, fai clic sulla voce SDK nell'elenco Download, quindi fai clic su "ultima versione" nella sezione Annunci. Al momento in cui scrivo, in questa pagina è possibile visualizzare quanto segue:


Ciò di cui abbiamo bisogno è l'ultima versione dell'SDK non del sistema operativo (Software Development Kit) e sembra che se fai clic su "Ultima versione: 1.4.0" otterrai la versione più recente. Ma non è così; Tieni presente che è disponibile una patch elencata come esp_iot_sdk_v1.4.1_15_10_22. Questa non è una patch; Questa è una versione corretta della versione firmware 1.4.0. Abbiamo bisogno di lui e file bin AT_v0.50. Fare clic su ciascuno di essi a turno e scaricare i file.

Naturalmente, quando leggerai questo, potrebbero essercene di più ultime versioni Gli SDK e le relative posizioni sono soggetti a modifiche, ma in base almeno, sai dove cercare. Assicurati solo di leggere attentamente per assicurarti di scaricare la versione più recente. Come abbiamo visto in precedenza, questo non è sempre ovvio.

Potresti aver notato che è presente una sezione per il download dei documenti. Tutti contengono informazioni di alta qualità, ma a volte una parte significativa di esse va persa nella traduzione dal cinese all'inglese. Per ora, non dimenticare di procurarti ultime versioni Set di istruzioni AT ESP8266 e manuale utente Espressif IOT SDK.

Installazione del firmware

Esegui lo strumento di download flash ESP e assicurati che nessuna delle caselle di controllo a sinistra angolo superiore La finestra della GUI non è selezionata. Inserisci la porta COM che stai utilizzando e la velocità di trasmissione di 115200 nei campi di input nella parte inferiore della finestra. Tieni presente che quando inserisci i dati, questi vengono registrati nella finestra di registro.

Accendi il tuo kit di programmazione ESP e collegalo al tuo computer. Tieni premuto il pulsante Ripristina, quindi tienilo premuto Pulsante flash. Rilascia il pulsante Reset, quindi rilascia il pulsante Flash. Fare clic sul pulsante INIZIO Finestra della GUI dello strumento ESP Flash. Il programma di avvio flash dovrebbe controllare l'ESP8266 nella tua build e generare un rapporto simile a quello seguente. Premi e rilascia il pulsante Reset sulla breadboard per uscire dalla modalità firmware ESP8266 e riprendere il normale funzionamento.


Si noti che la finestra della GUI ora contiene informazioni sull'ESP8266, inclusa la dimensione della memoria flash (8 Mbit nell'esempio), frequenza dell'orologio(nell'esempio 26 MHz) e due indirizzi MAC per il chip. Le stesse informazioni sono contenute nella finestra di registro.

Quindi fare clic sulla casella di controllo nella finestra della GUI che dice " SpiAutoSet", che farà sì che lo strumento di avvio selezioni automaticamente la dimensione flash e la velocità di clock corrette.

Ora dobbiamo selezionare i file da installare nell'ESP8266 e impostare l'indirizzo di memoria iniziale per ciascun file. Per aggiornare il chip ESP, quattro file devono essere installati correttamente. Apri la Guida per l'utente di Espressif IOT SDK e cerca la sezione sulla scrittura delle immagini nella memoria flash. Nella versione 1.4 della guida, inizia a pagina 20. Quindi trova la sottosezione che descrive la versione supportata da Cloud Update (FOTA) e in quella sottosezione, trova una tabella sulla dimensione della memoria flash nel tuo ESP8266. In questo esempio, la dimensione della memoria flash è di 8 Mbit, ovvero 1024 kilobyte, quindi la Tabella 2 a pagina 25 del manuale contiene le informazioni necessarie per l'esempio. Diamo un'occhiata all'immagine qui sotto.


Sono necessari questi quattro file: esp_init_data_default.bin, blank.bin, boot.bin e user1.bin. L'indirizzo in cui deve essere installato ciascun file viene visualizzato accanto al nome del file. I primi tre file richiesti si trovano nella directory esp_iot_sdk_v1.4.1_15_10_22, precedentemente scaricata da bbs.espressif.com, e il quarto si trova nei file bin AT_v0.50. Individua la posizione in cui si trovano i file scaricati e copia i relativi percorsi nei campi di input nella parte superiore della finestra Programmi GUI Strumento di download Flash; Inserisci l'indirizzo corretto per ciascun file nel campo accanto al nome del file. Segui questi passaggi per ciascun file:

  • fare clic all'interno del campo di input "imposta percorso firmware";
  • fare clic sul pulsante... a destra del campo di immissione;
  • vai alla posizione in cui è archiviato il file e fai clic sul file. La GUI inserirà automaticamente il percorso del file nel campo di input;
  • inserire l'indirizzo corretto (dalla tabella) per ciascun file.

Tieni presente che i file da scaricare potrebbero non essere gli stessi elencati nella tabella di questo esempio, ma saranno vicini ad essi.

Ora fai clic sulle quattro caselle di controllo a sinistra di ciascun nome di file. La finestra GUI dello strumento di download Flash dovrebbe essere simile alla figura seguente. Ricontrolla gli indirizzi confrontandoli con la tabella.

Sul layout del firmware ESP, tieni premuto il pulsante Reset, quindi tieni premuto il pulsante Flash. Rilascia il pulsante Reset, quindi rilascia il pulsante Flash. Fare clic sul pulsante INIZIO Finestra della GUI dello strumento ESP Flash. Il download dovrebbe iniziare e il suo avanzamento dovrebbe essere mostrato nella finestra della GUI e nella finestra di registro dello strumento di download Flash come mostrato di seguito.


Come mostrato sopra, un'operazione flash firmware riuscita comporterà l'invio di tutti i file all'ESP8266 e la chiusura della porta COM.

Verifica del successo del firmware

Una volta completata l'operazione di flashing, chiudere lo strumento di download Flash. Togliere l'alimentazione dal layout di programmazione ESP, quindi ricollegare l'alimentazione.

Avvia nuovamente PuTTY, seleziona la sessione ESP8266 salvata e fai clic Carico. Questo dovrebbe posizionare il tuo precedentemente selezionato Impostazioni COM porta e velocità di trasferimento nelle apposite finestre. Clic Aprire e si aprirà una nuova finestra della sessione del terminale PuTTY.

Attiva Caps Lock sul tuo computer e digita AT, ma non premere Invio. Dovresti vedere AT nella finestra del terminale PuTTY. Inserisci il simbolo + seguito da GMR. Quando vedi AT+GMR nella finestra del terminale PuTTY, tieni premuto il tasto Ctrl e premi prima il tasto M e poi il tasto J. Rilascia il tasto Ctrl. Nella finestra del terminale PuTTY, dovresti vedere informazioni sul firmware ESP8266 simili a quelle mostrate di seguito.


Come puoi vedere, l'ESP8266 ha ovviamente un nuovo firmware installato. È stato aggiornato dalla versione SDK 1.1.1 alla versione SDK 1.4.0. Inoltre è stata installata anche la corrispondente versione 0.50.0.0 del set di comandi AT.

Chiudere la finestra della sessione del terminale PuTTY e fare clic su OK quando PuTTY ti chiede se sei sicuro.

E infine

Un paio di allenamenti e l'intero processo di aggiornamento del firmware richiederanno molto meno tempo di quello necessario per leggere questo articolo. Una volta fatto ciò, avrai fiducia in ciò che c'è all'interno del tuo ESP8266 e potrai concentrarti sul tuo progetto Wi-Fi invece di indovinare il firmware ESP e sperare nel supporto insieme richiesto Comandi AT.

... In generale, questo materiale non si limita a un solo argomento Arduino.

L'argomento ESP8266 è piuttosto difficile. Ma se lavori con questi Moduli Wi-Fi nell'ambiente di sviluppo IDE Arduino, la soglia di ingresso scende a un livello accettabile per l'utente medio di Arduino. E non solo il ragazzo di Arduino, ma chiunque abbia il desiderio di inventare qualcosa sull'argomento, e senza spendere molto tempo a leggere la documentazione del chip e studiare l'API per questi moduli.

Questo video duplica completamente il materiale presentato nell'articolo seguente.

Bene, sappiamo già come collegare l'ESP8266 e metterlo in modalità di programmazione, ora passiamo a qualcosa di più utile.

Dico subito che una volta programmato il modulo nell'ambiente di sviluppo Arduino, distruggiamo il firmware nativo e non saremo più in grado di lavorare con il modulo utilizzando i comandi AT. Personalmente, questo non mi rende freddo/caldo, ma se qualcuno ne ha bisogno, verso la fine dell'articolo ti mostrerò come ripristinare il firmware nativo nel modulo o una sorta di bootloader come NodeMcu.

Per cominciare, scarica l'ultima versione dell'IDE Arduino dal sito ufficiale, su questo momento questo è 1.6.7. Versioni precedenti come 1.0.5. non si adatteranno perché semplicemente non hanno funzionalità richiesta, ma ballare con il tamburello non ci interessa, vero?

Lanciamo l'ambiente di sviluppo e andiamo subito su File/Impostazioni:

Http://arduino.esp8266.com/stable/package_esp8266com_index.json

Quindi vai su Strumenti/Scheda:/Gestione scheda...:

Davanti a noi apparirà una finestra di gestione della scheda, scorrila fino in fondo e, se tutto è stato eseguito correttamente, vedremo qualcosa del genere:

Fare clic con il cursore sulla scritta " esp8266 di Comunità ESP8266"dopodiché abbiamo il pulsante "Installa", seleziona la versione richiesta, prendo l'ultima, ad oggi è la 2.1.0. e installarlo. L'ambiente di sviluppo scaricherà i file necessari (circa 150 megabyte) e di fronte alla scritta " esp8266 di Comunità ESP8266 Apparirà ""INSTALLED", cioè installato:

Scorriamo l'elenco delle schede e vediamo che abbiamo molti ESP diversi nell'elenco, prendiamo "Modulo ESP8266 generico":

Vai su “Strumenti” e seleziona la porta COM desiderata (per me è COM32), quindi imposta Velocità di caricamento: “115200”:

Impostiamo la velocità su 74880 e "NL & CR", quindi spegniamo e applichiamo nuovamente l'alimentazione e risponderà con alcune informazioni di debug:

Tieni presente che 74880 non è la velocità principale dell'ESP8266, gli invia semplicemente informazioni di debug. Se il modulo non invia nulla alla console, qualcosa potrebbe essere collegato in modo errato.

Per impostazione predefinita, la velocità dovrebbe essere 115200, ma in alcuni casi può essere 9600 e altri... Quindi prova a trovarla.

Dopo aver selezionato la velocità richiesta, inviamo il modulo “AT” e dovrebbe rispondere che è tutto “OK”. Il comando "AT+GMR" visualizza le informazioni sul firmware.

Prima di iniziare a eseguire il flashing dell'ESP8266 nell'IDE di Arduino, ti consiglio di leggere l'articolo fino alla fine.

Ora proviamo a eseguire il flashing dell'ESP8266 tramite l'IDE Arduino. Mettiamo il modulo in modalità di programmazione (ho scritto come farlo).

Aggiungiamo un LED standard al lampeggiatore:

// Di Mr. PodelkinTs youtube.com/RazniePodelki // speciale per il sito/post/271754/ #define TXD 1 // GPIO1/TXD01 void setup() ( pinMode(TXD, OUTPUT); ) void loop() ( digitalWrite( TXD, ALTO); ritardo(1000); digitalWrite(TXD, BASSO); ritardo(1000); )

Lampeggiato? Quindi tutto è stato fatto correttamente. Dove ho preso che il LED è collegato al primo pin? Nell'articolo precedente c'è un'immagine con la piedinatura dei diversi moduli e c'è una marcatura delle porte quando si utilizza il bootloader Arduino (i pin sono contrassegnati in rosa).

Ovviamente far lampeggiare un LED è positivo, ma dobbiamo installare una sorta di server web o iniziare a controllare il LED almeno utilizzando i pulsanti nel browser, giusto? Ma di questo ti parlerò un’altra volta.

E adesso come eseguire il flashback del firmware nativo e come eseguire il flashing di un modulo in generale caricatori di terze parti. Per ESP8266 esiste un programma come NodeMCU Flasher, originariamente destinato al flashing del boot loader NodeMCU. Ma come si è scoperto, lampeggia perfettamente con altri firmware.

Allegherò un archivio con questo programma e firmware all'articolo per comodità, ma puoi sempre scaricare una nuova versione di NodeMCU Flasher.

Nella cartella “nodemcu-flasher-master” ci sono 2 cartelle Win64 e Win32 e, a seconda della profondità di bit del tuo sistema operativo, seleziona quella che ti serve. Successivamente, nella cartella Release, esegui "ESP8266Flasher.exe" e visualizza l'interfaccia del programma:

Seleziona la porta COM desiderata e vai alla scheda “Config”, rimuovi la croce accanto a “INTERNAL://NODEMCU” e posizionala un punto più in basso, come nello screenshot:

(Se vuoi flashare il bootloader di NodeMCU, rimuovi la croce dove non c'era, e mettila dov'era, cioè vicino a “INTERNAL://NODEMCU”).

Quindi facciamo clic sull'ingranaggio e selezioniamo dove si trova il nostro firmware, solitamente il firmware è in formato *.bin (nell'archivio allegato è "v0.9.5.2 AT Firmware.bin" che si trova nella cartella principale), e selezionare anche "0x00000" come e superiore.

Torniamo nuovamente alla scheda “Operazione”, mettiamo il modulo in modalità di programmazione e facciamo clic su “Flash”:

Questo è tutto, il modulo ha iniziato ad essere flashato, dopo il flashing, non dimenticare di riavviare il modulo e voilà, è stato flashato con il firmware di cui abbiamo bisogno.

Controlliamo con il comando AT “AT+GMR” se abbiamo fatto tutto correttamente:

Come puoi vedere, tutto è andato liscio.

Come testare ESP8266

Per testare l'ESP8266 appena acquistato, avrai bisogno.

Attenzione!L'intervallo di tensione di alimentazione consentito per il modulo ESP8266 è compreso tra 3,0 e 3,6 volt. Inning alta tensione si garantisce che l'alimentazione del modulo provochi il guasto dell'ESP8266.

Per testare l'ESP8266 ESP-01, basta collegare tre pin: VCC e CH_PD (abilitazione chip) a un alimentatore da 3,3 volt e GND a terra. Se non si dispone di ESP-01, ma su di esso viene emesso un altro modulo e GPIO15, sarà inoltre necessario collegare GPIO15 a terra.

Se il firmware di fabbrica viene avviato con successo sul modulo ESP8266, il LED rosso si accenderà (l'indicatore di alimentazione, su alcune versioni del modulo, ad esempio ESP-12, potrebbe essere assente) e il LED blu lampeggerà un paio di volte (questo è un indicatore del trasferimento dati dal modulo al terminale tramite la linea TX-RX, potrebbe avere un colore diverso) e nel tuo rete senza fili dovrebbe apparire un nuovo punto di accesso con il nome "ESP_XXXX", che puoi vedere da qualsiasi Dispositivi Wi-Fi. Il nome del punto di accesso dipende dal produttore del firmware e potrebbe essere diverso, ad esempio AI-THINKER_AXXXXC. Se viene visualizzato il punto di accesso, puoi continuare ulteriormente gli esperimenti, in caso contrario, controlla nuovamente l'alimentazione, CH_PD, GND e se tutto è collegato correttamente, molto probabilmente hai un modulo difettoso, ma c'è speranza che il il firmware nel modulo ha impostazioni non standard e forse lampeggiarlo ti aiuterà.

Come connettere rapidamente ESP8266

IN insieme minimo per collegare e lampeggiare il modulo ESP8266 include:

Attenzione! Nella figura a destra, colleghi UTXD (TX) e URXD (RX) del modulo ESP8266 alla logica TTL a cinque volt a tuo rischio e pericolo! La documentazione per il SoC ESP8266 afferma che il modulo tollera solo la logica a 3,3 V. Nella maggior parte dei casi, collegare un ESP8266 a una logica a cinque volt NON danneggerà l'ESP8266, ma il tuo modulo potrebbe essere sfortunato. Per eliminare il rischio di guasto del modulo ESP8266, si consiglia di utilizzare un convertitore USB-TTL da 3,3 volt o convertitori TTL 5v-3,3v o un divisore di resistenza (non mostrato in figura). Maggiori dettagli sull'approvazione livelli logici Puoi leggere. I fanatici del rischio come me collegano direttamente l'ESP8266 alla logica TTL a cinque volt e non si preoccupano.

Attenzione! La figura a destra mostra il collegamento dello stabilizzatore di potenza 1117 senza cablaggio aggiuntivo. Funziona, ma ti consigliamo comunque di utilizzare uno schema di collegamento con trim del condensatore: controlla lo schema di collegamento con la scheda tecnica del tuo stabilizzatore o utilizza un modulo già pronto basato su 1117.

ESP8266 - connessione

Rosso - Alimentazione 3,3 V

Nero - GND

Giallo - sul lato ESP8266 - RX, sul lato USB-TTL - TX

Verde - lato ESP8266 - TX, lato USB-TTL - RX

Arancione - CH_PD (CHIP ENABLE) - deve essere sempre collegato all'alimentazione

Blu - GPIO0 - collegato tramite un interruttore a terra per abilitare la modalità lampeggiante del modulo. Per un avvio normale del modulo, GPIO0 può essere lasciato non collegato da nessuna parte.

Rosa sul diagramma a destra: alimentazione non stabilizzata 5-8 volt

4. Per avviare il modulo, interrompere il circuito GPIO0 - GND e poter alimentare (e esattamente in questo ordine: prima ci assicuriamo che GPIO0 sia "sospeso in aria", quindi forniamo alimentazione a VCC e CH_PD)

Attenzione! Negli esempi sopra riportati, effettivamente funzionanti, di collegamento dell'ESP8266, viene utilizzato il collegamento dei pin dell'ESP8266 "direttamente" a terra e all'alimentazione, o "sospesi in aria", poiché non abbiamo RESET collegato da nessuna parte, il che è assolutamente errato ed è adatto solo per i primi due esperimenti, anche se funziona abbastanza bene sulla stragrande maggioranza dei moduli. Solo il pin VCC è collegato “direttamente” all'alimentatore; i restanti pin: CH_PD, RESET, GPIO0, GPIO2 devono essere tirati su (pullup) all'alimentatore (VCC) tramite una resistenza da 4,7 a 50 kOhm. "Direttamente", colleghiamo solo GND al negativo (filo comune) dell'alimentatore e inseriamo GPIO0 (pulldown) anche attraverso un resistore fino a 10k a GND per mettere il modulo in modalità download firmware. Se intendi continuare a sperimentare con l'ESP8266, fallo come per qualsiasi altro microcontrollore. Descrizione dettagliata pullup e pulldown vanno oltre lo scopo di questo articolo, ma puoi facilmente cercare su Google una descrizione della corretta connessione delle porte I/O. La connessione " " ti consentirà di evitare molti "miracoli" e problemi e sarà inevitabilmente necessaria se riscontri difficoltà nell'avvio o nel flashing del modulo ESP8266.

Come collegare correttamente ESP8266

Se prevedi di utilizzare l'ESP8266 per più di una sera, avrai bisogno di un'opzione di connessione che offra maggiore stabilità. Di seguito sono riportati due schemi di collegamento: con supporto per il caricamento automatico del firmware da e senza di esso.

Schema di collegamento per ESP8266 (senza caricare automaticamente il firmware, lo flashiamo installando prima il jumper BURN e riavviando il modulo)

Schema di collegamento con supporto per il caricamento automatico del firmware da Arduino IDE, UDK, Sming. Potrebbe essere necessario che Flash Download Tool e XTCOM_UTIL debbano disabilitare RTS/DTR. Se per te è scomodo disabilitare RTS e DTR, puoi aggiungere ponticelli al circuito

Questi diagrammi non mostrano la connessione di ADC e GPIO liberi: la loro connessione dipenderà da ciò che desideri implementare, ma se desideri stabilità, non dimenticare di collegare tutti i GPIO all'alimentazione (pullup) e l'ADC a terra (pulldown) ) tramite resistenze di pull-up .

I resistori da 10k possono essere sostituiti con altri da 4,7k a 50k, ad eccezione del GPIO15 - il suo valore deve essere fino a 10k. Il valore del condensatore, che attenua le pulsazioni ad alta frequenza, può essere diverso.

Sarà necessario collegare RESET e GPIO16 tramite un resistore di sonno profondo da 470 Ohm se si utilizza la modalità di sonno profondo: per uscire dalla modalità di sonno profondo, il modulo si riavvia applicando un livello basso al GPIO16. Senza questa connessione, il sonno profondo sarà eterno per il tuo modulo.

A prima vista questi diagrammi sembrano suggerire che GPIO0, GPIO2, GPIO15, GPIO1 (TX), GPIO3 (RX) sono occupati e non puoi utilizzarli per i tuoi scopi, ma non è così. Un livello alto su GPIO0 e GPIO2, un livello basso su GPIO15 sono necessari solo per avviare il modulo, successivamente potrai utilizzarli a tua discrezione, ricordati solo di assicurarti dei livelli richiesti prima di riavviare il modulo.

Puoi usare TX, RX rispettivamente come GPIO1 e GPIO3, senza dimenticare che all'avvio del modulo, qualsiasi firmware estrarrà TX, inviando informazioni di debug a UART0 a una velocità di 74480, ma dopo il caricamento riuscito puoi usarli non solo come UART0 per scambiare dati con un altro dispositivo, ma anche come normali GPIO.

Per i moduli con un numero inferiore di pin cablati, come ESP-01, non è necessario collegare i pin annullati, ad es. sull'ESP-01 sono cablati solo VCC, GND, GPIO0, GPIO2, CH_PD e RESET: basta stringerli. Non è necessario saldare direttamente al chip ESP8266EX e attrarre pin non indirizzati, solo se necessario.

Questi schemi di collegamento sono nati dopo molti esperimenti condotti dai membri del nostro forum e raccolti poco a poco da documentazione sparsa e inizialmente inaccessibile dalla nostra comunità, ho solo cercato di unire queste conoscenze in un unico posto. Troverai molti suggerimenti per la connessione. Lì puoi porre domande che ti interessano o trovare. Se vedi un errore, un'imprecisione in questo articolo o hai qualcosa da aggiungere, allora .

Attenzione! Anche questi schemi non possono essere definiti “ideali”. Non c'è limite alla perfezione: conviene collegare una seconda USB-TTL a UART1 (con ESP8266 puoi prendere solo GND e UTXD1, cioè GPIO2) per collegare un terminale di debug (ti servirà un secondo convertitore USB-TTL) - quindi puoi eseguire il flashing del modulo ESP8266 tramite UART0 senza disabilitare il terminale di debug su UART1. Sarebbe una buona idea collegare piccoli resistori ai pin di entrambi gli UART, inserire un diodo nella linea RTS, aggiungere un condensatore alla linea di alimentazione per smorzare gli impulsi a bassa frequenza, ecc. È molto comodo, ad esempio, farlo in questa scheda di debug: i LED sono collegati a tutti i GPIO, una fotoresistenza è collegata all'ADC, ma è un peccato che non ci sia il pulsante RESET e c'è solo un ponticello su GPIO0.

Sarebbe corretto dirti che non esiste un ideale e allo stesso tempo schema universale Collegamenti ESP8266. Il fatto è che molto dipende dal firmware che caricherai lì. I diagrammi sopra riportati sono progettati per i principianti che stanno appena iniziando a padroneggiare l'ESP8266 per la sperimentazione. Per i progetti reali, potrebbe essere necessario modificare leggermente il diagramma. Ad esempio, è necessario connettere RTS a GPIO15 e CTS a GPIO13. anche in progetti reali Consiglio di prestare particolare attenzione all'alimentazione.

Collegamento dell'ESP8266 tramite Arduino

Se non hai un convertitore USB-TTL da 3,3 V a portata di mano, ma hai un Arduino con un convertitore USB-TTL integrato, puoi utilizzare questo schema di collegamento

A cosa prestare attenzione:

1. Arduino Reset è collegato a GND (filo blu) in modo che il microcontrollore di Arduino non si avvii, in questa forma utilizziamo Arduino come convertitore USB-TTL trasparente

2. RX e TX non sono collegati trasversalmente, ma direttamente - RX - RX (verde), TX - TX (giallo)

3. Tutto il resto è collegato allo stesso modo degli esempi precedenti

Attenzione! Questo circuito richiede anche la corrispondenza dei livelli TTL di 5 volt sull'Arduino e 3,3 volt sull'ESP8266, ma funziona bene in questo modo.

Attenzione!L'Arduino potrebbe avere uno stabilizzatore di potenza installato che non resiste alla corrente richiesta dall'ESP8266, quindi prima di effettuare la connessione, controlla la scheda tecnica dello stabilizzatore che hai installato. Non collegare altri componenti che consumano energia contemporaneamente all'ESP8266 per il rischio di danneggiare il regolatore di potenza integrato di Arduino.

Con connessione a porta seriale Dovrai fare una piccola magia: a causa della varietà di firmware per l'ESP8266, la connessione può essere effettuata a velocità diverse. La velocità richiesta può essere determinata semplicemente cercando tra tre opzioni: 9600, 57600 e 115200. Come effettuare la ricerca? Collegarsi alla porta seriale virtuale nel programma terminale impostando i seguenti parametri: 9600 8N1, quindi riavviare il modulo scollegando CH_PD (abilitazione chip) dall'alimentazione (USB-TTL rimane collegato a USB) e riaccendendolo (ovvero semplicemente attiva CH_PD , perché non distorciamo l'alimentazione - leggi, puoi anche cortocircuitare RESET a terra per riavviare il modulo) e osservare i dati nel terminale. Innanzitutto, i LED sull'ESP8266 dovrebbero accendersi come descritto all'inizio dell'articolo nella sezione. In secondo luogo, nel terminale dovresti vedere "spazzatura" da personaggi diversi, terminando con la riga "pronto". Se non vediamo "pronto", ci ricolleghiamo al terminale a una velocità diversa e riavviamo nuovamente il modulo.

In una delle opzioni di velocità "pronto", vedrai ancora: congratulazioni, il tuo modulo è pronto per l'uso. In caso contrario, benvenuto: cercheremo di aiutarti, ma leggi prima.

Qualcosa in più sulla “spazzatura”. Il fatto è che all'avvio del firmware, l'UART del modulo ESP8266 passa a una velocità di trasmissione di 74.880 (quelli cinesi sono così divertenti), invia informazioni di debug all'UART, quindi cambia la velocità della porta a 115200 (o 9600 o 57600, a seconda della versione del firmware), quindi queste informazioni di debug ci appaiono come spazzatura, perché ci colleghiamo al modulo a una velocità diversa. Puoi connetterti all'ESP8266 a una velocità di 74.880 (supporta questa velocità) e vedrai queste informazioni di debug, saranno qualcosa del genere:

wdt reset carico 0x40100000, len 25052, stanza 16 coda 12 chksum 0x0b ho 0 coda 12 stanza 4 carico 0x3ffe8000, len 3312, stanza 12 coda 4 chksum 0x53 carico 0x3ffe8cf0, len 6576, stanza 4 coda 12 chksum 0x0d somma 0x0d

wdt resettato

carico 0x40100000 , lente 25052 , stanza 16

caricare 0x3ffe8cf0, lente 6576, stanza 4

coda 12

somma di controllo 0x0d

somma 0x0d

MA! non vedrai "pronto" e non sarai in grado di controllare il modulo finché non ti ricollegherai alla velocità con cui è in esecuzione il firmware.

Cosa fare dopo

Se hai nuovo modulo, allora molto probabilmente ha uno dei vecchi firmware AT personalizzati flashati al suo interno. Molto probabilmente si tratta di una sorta di AI-THINKER AT v0.16 SDK v0.9.2. Puoi verificare la versione del firmware utilizzando il comando "AT+GMR", ad es. direttamente nel programma terminale, digitare AT+GMR senza virgolette e premere Invio. Il modulo dovrebbe rispondere "OK" e visualizzare la versione del firmware (ad esempio, "0016000092" - in versioni diverse Il formato di output della versione del firmware AT è diverso). Il controllo del modulo ESP8266 con i comandi AT merita un articolo a parte, ma puoi capirlo facilmente da solo utilizzando uno dei nostri libri di riferimento sui comandi AT:

Al momento della stesura di questo articolo)

2. Scarica una delle utilità per eseguire il flashing di ESP8266 a seconda del tuo sistema operativo dalla sezione del nostro sito web

Così eccezionale che oltre al firmware per utilizzare l'ESP8266 come modulo WiFi controllato da un microcontrollore esterno, ci sono molti firmware per utilizzarlo come microcontrollore per scopi diversi, anche nel campo dell'Internet delle cose. In questa serie di articoli esploreremo le possibilità ESP8266 con firmware NodoMCU e imparare un linguaggio di scripting LUA.

Cos'è ESP8266?

ESP8266 è un microcontrollore con Interfaccia Wi-Fi ohm Può essere utilizzato come modulo WiFi e come microcontrollore.

Pro di ESP8266: interfaccia WiFi, core a 32 bit con prestazioni sufficienti, prezzo basso.
Contro: rispetto ad altri microcontrollori a 32 bit, le periferiche sono deludenti.

ESP8266 è ideale per progetti domestici, Internet of Things. L'ESP8266 è programmato tramite la porta seriale UART, quindi non è necessario alcun programmatore speciale per eseguire il flashing del firmware. La particolarità di questo microcontrollore è che può eseguire un programma situato su una memoria Flash esterna. Ciò consente al produttore di "aumentare" il volume di Flash, il che è anche un vantaggio.

Sono disponibili vari moduli basati su ESP8266:

ESP-01
ESP-02
ESP-03
ESP-04
ESP-05
ESP-06
ESP-07
ESP-08
ESP-09
ESP-10
ESP-11
ESP-12S
ESP-12E
ESP-12F

Esistono varie versioni di schede con moduli ESP8266 già saldati, stabilizzatori di tensione, un microcircuito per garantire il funzionamento della porta seriale UART tramite USB e pin, pulsanti, ecc., instradati al pettine. Per lavorare con tali schede, basta collegarle a porta USB computer. Non è necessaria alcuna attrezzatura aggiuntiva. È molto comodo Una di queste schede è NodeMCU. Negli esempi utilizzerò una scheda NodeMCU con un modulo ESP-12F. Ma puoi facilmente prendere un modulo, ad esempio ESP-01, collegarvi un adattatore UART-USB e lavorarci allo stesso modo. ESP-01 avrà meno memoria e meno pin che possono essere utilizzati, ma per il resto il lavoro è simile.


Cos'è NodeMCU?

NodeMCU è un progetto aperto e gratuito basato sul linguaggio di scripting Lua. Il firmware è abbastanza potente e consente di implementare molto rapidamente vari progetti standard. Ad esempio, oggi, come introduzione, creeremo una presa WiFi controllata da cellulare e con un'interfaccia Web. Il firmware può eseguire script Lua sia dalla porta seriale UART (simile ai comandi AT) che dalla memoria flash interna (esecuzione di script). Gli script Lua vengono salvati in Flash sul file system interno. Il file system è piatto e semplificato. Quelli. nessuna sottodirectory. Comunque è bello. Non dimenticare che ESP8266 è solo un microcontrollore. Dagli script è inoltre possibile accedere ai file, leggere e salvare varie informazioni. NodeMCU è modulare. Che, da un lato, consente di aumentare le funzionalità e, dall'altro, di assemblare il firmware solo dai moduli richiesti, senza sprecare memoria.

NodeMCU funziona con protocolli di scambio dati: HTTP, MQTT, JSON, CoAP.
Supportato vari sensori
accelerometri ADXL345,
magnetometri HMC5883L,
Giroscopi L3G4200D,
sensori di temperatura e umidità AM2320, DHT11, DHT21, DHT22, DHT33, DHT44
sensori di temperatura, umidità, pressione atmosferica BME280,
sensori di temperatura, pressione atmosferica BMP085,
molti display che operano su bus I2C, SPI. Con la possibilità di lavorare con diversi caratteri.
Display TFT ILI9163, ILI9341, PCF8833, SEPS225, SSD1331, SSD1351, ST7735,
LED intelligenti e controller LED – WS2812, tm1829, WS2801, WS2812,
interfacce supportate: 1-Wire, I2C, SPI, UART,

È inoltre possibile utilizzare un modulo di crittografia, un pianificatore di attività, un orologio in tempo reale, un protocollo di sincronizzazione dell'orologio tramite Internet SNTP, timer, un canale ADC (uno), riprodurre file audio, generare un segnale PWM sulle uscite (fino a 6), usa i socket, c'è il supporto per FatFS, cioè puoi collegare schede SD e così via.

Cos'è la lingua Lua?

Lua è un linguaggio interpretato che, come la maggior parte dei linguaggi interpretati moderni, può memorizzare versioni compilate di script. Ciò consente di aumentare la velocità del lavoro. Lua è posizionata come multi-paradigma. Non è complicato e se hai già programmato in qualsiasi lingua, imparerai Lua molto velocemente. Se hai appena iniziato a programmare, Lua ti sorprenderà con la sua accessibilità per i principianti.

Ci sono alcune peculiarità quando si lavora con Lua su NodeMCU. Ciò è dovuto principalmente alla capacità di memoria limitata del microcontrollore ESP8266. È necessario restare attaccati regole semplici e mantenere lo stile di lavoro con Lua. Ti parlerò di queste regole un po' più tardi. Se mantieni lo stesso stile di quando scrivi programmi in C, non sarai in grado di sentire tutta la potenza di Lua e del firmware NodeMCU. Quando inizi a scrivere in Lua, diventa accattivante e inizi a implementare compiti sempre più grandi. Perdi la sensazione di lavorare con un microcontrollore e ti carichi involontariamente di compiti che vanno oltre le capacità di un microcontrollore. Va ricordato che l'ESP8266 ha risorse limitate e non deve essere caricato con attività che possono essere eseguite da microcomputer o computer a tutti gli effetti.

Documentazione LUA in russo: http://www.lua.ru/doc/
Impara LUA in 15 minuti: http://tylerneylon.com/a/learn-lua/

Dove posso scaricare NodeMCU?

Naturalmente, puoi scaricare i codici sorgente di NodeMCU (https://github.com/nodemcu/nodemcu-firmware/releases/) e compilarli con i parametri necessari. Ma non lo faremo. C'è un sito web https://nodemcu-build.com, su cui puoi assemblare NodeMCU con i moduli di cui hai bisogno. Contrassegna semplicemente i moduli di cui hai bisogno, indica la tua e-mail e fai clic sul pulsante “qui sotto Inizia la tua costruzione“. Per prima cosa e-mail specificata Ricevo una lettera che informa che l'assemblea è iniziata. E poi una notifica di completamento e collegamenti per il download numero intero E galleggiante versioni. Se non utilizzerai i calcoli in virgola mobile nel tuo progetto, scarica “ numero intero“. Non essere avido e includi moduli che non intendi utilizzare. Puoi compilare un nuovo firmware in qualsiasi momento aggiungendo il modulo mancante. Ad esempio, ho creato NodeMCU con i seguenti moduli:

Come caricare NodeMCU su ESP8266?

Ora che abbiamo il file del firmware NodeMCU, dobbiamo caricarlo sull'ESP8266. Prima di tutto, quando colleghi la scheda NodeMCU al tuo computer, un file virtuale com porta. In genere le ultime versioni Installazione di Windows nessun driver richiesto. Ubuntu riconoscerà immediatamente il dispositivo connesso.

Firmware NodeMCU per Windows

git clone https://github.com/themadinventor/esptool.git

Flash con il comando:

Sudo python esptool.py --port /dev/ttyUSB0 write_flash 0x00000 The_Path_To_The_NodeMCU_Firmware.bin

/Dev/ttyUSB0– la porta su cui si blocca l'ESP8266.
Il_Percorso_del_NodoMCU_Firmware.bin– percorso del file del firmware.

A proposito, esptool può essere utilizzato anche sotto Windows. esptool scritto in Python, per funzionare su Windows è necessario installare Python.

esptool a noi utile per il riempimento file binari SU file system NodoMCU. Puoi caricare qualsiasi file, inclusi gli script. Puoi scrivere script anche nel Blocco note, ma preferisco ESPlorer.

ESPlorer, init.lua – scrivendo il primo script

Per scrivere e caricare script utilizzeremo il programma ESPlorer. Questo è un programma multipiattaforma scritto in Giava e inoltre non richiede installazione. Funziona allo stesso modo sia su Windows che su Ubuntu.

Decomprimere l'archivio.

Sotto Windows eseguiamo il file ESPlorer.bat

Sudo java-jar ESPlorer.jar

Specificare la porta e la velocità 9600 :

E premi “ Aprire“. Vedremo dopo

ESPlorer ha una caratteristica scadente. Non sempre si connette chiaramente al NodeMCU. Se provi a inviare qualsiasi comando (usando il file Inviare) la spazzatura vola nella console invece di una risposta normale. A volte dopo alcune ripetizioni tutto migliora. Se questo ti dà fastidio, prova a modificare la velocità di connessione su 115200.


Iniziamo a creare il primo script in Lua. Scritta con nome init.lua si avvia automaticamente dopo l'avvio di NodeMCU. Creiamo un file init.lua.

Stampiamo solo una riga:

Print("Sì, funziona!")

Salva il file con nome init.lua. Dopo il salvataggio, il file verrà eseguito e dovremmo vedere il primo script in esecuzione.

Per impostazione predefinita, il file viene salvato sul disco del computer e caricato sull'ESP8266.

Ora parliamo del problema più grande di NodeMCU. In caso di errori critici (questo non accade molto spesso, ma se accade, viene ricordato a lungo) NodeMCU potrebbe riavviarsi. E la cosa peggiore che può succedere è un riavvio ciclico. Ciò accade se si commette un errore critico in uno script che si avvia automaticamente. NodeMCU si avvia, esegue uno script "buggy", rileva un errore critico e si riavvia. E così via all'infinito.

Per proteggermi durante l'apprendimento di NodeMCU, utilizzo la tecnica descritta di seguito. Nello script di avvio init.lua avviamo un timer che funzionerà una sola volta e dopo un tempo specificato (in questo caso 5 secondi) eseguirà la procedura per lanciare un altro script (in questo caso main.lua). Nient'altro nella sceneggiatura init.lua noi no. Tutte le operazioni vengono eseguite nello script main.lua. Quindi, se commettiamo un errore nella sceneggiatura main.lua e NodeMCU andrà a riavvio ciclico, dopo il riavvio avremo 5 secondi per rimuovere o correggere lo script “buggy”.

testo init.lua:

Print ("In attesa...") tmr.register (0, 5000, tmr.ALARM_SINGLE, funzione (t) tmr.unregister (0); print ("Avvio..."); dofile ("main.lua") fine) tmr.inizio (0)

Inoltre, questo approccio semplifica l'inclusione di qualsiasi file sceneggiatura richiesta, abbastanza nel file init.lua invece di main.lua specificare il nome di un altro script. Ciò è molto comodo quando si testano più progetti o più versioni di uno script su una scheda.

Connettiti al Wi-Fi o crea il tuo punto di accesso Wifi

Per connetterti al WiFi, crea main.lua e scrivi:

Configurazione WiFi wifi.setmode(wifi.STATION) local cfg=() cfg.ssid="MyWiFi" cfg.pwd="MyWiFiPassword" wifi.sta.config(cfg) cfg = nil collectorgarbage()

Dopo aver stabilito con successo la connessione, il modulo riceverà un indirizzo IP. Puoi scoprirlo usando il comando:

Wifi.sta.getip()

Se vogliamo che l'ESP8266 crei il proprio hotspot WiFi:

Configurazione AP WiFi wifi.setmode(wifi.STATIONAP) cfg=() cfg.ssid="ESPWIFI" cfg.pwd="1234567890" wifi.ap.config(cfg) cfg = nil collectorgarbage()

Nota: Hotspot wifi non funzionerà se la password è inferiore a 8 caratteri. Per impostazione predefinita, l'indirizzo IP del punto è sempre 192.168.4.1

Puoi scoprirlo con il comando:

Wifi.ap.getip()

Che è successo raccogliere la spazzatura()? Funzione raccogliere la spazzaturaè un raccoglitore di rifiuti. Dovrebbe essere chiamato alla fine di ogni script. Si prega di notare la variabile cfg dichiarato come Locale. Sarà disponibile solo nello script corrente. Se Locale rimuovere, quindi la variabile cfg sarebbe globale e disponibile in altri script.

GPIO. LED lampeggiante

Per controllare il relè (dopo tutto, realizzeremo una presa WiFi), dovrai imparare come lavorare con i pin GPIO. Per ora proviamo a usare GPIO pin come uscita e impostare il livello del segnale alto e basso. Per chiarezza colleghiamo il LED come mostrato nello schema.

My_pin_number = 1 -- Imposta la modalità operativa come output gpio.mode (my_pin_number, gpio.OUTPUT) -- Imposta alto livello gpio.write (my_pin_number, gpio.HIGH) -- Imposta il livello basso gpio.write (my_pin_number, gpio.LOW) -- Fa lampeggiare il LED 10 volte gpio.serout (1, gpio.HIGH, (+990000,990000), 10, 1)

Numerazione dei pin:

Indice IOPerno ESP8266
0 GPIO16
1 GPIO5
2 GPIO4
3 GPIO0
4 GPIO2
5 GPIO14
6 GPIO12
7 GPIO13
8 GPIO15
9 GPIO3
10 GPIO1
11 GPIO9
12 GPIO10

D0(GPIO16) può essere utilizzato solo come lettura/scrittura GPIO. Nessun supporto per open-drain/interrupt/pwm/i2c/ow

Scheda NodeMCU

Nota: esistono diverse versioni delle schede Nodemcu. La piedinatura della scheda può variare.

WebSocket

Ora creeremo un server che funzionerà sulla porta specificata (lascia che sia 333). Quindi ci collegheremo al nostro server utilizzando un programma terminale, specificandone l'IP e la porta. E poi scambieremo i dati.

Script Main.lua:

Configurazione AP WiFi wifi.setmode(wifi.STATIONAP) cfg=() cfg.ssid="ESPTEST" cfg.pwd="1234567890" wifi.ap.config(cfg) --Create Server sv=net.createServer(net.TCP ) funzione ricevitore(sck, data) -- Stampa i dati ricevuti print(data) -- Invia risposta sck:send("Recived: "..data) end if sv then sv:listen(333, function(conn) conn:on ("ricevi", destinatario) conn:invia("Ciao!") end) end print("Iniziato.")

Ora il nostro script solleva il punto Wi-Fi, crea un server che attende una connessione sulla porta 333. Al momento della connessione il server invierà al client la stringa “ Ciao!“, e dopo aver ricevuto i dati dal client, restituirà la stringa “ Ricevuto:” e poi tutto ha accettato.

Ora possiamo connettere il nostro telefono cellulare al punto Wi-Fi ESP8266. In linea di principio non è necessario creare un punto. Puoi riscrivere lo script e connettere l'ESP8266 al tuo Reti Wi-Fi. Quindi è necessario scoprire il suo IP e quindi utilizzarlo al posto di 192.168.4.1, che viene ulteriormente utilizzato negli esempi.

Ma abbiamo ancora bisogno di un programma terminale per connetterci all'indirizzo IP ESP8266 (192.168.4.1) e alla porta specificata (333). Puoi installare PuTTY su un normale computer. Per i telefoni cellulari Android che utilizzo JuiceSSH.

Trasferisci dati dal telefono cellulare utilizzando JuiceSSH

Installa e avvia RoboRemoFree

Creare una connessione al server. È consigliabile che il cellulare/tablet sia connesso alla stessa rete WiFi dove si trova il server. In questo caso, il nostro ESP8266. Vai su “Menu”, seleziona “Connetti”

Selezionare il tipo di connessione “Internet (TCP)”

Specificare IP e porta

Selezione dell'interfaccia. Il programma ti consente di creare diverse interfacce con diversi controlli.

Quindi vai alla modalità di modifica dell'interfaccia

Clicca su spazio libero e scegliamo cosa vogliamo installare. Utilizzeremo i pulsanti. Seleziona "pulsante"

Dopodiché verrà installato un pulsante sull'interfaccia. Può essere spostato e ridimensionato.

Per cambiare il nome su un pulsante è necessario cliccarci sopra e selezionare “Imposta testo”

Quindi specificheremo un altro parametro: "imposta azione di stampa". Impostiamolo su "1". Quando fai clic sul pulsante, la stringa specificata verrà inviata tramite la connessione che abbiamo creato. Quelli. Il nostro ESP8266 riceverà il carattere "1" e accenderà il LED.

Creiamo il pulsante "Off" allo stesso modo e impostiamo l'azione di stampa impostata su "0".

La nostra interfaccia è pronta. Uscire dalla modalità di modifica eseguendo la voce di menu "non modificare l'interfaccia utente".

Se la connessione al server (ESP8266) ha avuto esito positivo, è possibile utilizzarla. Premendo il pulsante “On”, il LED dovrebbe accendersi e premendo il pulsante “Off”, il LED dovrebbe spegnersi.

interfaccia web

Esiste un altro modo: puoi creare un'interfaccia Web e controllare il LED tramite un browser.

Stesso script + interfaccia Web:

Configurazione AP WiFi wifi.setmode(wifi.STATIONAP) cfg=() cfg.ssid="ESPTEST" cfg.pwd="1234567890" wifi.ap.config(cfg) --Imposta modalità Pin my_pin_number = 1 gpio.mode(my_pin_number , gpio.OUTPUT) --Create Server sv=net.createServer(net.TCP) funzione ricevitore(sck, data) se string.sub (data, 0, 1) == "1" allora gpio.write(my_pin_number, gpio .HIGH) else if string.sub (data, 0, 1) == "0" then gpio.write(my_pin_number, gpio.LOW) end end print(data) end if sv then sv:listen(333, function(conn ) conn:on("receive",) conn:send("Ciao!") end) end --Crea server HTTP http=net.createServer(net.TCP) funzione receiver_http(sck, data) richiesta locale = stringa. match (data,"([^\r,\n]*)[\r,\n]",1) if request == "GET /on HTTP/1.1" then gpio.write(my_pin_number, gpio.HIGH) end if request == "GET /off HTTP/1.1" then gpio.write(my_pin_number, gpio.LOW) end sck:on("inviato", function(sck) sck:close() end) risposta locale = "HTTP/ 1.0 200 OK\r\nServer: NodeMCU su ESP8266\r\nTipo di contenuto: text/html\r\n\r\n".. " NodeMCU su ESP8266".. "

NodeMCU su ESP8266

".. "
".. "SU Spento".. "" sck:invia(risposta) end if http then http:listen(80, function(conn) conn:on("ricevi", ricevi_http) end) end print("Avviato.")

Una breve spiegazione di come funziona un server web in generale e del nostro script in particolare. La porta standard per un server web è 80, ad es. quando digiti nel browser http://192.168.4.1/, quindi il browser si connette al server (192.168.4.1) sulla porta 80 e invia una richiesta. La richiesta è simile a questa:

GET/HTTP/1.1 Host: 192.168.4.1 Agente utente: Mozilla/5.0 (Windows NT 5.1; rv: 2.0.1) Gecko/20100101 Firefox Accetta: text/html, application/xhtml + xml, application/xml; q = 0,9, */*; q = 0,8 Accetta lingua: ru-RU, ru; q = 0,8, en-USA; q = 0,5,en; q = 0.3 Codifica di accettazione: gzip, deflate Connessione: keep-alive Richieste di aggiornamento non sicure: 1

La prima riga della query ci interessa: “ OTTIENI/HTTP/1.1“. Contiene l'URL. Se digiti nel browser http://192.168.4.1/ SU , la prima riga della query sarà " OTTENERE /SU HTTP/1.1“. E se digiti nel browser http://192.168.4.1/ spento allora sarà” OTTENERE / spento HTTP/1.1“. È questa riga che lo script analizza e, a seconda dell'URL ricevuto, accende o spegne il LED.

Successivamente, lo script invia una pagina html. Ma dopo l'invio è necessario interrompere la connessione. Poiché l'invio richiede del tempo e attendere la fine dell'invio è tecnicamente stupido, l'evento " inviato” (inviato) collega la funzione con la stringa sck:chiudi(). Questo viene fatto nella riga: sck:on(“inviato”, funzione(sck) sck:chiudi() fine). P dopodiché viene effettuato l'invio pagine html sck:invia(risposta). CON la cripta continua a funzionare. Quando la risposta sarà stata completamente inviata, funzionerà sck:chiudi().

Pagine grande taglia In questo modo non potrai inviarlo. I contenuti pesanti devono essere inviati in pezzi. Questo sarà discusso più dettagliatamente in un altro articolo.

Colleghiamo il relè al carico

Attenzione! Una tensione superiore a 40 Volt è pericolosa per la vita umana! Fare attenzione e attenzione durante l'assemblaggio del circuito e il collegamento degli elettrodomestici. Non toccare le parti sotto tensione.

Ora, invece di un LED, colleghiamo un modulo relè e, come carico, diciamo una lampada, un riscaldatore, un compressore per un acquario, un ventilatore, ecc.

Potrebbero esserci alcune sfumature quando si collega un relè. Se il blocco relè è otticamente isolato (con un fotoaccoppiatore), molto probabilmente non dovrai ripetere nulla. Se il blocco relè è senza isolamento ottico, come il mio, dovrai rifare il lavoro con GPIO, poiché in primo luogo il relè è acceso a un livello basso, non alto e, in secondo luogo, il livello alto dell'ESP8266 è 3,3 V. , per un blocco relè da 5 volt questo non è sufficiente, quindi ho dovuto impostare l'uscita su OPENDRAIN, dopodiché tutto ha funzionato come dovrebbe.

La versione finale dello script è simile alla seguente:

Configurazione AP WiFi wifi.setmode(wifi.STATIONAP) cfg=() cfg.ssid="ESPTEST" cfg.pwd="1234567890" wifi.ap.config(cfg) --Imposta modalità Pin my_pin_number = 1 --gpio.mode (my_pin_number, gpio.OUTPUT) gpio.mode(my_pin_number, gpio.OPENDRAIN) --Create Server sv=net.createServer(net.TCP) funzione ricevitore(sck, data) se string.sub (data, 0, 1) = = "1" quindi --gpio.write(my_pin_number, gpio.HIGH) gpio.write(my_pin_number, gpio.LOW) altrimenti se string.sub (data, 0, 1) == "0" quindi --gpio.write (mio_numero_pin, gpio.LOW) gpio.write(mio_numero_pin, gpio.HIGH) end end print(dati) end if sv then sv:listen(333, funzione(conn) conn:on("ricevi", ricevitore) conn:invia ("Ciao!") end) end --Crea server HTTP http=net.createServer(net.TCP) funzione receiver_http(sck, data) print(data) richiesta locale = string.match(data,"([^\r ,\n]*)[\r,\n]",1) se richiesta == "OTTIENI /su HTTP/1.1" allora --gpio.write(my_pin_number, gpio.HIGH) gpio.write(my_pin_number, gpio. LOW) end if request == "GET /off HTTP/1.1" then --gpio.write(my_pin_number, gpio.LOW) gpio.write(my_pin_number, gpio.HIGH) end sck:on("inviato", function(sck ) sck:close() collectorgarbage() end) risposta locale = "HTTP/1.0 200 OK\r\nServer: NodeMCU su ESP8266\r\nTipo di contenuto: text/html\r\n\r\n".. " NodeMCU su ESP8266".. "

NodeMCU su ESP8266

".. "
".. "SU Spento".. "" sck:invia(risposta) end if http then http:listen(80, funzione(conn) conn:on("ricevi", ricevi_http) end) end print("Avviato.")

Ora possiamo accendere e spegnere la “presa” da un telefono cellulare utilizzando il programma RoboRemoFree o utilizzando un browser. Naturalmente puoi anche controllarlo da un normale computer tramite un browser.



Tutto questo va bene, ma cosa succederà dopo? Se abbiamo 5, 10, 20 dispositivi simili? Come combinarli in modo da non dover connettersi a ciascun dispositivo separatamente. Esiste un protocollo MQTT per questo, ma questo sarà un argomento a parte. Nel frattempo, esploreremo le capacità di ESP8266 e NodeMCU.

Alcune regole per lavorare con la lingua Lua su NodeMCU

1. Non scrivere script lunghi. La dimensione della memoria ESP8266 non è infinita. Suddividi il programma in moduli funzionali e rendili come script separati, eseguendoli utilizzando dofile(). Ad esempio, codice di connessione Wi-Fi:

Configurazione WiFi wifi.setmode (wifi.STATION) locale cfg = () cfg.ssid = "MyWiFi" cfg.pwd = "MyWiFiPassword" wifi.sta.config (cfg) cfg = nil collectorgarbage ()

può essere inserito in uno script separato “ wifi.lua” ed eseguilo dallo script principale con il comando dofile("wifi.lua").

2. Dichiarare le variabili utilizzate solo nello script corrente come Locale. Alla fine dello script, quando la variabile non è più necessaria, assegnale un valore zero e chiamare esplicitamente il garbage collector raccogliere la spazzatura()

Molti utenti hanno già rivolto la loro attenzione al chip ESP8266-12, rilasciato da Espressif. Il suo costo è significativamente più economico rispetto a una scheda adattatore Bluetooth standard e, nonostante le sue dimensioni ridotte, ha capacità significativamente maggiori. Ora tutti gli appassionati di casa hanno l'opportunità di lavorare su una rete Wi-Fi in due modalità contemporaneamente, ovvero collegare il proprio computer a qualsiasi punto di accesso o accenderlo come tale.

D'altra parte, è necessario comprendere correttamente che tali schede non sono solo scudi destinati solo alla comunicazione Wi-Fi. Lo stesso ESP8266 è un microcontrollore dotato di proprie interfacce UART, GPIO e SPI, ovvero può essere utilizzato come apparecchiatura completamente autonoma. Dopo il rilascio di questo chip, molti l'hanno definita una vera rivoluzione e nel tempo tali dispositivi inizieranno a essere integrati anche nei dispositivi più tipi semplici tecnologia, ma finora il dispositivo è relativamente nuovo e non esiste firmware stabile no su di lui. Molti esperti in tutto il mondo stanno cercando di inventare proprio firmware Dopotutto, versarli nella scheda in realtà non è difficile, ma nonostante le varie difficoltà, il dispositivo può già essere definito abbastanza adatto al lavoro.

Attualmente vengono prese in considerazione solo due opzioni applicative di questo modulo:

  • Utilizzando la scheda in combinazione con un microcontrollore aggiuntivo o un computer che controllerà il modulo tramite UART.
  • Scrittura indipendente del firmware per il chip, che consente di utilizzarlo successivamente come dispositivo autosufficiente.

È del tutto naturale che dovremmo tenerne conto firmware indipendente in questo caso non lo faremo.

Considerando la facilità d'uso e le buone prestazioni, molte persone preferiscono il modello ESP8266 tra i tanti microcontrollori. Il collegamento e l'aggiornamento del firmware di questo dispositivo sono estremamente semplici ed economici e vengono eseguiti sullo stesso hardware su cui l'apparecchiatura è collegata al computer. Cioè anche tramite un convertitore USB-TTL o, se qualcuno preferisce altre opzioni di connessione, può farlo tramite RPi e Arduino.

Come controllare?

Per verificare la funzionalità di un dispositivo appena acquistato, sarà necessario utilizzare una speciale fonte di tensione stabilizzata da 3,3 volt. Vale la pena notare subito che l'intervallo reale di tensione di alimentazione di questo modulo va da 3 a 3,6 volt e fornire una tensione maggiore porterà immediatamente al fatto che danneggerai semplicemente il tuo ESP8266. Dopo una situazione del genere, il firmware e altri software potrebbero iniziare a funzionare in modo errato e sarà necessario riparare il dispositivo o risolverlo in qualche modo.

Per determinare la funzionalità di questo modello di microcontrollore, è sufficiente collegare tre pin:

  • CH_PD e VCC sono collegati all'alimentazione da 3,3 volt.
  • GND si collega a terra.

Se non stai utilizzando ESP-01, ma qualche altro modulo e inizialmente ha già un'uscita GPIO15, in questo caso dovrai collegarlo ulteriormente a terra.

Se il firmware di fabbrica si è avviato normalmente, in questo caso puoi vedere e quindi la luce blu lampeggerà un paio di volte. Tuttavia, vale la pena notare che non tutti i dispositivi della serie ESP8266 hanno un indicatore di alimentazione rosso. Il firmware di alcuni dispositivi non prevede l'accensione dell'indicatore rosso se il modulo ne è sprovvisto (in particolare questo vale per il modello ESP-12).

Una volta connesso, verrà attivato un nuovo punto di accesso sulla tua rete wireless, che si chiamerà ESP_XXXX, e sarà rilevabile da qualsiasi dispositivo che abbia accesso al Wi-Fi. In questo caso, il nome del punto di accesso dipende direttamente dal produttore del firmware che stai utilizzando e quindi potrebbe essere qualcosa di diverso.

Se il punto appare, puoi continuare a sperimentare, altrimenti dovrai ricontrollare l'alimentazione, nonché la correttezza delle connessioni GND e CH_PD, e se tutto è collegato correttamente, molto probabilmente stai ancora cercando di farlo utilizzare un modulo rotto o su Ha semplicemente un firmware installato con impostazioni non standard.

Come collegarlo rapidamente?

Il kit standard richiesto per collegare questo modulo include quanto segue:

  • il modulo stesso;
  • breadboard senza saldatura;
  • un set completo di cavi madre-padre progettati per breadboard, o un cavo speciale DUPONT M-F;
  • Convertitore USB-TTL basato su PL2303, FTDI o chip simile. La soluzione migliore è che anche RTS e DTR vengano trasmessi all'adattatore USB-TTL, poiché in questo modo si può raggiungere un livello sufficiente caricamento veloce firmware da alcuni UDK, Arduino IDE o Sming, senza nemmeno dover mettere manualmente il GPIO0 a terra.

Se utilizzi un convertitore da 5 volt, in questo caso dovrai acquistare uno stabilizzatore di potenza aggiuntivo basato sul chip 1117 o qualcosa di simile, nonché una fonte di alimentazione (per un 1117 standard, anche un normale 5- volt è abbastanza adatto). Si consiglia di non utilizzare l'IDE Arduino o USB-TTL come fonte di alimentazione per l'ESP8266, ma di utilizzarne uno separato, poiché ciò alla fine può eliminare molti problemi.

Set ampliato per garantire comfort e lavoro permanente con il modulo richiede l'uso di resistori aggiuntivi, LED e DIP switch. Inoltre, puoi anche utilizzare un monitor USB economico, che ti consentirà di monitorare costantemente la quantità di corrente consumata e fornire anche una piccola protezione Bus USB dall'occorrenza

Cosa dobbiamo fare?

Innanzitutto vale la pena notare che nell'ESP8266 i controlli potrebbero essere leggermente diversi a seconda del modello specifico che stai utilizzando. Oggi sono disponibili molti moduli di questo tipo e la prima cosa di cui avrai bisogno è identificare il modello che stai utilizzando e decidere la sua piedinatura. In queste istruzioni parleremo del funzionamento con il modulo ESP8266 ESP-01 V090 e, se utilizzi un altro modello con un pin GPIO15 (HSPICS, MTDO), dovrai tirarlo a terra sia per l'avvio standard di il modulo e utilizzare la modalità firmware.

Successivamente, ricontrollare che la tensione di alimentazione per il modulo collegato sia 3,3 volt. Come accennato in precedenza, l'intervallo consentito va da 3 a 3,6 volt e, se aumenta, il dispositivo si guasta, ma la tensione di alimentazione potrebbe anche essere significativamente inferiore ai 3 volt indicati nei documenti.

Se stai utilizzando un convertitore USB-TTL da 3,3 volt, collega il modulo esattamente come sul lato sinistro dell'immagine qui sotto. Se utilizzi esclusivamente USB-TTL a cinque volt, presta attenzione al lato destro della figura. A molti può sembrare che il circuito giusto sia più efficiente perché utilizza una fonte di alimentazione separata, ma in realtà, nel caso di utilizzo di un convertitore USB-TTL da 5 volt, è altamente auspicabile realizzare anche un divisore resistivo aggiuntivo per garantire la corrispondenza dei livelli logici a tre e cinque volt o utilizzare semplicemente il modulo di conversione del livello.

Funzionalità di connessione

La figura a destra mostra la connessione di UTXD (TX), nonché URXD (RX) di questo modulo alla logica TTL a cinque volt e tali procedure vengono eseguite solo a proprio rischio e pericolo. Per l'ESP8266, la descrizione dice che il modulo funziona efficacemente solo con logica a 3,3 volt. Nella stragrande maggioranza dei casi, anche quando si lavora con la logica a cinque volt, l'apparecchiatura non si guasta, ma tali situazioni si verificano occasionalmente, quindi tale connessione non è consigliata.

Se non si ha la possibilità di utilizzare un convertitore USB-TTL specializzato da 3,3 volt, è possibile utilizzare un partitore resistivo. Vale anche la pena notare che nell'immagine a destra lo stabilizzatore di potenza 1117 è collegato senza cablaggio aggiuntivo e questa è una tecnologia davvero funzionante, ma è comunque meglio utilizzare lo schema di collegamento 1117 con il cablaggio del condensatore: è necessario verificarlo con la scheda tecnica ESP8266 per il tuo stabilizzatore o utilizza un modulo completamente pronto basato sulla base 1117.

Per avviare il modulo è necessario aprire il circuito GPIO0-TND, dopodiché è possibile alimentare. Vale la pena notare che tutto deve essere fatto esattamente in questo ordine, ovvero assicurarsi prima che GPIO0 sia "sospeso in aria" e solo successivamente applicare alimentazione a CH_PD e VCC.

Come connettersi correttamente?

Se puoi dedicare più di una sera per connettere correttamente il modulo ESP8266, puoi utilizzare un'opzione più stabile. Nel diagramma sopra vedi un'opzione di connessione con scaricamento automatico firmware.

Vale la pena notare che l'immagine sopra non mostra l'uso di GPIO o ADC gratuiti e la loro connessione dipenderà direttamente da cosa esattamente si desidera implementare, ma se si desidera garantire la stabilità, ricordarsi di accendere tutti i GPIO e gli ADC a terra utilizzando resistori di pull-up.

Se necessario, i resistori da 10k possono essere sostituiti con qualsiasi altro nell'intervallo da 4,7k a 50k, escluso GPIO15, poiché il suo valore non deve essere superiore a 10k. Il valore del condensatore che attenua le pulsazioni ad alta frequenza potrebbe essere leggermente diverso.

Il collegamento di RESET e GPIO16 tramite l'utilizzo di un resistore deep sleep da 470 Ohm può rendersi necessario quando si utilizza la modalità corrispondente, poiché per uscire dalla modalità deep sleep il modulo esegue riavvio completo, mentre serve basso livello su GPIO16. Con assenza di questa connessione La modalità di sospensione profonda del tuo modulo durerà per sempre.

A prima vista potrebbe sembrare che GPIO0, GPIO1 (TX), GPIO2, GPIO3 (RX) e GPIO15 siano occupati, quindi non potrai utilizzarli per i tuoi scopi, ma in realtà questo è tutt'altro che vero. Un livello sufficientemente alto su GPIO0 e GPIO2, nonché un livello basso su GPIO15, potrebbero essere necessari solo per l'avvio iniziale del modulo e in futuro potrai utilizzarli a tua discrezione. L'unica cosa degna di nota è ricordarsi di garantire i livelli richiesti prima di eseguire un ripristino completo della propria attrezzatura.

Puoi anche utilizzare TX, RX in alternativa a GPIO1 e GPIO3, ma non dimenticare che dopo l'avvio del modulo, ogni firmware inizia a "tirare" TX, inviando contemporaneamente informazioni di debug a UART0 alla velocità di 74480, ma dopo il download andrà a buon fine, potranno essere utilizzati non solo come UART0 per scambiare dati con un altro dispositivo, ma anche come GPIO standard.

Per i moduli che non hanno un gran numero di pin cablati (ad esempio ESP-01), non è necessario collegare i pin annullati, ovvero sull'ESP-01 sono cablati solo GND, CH_PD, VCC, GPIO0, GPIO2 e RESET, e sono questi che dovrai è necessario stringere. Non è necessario saldare direttamente il chip ESP8266EX e poi staccare i pin scoperti, a meno che non sia realmente necessario.

Tali schemi elettrici sono stati utilizzati dopo un gran numero di esperimenti condotti da specialisti qualificati e raccolti da molte informazioni diverse. Vale la pena notare che anche tali schemi non possono essere considerati ideali, poiché è possibile utilizzare una serie di altre opzioni non meno efficaci.

Connessione tramite Arduino

Se per qualche motivo non disponi di un convertitore USB-TTL da 3,3 volt, il modulo WiFi ESP8266 può essere collegato tramite Arduino con un convertitore integrato. Qui dovrai innanzitutto rivolgere la tua attenzione a tre elementi principali:

  • Se utilizzato con l'ESP8266, Arduino Reset è inizialmente collegato a GND per impedire l'avvio del microcontrollore e in questa forma è stato utilizzato come convertitore USB-TTL trasparente.
  • RX e TX non erano collegati “all'incrocio”, ma direttamente: RX-RX (verde), TX-TX (giallo).
  • Tutto il resto è collegato esattamente come descritto sopra.

Cosa considerare

Questo circuito richiede anche la corrispondenza dei livelli TTL di 5 volt sull'Arduino e di 3,3 volt sull'ESP8266, ma può funzionare abbastanza bene in entrambi i casi.

Quando è collegato a un ESP8266, Arduino può essere dotato di un regolatore di potenza che non può gestire la corrente richiesta dall'ESP8266, quindi dovrai controllare la scheda tecnica di quello che stai utilizzando prima di attivarlo. Non provare a collegare altri componenti che consumano energia con ESP8266, poiché ciò potrebbe causare il semplice guasto del regolatore di potenza integrato in Arduino.

Esiste anche un altro schema di connessione ESP8266 e Arduino che utilizza SoftSerial. Poiché per la libreria SoftSerial la velocità della porta 115200 è troppo elevata e non può essere garantita lavoro stabile, questo metodo di connessione non è consigliato, anche se ci sono alcuni casi in cui tutto funziona in modo abbastanza stabile.

Connessione tramite RaspberryPi

Se non disponi di alcun convertitore USB-TTL, puoi utilizzare RaspberryPi. In questo caso, per l'ESP8266, la programmazione e la connessione vengono eseguite quasi in modo identico, ma qui non tutto è così conveniente, e inoltre dovrai utilizzare anche uno stabilizzatore di potenza da 3,3 volt.

Per cominciare colleghiamo RX, TX e GND del nostro dispositivo all'ESP8266 e prendiamo GND e VCC da quello progettato per 3,3 volt. Qui, particolare attenzione dovrebbe essere prestata al fatto che è necessario collegare tutti i dispositivi GND, ovvero lo stabilizzatore RaspberryPi e ESP8266. Se lo stabilizzatore integrato nel modello del tuo dispositivo può sopportare fino a 300 milliampere di carico aggiuntivo, in questo caso collegare l'ESP8266 è abbastanza normale, ma tutto ciò avviene solo a proprio rischio e pericolo.

Impostazione dei parametri

Una volta capito come collegare l'ESP8266, devi assicurarti che i driver per i tuoi dispositivi siano installati correttamente, in conseguenza della quale una nuova porta seriale virtuale è stata aggiunta al sistema. Qui dovrai utilizzare un programma: un terminale con porta seriale. In linea di principio, puoi scegliere qualsiasi utilità secondo i tuoi gusti, ma devi capire correttamente che qualsiasi comando che invii alla porta seriale deve avere alla fine i caratteri finali CR+LF.

Le utilità CoolTerm ed ESPlorer sono abbastanza diffuse, e quest'ultima consente di non accedere da soli all'ESP8266 e allo stesso tempo semplifica il lavoro con gli script lua sotto NodeMCU, quindi può essere utilizzato come terminale standard.

Per connetterti normalmente dovrai lavorare molto, poiché il firmware dell'ESP8266 è per lo più vario e l'attivazione può essere effettuata a velocità diverse. Per decidere l'opzione migliore, dovrai esaminare tre opzioni principali: 9600, 57600 e 115200.

Come ordinare?

Per iniziare, collegarsi in un terminale al seriale porto virtuale, impostando i parametri su 9600 8N1, quindi eseguire un riavvio completo del modulo, scollegando CH_PD (chip Enable) dall'alimentazione, per poi riattivarlo nuovamente, distorcendo CH_PD. È inoltre possibile eseguire un breve RESET a terra per ripristinare il modulo e osservare i dati nel terminale.

Innanzitutto i LED del dispositivo dovrebbero apparire esattamente come mostrato nella procedura di test. Dovresti anche osservare una serie di caratteri diversi nel terminale, che terminerà con la linea pronta e, se non è presente, verrà effettuata una riconnessione al terminale a una velocità diversa, seguita da un riavvio del modulo.

Quando vedi questa riga in una delle opzioni di velocità, puoi considerare il modulo pronto per il lavoro.

Come aggiornare il firmware?

Una volta installato ESP8266, saranno necessari solo pochi secondi per connettere il dispositivo, quindi potrai iniziare ad aggiornare il firmware. Per installare il nuovo software è necessario effettuare le seguenti operazioni.

Per iniziare, scarica la nuova versione del firmware dal sito Web ufficiale e scarica anche un'utilità speciale per il firmware. Qui si dovrebbe prestare particolare attenzione a cosa sistema operativo installato sulla macchina con cui funziona ESP8266. È meglio connettere il dispositivo a sistemi precedenti a Windows 7.

Per i sistemi operativi Windows standard, sarebbe ottimale utilizzare un programma chiamato XTCOM UTIL, particolarmente comodo da utilizzare se il firmware è composto da un solo file. La migliore opzione multipiattaforma è l'utility esptool, che, tuttavia, richiede Python, oltre alla necessità di specificare i parametri tramite riga di comando. Inoltre, nell'ESP8266, il collegamento delle funzioni di base consente di farlo comodamente Programma istantaneo Scarica strumento, che ha anche un numero abbastanza elevato di impostazioni tecnologia conveniente installazione del firmware da diversi file.

Successivamente, disconnetti il ​​programma terminale dalla porta seriale e disconnetti anche completamente CH_PD dall'alimentazione, collega GPIO0 del modulo a GND, dopodiché CH_PD può essere restituito. Alla fine, basta eseguire il programma firmware modulare e caricarlo nel relè ESP8266.

Nella stragrande maggioranza dei casi il firmware viene caricato nel modulo ad una velocità di circa 115200, ma allo stesso tempo modalità speciale fornisce la distribuzione automatica della velocità, in conseguenza della quale il firmware può essere eseguito a una velocità superiore a 9600, aggiornando le funzioni disponibili dell'ESP8266. Arduino è stato utilizzato per la connessione o USB-TTL: non gioca un ruolo speciale né qui né qui velocità massima dipende già dalla lunghezza dei cavi, dal convertitore utilizzato e da una serie di altri fattori.

I migliori articoli sull'argomento