Satura rādītājs:

Zibspuldze ESP-01 (ESP8266) bez USB sērijas adaptera, izmantojot Raspberry Pi: 3 soļi
Zibspuldze ESP-01 (ESP8266) bez USB sērijas adaptera, izmantojot Raspberry Pi: 3 soļi

Video: Zibspuldze ESP-01 (ESP8266) bez USB sērijas adaptera, izmantojot Raspberry Pi: 3 soļi

Video: Zibspuldze ESP-01 (ESP8266) bez USB sērijas adaptera, izmantojot Raspberry Pi: 3 soļi
Video: Полный контроль над двигателем постоянного тока с помощью ESP8266 NodeMCU D1 Mini через Wi-Fi 2024, Novembris
Anonim
Zibspuldze ESP-01 (ESP8266) bez USB-sērijas adaptera, izmantojot Raspberry Pi
Zibspuldze ESP-01 (ESP8266) bez USB-sērijas adaptera, izmantojot Raspberry Pi

Šī pamācība sniedz norādījumus, kā sākt programmēt savu ESP8266 mikrokontrolleri ESP-01 WIFI modulī. Viss, kas jums nepieciešams, lai sāktu darbu (protams, papildus ESP-01 modulim) ir

  • Raspberry Pi
  • Jumper vadi
  • 10K rezistors

Es gribēju atjaunot veco gultas lampu par mūsdienīgu Alexa vadāmu LED naktslampu. Nekas izdomāts, vienkārši ieslēdzot/izslēdzot to, izmantojot balss komandu. Es tiešsaistē pasūtīju vienkāršāko ESP-01 WIFI moduli, releju un vadu ar gaismas diodēm, un pavisam aizmirsu pasūtīt USB seriālo adapteri, lai programmētu ESP8266 mikrokontrolleru. Bet, tā kā man bija Raspberry Pi un gan Raspberry Pi, gan ESP-01 plāksnei bija UART tapas, es sapratu, ka es varētu izmantot savu RPi, lai programmētu ESP8266 bez adaptera.

1. darbība: konfigurējiet Rapberry Pi

Konfigurējiet Rapberry Pi
Konfigurējiet Rapberry Pi

Es izmantoju Raspberry Pi 3 B+modeli, tomēr instrukcijām vajadzētu darboties arī citās versijās, īpaši B modelī.

Tātad, vispirms - mums ir jāiespējo UART pakalpojumā Pi.

Atveriet RPi konfigurācijas iestatījumus. Palaist termināļa logā

$ sudo raspi-config

Atveriet 5 saskarnes opcijas, pēc tam atlasiet P6 Serial. Pēc tam jūs jautāja Vai vēlaties, lai pieteikšanās apvalks būtu pieejams sērijveidā? izvēlieties, jo mēs nevēlamies izmantot UART, lai palaistu Pi bez galvas, bet lai sazinātos ar citām ierīcēm, tādēļ nākamajā ekrānā, kad tiek jautāts Vai vēlaties, lai seriālā porta aparatūra būtu iespējota? izvēlieties. Restartējiet Pi, kā tiek prasīts. Tagad ir jāiespējo UART seriālajai komunikācijai Raspberry Pi 3 RX un TX tapā. Piezīme. Pēc tam /boot/config.txt beigās vajadzētu parādīties jaunam ierakstam enable_uart = 1.

2. darbība. Savienojiet ESP-01 ar Raspberry Pi

Savienojiet ESP-01 ar Raspberry Pi
Savienojiet ESP-01 ar Raspberry Pi

Tagad mēs sākam visu savienot kopā.

Pirmkārt, identificējiet RPi 3.3V barošanas un GND (zemes) tapas, lai darbinātu ESP8266 mikrokontrolleru, TXD (pārraides) un RXD (uztveršanas) tapas, lai sazinātos, un divas vispārējas nozīmes tapas, lai darbinātu ESP8266 (tapas, kuras var iestatīt vai nu augstu, vai zems). Meklējiet tapu izvietojumu vietnē pinout.xyz vai ierakstiet terminālī:

$ pinout

Otrkārt, identificējiet nepieciešamās tapas ESP-01. Bet sākumā mums ir jābūt izpratnei par ESP-01 tapām. Internetā es atradu vairākus noderīgus resursus, kas jums palīdzēs. Šis ir īsākais, bet šis sniedz daudz labāku skaidrojumu. Īsumā: ir 8 tapas, mums būs vajadzīgas 7 no tām, proti, VCC barošanas un GND (zemes) tapas barošanai, TXD un RXD tapas saziņai un RST (atiestatīšana), CH_PD (mikroshēmas izslēgšana, dažreiz apzīmēta) CH_EN vai mikroshēmas iespējošana) un GPIO0, lai darbinātu moduli. Parasti ESP8266 darbojas parastajā režīmā, bet, augšupielādējot kodu ESP8266, jāņem vērā zibspuldzes režīms. Parastam vai normālam darbības režīmam modulis ir jāpievieno strāvas avotam (acīmredzot), bet arī tapa CH_PD ir jāpievieno VCC, izmantojot 10K (šī vērtība atšķiras dažādos veidos, es atklāju vērtības līdz 3K) pull-up rezistors pie boot. no otras puses, lai pārietu uz mirgojošu vai programmēšanas režīmu, sāknēšanas laikā jāiezemē GPIO0 tapa. Lai novērstu neierobežotu strāvas plūsmu caur GPIO0, kad tas ir iezemēts, ieteicams GPIO0 savienot ar zemi, izmantojot zemas pretestības 300Ω - 470Ω rezistoru (vairāk par to šeit). RST tapa, kā norāda nosaukums, atiestata (vai restartē) MCU. Normālas darbības laikā to var savienot ar VCC, izmantojot 10K pievilkšanas rezistoru, bet tam jābūt iezemētam, lai atiestatītu mikrokontrolleru. Lai gan vienmēr ir iespējams izmantot fiziskas pogas, lai iezemētu RST un GPIO0 tapas (vai pat manuāli savienotu vadus, lai simulētu pogu), daudz patīkamāka pieredze ir izmantot Raspberry Pi tapas, lai iestatītu augsts un zems spriegums moduļa RST un GPIO0 tapas. Tad arī nav nepieciešami 10K un 470Ω rezistori.

Tagad, apzinoties ESP-01 tapas īpatnības, mēs varam sākt savienot visu kopā. Jūs varat izmantot šo tabulu kā atsauci kopā ar zīmējumu iepriekš:

ESP-01 Raspberry Pi

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

Pievienojiet VCC tapu pēdējo. Gadījumā, kad pievienojāt VCC tapu, jūsu Wi-Fi modulis tiks ieslēgts. Izmantojiet ekrānu vai minicom, lai pārbaudītu, vai RPi un ESP8266 var sazināties, izmantojot UART (piezīme: iespējams, vispirms būs jāinstalē ekrāns vai minicom, jo šķiet, ka tie pēc noklusējuma nav instalēti Raspbian).

Izmantojot ekrāna palaišanu:

$ sudo screen /dev /serial0 115200

Izmantojot minicom run:

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

Piezīme: daudzi tiešsaistes resursi iesaka izveidot savienojumu ar ESP8266 uz /dev /ttyAMA0, taču tas nedarbojas RPi 3 vai jaunākā versijā (ieskaitot nulles W) saskaņā ar RPi dokumentāciju. Tā vietā izveidojiet savienojumu, izmantojot /dev /serial0 vai /dev /ttyS0.

Pēc ekrāna vai minikoma ievadīšanas izmantojiet AT komandas, lai sazinātos ar ESP8266. Ievadiet AT, pēc tam nospiediet taustiņu Enter un pēc tam nospiediet Ctrl+J, lai nosūtītu komandu. Jums vajadzētu atbildēt uz jautājumu. Pieejamo AT komandu sarakstu var atrast vietnē espressiff.com vai tikai šeit.

Ja ierīces ir fiziski savienotas un runā viena ar otru, mēs varam sākt programmēt RPi GPIO tapas un, visbeidzot, pašu ESP8266.

3. darbība: programmatūras iestatīšana (Python darbināšanai un Arduino IDE programmēšanai)

DAĻA 1. Python izmantošana ESP8266 režīmu pārslēgšanai

Kā minēts iepriekš, ir ērti izmantot RPI GPIO tapas, lai pārslēgtu ESP8266 darbības režīmus. Es uzrakstīju divus pamata python kodus, kas ievietoja ESP8266 parastajā vai programmēšanas režīmā.

Regulārais režīms: lai mikrokontrolleru ieslēgtu parastajā darbības režīmā, mums tas vienkārši jāieslēdz un jāpievieno CH_PD, izmantojot uzvilkšanas rezistoru, ar VCC, bet, lai pārslēgtu MCU no programmēšanas uz parasto režīmu, mums tas ir jāatiestata (domājiet, restartējiet). Lai to izdarītu RPi, mēs īsi nojauksim RPi GPIO, kas savienots ar RST tapu ESP-01 (pēc noklusējuma RPi tapa, kuru izmantoju atiestatīšanai, ir iestatīta uz HIGH). Cik īsi? Man tas ir spekulatīvs jautājums. Jūs varat izmēģināt dažādus laika intervālus, bet es atklāju, ka 200–500 ms darbojas lieliski. Rakstiet komentāros, ja jums ir labāka ideja. Saglabājiet savu kodu kā reset.py

#!/usr/bin/python

importēt RPi. GPIO kā GPIO importa laiku GPIO.setmode (GPIO. BOARD) # iestata GPIO identifikāciju pēc fizisko tapu numuriem resetPin = 3 # identificēt RPi fizisko tapu, kas savienota ar ESP8266 RST pin GPIO.setup (resetPin, GPIO. OUT) # set reset pin kā izeja GPIO.output (resetPin, GPIO. LOW) # kritiena spriegums uz RST pin time.sleep (.2) # gaidiet.2 s GPIO.output (resetPin, GPIO. HIGH) # atjaunojiet spriegumu uz RST pin GPIO. cleanup () # atiestatīt tapas uz RPI, lai novērstu brīdinājumus par izpildlaiku nākotnē

  • Programmēšanas režīms: Lai ieslēgtu MCU programmēšanas režīmā, mums ir jāieslēdz ESP8266 ar iezemētu GPIO0, vai arī alternatīvi atiestatiet to un iezemējiet GPIO0, veicot palaišanu (atkal precīzs sprieguma kritumu ilgums man nav zināms, tāpēc neesiet stingri vadoties pēc izmantotajām vērtībām). Saglabājiet kodu kā flash.py vai lejupielādējiet zemāk. Darbību secība ir šāda:

    • pavelciet uz leju RST tapu
    • velciet uz leju GPIO0 tapu
    • izvelciet RST tapu
    • pavelciet uz augšu GPIO0 tapu

#!/usr/bin/python

importēt RPi. GPIO kā GPIO importa laiku GPIO.setmode (GPIO. BOARD) # nosaka GPIO identifikāciju pēc fizisko tapu numuriem resetPin = 3 # identificēt RPi fizisko tapu, kas savienota ar ESP8266 RST pin flashPin = 5 # identificēt RPi fizisko tapu, kas savienota ar ESP8266 GPIO0 tapu GPIO.setup (resetPin, GPIO. OUT) # iestatiet atiestatīšanas tapu kā izeju GPIO.setup (flashPin, GPIO. OUT) # iestatiet zibspuldzes tapu kā izeju GPIO.output (resetPin, GPIO. LOW) # kritiena spriegums RST tapas laikā. miega režīms (.2) # šīs gaidīšanas nepieciešamība ir spekulatīva GPIO. izvade (flashPin, GPIO. LOW)) # sākt boot ESP8266 time.sleep (.5) # gaidīt, kamēr ESP8266 sāk GPIO.ouput (flashPin. GPIO. HIGH) # atjaunot spriegumu GPIO pinGPIO.cleanup () # atiestatīt tapas uz RPI, lai novērstu brīdinājumus par izpildlaiku nākotnē

Termināļa maiņas atļaujās:

$ sudo chmod +x flash.py

$ sudo chmod +x reset.py

Turpmāk, kad jums jāievada programmēšanas režīms, palaidiet termināli:

$ python /flash.py

pēc koda augšupielādes, lai ieietu normālā darbības režīmā:

$ python /reset.py

Šajā brīdī, iespējams, vēlēsities atjaunināt arī ESP8266 programmaparatūru. Ir daudz tiešsaistes apmācību, kā to izdarīt, tāpēc es neiedziļināšos detaļās par to, kā to izdarīt.

2. DAĻA Arduino IDE iestatīšana

ja jums jau ir instalēta Arduino IDE, iespējams, vēlēsities izlaist sadaļu, pārliecinoties, ka jūsu IDE ir gatava ESP8266.

Programmā Rapberry Pi varat izmantot Arduino IDE, lai ieprogrammētu savu ESP8266. Ir divi veidi, kā instalēt IDE RPi:

  • izmantojot komandrindu no krātuvēm, izmantojot apt-get install
  • lejupielādējiet un instalējiet manuāli no arduino.cc.

Es ļoti iesaku iet pēdējo ceļu. Šķiet, ka IDE versija no krātuvēm ir novecojusi, un jums noteikti būs jādara vairāk, pirms esat gatavs sākt programmēt ESP8266. Lai izvairītos no problēmām, dodieties uz Arduino.cc lejupielādes lapu un lejupielādējiet Linux ARM versiju. Pēc tam saspiediet un instalējiet: ja lejupielādētā faila nosaukums izskatās apmēram šādi: arduino-X. Y. Z-linuxarm.tar.xz, lejupielādes mapē palaidiet:

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

Tam vajadzētu atspiest failu mapē arduino-X. Y. Z. Palaist:

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

Tam vajadzētu instalēt IDE. Kad instalēšana ir pabeigta, sāciet IDE.

  • No Arduino IDE dodieties uz Fails> Preferences. Preferenču loga apakšdaļā meklējiet “Papildu valdes pārvaldnieka vietrāži URL”. Laukā “Papildu pārvaldnieka vietrāži URL” ievadiet vietni https://arduino.esp8266.com/stable/package_esp8266com_index.json, noklikšķiniet uz pogas “Labi”.
  • Atveriet Rīki> Padome: XXX> Dēļu pārvaldnieks. Logā izmantojiet meklēšanu vai ritiniet uz leju, atlasiet ESP8266 tāfeles izvēlni un noklikšķiniet uz instalēt. Pagaidiet, līdz instalēšana ir pabeigta, un aizveriet logu.
  • Atkal dodieties uz Rīki> Padome: XXX un meklējiet ESP8266 dēļus. Izvēlieties vispārējo moduli ESP8266.

Tagad IDE ir gatavs programmēt ESP8266. Ievadiet vai ielīmējiet vēlamo kodu IDE logā un saglabājiet to. Noklikšķiniet uz Augšupielādēt. No termināļa palaist flash.py, tam vajadzētu pārvietot savu dēli programmēšanas režīmā. Pagaidiet dažas minūtes, līdz IDE pabeidz apkopot un augšupielādēt (piezīme: ESP-01 parasti nāk ar 2 gaismas diodēm, zilā gaismas diode mirgos, kamēr kods tiek augšupielādēts) un palaidiet reset.py. Tagad jūsu ESP-01 dēlis ir gatavs pildīt pienākumus.

Ieteicams: