Sadržaj:

Blic ESP-01 (ESP8266) Bez USB-serijskog adaptera koristeći Raspberry Pi: 3 koraka
Blic ESP-01 (ESP8266) Bez USB-serijskog adaptera koristeći Raspberry Pi: 3 koraka

Video: Blic ESP-01 (ESP8266) Bez USB-serijskog adaptera koristeći Raspberry Pi: 3 koraka

Video: Blic ESP-01 (ESP8266) Bez USB-serijskog adaptera koristeći Raspberry Pi: 3 koraka
Video: SKR 1.4 - TMC2209 v1.2 2024, Novembar
Anonim
Blic ESP-01 (ESP8266) Bez USB-serijskog adaptera pomoću Raspberry Pi
Blic ESP-01 (ESP8266) Bez USB-serijskog adaptera pomoću Raspberry Pi

Ovaj Instructable vas vodi kako započeti programiranje vašeg ESP8266 mikrokontrolera na ESP-01 WIFI modulu. Sve što vam je potrebno za početak (osim modula ESP-01, naravno) je

  • Raspberry Pi
  • Žice za kratkospojnike
  • 10K otpornik

Htio sam preurediti staru noćnu lampu u modernu Alexa noćnu LED lampu. Ništa lijepo nije samo uključivanje/isključivanje glasovnom komandom. Naručio sam najjednostavniji ESP-01 WIFI modul, relej i žicu sa LED diodama na mreži, a potpuno sam zaboravio naručiti USB-serijski adapter za programiranje mikrokontrolera ESP8266. Ali budući da sam imao Raspberry Pi, a i Raspberry Pi i ESP-01 ploča su imale UART pinove, zaključio sam da bih mogao koristiti svoj RPi za programiranje ESP8266 bez adaptera.

Korak 1: Konfigurirajte Rapberry Pi

Konfigurirajte Rapberry Pi
Konfigurirajte Rapberry Pi

Koristio sam Raspberry Pi 3 model B+, međutim, upute bi trebale djelovati na drugim verzijama, posebno na modelu B.

Dakle, prvo prvo - moramo omogućiti UART na Pi.

Idite na postavke konfiguracije RPi. U terminal prozoru pokrenite

$ sudo raspi-config

Idite na 5 Opcije sučelja, a zatim odaberite P6 Serijski. Zatim ste upitali Želite li da ljuska za prijavu bude dostupna serijski? odaberite jer ne želimo koristiti UART za pokretanje Pi bez glave, već za komunikaciju s drugim uređajima, stoga se na sljedećem ekranu na pitanje želite li omogućiti hardver za serijski port? odaberite. Ponovo pokrenite Pi kako se od vas zatraži. UART bi sada trebao biti omogućen za serijsku komunikaciju na RX i TX pin -u Raspberry Pi 3. Napomena: nakon ovoga trebao bi se pojaviti novi unos enable_uart = 1 na kraju /boot/config.txt.

Korak 2: Povežite ESP-01 na Raspberry Pi

Povežite ESP-01 na Raspberry Pi
Povežite ESP-01 na Raspberry Pi

Sada prelazimo na ožičenje svega zajedno.

Prvo, na RPi 3.3V napajačkim i GND (uzemljenim) pinovima identificirajte napajanje ESP8266 mikrokontrolera, TXD (odašiljanje) i RXD (primanje) pinove za komunikaciju i dva pina opće namjene za rad ESP8266 (pinovi koji se mogu postaviti na visoki ili na niska). Potražite raspored pinova na pinout.xyz ili upišite terminal:

$ pinout

Zatim identificirajte potrebne pinove na ESP-01. Ali na početku moramo imati razumijevanja o pinovima ESP-01. Našao sam na internetu brojne korisne izvore koji vam mogu pomoći u tom pogledu. Ovaj je najkraći, dok ovaj daje mnogo bolje objašnjenje. Ukratko: Postoji 8 pinova, trebat će nam 7 njih, naime VCC napajanje i GND (uzemljenje) pinovi za napajanje, TXD i RXD pinovi za komunikaciju i RST (reset), CH_PD (Chip Power Down, ponekad označeni) CH_EN ili omogućavanje čipa) i GPIO0 za upravljanje modulom. Obično ESP8266 radi u redovnom načinu rada, ali prilikom postavljanja koda na ESP8266 mora biti u flash modu. Za redovan ili normalan način rada modul mora biti priključen na napajanje (očito), ali i pin CH_PD mora biti spojen na VCC putem 10K (ova vrijednost varira u različitim izvorima, našao sam vrijednosti do 3K) pull-up otpornik pri pokretanju. s druge strane, za ulazak u treperenje ili način programiranja morate uzemljiti GPIO0 pin pri pokretanju. Da biste spriječili neograničeni protok struje preko GPIO0 kada je uzemljen, preporučuje se spajanje GPIO0 na masu preko nekog otpornika niskog otpora 300Ω - 470Ω (više o tome ovdje). RST pin, kako naziv govori, resetira (ili ponovo pokreće) MCU. Tijekom normalnog rada može se spojiti na VCC preko 10K pull-up otpornika, ali treba biti uzemljen za resetiranje mikrokontrolera. Iako je uvijek moguće koristiti fizičke tipke za uzemljenje pinova RST i GPIO0 (ili čak ručno spajanje žica za simulaciju tipke), mnogo je ugodnije iskustvo koristiti pinove Raspberry Pi za postavljanje visokog i niskog napona na RST i GPIO0 modula igle. Također nema potrebe za otpornicima od 10K i 470Ω.

Budući da smo svjesni posebnosti pinova ESP-01, možemo početi povezivati sve zajedno. Sljedeću tablicu možete koristiti kao referencu uz gornji crtež:

ESP-01 Raspberry Pi

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

Spojite VCC pin zadnji. Instanca na koju ste spojili VCC pin vašeg Wi-Fi modula će se uključiti. Koristite screen ili minicom da provjerite mogu li RPi i ESP8266 komunicirati putem UART -a (napomena: možda ćete prvo morati instalirati screen ili minicom, jer izgleda da nisu zadano instalirani na Raspbian).

Korišćenje ekrana:

$ sudo screen /dev /serial0 115200

Korištenje minicom run:

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

Napomena: mnogi mrežni izvori predlažu povezivanje s ESP8266 na /dev /ttyAMA0, ali to ne radi za RPi 3 ili noviji (uključujući nula W) prema RPi dokumentaciji. Povežite se putem /dev /serial0 ili /dev /ttyS0.

Nakon što ste unijeli screen ili minicom, koristite AT naredbe za komunikaciju s ESP8266. Upišite AT, zatim pritisnite Enter, a zatim pritisnite Ctrl+J za slanje naredbe. Trebalo bi da dobijete OK kao odgovor. Popis dostupnih AT naredbi možete pronaći na espressiff.com ili samo ovdje.

Ako su uređaji fizički povezani i međusobno razgovaraju, možemo pristupiti programiranju RPi GPIO pinova i, konačno, samog ESP8266.

Korak 3: Postavljanje softvera (Python za rad i Arduino IDE za programiranje)

DIO 1. Korištenje pythona za promjenu načina rada ESP8266

Kao što je gore spomenuto, zgodno je koristiti RPI GPIO pinove za promjenu načina rada ESP8266. Napisao sam dva osnovna python koda koji stavljaju ESP8266 u redovan ili programski način.

Regularni način rada: Da bismo mikrokontroler stavili u uobičajeni način rada, samo ga moramo napajati i povezati CH_PD preko pull-up otpornika na VCC, ali za prebacivanje MCU-a iz programiranja u normalan način rada moramo ga resetirati (razmislite o ponovnom pokretanju). Da bismo to učinili na RPi-u, nakratko ćemo povući RPi-jev GPIO spojen na RST pin na ESP-01 (prema zadanim postavkama RPi pin koji sam koristio za resetiranje postavljen je na HIGH). Kako kratko? Za mene je to spekulativno pitanje. Možete isprobati različite vremenske intervale, ali otkrio sam da 200 - 500 ms rade sasvim u redu. Napišite u komentarima ako imate bolju ideju. Sačuvajte kôd kao reset.py

#!/usr/bin/python

uvoz RPi. GPIO kao GPIO Vrijeme uvoza GPIO.setmode (GPIO. BOARD) # postavlja GPIO identifikaciju prema fizičkim brojevima pinova resetPin = 3 # identificira fizički pin RPi spojen na ESP8266 RST pin GPIO.setup (resetPin, GPIO. OUT) # set reset pin kao output GPIO.output (resetPin, GPIO. LOW) # pad napona na RST pinu time.sleep (.2) # čekajte 0,2 s GPIO.izlaz (resetPin, GPIO. HIGH) # vratite napon na RST pin GPIO. cleanup () # pinovi za resetiranje na RPI -u kako bi se spriječila buduća upozorenja za vrijeme izvođenja

  • Način programiranja: Da bismo MCU prebacili u način programiranja, moramo napajati ESP8266 sa GPIO0 uzemljenim ili ga alternativno resetirati i uzemljiti GPIO0 tijekom pokretanja (opet mi točno vrijeme pada napona nije poznato, stoga nemojte biti strogo strogi vođeni korištenim vrijednostima). Sačuvajte kôd kao flash.py ili preuzmite ispod. Slijed radnji je sljedeći:

    • povucite prema dolje RST klin
    • povucite GPIO0 pin
    • povucite RST pin
    • izvucite pin GPIO0

#!/usr/bin/python

uvoz RPi. GPIO kao GPIO Vrijeme uvoza GPIO.setmode (GPIO. BOARD) # postavlja GPIO identifikaciju prema fizičkim brojevima pinova resetPin = 3 # identificira fizički pin RPi spojen na ESP8266 RST pin flashPin = 5 # identificira fizički pin RPi spojen na ESP8266 GPIO0 pin GPIO.setup (resetPin, GPIO. sleep (.2) # potreba za ovim čekanjem je spekulativni GPIO.izlaz (flashPin, GPIO. LOW) # pad napona na GPIO0 time.sleep (.2) # potreba za ovim čekanjem je spekulativni GPIO.output (resetPin, GPIO. HIGH) # start booting ESP8266 time.sleep (.5) # pričekajte da se ESP8266 pokrene GPIO.ouput (flashPin. GPIO. HIGH) # vratite napon na GPIO pinGPIO.cleanup () # pinovi za resetiranje na RPI kako biste spriječili buduća upozorenja za vrijeme izvođenja

U dozvolama za promjenu terminala:

$ sudo chmod +x flash.py

$ sudo chmod +x reset.py

Od sada, kad god trebate ući u način programiranja pokrenite u terminalu:

$ python /flash.py

nakon učitavanja koda za ulazak u normalan način rada pokrenite:

$ python /reset.py

U ovom trenutku možda ćete htjeti ažurirati i firmver ESP8266. Postoji mnogo online vodiča o tome kako to učiniti, pa neću ulaziti u detalje o tome kako to učiniti.

DIO 2. Postavljanje Arduino IDE -a

ako već imate instaliran Arduino IDE, možda ćete htjeti pregledati odjeljak kako biste bili sigurni da je vaš IDE spreman za ESP8266.

Na Rapberry Pi -u možete koristiti Arduino IDE za programiranje vašeg ESP8266. Postoje dva načina za instaliranje IDE -a na RPi:

  • preko komandne linije iz spremišta koristeći apt-get install
  • preuzmite i instalirajte ručno sa arduino.cc.

Snažno predlažem da idete ovim putem. Izgleda da je IDE verzija iz spremišta zastarjela i da ćete zasigurno morati učiniti više prije nego budete spremni za početak programiranja ESP8266. Da biste izbjegli probleme, idite na stranicu za preuzimanje Arduino.cc i preuzmite Linux ARM verziju. Slijedeće raspakirajte i instalirajte: Ako naziv preuzete datoteke izgleda otprilike ovako arduino-X. Y. Z-linuxarm.tar.xz, pokrenite mapu za preuzimanje:

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

Ovo bi trebalo dekomprimirati datoteku u mapu arduino-X. Y. Z. Trčanje:

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

Ovo bi trebalo instalirati IDE. Nakon dovršetka instalacije pokrenite IDE.

  • Iz Arduino IDE idite na Datoteka> Postavke. Potražite "Dodatni URL -ovi upravitelja odbora" pri dnu prozora postavki. Unesite https://arduino.esp8266.com/stable/package_esp8266com_index.json u polje "Dodatni URL -ovi upravitelja odbora", kliknite gumb "U redu".
  • Idite na Alati> Ploča: XXX> Upravitelj ploča. U prozoru koristite pretraživanje ili se pomaknite prema dolje, odaberite meni ploče ESP8266 i kliknite Instaliraj. Pričekajte da se instalacija dovrši i zatvorite prozor.
  • Ponovo idite na Alati> Ploča: XXX i potražite ploče ESP8266. Odaberite Generički modul ESP8266.

Sada je IDE spreman za programiranje ESP8266. Unesite ili zalijepite željeni kôd u IDE prozor i spremite ga. Kliknite Otpremi. S terminala flash.py, ovo bi trebalo vašu ploču staviti u način programiranja. Pričekajte nekoliko minuta da IDE završi sa sastavljanjem i otpremanjem (napomena: ESP-01 obično dolazi s 2 LED diode, plava LED lampica će treperiti dok se kôd postavlja) i pokrenite reset.py. Sada je vaša ploča ESP-01 spremna za obavljanje zadataka.

Preporučuje se: