Turinys:

Blykstė ESP-01 (ESP8266) be USB-serijos adapterio naudojant „Raspberry Pi“: 3 žingsniai
Blykstė ESP-01 (ESP8266) be USB-serijos adapterio naudojant „Raspberry Pi“: 3 žingsniai

Video: Blykstė ESP-01 (ESP8266) be USB-serijos adapterio naudojant „Raspberry Pi“: 3 žingsniai

Video: Blykstė ESP-01 (ESP8266) be USB-serijos adapterio naudojant „Raspberry Pi“: 3 žingsniai
Video: How to use ESP32 WiFi and Bluetooth with Arduino IDE full details with examples and code 2024, Lapkritis
Anonim
Blykstė ESP-01 (ESP8266) be USB-serijos adapterio naudojant „Raspberry Pi“
Blykstė ESP-01 (ESP8266) be USB-serijos adapterio naudojant „Raspberry Pi“

Ši instrukcija nurodo, kaip pradėti programuoti ESP8266 mikrovaldiklį naudojant ESP-01 WIFI modulį. Viskas, ko jums reikia norint pradėti (žinoma, be ESP-01 modulio)

  • Raspberry Pi
  • Jumperio laidai
  • 10K rezistorius

Norėjau atnaujinti seną naktinę lempą į modernią „Alexa“valdomą LED naktinę lempą. Nieko įmantraus tiesiog įjungti/išjungti naudojant balso komandą. Aš internetu užsisakiau paprasčiausią ESP-01 WIFI modulį, relę ir laidą su šviesos diodais ir visiškai pamiršau užsisakyti USB-nuoseklųjį adapterį programuoti ESP8266 mikrovaldiklį. Bet kadangi turėjau „Raspberry Pi“, o „Raspberry Pi“ir ESP-01 plokštė turėjo UART kaiščius, supratau, kad galiu naudoti savo RPi programuoti ESP8266 be adapterio.

1 veiksmas: sukonfigūruokite „Rapberry Pi“

Konfigūruokite „Rapberry Pi“
Konfigūruokite „Rapberry Pi“

Aš naudoju „Raspberry Pi 3 Model B+“, tačiau instrukcijos turėtų veikti su kitomis versijomis, ypač su B modeliu.

Taigi, pirmiausia - turime įgalinti UART „Pi“.

Eikite į RPi konfigūracijos nustatymus. Paleiskite terminalo langą

$ sudo raspi-config

Eikite į 5 sąsajos parinktis, tada pasirinkite P6 Serial. Tada paklausėte Ar norite, kad prisijungimo apvalkalas būtų prieinamas per serijinį ryšį? pasirinkite, nes mes nenorime naudoti UART, kad paleistume „Pi“be galvos, bet norėtume bendrauti su kitais įrenginiais, taigi kitame ekrane, kai bus klausiama Ar norite, kad serijinio prievado aparatūra būtų įjungta? pasirinkti. Iš naujo paleiskite „Pi“, kaip raginama. Dabar UART turėtų būti įjungtas „Raspberry Pi 3“RX ir TX kaiščio nuosekliajam ryšiui. Pastaba: po to /boot/config.txt pabaigoje turėtų atsirasti naujas įrašas enable_uart = 1.

2 veiksmas: prijunkite ESP-01 prie „Raspberry Pi“

Prijunkite ESP-01 prie Raspberry Pi
Prijunkite ESP-01 prie Raspberry Pi

Dabar mes viską sujungiame.

Pirma, nustatykite savo RPi 3.3V maitinimo ir GND (įžeminimo) kaiščius, kad galėtumėte maitinti ESP8266 mikrovaldiklį, TXD (perduoti) ir RXD (priimti) kaiščius, kad galėtumėte bendrauti, ir du bendrosios paskirties kaiščius, kad galėtumėte valdyti ESP8266 (kaiščius, kuriuos galima nustatyti aukštus arba žemas). Ieškokite kaiščio išdėstymo pinout.xyz arba įveskite terminalą:

$ pinout

Antra, nustatykite reikiamus kaiščius ESP-01. Tačiau pradžioje turime suprasti ESP-01 kaiščius. Internete radau daug naudingų šaltinių, kurie jums padės šiuo klausimu. Šis yra trumpiausias, o šis - daug geresnis paaiškinimas. Trumpai tariant: yra 8 smeigtukai, mums reikės 7 iš jų, būtent VCC maitinimo ir GND (įžeminimo) kaiščių, skirtų maitinimui, TXD ir RXD kaiščių, skirtų ryšiui, ir RST (atstatyti), CH_PD (lusto išjungimas, kartais pažymėtas CH_EN arba lusto įgalinimas) ir GPIO0, kad valdytų modulį. Paprastai ESP8266 veikia įprastu režimu, tačiau įkeliant kodą į ESP8266 reikia atkreipti dėmesį į blykstės režimą. Įprastam ar normaliam darbo režimui modulis turi būti prijungtas prie maitinimo (aišku), bet taip pat kaištis CH_PD turi būti prijungtas prie VCC per 10K (ši vertė skiriasi įvairiais būdais, aš radau reikšmes iki 3K) rezistorius įkrovos metu. kitoje pusėje, norėdami įjungti mirksintį ar programavimo režimą, įkrovos metu turite įžeminti GPIO0 kaištį. Siekiant užkirsti kelią neribotam srovės srautui per GPIO0, kai jis yra įžemintas, rekomenduojama GPIO0 prijungti prie žemės per tam tikrą mažo atsparumo rezistorių 300Ω - 470Ω (daugiau apie tai čia). Pavadinimas rodo, kad RST kaištis iš naujo nustato (arba iš naujo paleidžia) MCU. Įprasto veikimo metu jis gali būti prijungtas prie VCC per 10K ištraukiamąjį rezistorių, tačiau turėtų būti įžemintas, kad būtų galima iš naujo nustatyti mikrovaldiklį. Nors visada galima fiziniais mygtukais įžeminti RST ir GPIO0 kaiščius (ar net rankiniu būdu sujungti laidus, kad būtų imituojamas mygtukas), daug maloniau patirti naudojant „Raspberry Pi“kaiščius, norint nustatyti aukštą ir žemą modulio RST ir GPIO0 įtampą. smeigtukai. Tada taip pat nereikia 10K ir 470Ω rezistorių.

Dabar, žinodami apie ESP-01 kaiščių ypatumus, galime pradėti viską sujungti. Galite naudoti šią lentelę kaip nuorodą kartu su aukščiau esančiu brėžiniu:

ESP-01 Raspberry Pi

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

Paskutinį kartą prijunkite VCC kaištį. Pavyzdys, kai prijungėte VCC kaištį, įsijungs „Wi-Fi“modulis. Naudokite ekraną arba „minicom“, kad patikrintumėte, ar RPi ir ESP8266 gali bendrauti naudodami UART (pastaba: gali tekti pirmiausia įdiegti ekraną arba „minicom“, nes atrodo, kad jie pagal nutylėjimą neįdiegti „Raspbian“).

Naudojant ekrano paleidimą:

$ sudo screen /dev /serial0 115200

Naudojant „minicom run“:

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

Pastaba: daugelis internetinių išteklių siūlo prisijungti prie ESP8266, esantį /dev /ttyAMA0, tačiau tai neveikia naudojant RPi 3 ar naujesnę versiją (įskaitant nulinį W), kaip nurodyta RPi dokumentuose. Vietoj to prijunkite per /dev /serial0 arba /dev /ttyS0.

Įvedę ekraną ar „minicom“, naudokite AT komandas, kad galėtumėte bendrauti su ESP8266. Įveskite AT, tada paspauskite Enter ir paspauskite Ctrl+J, kad išsiųstumėte komandą. Reikėtų gerai atsakyti. Galimų AT komandų sąrašą galite rasti espressiff.com arba tiesiog čia.

Kai įrenginiai yra fiziškai prijungti ir kalbasi vienas su kitu, galime pradėti programuoti RPi GPIO kaiščius ir, galiausiai, patį ESP8266.

3 veiksmas: programinės įrangos sąranka („Python“valdyti ir „Arduino IDE“programuoti)

DALIS 1. Python naudojimas ESP8266 režimams perjungti

Kaip minėta aukščiau, patogu naudoti RPI GPIO kaiščius ESP8266 veikimo režimams perjungti. Aš parašiau du pagrindinius python kodus, kurie įjungė ESP8266 į įprastą arba programavimo režimą.

Įprastas režimas: norėdami įjungti mikrovaldiklį į įprastą veikimo režimą, mes tiesiog turime jį įjungti ir prijungti CH_PD per traukimo rezistorių prie VCC, tačiau norėdami perjungti MCU iš programavimo į įprastą režimą, turime jį iš naujo nustatyti (pagalvokite apie paleidimą iš naujo). Norėdami tai padaryti RPi, mes trumpai ištrauksime RPi GPIO, prijungtą prie RST kaiščio ESP-01 (pagal numatytuosius nustatymus RPi kaištis, kurį naudoju atstatant, nustatytas į HIGH). Kaip trumpai? Man tai yra spekuliacinis klausimas. Galite išbandyti skirtingus laiko intervalus, tačiau pastebėjau, kad 200–500 ms veikia puikiai. Rašykite komentaruose, jei turite geresnių minčių. Išsaugokite kodą kaip reset.py

#!/usr/bin/python

importuoti RPi. GPIO kaip GPIO importo laiką GPIO.setmode (GPIO. BOARD) # nustato GPIO identifikavimą pagal fizinius kaiščių numerius resetPin = 3 # nustatyti RPi fizinį kaištį, prijungtą prie ESP8266 RST kaiščio GPIO.setup (resetPin, GPIO. OUT) # nustatyti iš naujo PIN kaip išvestis GPIO.output (resetPin, GPIO. LOW) # kritimo įtampa ant RST kaiščio time.sleep (.2) # laukti.2 s GPIO. output (resetPin, GPIO. HIGH) # atkurti įtampą ant RST kaiščio GPIO. cleanup () # iš naujo nustatykite RPI kaiščius, kad ateityje išvengtumėte įspėjimų vykdymo metu

  • Programavimo režimas: Norėdami įjungti MCU į programavimo režimą, turime įjungti ESP8266 įžemintu GPIO0 arba paleisti jį iš naujo ir įžeminti GPIO0 paleidžiant (vėl tiksli įtampos kritimo trukmė man nėra žinoma, todėl nesakykite griežtai) vadovaujasi naudojamomis vertėmis). Išsaugokite kodą kaip „flash.py“arba atsisiųskite žemiau. Veiksmų seka yra tokia:

    • patraukite žemyn RST kaištį
    • patraukite žemyn GPIO0 kaištį
    • ištraukite RST kaištį
    • ištraukite GPIO0 kaištį

#!/usr/bin/python

importuoti RPi. GPIO kaip GPIO importo laiką GPIO.setmode (GPIO. BOARD) # nustato GPIO identifikavimą pagal fizinius kaiščių numerius resetPin = 3 # identifikuoti RPi fizinį kaištį, prijungtą prie ESP8266 RST kaiščio „flashPin“= 5 # nustatyti RPi fizinį kaištį, prijungtą prie ESP8266 GPIO0 kaiščio GPIO.setup (resetPin, GPIO. OUT) # nustatykite atstatymo kaištį kaip išvestį GPIO.setup (flashPin, GPIO. OUT) # nustatykite blykstės kaištį kaip išvestį GPIO.output (resetPin, GPIO. LOW) # sumažinkite įtampą RST kaiščio metu. miego režimas (.2) # šio laukimo poreikis yra spekuliacinis GPIO. išėjimas („flashPin“, GPIO. LOW)) # pradėkite paleisti ESP8266 time.sleep (.5) # palaukite, kol ESP8266 paleis GPIO.ouput (flashPin. GPIO. HIGH) # atkurti GPIO pin įtampą

Terminalo keitimo leidimuose:

$ sudo chmod +x flash.py

$ sudo chmod +x reset.py

Nuo šiol, kai reikia įvesti programavimo režimą, paleiskite terminalą:

$ python /flash.py

įkėlus kodą įeiti į įprastą veikimo režimą:

$ python /reset.py

Šiuo metu taip pat galbūt norėsite atnaujinti ESP8266 programinę -aparatinę įrangą. Yra daug internetinių vadovėlių, kaip tai padaryti, todėl nesigilinsiu į tai, kaip tai padaryti.

2 DALIS. „Arduino IDE“nustatymas

jei jau esate įdiegę „Arduino IDE“, vis tiek galbūt norėsite peržiūrėti šį skyrių ir įsitikinti, kad jūsų IDE yra paruoštas ESP8266.

„Rapberry Pi“galite naudoti „Arduino IDE“savo ESP8266 programavimui. Yra du būdai, kaip įdiegti IDE RPi:

  • per komandų eilutę iš saugyklų naudojant apt-get install
  • atsisiųskite ir įdiekite rankiniu būdu iš arduino.cc.

Aš primygtinai siūlau eiti pastaruoju keliu. Atrodo, kad IDE versija iš saugyklų yra pasenusi, ir jūs tikrai turėsite padaryti daugiau, kol būsite pasirengę pradėti programuoti ESP8266. Norėdami išvengti vargo, eikite į „Arduino.cc“atsisiuntimo puslapį ir atsisiųskite „Linux ARM“versiją. Toliau atspauskite ir įdiekite: jei atsisiųsto failo pavadinimas atrodo maždaug taip, arduino-X. Y. Z-linuxarm.tar.xz, atsisiuntimo aplanke paleiskite:

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

Tai turėtų atspausti failą į aplanką arduino-X. Y. Z. Vykdyti:

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

Tai turėtų įdiegti IDE. Baigę diegti paleiskite IDE.

  • Iš „Arduino IDE“eikite į Failas> Nuostatos. Nuostatų lango apačioje ieškokite „Papildomi valdytojo URL“. Į lauką „Papildomi valdytojo URL“įveskite https://arduino.esp8266.com/stable/package_esp8266com_index.json, spustelėkite mygtuką „Gerai“.
  • Eikite į Įrankiai> Lenta: XXX> Lentų tvarkytuvė. Lange naudokite paiešką arba slinkite žemyn, pasirinkite ESP8266 plokštės meniu ir spustelėkite įdiegti. Palaukite, kol diegimas bus baigtas, ir uždarykite langą.
  • Vėl eikite į Įrankiai> Lenta: XXX ir ieškokite ESP8266 plokščių. Pasirinkite bendrąjį ESP8266 modulį.

Dabar IDE yra pasirengusi programuoti ESP8266. Įveskite arba įklijuokite norimą kodą į IDE langą ir išsaugokite jį. Spustelėkite Įkelti. Iš terminalo paleiskite „flash.py“, tai turėtų įjungti jūsų plokštę į programavimo režimą. Palaukite kelias minutes, kol IDE baigs rinkti ir įkelti (pastaba: ESP-01 paprastai būna su 2 šviesos diodais, mėlynas šviesos diodas mirksi, kol įkeliamas kodas) ir paleiskite reset.py. Dabar jūsų ESP-01 plokštė yra pasirengusi atlikti pareigas.

Rekomenduojamas: