Cuprins:

Flash ESP-01 (ESP8266) Fără adaptor USB-serial folosind Raspberry Pi: 3 pași
Flash ESP-01 (ESP8266) Fără adaptor USB-serial folosind Raspberry Pi: 3 pași

Video: Flash ESP-01 (ESP8266) Fără adaptor USB-serial folosind Raspberry Pi: 3 pași

Video: Flash ESP-01 (ESP8266) Fără adaptor USB-serial folosind Raspberry Pi: 3 pași
Video: SKR Pro V1.1 - TMC2208 UART v3.0 (BigTreeTech) 2024, Decembrie
Anonim
Flash ESP-01 (ESP8266) Fără adaptor USB-serial folosind Raspberry Pi
Flash ESP-01 (ESP8266) Fără adaptor USB-serial folosind Raspberry Pi

Acest instructable vă ghidează despre cum să începeți programarea microcontrolerului ESP8266 pe un modul ESP-01 WIFI. Tot ce trebuie să începeți (în afară de modulul ESP-01, desigur) este

  • Raspberry Pi
  • Sârme de jumper
  • Rezistor de 10K

Am vrut să renovez o lampă de noptieră veche într-o lampă de noapte modernă controlată de Alexa. Nimic fantezist doar porniți-l / opriți utilizând comanda vocală. Am comandat cel mai simplu modul ESP-01 WIFI, releu și cablu cu LED-uri online și am uitat total să comand un adaptor USB-serie pentru a programa microcontrolerul ESP8266. Dar, din moment ce aveam un Raspberry Pi și atât placa Raspberry Pi, cât și placa ESP-01 aveau pini UART, m-am gândit că aș putea folosi RPi pentru a programa ESP8266 fără adaptor.

Pasul 1: Configurați Rapberry Pi

Configurați Rapberry Pi
Configurați Rapberry Pi

Am folosit Raspberry Pi 3 Model B +, cu toate acestea, instrucțiunile ar trebui să funcționeze pe alte versiuni, în special pe modelul B.

Deci, mai întâi, trebuie să activăm UART pe Pi.

Accesați setările de configurare RPi. În fereastra terminalului rulați

$ sudo raspi-config

Mergeți la 5 Opțiuni de interfață, apoi selectați Seria P6. Ați solicitat apoi Doriți ca un shell de conectare să fie accesibil peste serial? selectați din moment ce nu dorim să folosim UART pentru a rula Pi fără cap, ci pentru a comunica cu alte dispozitive, prin urmare, pe următorul ecran când vi se solicită Doriți să fie activat hardware-ul portului serial? Selectați. Reporniți Pi după cum vi se solicită. UART ar trebui să fie acum activat pentru comunicarea serială pe pinul RX și TX al Raspberry Pi 3. Notă: după aceasta ar trebui să apară o nouă intrare enable_uart = 1 la sfârșitul /boot/config.txt.

Pasul 2: Conectați ESP-01 la Raspberry Pi

Conectați ESP-01 la Raspberry Pi
Conectați ESP-01 la Raspberry Pi

Acum începem să conectăm totul împreună.

În primul rând, identificați pe pinii dvs. de putere RPi 3.3V și pinii GND (la sol) pentru a alimenta microcontrolerul ESP8266, pinii TXD (de transmisie) și RXD (de recepție) pentru a comunica și doi pini de uz general pentru a funcționa ESP8266 (pini care pot fi setați fie mari, fie scăzut). Căutați aranjamentul pinului pe pinout.xyz sau introduceți terminalul:

$ pinout

În al doilea rând identificați pinii necesari pe ESP-01. Dar la început trebuie să avem o înțelegere a pinilor ESP-01. Am găsit o serie de resurse utile disponibile pe internet pentru a vă ajuta în această privință. Acesta este cel mai scurt, în timp ce acesta oferă explicații mult mai bune. Pe scurt: există 8 pini, vom avea nevoie de 7 dintre aceștia, și anume pinii VCC și pinii GND (la sol) pentru alimentare, pinii TXD și RXD pentru comunicații și RST (resetare), CH_PD (Power Chip Power Down, uneori etichetat) CH_EN sau chip enable) și GPIO0 pentru a opera modulul. De obicei, ESP8266 funcționează într-un mod obișnuit, dar atunci când încărcați un cod pe ESP8266, este atent să fie în modul bliț. Pentru modul de funcționare normal sau normal, modulul trebuie conectat la alimentare (evident), dar și pinul CH_PD trebuie să fie conectat la VCC printr-un 10K (această valoare variază în diferite resurse, am găsit valori de până la 3K) pull-up rezistor la boot. pe de altă parte, pentru a intra în modul intermitent sau de programare, trebuie să legați pinul GPIO0 la pornire. Pentru a preveni curentul nerestricționat de curent prin GPIO0 atunci când este împământat, se recomandă conectarea GPIO0 la masă printr-un rezistor cu rezistență scăzută 300Ω - 470Ω (mai multe despre acest lucru aici). Pinul RST, așa cum sugerează și numele, resetează (sau repornește) MCU. În timpul funcționării normale, acesta poate fi conectat la VCC printr-un rezistor de tracțiune de 10K, dar ar trebui să fie legat la pământ pentru a reseta microcontrolerul. Deși este întotdeauna posibil să folosiți butoane fizice pentru a împinge pinii RST și GPIO0 (sau chiar să uniți manual firele pentru a simula un buton), este mult mai plăcută experiența de a utiliza pinii Raspberry Pi pentru a seta tensiunea ridicată și scăzută pe modulele RST și GPIO0 pini. De asemenea, nu este nevoie de rezistențe 10K și 470Ω atunci.

Acum, fiind conștienți de particularitățile pinilor ESP-01, putem începe să conectăm totul împreună. Puteți utiliza următorul tabel ca referință împreună cu desenul de mai sus:

ESP-01 Raspberry Pi

  • VCC (3,3 V) pin # 1 (3,3 V)
  • Pinul GND # 6 (GND)
  • PIN-ul TXD # 10 (RXD / BCM 15)
  • Pinul RXD # 8 (TXD / BCM 14)
  • CH_PD pin # 1 (3,3V)
  • Pinul RST # 3 (BCM 2)
  • GPIO 0 pin # 5 (BMC 5)

Conectați ultimul pin VCC. Instanta în care ați conectat pinul VCC modulul Wi-Fi se va activa. Utilizați ecranul sau minicomul pentru a verifica dacă RPi și ESP8266 pot comunica utilizând UART (notă: poate fi necesar să instalați mai întâi ecranul sau minicomul, deoarece acestea nu par să fie instalate în mod implicit pe Raspbian).

Utilizarea ecranului:

$ sudo screen / dev / serial0 115200

Folosind minicom run:

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

Notă: multe resurse online sugerează conectarea la ESP8266 pe / dev / ttyAMA0, dar acest lucru nu funcționează pentru RPi 3 sau o versiune ulterioară (inclusiv zero W) conform documentației RPi. Conectați-vă prin / dev / serial0 sau / dev / ttyS0.

După ce ați introdus ecranul sau minicom, utilizați comenzile AT pentru a comunica cu ESP8266. Tastați AT, apoi apăsați Enter și apoi apăsați Ctrl + J pentru a trimite comanda. Ar trebui să primiți OK ca răspuns. Lista comenzilor AT disponibile poate fi găsită pe espressiff.com sau doar aici.

Dacă dispozitivele sunt conectate fizic și vorbesc între ele, putem ajunge la programarea pinilor RPi GPIO și, în cele din urmă, la ESP8266 în sine.

Pasul 3: Configurare software (Python să funcționeze și Arduino IDE să programeze)

PARTEA 1. Folosind python pentru a comuta modurile ESP8266

După cum sa menționat mai sus, este convenabil să utilizați pinii GPIO RPI pentru a comuta modurile de funcționare ale ESP8266. Am scris două coduri python de bază care pun ESP8266 în modul regulat sau de programare.

Mod regulat: Pentru a pune microcontrolerul în modul de funcționare obișnuit, trebuie doar să îl alimentăm și să conectăm CH_PD prin intermediul unui rezistor de tracțiune la VCC, dar pentru a comuta MCU de la programare la modul normal, trebuie să-l resetăm (gândiți-vă la repornire). Pentru a face acest lucru pe RPi, vom trage pe scurt GPIO-ul RPi conectat la pinul RST de pe ESP-01 (în mod implicit, pinul RPi folosit pentru resetare este setat la HIGH). Cât de scurt? Pentru mine, aceasta este o întrebare speculativă. Puteți încerca diferite intervale de timp, dar am constatat că 200 - 500 ms funcționează foarte bine. Scrieți în comentarii dacă aveți o idee mai bună. Salvați codul ca reset.py

#! / usr / bin / python

import RPi. GPIO ca timp de import GPIO GPIO.setmode (GPIO. BOARD) # setează identificarea GPIO prin numerele de pin fizice resetPin = 3 # identifică pinul fizic RPi conectat la ESP8266 pin RST GPIO.setup (resetPin, GPIO. OUT) # set reset pin ca ieșire GPIO.output (resetPin, GPIO. LOW) # picătură de tensiune pe pinul RST time.sleep (.2) # așteptați.2 s GPIO.output (resetPin, GPIO. HIGH) # restabiliți tensiunea pe pinul RST GPIO. cleanup () # resetează pini pe RPI pentru a preveni avertismentele de rulare viitoare

  • Mod de programare: Pentru a pune MCU în modul de programare, trebuie să alimentăm ESP8266 cu GPIO0 împământat sau, alternativ, să-l resetați și să împământați GPIO0 în timp ce porniți (din nou, durata exactă a căderilor de tensiune nu este prea cunoscută de mine, așa că nu fiți strict ghidat de valorile utilizate). Salvați codul ca flash.py sau descărcați mai jos. Succesiunea acțiunilor este următoarea:

    • trageți în jos pinul RST
    • trageți în jos pinul GPIO0
    • trageți în sus pinul RST
    • trageți în sus pinul GPIO0

#! / usr / bin / python

import RPi. GPIO ca timp de import GPIO GPIO.setmode (GPIO. BOARD) # setează identificarea GPIO prin numerele de pin fizice resetPin = 3 # identifică pinul fizic RPi conectat la ESP8266 pin RST flashPin = 5 # identifică pinul fizic RPi conectat la pinul GPIO0 ESP8266 GPIO.setup (resetPin, GPIO. OUT) # setează pinul de resetare ca ieșire GPIO.setup (flashPin, GPIO. OUT) # setează pinul blițului ca ieșire GPIO.output (resetPin, GPIO. LOW) # picătură de tensiune pe timpul pinului RST. sleep (.2) # necesitatea acestei așteptări este speculativă GPIO.output (flashPin, GPIO. LOW) # căderea tensiunii pe GPIO0 time.sleep (.2) # necesitatea acestei așteptări este speculativă GPIO.output (resetPin, GPIO. HIGH) # începeți să porniți ESP8266 time.sleep (.5) # așteptați ca ESP8266 să pornească GPIO.ouput (flashPin. GPIO. HIGH) # restabiliți tensiunea pe pinul GPIOGPIO.cleanup () # resetați pinii pe RPI pentru a preveni viitoarele avertismente de execuție

În permisiunile de modificare a terminalului:

$ sudo chmod + x flash.py

$ sudo chmod + x reset.py

De acum înainte, ori de câte ori trebuie să intrați în modul de programare, rulați în terminal:

$ python /flash.py

după încărcarea codului pentru a intra în modul normal de funcționare:

$ python /reset.py

În acest moment, poate doriți să actualizați firmware-ul ESP8266. Există multe tutoriale online despre cum să faci asta, așa că nu voi intra în detalii despre cum să faci asta.

PARTEA 2. Configurarea Arduino IDE

dacă aveți deja Arduino IDE instalat, vă recomandăm să parcurgeți secțiunea, asigurându-vă că IDE-ul dvs. este pregătit pentru ESP8266.

Pe Rapberry Pi puteți utiliza Arduino IDE pentru a vă programa ESP8266. Există două moduri de a instala IDE pe RPi:

  • prin linia de comandă din depozite folosind apt-get install
  • descărcați și instalați manual de pe arduino.cc.

Vă sugerez cu tărie să mergeți pe ultima cale. Versiunea IDE din depozite pare a fi învechită și cu siguranță va trebui să faceți mai multe înainte de a fi gata să începeți programarea ESP8266. Pentru a evita problemele, accesați pagina de descărcare Arduino.cc și descărcați versiunea Linux ARM. Apoi decomprimați și instalați: Dacă numele fișierului descărcat arată cam ca arduino-X. Y. Z-linuxarm.tar.xz, rulați în folderul de descărcare:

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

Aceasta ar trebui să decomprimați fișierul în folderul arduino-X. Y. Z. Alerga:

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

Aceasta ar trebui să instaleze IDE. După finalizarea instalării, porniți IDE-ul.

  • Din IDE-ul Arduino, accesați Fișier> Preferințe. Căutați „Adrese URL suplimentare ale administratorului de bord” în partea de jos a ferestrei de preferințe. Introduceți https://arduino.esp8266.com/stable/package_esp8266com_index.json în câmpul „Adrese URL suplimentare ale administratorului de bord”, faceți clic pe butonul „OK”.
  • Accesați Instrumente> Tablou: XXX> Manager placi. În fereastră utilizați căutare sau derulați în jos, selectați meniul plăcii ESP8266 și faceți clic pe instalare. Așteptați finalizarea instalării și închiderea ferestrei.
  • Din nou, accesați Instrumente> Placă: XXX și căutați plăci ESP8266. Alegeți modulul ESP8266 generic.

Acum IDE este gata să programeze ESP8266. Tastați sau lipiți codul dorit în fereastra IDE și salvați-l. Faceți clic pe Încărcare. Din terminal rulați flash.py, aceasta ar trebui să pună placa dvs. în modul de programare. Așteptați câteva minute pentru ca IDE să termine compilarea și încărcarea (notă: ESP-01 vine de obicei cu 2 LED-uri, LED-ul albastru va clipi în timp ce codul este încărcat) și rulați reset.py. Acum placa dvs. ESP-01 este gata să îndeplinească sarcini.

Recomandat: