INHOUDSOPGAWE:

Flash ESP-01 (ESP8266) Sonder USB-na-seriële adapter met Raspberry Pi: 3 stappe
Flash ESP-01 (ESP8266) Sonder USB-na-seriële adapter met Raspberry Pi: 3 stappe

Video: Flash ESP-01 (ESP8266) Sonder USB-na-seriële adapter met Raspberry Pi: 3 stappe

Video: Flash ESP-01 (ESP8266) Sonder USB-na-seriële adapter met Raspberry Pi: 3 stappe
Video: ESP32 Tutorial 53 - Build an LCD Internet Clock | SunFounder's ESP32 IoT Learnig kit 2024, Julie
Anonim
Flash ESP-01 (ESP8266) Sonder USB-na-seriële adapter met Raspberry Pi
Flash ESP-01 (ESP8266) Sonder USB-na-seriële adapter met Raspberry Pi

Hierdie instruksies lei u hoe u u ESP8266-mikrobeheerder op 'n ESP-01 WIFI-module kan begin programmeer. Al wat u nodig het om aan die gang te kom (behalwe die ESP-01-module natuurlik) is

  • Framboos Pi
  • Springdrade
  • 10K weerstand

Ek wou 'n ou bedlamp opknap in moderne Alexa -beheerde LED -naglamp. Daar is niks anders as om dit net met stemopdrag aan/uit te skakel nie. Ek het die eenvoudigste ESP-01 WIFI-module, relais en draad met LED's aanlyn bestel, en ek het heeltemal vergeet om 'n USB-na-seriële adapter te bestel om die ESP8266 mikrokontroller te programmeer. Maar aangesien ek 'n Raspberry Pi gehad het en beide die Raspberry Pi en die ESP-01-bord UART-penne gehad het, het ek gedink ek kan my RPi gebruik om ESP8266 sonder die adapter te programmeer.

Stap 1: Stel Rapberry Pi op

Stel Rapberry Pi op
Stel Rapberry Pi op

Ek het Raspberry Pi 3 Model B+gebruik, maar instruksies moet op ander weergawes werk, veral op model B.

Dus, eerstens - ons moet UART inskakel op Pi.

Gaan na die RPi -konfigurasie -instellings. Begin in terminale venster

$ sudo raspi-config

Gaan na 5 koppelvlakopsies en kies dan P6 Serial. U het toe gevra: Wil u hê dat 'n aanmeldskulp toeganklik is via die reeks? kies, aangesien ons nie UART wil gebruik om die Pi sonder kop uit te voer nie, maar om met ander toestelle te kommunikeer, daarom op die volgende skerm wanneer u gevra word. Wil u hê dat die hardeware van die seriële poort geaktiveer moet word? kies. Herbegin die Pi soos aangedui. UART moet nou aangeskakel wees vir seriële kommunikasie op RX- en TX -pen van Raspberry Pi 3. Let wel: hierna moet 'n nuwe inskrywing enable_uart = 1 verskyn aan die einde van /boot/config.txt.

Stap 2: Koppel ESP-01 aan Raspberry Pi

Koppel ESP-01 aan Raspberry Pi
Koppel ESP-01 aan Raspberry Pi

Nou begin ons alles bymekaar sit.

Eerstens, identifiseer op u RPi 3.3V krag- en GND (grond) penne om die ESP8266 mikrokontroleerder, TXD (stuur) en RXD (ontvang) penne om te kommunikeer, en twee penne vir algemene doeleindes om ESP8266 te bedien (penne wat hoog of laag). Soek penreëling op pinout.xyz of tik terminale in:

$ pinout

Identifiseer tweedens die nodige penne op ESP-01. Maar in die begin moet ons kennis dra van die ESP-01-penne. Ek het 'n aantal nuttige hulpbronne op die internet gevind om u in hierdie verband te help. Hierdie een is die kortste, terwyl hierdie soveel beter verduideliking gee. Kortom: daar is 8 penne, ons benodig 7 daarvan, naamlik VCC -krag en GND (grond) penne vir krag, TXD- en RXD -penne vir kommunikasie, en RST (reset), CH_PD (Chip Power Down, soms gemerk CH_EN of chip enable) en GPIO0 om die module te bestuur. Gewoonlik werk ESP8266 in 'n gewone modus, maar as u 'n kode na ESP8266 oplaai, moet dit in 'n flitsmodus wees. Vir normale of normale modus moet die module (natuurlik) aan die krag gekoppel word, maar ook moet die pin CH_PD via VCC via 'n 10K (hierdie waarde wissel in verskillende hulpbronne, die waarde tot 3K) gevind word weerstand by laaibak. aan die ander kant, om die flits- of programmeermodus te betree, moet u die GPIO0 -pen tydens die opstart aard. Om onbeperkte stroomvloei via GPIO0 te voorkom wanneer dit geaard word, word dit aanbeveel om GPIO0 aan te sluit via 'n lae weerstandsweerstand 300Ω - 470Ω (meer hieroor). Die RST -pen, soos die naam aandui, herstel die MCU (of herbegin). Tydens normale werking kan dit via 'n optrekweerstand van 10K aan VCC gekoppel word, maar dit moet geaard wees om die mikrobeheerder terug te stel. Alhoewel dit altyd moontlik is om fisiese knoppies te gebruik om RST- en GPIO0 -penne te grond (of selfs handmatig aan drade te koppel om 'n knoppie te simuleer), is dit baie aangenamer om Raspberry Pi -penne te gebruik om spanning hoog en laag op die module se RST en GPIO0 te stel penne. Ook is daar geen behoefte aan 10K- en 470Ω -weerstande nie.

Omdat ons bewus is van die eienaardighede van die ESP-01-penne, kan ons begin om alles aan mekaar te koppel. U kan die volgende tabel as 'n verwysing saam met die tekening hierbo gebruik:

ESP-01 Framboos Pi

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

Koppel die laaste VCC -pen. Die instansie waarop u die VCC-pin gekoppel het, sal u Wi-Fi-module aanskakel. Gebruik die skerm of minicom om te kyk of RPi en ESP8266 met UART kan kommunikeer (let op: u moet moontlik eers skerm of minicom installeer, aangesien dit skynbaar nie standaard op Raspbian geïnstalleer is nie).

Gebruik skermloop:

$ sudo skerm /dev /serial0 115200

Gebruik minicom run:

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

Opmerking: baie aanlynbronne stel voor dat u met ESP8266 op /dev /ttyAMA0 aansluit, maar dit werk nie volgens RPi 3 of later (insluitend nul W) volgens RPi -dokumentasie. Koppel eerder via /dev /serial0 of /dev /ttyS0.

Nadat u die skerm of minicom ingevoer het, gebruik AT -opdragte om met ESP8266 te kommunikeer. Tik AT, druk dan Enter en druk dan Ctrl+J om die opdrag te stuur. U behoort OK te kry as antwoord. 'N Lys met beskikbare AT -opdragte kan gevind word op espressiff.com of net hier.

Die toestelle is fisies verbind en met mekaar praat, kan ons begin met die programmering van die RPi GPIO -penne en uiteindelik die ESP8266 self.

Stap 3: sagteware -opstelling (Python om te bedryf en Arduino IDE om te programmeer)

DEEL 1. Gebruik python om van ESP8266 -modusse te skakel

Soos hierbo genoem, is dit gerieflik om die GPIO -penne van RPI te gebruik om die modus van ESP8266 te verander. Ek het twee basiese luislangkodes geskryf wat ESP8266 in die gewone of programmeermodus plaas.

Gewone modus: om die mikrobeheerder in die gewone modus te plaas, hoef ons dit net aan te skakel en CH_PD via 'n optelweerstand aan te sluit op VCC, maar om die MCU van programmeer na die normale modus oor te skakel, moet ons dit herstel (dink herbegin). Om dit op RPi te doen, gaan ons die GPIO van die RPi wat gekoppel is aan die RST-pen op ESP-01 kortliks afneem (standaard is die RPi-pen wat ek gebruik het om terug te stel op HOOG). Hoe kortliks? Vir my is dit 'n spekulatiewe vraag. U kan verskillende tydsintervalle probeer, maar ek het gevind dat 200 - 500 ms baie goed werk. Skryf in die kommentaar as u 'n beter idee het. Stoor u kode as reset.py

#!/usr/bin/python

invoer RPi. GPIO as GPIO invoer tyd GPIO.setmode (GPIO. BOARD) # stel GPIO identifikasie deur fisiese speldnommers resetPin = 3 # identifiseer RPi fisiese pen gekoppel aan ESP8266 RST pen GPIO.setup (resetPin, GPIO. OUT) # stel herstel pen as uitgang GPIO.output (resetPin, GPIO. LOW) # valspanning op RST -pin -tyd. slaap (.2) # wag vir.2 s GPIO.output (resetPin, GPIO. HIGH) # herstel spanning op RST -pin GPIO. opruim () # stel penne op RPI terug om toekomstige waarskuwings oor tydsduur te voorkom

  • Programmeermodus: Om die MCU in die programmeermodus te plaas, moet ons die ESP8266 met GPIO0 -aarding aanskakel, of alternatiewelik herstel en die GPIO0 maal tydens die opstart (weer is die presiese duur van die spanningsvalle nie heeltemal bekend nie, dus moenie streng wees nie gelei deur gebruikte waardes). Stoor kode as flash.py of laai hieronder af. Die opeenvolging van aksies is die volgende:

    • trek die RST -pen af
    • trek die GPIO0 -pen af
    • trek die RST -pen op
    • trek GPIO0 -pen op

#!/usr/bin/python

invoer RPi. GPIO as GPIO invoer tyd GPIO.setmode (GPIO. BOARD) # stel GPIO identifikasie deur fisiese speldnommers resetPin = 3 # identifiseer RPi fisiese pen gekoppel aan ESP8266 RST pen flitsPin = 5 # identifiseer RPi fisiese pen gekoppel aan ESP8266 GPIO0 pen GPIO.setup (resetPin, GPIO. OUT) # stel resetpen as uitset GPIO.setup (flashPin, GPIO. OUT) # stel flitspen as output GPIO.output (resetPin, GPIO. LOW) # drukspanning op RST -pen tyd in. slaap (.2) # behoefte aan hierdie wag is spekulatiewe GPIO.output (flashPin, GPIO. LOW) # valspanning op GPIO0 time.sleep (.2) # need for this waiting is speculative GPIO.output (resetPin, GPIO. HIGH) # begin ESP8266 time.sleep (.5) # wag vir ESP8266 om GPIO.ouput (flashPin. GPIO. HIGH) op te laai # herstel spanning op GPIO pinGPIO.cleanup () # reset penne op RPI om toekomstige waarskuwings oor tydsduur te voorkom

In toestemmings vir terminale verandering:

$ sudo chmod +x flash.py

$ sudo chmod +x reset.py

Van nou af, wanneer u in die programmeermodus moet gaan, moet u in die terminale werk:

$ python /flash.py

na die oplaai van kode om die normale werking af te voer, loop:

$ python /reset.py

Op hierdie stadium wil u ook die firmware van die ESP8266 opdateer. Daar is baie aanlyn -tutoriale oor hoe om dit te doen, so ek gaan nie in op besonderhede oor hoe om dit te doen nie.

DEEL 2. Opstel van Arduino IDE

As u reeds Arduino IDE geïnstalleer het, wil u nog steeds deur die gedeelte kyk en seker maak dat u IDE gereed is vir ESP8266.

Op Rapberry Pi kan u Arduino IDE gebruik om u ESP8266 te programmeer. Daar is twee maniere om die IDE op RPi te installeer:

  • via opdragreël vanaf bewaarplekke met apt-get install
  • laai en installeer handmatig vanaf arduino.cc.

Ek stel sterk voor om laasgenoemde weg te volg. Die IDE -weergawe van bewaarplekke blyk verouderd te wees, en u sal beslis meer moet doen voordat u gereed is om ESP8266 te begin programmeer. Om die moeite te vermy, gaan na die aflaai -bladsy van Arduino.cc en laai die Linux ARM -weergawe af. Komprimeer en installeer dan volgende: As die naam van die afgelaaide lêer so lyk soos hierdie arduino-X. Y. Z-linuxarm.tar.xz, loop in die aflaai-lêergids:

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

Dit moet die lêer uitpak in die arduino-X. Y. Z-lêergids. Hardloop:

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

Dit moet die IDE installeer. Nadat die installasie voltooi is, begin die IDE.

  • Gaan vanaf die Arduino IDE na File> Preferences. Soek onder 'Aanvullende bestuurder -URL's' onderaan die voorkeure -venster. Voer https://arduino.esp8266.com/stable/package_esp8266com_index.json in die veld "Addisionele bordbestuurder -URL's" in, klik op die "OK" -knoppie.
  • Gaan na Tools> Board: XXX> Boards Manager. Gebruik soek of blaai in die venster, kies die ESP8266 -bordkieslys en klik op installeer. Wag totdat die installasie voltooi is en sluit die venster.
  • Gaan weer na Tools> Board: XXX en soek ESP8266 -borde. Kies die generiese ESP8266 -module.

Nou is IDE gereed om ESP8266 te programmeer. Tik of plak die gewenste kode in die IDE -venster en stoor dit. Klik op Laai op. Vanaf terminale hardloop flash.py, behoort dit u bord in die programmeermodus te plaas. Wag 'n paar minute totdat die IDE klaar is met die opstel en oplaai (let op: ESP-01 kom gewoonlik met 2 LED's, die blou LED sal flits terwyl die kode opgelaai word) en reset.py word uitgevoer. Nou is u ESP-01-bord gereed om pligte uit te voer.

Aanbeveel: