Talaan ng mga Nilalaman:

Flash ESP-01 (ESP8266) Nang walang USB-to-serial Adapter Gamit ang Raspberry Pi: 3 Hakbang
Flash ESP-01 (ESP8266) Nang walang USB-to-serial Adapter Gamit ang Raspberry Pi: 3 Hakbang

Video: Flash ESP-01 (ESP8266) Nang walang USB-to-serial Adapter Gamit ang Raspberry Pi: 3 Hakbang

Video: Flash ESP-01 (ESP8266) Nang walang USB-to-serial Adapter Gamit ang Raspberry Pi: 3 Hakbang
Video: How to setup and use ESP32 Cam with Micro USB WiFi Camera 2024, Hulyo
Anonim
Flash ESP-01 (ESP8266) Nang walang USB-to-serial Adapter Gamit ang Raspberry Pi
Flash ESP-01 (ESP8266) Nang walang USB-to-serial Adapter Gamit ang Raspberry Pi

Patnubayan ka ng Instructable na ito sa kung paano magsisimulang mag-program ng iyong microcontroller ng ESP8266 sa isang module na ESP-01 WIFI. Ang kailangan mo lang upang makapagsimula (bukod sa module na ESP-01, syempre) ay

  • Raspberry Pi
  • Jumper wires
  • 10K risistor

Nais kong i-refurb ang isang lumang lampara sa kama sa modernong lampara ng LED na kinokontrol ng Alexa. Walang magarbong pag-on lang / pag-off gamit ang utos ng boses. Nag-order ako ng pinakasimpleng module ng WIFI ng ESP-01, relay at wire na may mga LED online, at lubos na nakalimutang mag-order ng USB-to-serial adapter upang i-program ang ESP8266 microcontroller. Ngunit dahil mayroon akong isang Raspberry Pi at kapwa ang Raspberry Pi at ang board ng ESP-01 ay may mga UART pin, naisip kong magagamit ko ang aking RPi upang i-program ang ESP8266 nang walang adapter.

Hakbang 1: I-configure ang Rapberry Pi

I-configure ang Rapberry Pi
I-configure ang Rapberry Pi

Gumamit ako ng Raspberry Pi 3 Model B +, gayunpaman, ang mga tagubilin ay dapat na gumana sa iba pang mga bersyon, lalo na sa modelo B.

Kaya, unang mga bagay muna - kailangan naming paganahin ang UART sa Pi.

Pumunta sa mga setting ng pagsasaayos ng RPi. Sa terminal window run

$ sudo raspi-config

Pumunta sa 5 Mga Pagpipilian sa Interfacing, pagkatapos ay piliin ang P6 Serial. Pagkatapos ay nag-prompt ka Nais mo bang ma-access ang isang shell ng pag-login sa serial? piliin dahil hindi namin nais na gamitin ang UART upang patakbuhin ang Pi na walang ulo, ngunit upang makipag-usap sa iba pang mga aparato, kaya sa sumusunod na screen kapag tinanong Gusto mo bang paganahin ang serial port hardware? pumili ka I-restart ang Pi tulad ng na-prompt. Dapat paganahin ngayon ang UART para sa Serial Communication sa RX at TX pin ng Raspberry Pi 3. Tandaan: pagkatapos nito dapat lumitaw ang isang bagong entry na paganahin ang_uart = 1 sa dulo ng /boot/config.txt.

Hakbang 2: Ikonekta ang ESP-01 sa Raspberry Pi

Ikonekta ang ESP-01 sa Raspberry Pi
Ikonekta ang ESP-01 sa Raspberry Pi

Ngayon nakakakuha kami ng kable sa lahat nang magkakasama.

Una, kilalanin ang iyong RPi 3.3V lakas at mga pin ng GND (ground) upang mapagana ang ESP8266 microcontroller, TXD (magpadala) at RXD (makatanggap) ng mga pin upang makipag-usap, at dalawang pangkalahatang layunin na pin upang mapatakbo ang ESP8266 (mga pin na maaaring maitakda alinman sa mataas o mababa) Hanapin ang pag-aayos ng pin sa pinout.xyz o i-type sa terminal:

$ pinout

Pangalawa kilalanin ang mga kinakailangang pin sa ESP-01. Ngunit sa simula kailangan nating magkaroon ng pag-unawa sa mga pin ng ESP-01. Natagpuan ko ang isang bilang ng mga kapaki-pakinabang na mapagkukunan na magagamit sa internet upang matulungan ka sa bagay na iyon. Ang isang ito ay ang pinakamaikling, habang ang isang ito ay nagbibigay ng mas mahusay na paliwanag. Sa maikli: Mayroong 8 mga pin, kakailanganin namin ang 7 sa kanila, katulad ng VCC power at GND (ground) na mga pin para sa lakas, TXD at RXD pin para sa komunikasyon, at RST (reset), CH_PD (Chip Power Down, kung minsan ay may label CH_EN o chip paganahin) at GPIO0 upang mapatakbo ang module. Karaniwan nagpapatakbo ang ESP8266 sa isang regular na mode, ngunit kapag nag-a-upload ng isang code sa ESP8266 heeds ito upang maging isang flash mode. Para sa regular o normal na mode ng pagpapatakbo ang module ay kailangang ikonekta sa kapangyarihan (malinaw naman), ngunit din ang pin na CH_PD ay dapat na konektado sa VCC sa pamamagitan ng isang 10K (ang halagang ito ay nag-iiba sa iba't ibang mga recourses, nahanap ko ang mga halaga hanggang sa 3K) pull-up risistor sa boot. sa kabilang panig, upang ipasok ang flashing o programming mode kailangan mong i-ground ang GPIO0 pin sa boot. Upang maiwasan ang walang limitasyong kasalukuyang daloy sa pamamagitan ng GPIO0 kapag saligan ay inirerekumenda na ikonekta ang GPIO0 sa lupa sa pamamagitan ng ilang mababang resistor na resistensya 300Ω - 470Ω (higit pa rito). Ang pin ng RST bilang pangalan ay nagmumungkahi na i-reset (o i-restart) ang MCU. Sa panahon ng normal na operasyon maaari itong konektado sa VCC sa pamamagitan ng isang resistor na 10K na pull-up, ngunit dapat na saligan upang mai-reset ang microcontroller. Habang laging posible na gumamit ng mga pisikal na pindutan sa ground RST at GPIO0 pin (o kahit na manu-manong sumali sa mga wires upang gayahin ang isang pindutan), mas kasiya-siyang karanasan na gamitin ang mga Raspberry Pi pin upang maitakda ang boltahe na mataas at mababa sa RST at GPIO0 ng module mga pin. Gayundin hindi na kailangan sa 10K at 470Ω resistors pagkatapos.

Ngayon na may kamalayan sa mga peculiarity ng ESP-01 na pin, maaari naming simulang ikonekta ang lahat nang magkasama. Maaari mong gamitin ang sumusunod na talahanayan bilang isang sanggunian kasama ang pagguhit sa itaas:

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)

Ikonekta ang VCC na pin sa huli. Ang halimbawang naikonekta mo ang VCC pin ang iyong Wi-Fi module ay bubuksan. Gumamit ng screen o minicom upang suriin kung ang RPi at ESP8266 ay maaaring makipag-usap gamit ang UART (tala: maaaring kailanganin mong i-install muna ang screen o minicom, dahil mukhang hindi naka-install ang mga ito sa Raspbian bilang default).

Paggamit ng screen run:

$ sudo screen / dev / serial0 115200

Paggamit ng minicom run:

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

Tandaan: maraming mga mapagkukunan sa online ang nagmumungkahi ng pagkonekta sa ESP8266 on / dev / ttyAMA0, ngunit hindi ito gumagana ng RPi 3 o mas bago (kasama ang zero W) ayon sa dokumentasyon ng RPi. Sa halip ay kumonekta sa pamamagitan ng / dev / serial0 o / dev / ttyS0.

Matapos mong ipasok ang screen o minicom, gumamit ng AT utos upang makipag-usap sa ESP8266. I-type sa AT, pagkatapos ay pindutin ang Enter at pagkatapos ay pindutin ang Ctrl + J upang magpadala ng utos. Dapat kang maging OK bilang tugon. Ang listahan ng mga magagamit na utos ng AT ay matatagpuan sa espressiff.com o dito lamang.

Ang mga aparato ay pisikal na konektado at makipag-usap sa bawat isa maaari kaming bumaba sa pagprograma ng mga pin ng RPi GPIO at, sa wakas, ang ESP8266 mismo.

Hakbang 3: Pag-setup ng Software (Python upang Patakbuhin at Arduino IDE sa Programa)

BAHAGI 1. Paggamit ng sawa upang ilipat ang mga mode na ESP8266

Tulad ng nabanggit sa itaas ay maginhawa na gamitin ang mga GPIO pin ng RPI upang ilipat ang mga mode ng pagpapatakbo ng ESP8266. Sumulat ako ng dalawang pangunahing mga code ng sawa na naglalagay ng ESP8266 sa regular o mode ng pagprograma.

Regular mode: Upang ilagay ang microcontroller sa regular na mode ng pagpapatakbo kailangan lang namin itong i-power at ikonekta ang CH_PD sa pamamagitan ng pull-up risistor sa VCC, ngunit upang ilipat ang MCU mula sa pagprograma sa normal na mode kailangan namin itong i-reset muli (isiping i-restart). Upang magawa iyon sa RPi ay babalhin namin sandali ang RPIO ng RPIO na konektado sa RST pin sa ESP-01 (bilang default ang RPi pin na ginamit ko para sa pag-reset ay nakatakda sa TAAS). Gaano kadali? Para sa akin iyon ay isang haka-haka na tanong. Maaari mong subukan ang iba't ibang mga agwat ng oras, ngunit nalaman ko na 200 - 500 ms gumagana nang maayos. Sumulat sa mga komento kung mayroon kang isang mas mahusay na ideya. I-save ang iyong code bilang reset.py

#! / usr / bin / python

i-import ang RPi. GPIO bilang oras ng pag-import ng GPIO GPIO.setmode (GPIO. BOARD) # nagtatakda ng pagkakakilanlan sa GPIO ng mga pisikal na numero ng pin na resetPin = 3 # kilalanin ang RPi pisikal na pin na konektado sa ESP8266 RST pin GPIO.setup (resetPin, GPIO. OUT) # set reset i-pin bilang output GPIO.output (resetPin, GPIO. LOW) # drop boltahe sa RST pin oras. tulog (.2) # maghintay para sa.2 s GPIO.output (resetPin, GPIO. HIGH) # ibalik ang boltahe sa RST pin GPIO. paglilinis () # reset ang mga pin sa RPI upang maiwasan ang mga babala sa runtime sa hinaharap

  • Programming mode: Upang mailagay ang MCU sa mode ng pagprogram na kailangan namin upang i-power ang ESP8266 na may GPIO0 grounded, o kahalili i-reset ito at i-ground GPIO0 habang ang pag-boot (muli ang eksaktong tagal ng pagbagsak ng boltahe ay hindi masyadong kilala sa akin, kaya huwag mahigpit ginabayan ng mga nagamit na halaga). I-save ang code bilang flash.py o i-download sa ibaba. Ang sunod-sunod na mga pagkilos ay ang mga sumusunod:

    • hilahin pababa ang RST pin
    • hilahin pababa ang GPIO0 pin
    • hilahin ang RST pin
    • hilahin ang GPIO0 pin

#! / usr / bin / python

i-import ang RPi. GPIO bilang oras ng pag-import ng GPIO GPIO.setmode (GPIO. BOARD) # nagtatakda ng pagkakakilanlan ng GPIO sa pamamagitan ng mga pisikal na numero ng pin na resetPin = 3 # kilalanin ang RPi pisikal na pin na konektado sa ESP8266 RST pin flashPin = 5 # kilalanin ang RPi pisikal na pin na konektado sa ESP8266 GPIO0 pin GPIO.setup (resetPin, GPIO. OUT) # itakda ang reset pin bilang output GPIO.setup (flashPin, GPIO. OUT) # itakda ang flash pin bilang output GPIO.output (resetPin, GPIO. LOW) # drop boltahe sa RST na oras ng pin. pagtulog (.2) # kailangan para sa paghihintay na ito ay haka-haka GPIO.output (flashPin, GPIO. LOW) # drop boltahe sa oras ng GPIO0. tulog (.2) # kailangan para sa paghihintay na ito ay mapag-isip GPIO.output (resetPin, GPIO. HIGH) # simulang i-boot ang oras ng ESP8266. makatulog (.5) # maghintay para sa ESP8266 na mag-boot ng GPIO.ouput (flashPin. GPIO. HIGH) # ibalik ang boltahe sa GPIO pinGPIO.cleanup () # reset ang mga pin sa RPI upang maiwasan ang mga babala sa runtime sa hinaharap

Sa mga pahintulot sa pagbabago ng terminal:

$ sudo chmod + x flash.py

$ sudo chmod + x reset.py

Mula ngayon tuwing kailangan mong ipasok ang mode ng programa na patakbo sa terminal:

$ python /flash.py

pagkatapos mag-upload ng code upang makapasok sa normal na run mode ng pagpapatakbo:

$ python /reset.py

Sa puntong ito maaari mo ring i-update ang ESP8266 firmware. Maraming mga online tutorial sa kung paano ito gawin, kaya't hindi ako magkakaroon ng mga detalye sa kung paano ito gawin.

BAHAGI 2. Pagse-set up ng Arduino IDE

kung mayroon ka nang naka-install na Arduino IDE, baka gusto mo ring i-skim ang seksyon na tinitiyak na handa ang iyong IDE para sa ESP8266.

Sa Rapberry Pi maaari mong gamitin ang Arduino IDE upang i-program ang iyong ESP8266. Mayroong dalawang paraan upang mai-install ang IDE sa RPi:

  • sa pamamagitan ng linya ng utos mula sa mga repository gamit ang apt-get install
  • manu-manong mag-download at mag-install mula sa arduino.cc.

Masidhi kong iminumungkahi na pumunta sa huling landas. Ang bersyon ng IDE mula sa mga repositoryo ay tila lipas na at tiyak na kailangan mong gumawa ng higit pa bago ka handa na simulan ang pag-program ng ESP8266. Upang maiwasan ang abala, pumunta sa pahina ng pag-download ng Arduino.cc at i-download ang bersyon ng Linux ARM. Susunod na hindi pag-compress at pag-install: Kung ang pangalan ng na-download na file ay mukhang isang bagay tulad ng ito arduino-X. Y. Z-linuxarm.tar.xz, sa pag-download na folder tumakbo:

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

Dapat nitong mai-compress ang file sa arduino-X. Y. Z folder. Patakbuhin:

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

Dapat nitong mai-install ang IDE. Matapos makumpleto ang pag-install, simulan ang IDE.

  • Mula sa Arduino IDE pumunta sa File> Mga Kagustuhan. Hanapin ang "Mga Karagdagang Mga URL ng Manager ng Board" sa ilalim ng window ng mga kagustuhan. Ipasok ang https://arduino.esp8266.com/stable/package_esp8266com_index.json sa patlang na "Karagdagang Mga URL ng Board Manager", i-click ang pindutang "OK".
  • Pumunta sa Tools> Board: XXX> Boards Manager. Sa window gamitin ang paghahanap o mag-scroll pababa, piliin ang menu ng board ng ESP8266 at i-click ang i-install. Maghintay para sa pag-install upang makumpleto at isara ang window.
  • Muli pumunta sa Tools> Board: XXX at hanapin ang mga board na ESP8266. Pumili ng Generic na ESP8266 Modyul.

Ngayon ang IDE ay handa nang magprograma ng ESP8266. I-type o i-paste ang nais na code sa window ng IDE at i-save ito. I-click ang I-upload. Mula sa terminal run flash.py, dapat nitong ilagay ang iyong board sa programming mode. Maghintay ng ilang minuto para matapos ang IDE sa pag-iipon at pag-upload (tandaan: Karaniwang may kasamang 2 LED ang ESP-01, ang asul na LED ay mag-flash habang ina-upload ang code) at patakbuhin ang reset.py. Ngayon ang iyong lupon ng ESP-01 ay handa nang magsagawa ng mga tungkulin.

Inirerekumendang: