Inhoudsopgave:
- Stap 1: Configureer Rapberry Pi
- Stap 2: Sluit ESP-01 aan op Raspberry Pi
- Stap 3: Software-installatie (Python om te bedienen en Arduino IDE om te programmeren)
Video: Flash ESP-01 (ESP8266) zonder USB-naar-seriële adapter met Raspberry Pi - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Deze Instructable begeleidt u bij het programmeren van uw ESP8266-microcontroller op een ESP-01 WIFI-module. Het enige wat je nodig hebt om aan de slag te gaan (naast de ESP-01-module natuurlijk) is:
- Raspberry Pi
- Doorverbindingsdraden
- 10K weerstand
Ik wilde een oude bedlamp ombouwen tot een moderne Alexa-gestuurde LED-nachtlamp. Niets bijzonders, gewoon in- of uitschakelen met behulp van spraakopdrachten. Ik bestelde de eenvoudigste ESP-01 WIFI-module, relais en draad met LED's online, en vergat helemaal de USB-naar-serieel-adapter te bestellen om de ESP8266-microcontroller te programmeren. Maar aangezien ik een Raspberry Pi had en zowel de Raspberry Pi als het ESP-01-bord UART-pinnen hadden, dacht ik dat ik mijn RPi kon gebruiken om ESP8266 te programmeren zonder de adapter.
Stap 1: Configureer Rapberry Pi
Ik heb Raspberry Pi 3 Model B+ gebruikt, maar de instructies zouden moeten werken op andere versies, vooral op model B.
Dus eerst en vooral - we moeten UART op Pi inschakelen.
Ga RPi-configuratie-instellingen. In terminalvenster uitvoeren
$ sudo raspi-config
Ga naar 5 interface-opties en selecteer vervolgens P6-serieel. U hebt toen gevraagd Wilt u dat een login-shell via serieel toegankelijk is? selecteer omdat we UART niet willen gebruiken om de Pi headless te gebruiken, maar om met andere apparaten te communiceren, vandaar op het volgende scherm wanneer u wordt gevraagd Wilt u dat de seriële poorthardware wordt ingeschakeld? selecteer. Start de Pi opnieuw op zoals gevraagd. UART zou nu moeten zijn ingeschakeld voor seriële communicatie op de RX- en TX-pin van Raspberry Pi 3. Opmerking: hierna zou er een nieuw item enable_uart=1 moeten verschijnen aan het einde van /boot/config.txt.
Stap 2: Sluit ESP-01 aan op Raspberry Pi
Nu gaan we alles samen aansluiten.
Identificeer eerst op uw RPi 3.3V voedings- en GND (aarde) pinnen om de ESP8266 microcontroller, TXD (zenden) en RXD (ontvangen) pinnen van stroom te voorzien om te communiceren, en twee algemene pinnen om ESP8266 te bedienen (pinnen die ofwel hoog of laag). Zoek pin-arrangement op pinout.xyz of typ terminal:
$ pinout
Identificeer vervolgens de benodigde pinnen op ESP-01. Maar in het begin moeten we begrip hebben van de ESP-01-pinnen. Ik heb op internet een aantal nuttige bronnen gevonden om u daarbij te helpen. Deze is de kortste, terwijl deze zoveel betere uitleg geeft. In het kort: er zijn 8 pinnen, we gaan er 7 nodig hebben, namelijk VCC-stroom en GND (aarde) pinnen voor stroom, TXD- en RXD-pinnen voor communicatie, en RST (reset), CH_PD (Chip Power Down, soms gelabeld CH_EN of chip enable) en GPIO0 om de module te bedienen. Gewoonlijk werkt ESP8266 in een normale modus, maar bij het uploaden van een code naar ESP8266 let het erop in een flitsmodus te zijn. Voor normale of normale bedrijfsmodus moet de module worden aangesloten op de voeding (uiteraard), maar ook de pin CH_PD moet via een 10K op VCC worden aangesloten (deze waarde varieert in verschillende bronnen, ik vond waarden tot 3K) pull-up weerstand bij het opstarten. aan de andere kant, om naar de knipperende of programmeermodus te gaan, moet je de GPIO0-pin bij het opstarten aarden. Om onbeperkte stroom via GPIO0 te voorkomen wanneer geaard, wordt aanbevolen om GPIO0 aan te sluiten op aarde via een lage weerstandsweerstand 300Ω - 470Ω (meer hierover hier). De RST-pin, zoals de naam al doet vermoeden, reset (of herstart) de MCU. Tijdens normaal bedrijf kan het worden aangesloten op VCC via een 10K pull-up-weerstand, maar moet worden geaard om de microcontroller te resetten. Hoewel het altijd mogelijk is om fysieke knoppen te gebruiken om RST- en GPIO0-pinnen te aarden (of zelfs handmatig draden samen te voegen om een knop te simuleren), is het veel aangenamer om Raspberry Pi-pinnen te gebruiken om de spanning hoog en laag in te stellen op de RST en GPIO0 van de module. pinnen. Ook zijn er dan geen 10K en 470Ω weerstanden nodig.
Nu we ons bewust zijn van de eigenaardigheden van de ESP-01-pinnen, kunnen we beginnen alles met elkaar te verbinden. U kunt de volgende tabel als referentie gebruiken, samen met de bovenstaande tekening:
ESP-01 Raspberry Pi
- VCC (3,3V) pin #1 (3,3V)
- GND-pin #6 (GND)
- TXD-pin #10 (RXD / BCM 15)
- RXD-pen #8 (TXD / BCM 14)
- CH_PD pin #1 (3,3V)
- RST-pen #3 (BCM 2)
- GPIO 0 pin #5 (BMC 5)
Sluit de VCC-pin als laatste aan. De instantie waarop u de VCC-pin hebt aangesloten, uw wifi-module wordt ingeschakeld. Gebruik scherm of minicom om te controleren of RPi en ESP8266 kunnen communiceren met UART (let op: mogelijk moet u eerst scherm of minicom installeren, omdat ze niet standaard op Raspbian lijken te zijn geïnstalleerd).
Screenrun gebruiken:
$ sudo-scherm /dev/serial0 115200
Minicom-run gebruiken:
$ sudo minicom -b 115200 -o -D /dev/serial0
Opmerking: veel online bronnen stellen voor om verbinding te maken met ESP8266 op /dev/ttyAMA0, maar dit werkt niet voor RPi 3 of hoger (inclusief nul W) volgens de RPi-documentatie. Maak in plaats daarvan verbinding via /dev/serial0 of /dev/ttyS0.
Nadat u het scherm of de minicom hebt ingevoerd, gebruikt u AT-opdrachten om te communiceren met ESP8266. Typ AT, druk vervolgens op Enter en druk vervolgens op Ctrl+J om de opdracht te verzenden. Je zou als antwoord OK moeten krijgen. Een lijst met beschikbare AT-commando's is te vinden op espressiff.com of gewoon hier.
Als de apparaten fysiek zijn verbonden en met elkaar praten, kunnen we beginnen met het programmeren van de RPi GPIO-pinnen en, ten slotte, de ESP8266 zelf.
Stap 3: Software-installatie (Python om te bedienen en Arduino IDE om te programmeren)
DEEL 1. Python gebruiken om tussen ESP8266-modi te schakelen
Zoals hierboven vermeld, is het handig om de GPIO-pinnen van RPI te gebruiken om de bedieningsmodi van ESP8266 te wisselen. Ik heb twee basispython-codes geschreven die ESP8266 in de normale of programmeermodus hebben gezet.
Normale modus: om de microcontroller in de normale bedrijfsmodus te zetten, hoeven we hem alleen maar van stroom te voorzien en CH_PD via een pull-up-weerstand op VCC aan te sluiten, maar om de MCU van de programmeermodus naar de normale modus te schakelen, moeten we hem resetten (denk aan opnieuw opstarten). Om dat op RPi te doen, trekken we kort de GPIO van de RPi naar beneden die is aangesloten op de RST-pin op ESP-01 (standaard is de RPi-pin die ik heb gebruikt voor het resetten ingesteld op HOOG). Hoe kort? Voor mij is dat een speculatieve vraag. Je kunt verschillende tijdsintervallen proberen, maar ik ontdekte dat 200 - 500 ms prima werkt. Schrijf in opmerkingen als je een beter idee hebt. Sla je code op als reset.py
#!/usr/bin/python
importeer RPi. GPIO als GPIO importtijd GPIO.setmode(GPIO. BOARD) # stelt GPIO-identificatie in op fysieke pinnummers resetPin = 3 # identificeer RPi fysieke pin aangesloten op ESP8266 RST-pin GPIO.setup(resetPin, GPIO. OUT) # set reset pin als output GPIO.output (resetPin, GPIO. LOW) # spanningsdaling op RST pin time.sleep (.2) # wacht 0,2 s GPIO.output (resetPin, GPIO. HIGH) # herstel spanning op RST-pin GPIO. cleanup() # reset pinnen op RPI om toekomstige runtime-waarschuwingen te voorkomen
-
Programmeermodus: om de MCU in de programmeermodus te zetten, moeten we de ESP8266 van stroom voorzien met GPIO0 geaard, of als alternatief resetten en GPIO0 aarden tijdens het opstarten (wederom is de exacte duur van de spanningsdalingen mij niet helemaal bekend, dus wees niet strikt geleid door gebruikte waarden). Bewaar code als flash.py of download hieronder. De opeenvolging van acties is als volgt:
- trek de RST-pin naar beneden
- trek GPIO0-pin naar beneden
- trek RST-pin omhoog
- trek GPIO0-pin omhoog
#!/usr/bin/python
importeer RPi. GPIO als GPIO importtijd GPIO.setmode(GPIO. BOARD) # stelt GPIO-identificatie in op fysieke pinnummers resetPin = 3 # identificeer RPi fysieke pin aangesloten op ESP8266 RST-pin flashPin = 5 # identificeer RPi fysieke pin aangesloten op ESP8266 GPIO0-pin GPIO.setup (resetPin, GPIO. OUT) # stel reset-pin in als output GPIO.setup (flashPin, GPIO. OUT) # stel flash-pin in als output GPIO.output (resetPin, GPIO. LOW) # drop-voltage op RST-pintijd. sleep(.2) # behoefte aan dit wachten is speculatief GPIO.output(flashPin, GPIO. LOW) # spanningsdaling op GPIO0 time.sleep(.2) # behoefte aan dit wachten is speculatief GPIO.output(resetPin, GPIO. HIGH) # start met opstarten ESP8266 time.sleep(.5) # wacht tot ESP8266 is opgestart GPIO.ouput(flashPin. GPIO. HIGH) # herstel spanning op GPIO pinGPIO.cleanup() # reset pinnen op RPI om toekomstige runtime-waarschuwingen te voorkomen
Wijzig machtigingen in terminal:
$ sudo chmod +x flash.py
$ sudo chmod +x reset.py
Vanaf nu wanneer u naar de programmeermodus moet gaan in terminal:
$ python /flash.py
na het uploaden van de code om naar de normale bedrijfsmodus te gaan:
$ python /reset.py
Op dit punt wilt u misschien ook de ESP8266-firmware bijwerken. Er zijn veel online tutorials over hoe dat te doen, dus ik zal niet in details treden over hoe dat te doen.
DEEL 2. Arduino IDE instellen
als je al Arduino IDE hebt geïnstalleerd, wil je misschien nog steeds door de sectie bladeren om ervoor te zorgen dat je IDE klaar is voor ESP8266.
Op Rapberry Pi kun je Arduino IDE gebruiken om je ESP8266 te programmeren. Er zijn twee manieren om de IDE op RPi te installeren:
- via de opdrachtregel van repositories met behulp van apt-get install
- download en installeer handmatig vanaf arduino.cc.
Ik raad sterk aan om de laatste weg te gaan. De IDE-versie van repositories lijkt achterhaald en je zult zeker meer moeten doen voordat je klaar bent om ESP8266 te programmeren. Om het gedoe te vermijden, gaat u naar de Arduino.cc-downloadpagina en downloadt u de Linux ARM-versie. Vervolgens decomprimeren en installeren: Als de naam van het gedownloade bestand er ongeveer zo uitziet arduino-X. Y. Z-linuxarm.tar.xz, voer dan in de downloadmap uit:
$ tar -xvf arduino-X. Y. Z-linuxarm.tar.xz
Dit zou het bestand moeten decomprimeren naar de map arduino-X. Y. Z. Loop:
$ sudo./arduino-X. Y. Z/install.sh
Dit zou de IDE moeten installeren. Nadat de installatie is voltooid, start u de IDE.
- Ga vanuit de Arduino IDE naar Bestand > Voorkeuren. Zoek naar "Extra Board Manager-URL's" onderaan het voorkeurenvenster. Voer https://arduino.esp8266.com/stable/package_esp8266com_index.json in het veld "Extra Board Manager-URL's" in en klik op de knop "OK".
- Ga naar Tools > Board: XXX > Boards Manager. Gebruik in het venster zoeken of scroll naar beneden, selecteer het ESP8266-bordmenu en klik op installeren. Wacht tot de installatie is voltooid en sluit het venster.
- Ga opnieuw naar Tools > Board: XXX en zoek naar ESP8266-boards. Kies Algemene ESP8266-module.
Nu is IDE klaar om ESP8266 te programmeren. Typ of plak de gewenste code in het IDE-venster en sla deze op. Klik op Uploaden. Vanaf terminal run flash.py, dit zou je bord in programmeermodus moeten zetten. Wacht een paar minuten totdat de IDE klaar is met compileren en uploaden (let op: ESP-01 wordt meestal geleverd met 2 LED's, de blauwe LED knippert terwijl de code wordt geüpload) en voer reset.py uit. Nu is uw ESP-01-bord klaar om taken uit te voeren.
Aanbevolen:
Cheque afdrukken zonder speciale software of printer met MS Excel (bankcheques afdrukken): 6 stappen
Cheque afdrukken zonder speciale software of printer met MS Excel (bankcheques afdrukken): dit is een eenvoudige Excel-werkmap, die voor elk bedrijf erg handig is om veel bankcheques uit te schrijven. Ten tweede heeft u geen speciale printer of software nodig, alleen u hebt een computer met MS Excel en een normale printer nodig. Ja, nu kunt u
Meerdere ESP-gesprekken voeren via ESP-NOW met ESP32 en ESP8266: 8 stappen
Meerdere ESP-gesprekken maken via ESP-NOW ESP32 en ESP8266 gebruiken: voor mijn lopende project heb ik meerdere ESP nodig om met elkaar te praten zonder een router. Om dit te doen, zal ik de ESP-NOW gebruiken om draadloos met elkaar te communiceren zonder een router op de ESP
Raspbian installeren in Raspberry Pi 3 B zonder HDMI - Aan de slag met Raspberry Pi 3B - Uw Raspberry Pi instellen 3: 6 stappen
Raspbian installeren in Raspberry Pi 3 B zonder HDMI | Aan de slag met Raspberry Pi 3B | Je Raspberry Pi 3 instellen: Zoals sommigen van jullie weten, zijn Raspberry Pi-computers best geweldig en kun je de hele computer op een klein bordje krijgen. De Raspberry Pi 3 Model B heeft een quad-core 64-bit ARM Cortex A53 geklokt op 1,2 GHz. Dit zet de Pi 3 ongeveer 50
Pratende Arduino - Een MP3 afspelen met Arduino zonder enige module - Mp3-bestand afspelen vanaf Arduino met PCM: 6 stappen
Pratende Arduino | Een MP3 afspelen met Arduino zonder enige module | Mp3-bestand van Arduino afspelen met PCM: in deze instructie leren we hoe we een mp3-bestand met arduino kunnen spelen zonder een audiomodule te gebruiken, hier gaan we de PCM-bibliotheek voor Arduino gebruiken die 16 bit PCM van 8 kHz-frequentie speelt, dus laten we dit doen
Internetradio/webradio met Raspberry Pi 3 (zonder kop): 8 stappen
Internet Radio/ Web Radio Met Raspberry Pi 3 (headless): HI Wilt u uw eigen Radio hosting via internet dan bent u bij ons aan het juiste adres. Ik zal proberen zoveel mogelijk uit te werken. Ik heb verschillende manieren geprobeerd, de meeste van hen hadden ofwel een geluidskaart nodig die ik niet graag wilde kopen. maar slaagde erin om