Indholdsfortegnelse:

Flash ESP-01 (ESP8266) Uden USB-til-seriel adapter ved hjælp af Raspberry Pi: 3 trin
Flash ESP-01 (ESP8266) Uden USB-til-seriel adapter ved hjælp af Raspberry Pi: 3 trin

Video: Flash ESP-01 (ESP8266) Uden USB-til-seriel adapter ved hjælp af Raspberry Pi: 3 trin

Video: Flash ESP-01 (ESP8266) Uden USB-til-seriel adapter ved hjælp af Raspberry Pi: 3 trin
Video: ESP8266 ESP01 WIFI-UART | LDmicro-Roboremo programmering 2024, Juli
Anonim
Flash ESP-01 (ESP8266) Uden USB-til-seriel adapter ved hjælp af Raspberry Pi
Flash ESP-01 (ESP8266) Uden USB-til-seriel adapter ved hjælp af Raspberry Pi

Denne instruktionsguide guider dig til, hvordan du begynder at programmere din ESP8266 mikrokontroller på et ESP-01 WIFI-modul. Alt hvad du behøver for at komme i gang (udover ESP-01-modulet selvfølgelig) er

  • Hindbær Pi
  • Jumper ledninger
  • 10K modstand

Jeg ville renovere en gammel sengelampe til moderne Alexa kontrolleret LED natlampe. Intet fancy bare at tænde/slukke det ved hjælp af stemmekommando. Jeg bestilte det enkleste ESP-01 WIFI-modul, relæ og ledning med lysdioder online, og glemte helt at bestille USB-til-seriel adapter til at programmere ESP8266 mikrokontroller. Men da jeg havde en Raspberry Pi, og både Raspberry Pi og ESP-01-kortet havde UART-pins, regnede jeg med, at jeg kunne bruge min RPi til at programmere ESP8266 uden adapteren.

Trin 1: Konfigurer Rapberry Pi

Konfigurer Rapberry Pi
Konfigurer Rapberry Pi

Jeg brugte Raspberry Pi 3 Model B+, men vejledningen skulle fungere på andre versioner, især på model B.

Så første ting først - vi skal aktivere UART på Pi.

Gå til RPi -konfigurationsindstillinger. Kør i terminalvindue

$ sudo raspi-config

Gå til 5 grænsefladeindstillinger, og vælg derefter P6 Serial. Du spurgte derefter Vil du have, at en login -shell skal være tilgængelig via seriel? vælg, da vi ikke ønsker at bruge UART til at køre Pi uden hoved, men til at kommunikere med andre enheder, derfor på følgende skærm, når du bliver spurgt. Vil du have, at den serielle port hardware er aktiveret? Vælg. Genstart Pi som bedt om det. UART skal nu være aktiveret for seriel kommunikation på RX- og TX -pin på Raspberry Pi 3. Bemærk: Efter dette skal der vises en ny post enable_uart = 1 i slutningen af /boot/config.txt.

Trin 2: Tilslut ESP-01 til Raspberry Pi

Tilslut ESP-01 til Raspberry Pi
Tilslut ESP-01 til Raspberry Pi

Nu går vi i gang med at koble alt sammen.

For det første skal du identificere dine RPi 3.3V strøm- og GND (jord) stifter til at drive ESP8266 mikrokontroller, TXD (transmittere) og RXD (modtage) ben til at kommunikere, og to generelle ben til betjening af ESP8266 (ben, der kan indstilles enten høje eller lav). Slå pin -arrangement op på pinout.xyz eller indtast terminal:

$ pinout

Identificer for det andet nødvendige stifter på ESP-01. Men i begyndelsen skal vi have forståelse for ESP-01-benene. Jeg fandt en række nyttige ressourcer tilgængelige på internettet til at hjælpe dig i den forbindelse. Denne er den korteste, mens denne giver så meget bedre forklaring. Kort sagt: Der er 8 ben, vi skal bruge 7 af dem, nemlig VCC power og GND (jord) ben til strøm, TXD og RXD ben til kommunikation og RST (reset), CH_PD (Chip Power Down, undertiden mærket CH_EN eller chipaktivering) og GPIO0 for at betjene modulet. Normalt fungerer ESP8266 i en normal tilstand, men når du uploader en kode til ESP8266, er det vigtigt at være i flash -tilstand. Ved normal eller normal driftstilstand skal modulet (naturligvis) tilsluttes strøm, men også stiften CH_PD skal tilsluttes VCC via en 10K (denne værdi varierer i forskellige ressourcer, jeg fandt værdier ned til 3K) pull-up modstand ved start. på den anden side, for at gå ind i blinkende eller programmeringstilstand, skal du jorde GPIO0 -pin ved opstart. For at forhindre ubegrænset strømgennemstrømning via GPIO0 ved jordforbindelse anbefales det at tilslutte GPIO0 til jord via en lavmodstandsmodstand 300Ω - 470Ω (mere om dette her). RST -pin, som navnet antyder, nulstiller (eller genstarter) MCU'en. Under normal drift kan den være forbundet til VCC via en 10K pull-up modstand, men den skal jordes for at nulstille mikrokontrolleren. Selvom det altid er muligt at bruge fysiske knapper til jordforbindelse af RST- og GPIO0 -ben (eller endda manuelt tilslutning af ledninger for at simulere en knap), er det meget mere behagelig oplevelse at bruge Raspberry Pi -stifter til at indstille spænding højt og lavt på modulets RST og GPIO0 stifter. Der er da heller ikke behov for 10K og 470Ω modstande.

Nu hvor vi er klar over ESP-01-pinsens særegenheder, kan vi begynde at forbinde alt sammen. Du kan bruge følgende tabel som reference 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 pin #8 (TXD / BCM 14)
  • CH_PD pin #1 (3.3V)
  • RST pin #3 (BCM 2)
  • GPIO 0 pin #5 (BMC 5)

Tilslut VCC pin den sidste. Den instans, du tilsluttede VCC-pin, vil dit Wi-Fi-modul tænde. Brug skærm eller minicom til at kontrollere, om RPi og ESP8266 kan kommunikere ved hjælp af UART (Bemærk: du skal muligvis først installere skærm eller minicom, da de ikke ser ud til at være installeret på Raspbian som standard).

Brug af skærmkørsel:

$ sudo skærm /dev /serial0 115200

Brug af minicom -løb:

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

Bemærk: mange online ressourcer foreslår at oprette forbindelse til ESP8266 on /dev /ttyAMA0, men dette fungerer ikke i RPi 3 eller nyere (inklusive nul W) i henhold til RPi -dokumentation. Tilslut via /dev /serial0 i stedet eller /dev /ttyS0.

Når du har indtastet skærm eller minicom, skal du bruge AT -kommandoer til at kommunikere med ESP8266. Indtast AT, tryk derefter på Enter, og tryk derefter på Ctrl+J for at sende kommando. Du burde få OK som svar. Liste over tilgængelige AT -kommandoer kan findes på espressiff.com eller bare her.

Enhederne er fysisk forbundet og taler til hinanden, vi kan komme i gang med at programmere RPi GPIO -benene og til sidst selve ESP8266.

Trin 3: Softwareopsætning (Python til drift og Arduino IDE til programmering)

DEL 1. Brug af python til at skifte ESP8266 -tilstande

Som nævnt ovenfor er det praktisk at bruge RPI's GPIO -ben til at skifte driftstilstande for ESP8266. Jeg skrev to grundlæggende pythonkoder, der satte ESP8266 i normal eller programmeringstilstand.

Normal tilstand: For at sætte mikrokontrolleren i normal driftstilstand skal vi bare tænde den og tilslutte CH_PD via pull-up-modstand til VCC, men for at skifte MCU fra programmering til normal tilstand skal vi nulstille den (tænk genstart). For at gøre det på RPi skal vi kortvarigt trække RPi's GPIO ned, der er forbundet til RST-pin på ESP-01 (som standard er RPi-stiften, jeg brugte til nulstilling, sat til HIGH). Hvor kort? For mig er det et spekulativt spørgsmål. Du kan prøve forskellige tidsintervaller, men jeg fandt ud af, at 200 - 500 ms fungerer fint. Skriv i kommentarerne, hvis du har en bedre idé. Gem din kode som reset.py

#!/usr/bin/python

import RPi. GPIO som GPIO importtid GPIO.setmode (GPIO. BOARD) # sætter GPIO identifikation med fysiske pin numre resetPin = 3 # identificer RPi fysisk pin forbundet til ESP8266 RST pin GPIO.setup (resetPin, GPIO. OUT) # sæt nulstilling pin som output GPIO.output (resetPin, GPIO. LOW) # faldspænding på RST -pin -tid. sleep (.2) # vent på.2 s GPIO.output (resetPin, GPIO. HIGH) # gendannelsesspænding på RST -pin GPIO. oprydning () # nulstil pins på RPI for at forhindre fremtidige advarsler om runtime

  • Programmeringstilstand: For at sætte MCU'en i programmeringstilstand er vi nødt til at tænde ESP8266 med GPIO0 jordet, eller alternativt nulstille den og jord GPIO0 under opstart (igen nøjagtig varighed af spændingsfaldene er ikke helt kendt for mig, så vær ikke strengt styret af brugte værdier). Gem kode som flash.py eller download nedenfor. Handlingernes rækkefølge er følgende:

    • træk RST -stiften ned
    • træk GPIO0 -stiften ned
    • træk RST -stiften op
    • træk GPIO0 pin op

#!/usr/bin/python

import RPi. GPIO som GPIO importtid GPIO.setmode (GPIO. BOARD) # sætter GPIO identifikation med fysiske pin numre resetPin = 3 # identificer RPi fysisk pin forbundet til ESP8266 RST pin flashPin = 5 # identificer RPi fysisk pin forbundet til ESP8266 GPIO0 pin GPIO.setup (resetPin, GPIO. OUT) # sæt nulstillingsstift som output GPIO.setup (flashPin, GPIO. OUT) # indstil flashstift som output GPIO.output (resetPin, GPIO. LOW) # faldspænding på RST -pin -tid. søvn (.2) # behov for denne ventetid er spekulativ GPIO.output (flashPin, GPIO. LOW) # faldspænding på GPIO0 time.sleep (.2) # behov for denne ventetid er spekulativ GPIO.output (resetPin, GPIO. HIGH) # start med at starte ESP8266 time.sleep (.5) # vent på, at ESP8266 starter GPIO.ouput (flashPin. GPIO. HIGH) # gendan spænding på GPIO pinGPIO.cleanup () # reset pins på RPI for at forhindre fremtidige runtime advarsler

I tilladelser til terminalændring:

$ sudo chmod +x flash.py

$ sudo chmod +x reset.py

Fra nu af, når du skal indtaste programmeringstilstand, kør i terminal:

$ python /flash.py

efter upload af kode for at gå ind i normal driftstilstand:

$ python /reset.py

På dette tidspunkt vil du måske også opdatere ESP8266 firmware. Der er mange online tutorials om, hvordan man gør det, så jeg vil ikke gå ind på detaljer om, hvordan man gør det.

DEL 2. Opsætning af Arduino IDE

hvis du allerede har Arduino IDE installeret, kan du stadig skumme igennem afsnittet og sikre, at din IDE er klar til ESP8266.

På Rapberry Pi kan du bruge Arduino IDE til at programmere din ESP8266. Der er to måder at installere IDE på RPi:

  • via kommandolinje fra lagre ved hjælp af apt-get install
  • download og installer manuelt fra arduino.cc.

Jeg foreslår kraftigt at gå den sidste vej. IDE -versionen fra depoter ser ud til at være forældet, og du bliver helt sikkert nødt til at gøre mere, før du er klar til at begynde at programmere ESP8266. For at undgå besværet skal du gå til Arduino.cc download side og downloade Linux ARM version. Komprimér og installer derefter: Hvis navnet på den downloadede fil ligner denne arduino-X. Y. Z-linuxarm.tar.xz i downloadmappen, kør:

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

Dette skulle komprimere filen til mappen arduino-X. Y. Z. Løb:

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

Dette skulle installere IDE. Når installationen er fuldført, skal du starte IDE.

  • Fra Arduino IDE skal du gå til Filer> Indstillinger. Se efter "Yderligere bestyrelsesmanager -webadresser" i bunden af vinduet med præferencer. Indtast https://arduino.esp8266.com/stable/package_esp8266com_index.json i feltet "Yderligere kortadministratorwebadresser", klik på knappen "OK".
  • Gå til Værktøjer> Board: XXX> Boards Manager. Brug søgning eller rul ned i vinduet, vælg ESP8266 -kortmenuen, og klik på installer. Vent på, at installationen er fuldført, og luk vinduet.
  • Gå igen til Værktøjer> Board: XXX og kig efter ESP8266 boards. Vælg Generisk ESP8266 -modul.

Nu er IDE klar til at programmere ESP8266. Indtast eller indsæt den ønskede kode i IDE -vinduet, og gem den. Klik på Upload. Fra terminal kører flash.py, dette skulle sætte dit bord i programmeringstilstand. Vent et par minutter, indtil IDE er færdig med at kompilere og uploade (bemærk: ESP-01 leveres typisk med 2 LED'er, den blå LED blinker, mens koden uploades) og kører reset.py. Nu er dit ESP-01-bord klar til at udføre opgaver.

Anbefalede: