Innholdsfortegnelse:
- Trinn 1: Konfigurer Rapberry Pi
- Trinn 2: Koble ESP-01 til Raspberry Pi
- Trinn 3: Programvareoppsett (Python to Operate og Arduino IDE til å programmere)
Video: Flash ESP-01 (ESP8266) Uten USB-til-seriell adapter ved bruk av Raspberry Pi: 3 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Denne instruksjonsguiden veileder deg om hvordan du begynner å programmere din ESP8266 mikrokontroller på en ESP-01 WIFI-modul. Alt du trenger for å komme i gang (foruten ESP-01-modulen, selvfølgelig) er
- Bringebær Pi
- Jumper ledninger
- 10K motstand
Jeg ønsket å pusse opp en gammel nattlampe til moderne Alexa -kontrollert LED -nattlampe. Ikke noe fancy bare å slå den på/av ved hjelp av talekommando. Jeg bestilte den enkleste ESP-01 WIFI-modulen, relé og ledning med lysdioder online, og glemte helt å bestille USB-til-seriell adapter for å programmere ESP8266 mikrokontroller. Men siden jeg hadde en Raspberry Pi og både Raspberry Pi og ESP-01-kortet hadde UART-pinner, tenkte jeg at jeg kunne bruke min RPi til å programmere ESP8266 uten adapteren.
Trinn 1: Konfigurer Rapberry Pi
Jeg brukte Raspberry Pi 3 Model B+, men instruksjonene skulle fungere på andre versjoner, spesielt på modell B.
Så, først og fremst - vi må aktivere UART på Pi.
Gå til RPi -konfigurasjonsinnstillinger. Kjør i terminalvinduet
$ sudo raspi-config
Gå til 5 grensesnittalternativer, og velg deretter P6 Serial. Du spurte deretter. Vil du at et påloggingsskall skal være tilgjengelig via serie? velg siden vi ikke vil bruke UART til å kjøre Pi -hodeløs, men for å kommunisere med andre enheter, derfor på følgende skjermbilde når du blir spurt Vil du at maskinvaren for seriell port skal være aktivert? plukke ut. Start Pi på nytt når du blir bedt om det. UART skal nå være aktivert for seriell kommunikasjon på RX- og TX -pin på Raspberry Pi 3. Merk: Etter dette skal det vises en ny oppføring enable_uart = 1 på slutten av /boot/config.txt.
Trinn 2: Koble ESP-01 til Raspberry Pi
Nå begynner vi å koble alt sammen.
For det første, identifiser på RPi 3.3V strøm- og GND (jord) pinner for å drive ESP8266 mikrokontroller, TXD (overfør) og RXD (motta) pinner for å kommunisere, og to generelle pinner for å betjene ESP8266 (pinner som kan settes enten høye eller lav). Slå opp pin -arrangement på pinout.xyz eller skriv inn terminal:
$ pinout
For det andre, identifiser nødvendige pinner på ESP-01. Men i begynnelsen må vi ha forståelse for ESP-01-pinnene. Jeg fant en rekke nyttige ressurser tilgjengelig på internett for å hjelpe deg i den forbindelse. Denne er den korteste, mens denne gir så mye bedre forklaring. Kort sagt: Det er 8 pins, vi kommer til å trenge 7 av dem, nemlig VCC power og GND (ground) pins for power, TXD og RXD pins for Communication, og RST (reset), CH_PD (Chip Power Down, noen ganger merket CH_EN eller chip -aktivering) og GPIO0 for å betjene modulen. Vanligvis opererer ESP8266 i vanlig modus, men når du laster opp en kode til ESP8266, er det viktig å være i flash -modus. For vanlig eller normal driftsmodus må modulen (åpenbart) kobles til strøm, men også pinnen CH_PD må kobles til VCC via en 10K (denne verdien varierer i forskjellige ressurser, jeg fant verdier ned til 3K) pull-up motstand ved oppstart. på den andre siden, for å gå inn i blinkende eller programmeringsmodus, må du koble GPIO0 -pinnen ved oppstart. For å forhindre ubegrenset strømtilførsel via GPIO0 når den er jordet, anbefales det å koble GPIO0 til bakken via en lavmotstandsmotstand 300Ω - 470Ω (mer om dette her). RST -pinnen, som navnet antyder, tilbakestiller (eller starter på nytt) MCU. Under normal drift kan den være koblet til VCC via en 10K opptrekkmotstand, men den bør jordes for å tilbakestille mikrokontrolleren. Selv om det alltid er mulig å bruke fysiske knapper til å jorde RST- og GPIO0 -pinner (eller til og med manuelt koble ledninger for å simulere en knapp), er det mye mer behagelig å bruke Raspberry Pi -pinner for å sette spenning høyt og lavt på modulens RST og GPIO0 pinner. Det er heller ikke behov for 10K og 470Ω motstander da.
Nå som vi er klar over ESP-01-pinsens særegenheter, kan vi begynne å koble alt sammen. Du kan bruke følgende tabell som referanse sammen med tegningen ovenfor:
ESP-01 Raspberry Pi
- VCC (3.3V) pin #1 (3.3V)
- GND pin #6 (GND)
- TXD pin #10 (RXD / BCM 15)
- RXD -pinne #8 (TXD / BCM 14)
- CH_PD pin #1 (3.3V)
- RST pin #3 (BCM 2)
- GPIO 0 pin #5 (BMC 5)
Koble VCC -pinnen den siste. Forekomsten du koblet VCC-pinnen til Wi-Fi-modulen din slås på. Bruk skjerm eller minicom for å sjekke om RPi og ESP8266 kan kommunisere med UART (merk: du må kanskje installere skjermen eller minicom først, da det ikke ser ut til at de er installert på Raspbian som standard).
Bruke skjermkjøring:
$ sudo skjerm /dev /serial0 115200
Bruke minicom run:
$ sudo minicom -b 115200 -o -D /dev /serial0
Merk: mange elektroniske ressurser foreslår å koble til ESP8266 on /dev /ttyAMA0, men dette fungerer ikke for RPi 3 eller nyere (inkludert null W) i henhold til RPi -dokumentasjon. Koble til via /dev /serial0 i stedet eller /dev /ttyS0.
Etter at du har angitt skjerm eller minikom, bruker du AT -kommandoer til å kommunisere med ESP8266. Skriv inn AT, trykk deretter Enter og trykk deretter Ctrl+J for å sende kommando. Du bør få OK som svar. Liste over tilgjengelige AT -kommandoer finner du på espressiff.com eller bare her.
Enhetene er fysisk tilkoblet og snakker med hverandre, vi kan komme i gang med å programmere RPi GPIO -pinnene og til slutt selve ESP8266.
Trinn 3: Programvareoppsett (Python to Operate og Arduino IDE til å programmere)
DEL 1. Bruk python til å bytte ESP8266 -modus
Som nevnt ovenfor er det praktisk å bruke RPIs GPIO -pinner for å bytte driftsmodus for ESP8266. Jeg skrev to grunnleggende pythonkoder som satte ESP8266 i vanlig eller programmeringsmodus.
Vanlig modus: For å sette mikrokontrolleren i normal driftsmodus trenger vi bare å slå den på og koble CH_PD via opptrekkmotstand til VCC, men for å bytte MCU fra programmering til normal modus må vi tilbakestille den (tenk omstart). For å gjøre det på RPi skal vi kort trekke ned RPi's GPIO koblet til RST-pin på ESP-01 (RPi-pinnen jeg brukte for tilbakestilling er som standard satt til HIGH). Hvor kort? For meg er det et spekulativt spørsmål. Du kan prøve forskjellige tidsintervaller, men jeg fant ut at 200 - 500 ms fungerer helt fint. Skriv i kommentarene hvis du har en bedre idé. Lagre koden som reset.py
#!/usr/bin/python
import RPi. GPIO som GPIO importtid GPIO.setmode (GPIO. BOARD) # angir GPIO -identifikasjon med fysiske pin -tall resetPin = 3 # identifiser RPi fysisk pin koblet til ESP8266 RST -pin GPIO.setup (resetPin, GPIO. OUT) # set reset pin som utgang GPIO.output (resetPin, GPIO. LOW) # fallspenning på RST -pin -tid. sov (.2) # vent på.2 s GPIO.output (resetPin, GPIO. HIGH) # gjenopprett spenning på RST -pin GPIO. opprydding () # tilbakestill pinner på RPI for å forhindre fremtidige advarsler om kjøretid
-
Programmeringsmodus: For å sette MCU i programmeringsmodus må vi slå ESP8266 på med GPIO0 jordet, eller alternativt tilbakestille den og koble GPIO0 under oppstart (igjen er nøyaktig varighet av spenningsfallene ikke helt kjent for meg, så vær ikke strengt styrt av brukte verdier). Lagre koden som flash.py eller last ned nedenfor. Handlingenes rekkefølge er følgende:
- trekk ned RST -pinnen
- trekk ned GPIO0 -pinnen
- trekk opp RST -pinnen
- trekk opp GPIO0 -pinnen
#!/usr/bin/python
importer RPi. GPIO som GPIO importtid GPIO.setmode (GPIO. BOARD) # angir GPIO -identifikasjon med fysiske pin -tall resetPin = 3 # identifiser RPi fysisk pin koblet til ESP8266 RST pin flashPin = 5 # identifiser RPi fysisk pin koblet til ESP8266 GPIO0 pin GPIO.setup (resetPin, GPIO. OUT) # set reset reset pin as output GPIO.setup (flashPin, GPIO. OUT) # set flash flash as output GPIO.output (resetPin, GPIO. LOW) # drop voltage on RST pin time. søvn (.2) # behov for denne ventetiden er spekulativ GPIO.output (flashPin, GPIO. LOW) # fallspenning på GPIO0 time.sleep (.2) # behovet for denne ventetiden er spekulativ GPIO.output (resetPin, GPIO. HIGH) # start oppstart av ESP8266 time.sleep (.5) # vent på at ESP8266 starter GPIO.ouput (flashPin. GPIO. HIGH) # gjenopprett spenning på GPIO pinGPIO.cleanup () # tilbakestill pinner på RPI for å forhindre fremtidige kjøretidsadvarsler
I terminalendringstillatelser:
$ sudo chmod +x flash.py
$ sudo chmod +x reset.py
Fra nå av når du trenger å gå inn i programmeringsmodus, kjør i terminalen:
$ python /flash.py
etter å ha lastet opp koden for å gå inn i normal driftsmodus:
$ python /reset.py
På dette tidspunktet vil du kanskje også oppdatere fastvaren til ESP8266. Det er mange online opplæringsprogrammer om hvordan du gjør det, så jeg skal ikke gå inn på detaljer om hvordan du gjør det.
DEL 2. Sette opp Arduino IDE
Hvis du allerede har Arduino IDE installert, kan det være lurt å gå gjennom delen og sørge for at IDE er klar for ESP8266.
På Rapberry Pi kan du bruke Arduino IDE til å programmere ESP8266. Det er to måter å installere IDE på RPi:
- via kommandolinje fra lagre som bruker apt-get install
- last ned og installer manuelt fra arduino.cc.
Jeg foreslår på det sterkeste å gå den siste veien. IDE -versjonen fra depotene ser ut til å være foreldet, og du må absolutt gjøre mer før du er klar til å begynne å programmere ESP8266. For å unngå bryet, gå til nedlastingssiden for Arduino.cc og last ned Linux ARM -versjonen. Neste komprimere og installere: Hvis navnet på den nedlastede filen ser omtrent ut som denne arduino-X. Y. Z-linuxarm.tar.xz, i nedlastingsmappen, kjør:
$ tar -xvf arduino-X. Y. Z-linuxarm.tar.xz
Dette bør pakke ut filen til mappen arduino-X. Y. Z. Løpe:
$ sudo./arduino-X. Y. Z/install.sh
Dette bør installere IDE. Etter at installasjonen er fullført, starter du IDE.
- Fra Arduino IDE går du til Fil> Innstillinger. Se etter "Ekstra Board Manager -URLer" nederst i innstillingsvinduet. Skriv inn https://arduino.esp8266.com/stable/package_esp8266com_index.json i feltet "Ekstra styringsleder -URLer" -feltet, klikk på "OK" -knappen.
- Gå til Tools> Board: XXX> Boards Manager. Bruk søk eller bla ned i vinduet, velg ESP8266 -kortmenyen og klikk på installer. Vent til installasjonen er fullført og lukk vinduet.
- Gå igjen til Tools> Board: XXX og se etter ESP8266 boards. Velg generisk ESP8266 -modul.
Nå er IDE klar til å programmere ESP8266. Skriv inn eller lim inn ønsket kode i IDE -vinduet og lagre den. Klikk på Last opp. Fra terminal run flash.py, bør dette sette kortet ditt i programmeringsmodus. Vent noen minutter før IDE er ferdig med å kompilere og laste opp (merk: ESP-01 leveres vanligvis med 2 lysdioder, den blå lysdioden blinker mens koden lastes opp) og kjører reset.py. Nå er ESP-01-kortet ditt klart til å utføre oppgaver.
Anbefalt:
Lag ditt eget Rock Band Ekit Adapter (uten Legacy Adapter), ikke -ødeleggende !: 10 trinn
Lag din egen Rock Band Ekit -adapter (uten eldre adapter), ikke -ødeleggende !: Etter å ha hørt en populær podcast -vert nevne bekymringen for at den kablede USB -legacy -adapteren hans døde, søkte jeg en DIY -løsning for å koble til en bedre/tilpasset eKit til RB . Takk til Mr DONINATOR på Youtube som lagde en video med detaljer om hans lignende side
Digital klokke ved bruk av mikrokontroller (AT89S52 uten RTC -krets): 4 trinn (med bilder)
Digital klokke ved bruk av mikrokontroller (AT89S52 uten RTC -krets): La oss beskrive en klokke … " Klokke er en enhet som teller og viser tid (relativ) " . MERK: det vil ta 2-3 minutter å lese. Les hele prosjektet, ellers vil jeg ikke
Slik snakker du flere ESP via ESP-NOW ved bruk av ESP32 og ESP8266: 8 trinn
Slik snakker du flere ESP via ESP-NOW Ved hjelp av ESP32 og ESP8266: På mitt pågående prosjekt trenger jeg flere ESP for å snakke med hverandre uten en ruter. For å gjøre dette bruker jeg ESP-NOW til å få trådløs kommunikasjon med hverandre uten en ruter på ESP
Naviger robot med skosensorer, uten GPS, uten kart: 13 trinn (med bilder)
Naviger i roboten med skosensorer, uten GPS, uten kart: Roboten beveger seg i en forhåndsprogrammert bane og sender (over bluetooth) sin faktiske bevegelsesinformasjon til en telefon for sporing i sanntid. Arduino er forhåndsprogrammert med bane og oblu brukes til å registrere robotens bevegelse. oblu sender bevegelse til
Bruk Orange Pi Uten Monitor ved å bruke SSH og VNC Server: 6 trinn
Bruk Orange Pi uten skjerm ved å bruke SSH og VNC Server: Orange Pi er som en minidatamaskin. Den har alle grunnleggende porter som en vanlig datamaskin har. Som HDMIUSBEthernetIT har noen spesielle porter som USB -OTGGPIO -hoderSD -kortsporParallell kameraport Hvis du vil bruke oransje pi, må du ha behov for