Obsah:

Flash ESP-01 (ESP8266) bez USB-to-serial adaptéru pomocí Raspberry Pi: 3 kroky
Flash ESP-01 (ESP8266) bez USB-to-serial adaptéru pomocí Raspberry Pi: 3 kroky

Video: Flash ESP-01 (ESP8266) bez USB-to-serial adaptéru pomocí Raspberry Pi: 3 kroky

Video: Flash ESP-01 (ESP8266) bez USB-to-serial adaptéru pomocí Raspberry Pi: 3 kroky
Video: ESP8266(ESP-01). Blynk. Настройка для работы в связке с Arduino 2024, Listopad
Anonim
Flash ESP-01 (ESP8266) bez USB-to-serial adaptéru pomocí Raspberry Pi
Flash ESP-01 (ESP8266) bez USB-to-serial adaptéru pomocí Raspberry Pi

Tento Instructable vás provede postupem, jak začít programovat mikrokontrolér ESP8266 na modulu ESP-01 WIFI. Vše, co ke spuštění potřebujete (kromě modulu ESP-01, samozřejmě) je

  • Raspberry Pi
  • Propojovací vodiče
  • 10K odpor

Chtěl jsem zrenovovat starou noční lampu na moderní LED noční lampu ovládanou Alexou. Nic fantastického, pouze zapnutí/vypnutí pomocí hlasového příkazu. Objednal jsem online nejjednodušší modul ESP-01 WIFI, relé a kabel s LED diodami a úplně jsem zapomněl objednat adaptér USB-sériový pro programování mikrokontroléru ESP8266. Ale protože jsem měl Raspberry Pi a Raspberry Pi i deska ESP-01 měla UART piny, napadlo mě, že bych mohl použít svůj RPi k programování ESP8266 bez adaptéru.

Krok 1: Konfigurujte Rapberry Pi

Konfigurujte Rapberry Pi
Konfigurujte Rapberry Pi

Použil jsem Raspberry Pi 3 Model B+, ale pokyny by měly fungovat na jiných verzích, zejména na modelu B.

Nejprve tedy nejprve - musíme povolit UART na Pi.

Přejít na nastavení konfigurace RPi. V okně terminálu spusťte

$ sudo raspi-config

Přejděte na 5 možností rozhraní a poté vyberte P6 Serial. Poté jste vyzváni Chcete, aby byl přihlašovací shell přístupný přes sériové číslo? vyberte, protože nechceme používat UART ke spuštění Pi bez hlavy, ale ke komunikaci s jinými zařízeními, proto na následující obrazovce na dotaz Chcete, aby byl povolen hardware sériového portu? vyberte. Po výzvě restartujte Pi. UART by nyní měl být povolen pro sériovou komunikaci na RX a TX pinu Raspberry Pi 3. Poznámka: poté by se měl objevit nový záznam enable_uart = 1 na konci /boot/config.txt.

Krok 2: Připojte ESP-01 k Raspberry Pi

Připojte ESP-01 k Raspberry Pi
Připojte ESP-01 k Raspberry Pi

Nyní se vrhneme na zapojení všeho dohromady.

Nejprve identifikujte na svých RPi 3,3 V napájecích a GND (zemních) pinech pro napájení mikrokontroléru ESP8266, TXD (vysílací) a RXD (přijímací) piny pro komunikaci a dva obecné piny pro provoz ESP8266 (piny, které lze nastavit buď vysoko nebo nízký). Vyhledejte uspořádání pinů na pinout.xyz nebo zadejte terminál:

$ pinout

Za druhé identifikujte potřebné piny na ESP-01. Ale na začátku musíme porozumět pinům ESP-01. Na internetu jsem našel řadu užitečných zdrojů, které vám v tomto ohledu pomohou. Tenhle je nejkratší, zatímco tento dává mnohem lepší vysvětlení. Stručně: Existuje 8 pinů, budeme jich potřebovat 7, konkrétně napájení VCC a GND (uzemnění) pro napájení, piny TXD a RXD pro komunikaci a RST (reset), CH_PD (Chip Power Down, někdy označené CH_EN nebo povolení čipu) a GPIO0 pro provoz modulu. ESP8266 obvykle pracuje v běžném režimu, ale při odesílání kódu do ESP8266 dbá na to, aby byl v zábleskovém režimu. Pro normální nebo normální provozní režim musí být modul připojen k napájení (samozřejmě), ale také pin CH_PD musí být připojen k VCC přes 10K (tato hodnota se liší v různých prostředích, našel jsem hodnoty až 3K) odpor při startu. na druhé straně, abyste vstoupili do blikajícího nebo programovacího režimu, musíte při spuštění uzemnit pin GPIO0. Aby se zabránilo neomezenému toku proudu přes GPIO0 při uzemnění, doporučuje se připojit GPIO0 k zemi přes odpor s nízkým odporem 300Ω - 470Ω (více zde). Pin RST, jak název napovídá, resetuje (nebo restartuje) MCU. Během normálního provozu může být připojen k VCC přes 10K pull-up odpor, ale měl by být uzemněn pro resetování mikrokontroléru. I když je vždy možné použít fyzická tlačítka k uzemnění pinů RST a GPIO0 (nebo dokonce ručně připojit vodiče k simulaci tlačítka), je mnohem příjemnější použít pin Raspberry Pi k nastavení vysokého a nízkého napětí na RST a GPIO0 modulu kolíky. Také zde není potřeba odporů 10K a 470Ω.

Když jsme si vědomi zvláštností pinů ESP-01, můžeme začít vše spojovat dohromady. Následující tabulku můžete použít jako referenci spolu s výše uvedeným výkresem:

ESP-01 Raspberry Pi

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

Připojte pin VCC jako poslední. Instance, ke které jste připojili VCC pin vašeho modulu Wi-Fi, se zapne. Pomocí obrazovky nebo minicomu zkontrolujte, zda RPi a ESP8266 mohou komunikovat pomocí UART (poznámka: možná budete muset nejprve nainstalovat obrazovku nebo minicom, protože se nezdá, že by byly ve výchozím nastavení nainstalovány na Raspbian).

Pomocí spuštění obrazovky:

$ sudo screen /dev /serial0 115200

Pomocí minicom run:

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

Poznámka: mnoho online zdrojů navrhuje připojení k ESP8266 na /dev /ttyAMA0, ale to nefunguje s RPi 3 nebo novějším (včetně nulového W) podle dokumentace RPi. Připojte se místo toho přes /dev /serial0 nebo /dev /ttyS0.

Poté, co jste zadali obrazovku nebo minicom, použijte ke komunikaci s ESP8266 příkazy AT. Zadejte AT, poté stiskněte Enter a poté stisknutím Ctrl+J odešlete příkaz. V odpovědi byste měli být v pořádku. Seznam dostupných AT příkazů najdete na espressiff.com nebo jen zde.

V případě, že jsou zařízení fyzicky propojena a mluví spolu, můžeme se pustit do programování pinů RPi GPIO a nakonec samotného ESP8266.

Krok 3: Nastavení softwaru (Python k ovládání a Arduino IDE k programování)

ČÁST 1. Přepínání režimů ESP8266 pomocí pythonu

Jak již bylo zmíněno výše, je vhodné používat GPIO piny RPI k přepínání provozních režimů ESP8266. Napsal jsem dva základní kódy pythonu, které uvedly ESP8266 do běžného nebo programovacího režimu.

Pravidelný režim: Chcete-li uvést mikrokontrolér do běžného provozního režimu, stačí jej napájet a připojit CH_PD přes výsuvný odpor k VCC, ale pro přepnutí MCU z programování do normálního režimu ho musíme resetovat (přemýšlet o restartu). Abychom to udělali na RPi, krátce stáhneme GPIO RPi připojené k pinu RST na ESP-01 (ve výchozím nastavení je pin RPi, který jsem použil k resetování, nastaven na HIGH). Jak krátce? Pro mě je to spekulativní otázka. Můžete vyzkoušet různé časové intervaly, ale zjistil jsem, že 200 - 500 ms funguje dobře. Napište do komentářů, jestli máte lepší nápad. Uložte kód jako reset.py

#!/usr/bin/python

importovat RPi. GPIO jako čas importu GPIO GPIO.setmode (GPIO. BOARD) # nastaví identifikaci GPIO fyzickými čísly pinů resetPin = 3 # identifikuje fyzický pin RPi připojený k ESP8266 pin RST GPIO.setup (resetPin, GPIO. OUT) # set reset pin jako výstup GPIO.output (resetPin, GPIO. LOW) # pokles napětí na RST pin time.sleep (.2) # čekání na 0,2 s GPIO.output (resetPin, GPIO. HIGH) # obnovení napětí na RST pinu GPIO. cleanup () # reset pinů na RPI, aby se zabránilo budoucím varováním za běhu

  • Režim programování: Abychom MCU přepnuli do programovacího režimu, musíme napájet ESP8266 s uzemněným GPIO0, nebo jej resetovat a uzemnit GPIO0 během spouštění (opět přesné trvání poklesů napětí mi není zcela známé, takže nebuďte striktně podle použitých hodnot). Uložte kód jako flash.py nebo jej stáhněte níže. Pořadí akcí je následující:

    • stáhněte kolík RST
    • stáhněte kolík GPIO0
    • vytáhněte kolík RST
    • vytáhněte kolík GPIO0

#!/usr/bin/python

importovat RPi. GPIO jako čas importu GPIO GPIO.setmode (GPIO. BOARD) # nastaví identifikaci GPIO fyzickými čísly pinů resetPin = 3 # identifikuje fyzický pin RPi připojený k ESP8266 pin RST flashPin = 5 # identifikuje fyzický pin RPi připojený k ESP8266 GPIO0 pin GPIO.setup (resetPin, GPIO. OUT) # nastavit resetovací pin jako výstup GPIO.setup (flashPin, GPIO. OUT) # nastavit flash pin jako výstup GPIO.output (resetPin, GPIO. LOW) # pokles napětí na RST pinu čas. spánek (.2) # potřeba tohoto čekání je spekulativní GPIO.output (flashPin, GPIO. LOW) # pokles napětí na GPIO0 time.sleep (.2) # potřeba tohoto čekání je spekulativní GPIO.output (resetPin, GPIO. HIGH) # spusťte bootování ESP8266 time.sleep (.5) # počkejte, až ESP8266 spustí GPIO.ouput (flashPin. GPIO. HIGH) # obnovte napětí na GPIO pinGPIO.cleanup () # resetujte piny na RPI, abyste zabránili budoucím výstrahám za běhu

V oprávnění ke změně terminálu:

$ sudo chmod +x flash.py

$ sudo chmod +x reset.py

Od této chvíle, kdykoli potřebujete vstoupit do režimu programování, spusťte v terminálu:

$ python /flash.py

po nahrání kódu pro vstup do normálního provozního režimu spusťte:

$ python /reset.py

V tomto okamžiku můžete také chtít aktualizovat firmware ESP8266. Existuje mnoho online návodů, jak to udělat, takže nebudu zacházet do podrobností, jak to udělat.

ČÁST 2. Nastavení IDE Arduina

Pokud již máte nainstalované Arduino IDE, možná budete chtít prolistovat sekci a ujistit se, že je vaše IDE připraveno pro ESP8266.

Na Rapberry Pi můžete k programování vašeho ESP8266 použít Arduino IDE. Existují dva způsoby, jak nainstalovat IDE na RPi:

  • pomocí příkazového řádku z úložišť pomocí apt-get install
  • stáhnout a nainstalovat ručně z arduino.cc.

Důrazně doporučuji jít druhou cestou. Verze IDE z repozitářů se zdá být zastaralá a určitě budete muset udělat více, než budete připraveni začít programovat ESP8266. Chcete -li se vyhnout potížím, přejděte na stránku stahování Arduino.cc a stáhněte si verzi Linux ARM. Další dekomprimujte a nainstalujte: Pokud název staženého souboru vypadá přibližně takto arduino-X. Y. Z-linuxarm.tar.xz, ve složce pro stahování spusťte:

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

Tím by měl být soubor dekomprimován do složky arduino-X. Y. Z. Běh:

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

To by mělo nainstalovat IDE. Po dokončení instalace spusťte IDE.

  • Z Arduino IDE přejděte na Soubor> Předvolby. V dolní části okna předvoleb vyhledejte „Další adresy URL správce Board“. Do pole „Další adresy URL správce Board“zadejte https://arduino.esp8266.com/stable/package_esp8266com_index.json, klikněte na tlačítko „OK“.
  • Přejděte na Nástroje> Deska: XXX> Správce desek. V okně použijte vyhledávání nebo přejděte dolů, vyberte nabídku desky ESP8266 a klikněte na nainstalovat. Počkejte na dokončení instalace a zavřete okno.
  • Opět přejděte na Nástroje> Deska: XXX a vyhledejte desky ESP8266. Vyberte obecný modul ESP8266.

Nyní je IDE připraveno naprogramovat ESP8266. Zadejte nebo vložte požadovaný kód do okna IDE a uložte jej. Klikněte na Nahrát. Z terminálu run flash.py by to mělo uvést vaši desku do programovacího režimu. Počkejte několik minut, než IDE dokončí kompilaci a nahrávání (poznámka: ESP-01 je obvykle vybaven 2 LED diodami, modrá LED dioda bude blikat během načítání kódu) a spusťte reset.py. Nyní je vaše deska ESP-01 připravena plnit úkoly.

Doporučuje: