Innholdsfortegnelse:

Flash ESP-01 (ESP8266) Uten USB-til-seriell adapter ved bruk av Raspberry Pi: 3 trinn
Flash ESP-01 (ESP8266) Uten USB-til-seriell adapter ved bruk av Raspberry Pi: 3 trinn

Video: Flash ESP-01 (ESP8266) Uten USB-til-seriell adapter ved bruk av Raspberry Pi: 3 trinn

Video: Flash ESP-01 (ESP8266) Uten USB-til-seriell adapter ved bruk av Raspberry Pi: 3 trinn
Video: Как запрограммировать модуль реле Wi-Fi ESP8266 ESP-01 2024, November
Anonim
Flash ESP-01 (ESP8266) Uten USB-til-seriell adapter ved bruk av Raspberry Pi
Flash ESP-01 (ESP8266) Uten USB-til-seriell adapter ved bruk av Raspberry Pi

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

Konfigurer Rapberry Pi
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

Koble ESP-01 til Raspberry Pi
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: