GNU/Linux >> Znalost Linux >  >> Linux

Vyvíjejte síťové aplikace pro ESP8266 pomocí Mongoose v Linuxu

Pojďme si promluvit o tom, jak začít vyvíjet síťové aplikace pro čip ESP8266 pomocí vestavěného webového serveru Mongoose v Linuxu. Budu používat Ubuntu, ale všechny věci lze snadno přizpůsobit pro jakoukoli distribuci Linuxu.

Kdo je kdo

Protože jste začali číst tento článek, předpokládám, že víte o Linuxu, ESP8266 a Mongoose. Takže jen krátké intro.

ESP8266

Levný čip s integrovanou WiFi, vyvinutý společností Expressif. Pokud se chcete ponořit do podrobností, podívejte se na oficiální stránky.

Mungus

Mongoose je kompletní multiprotokolová knihovna s jádrem menším než 40 kB vyvinutá společností Cesanta. Informace o režimu najdete na webu Cesanta.

Linux

Opravdu? :-)

Připojení ESP8266 k počítači

Dobře, první věc, kterou musíme udělat, je připojit čip ESP8266 k vašemu počítači. Můžete to udělat několika způsoby.

NodeMCU

Pokud máte modul NodeMCU, s integrovaným převodníkem UART-na-USB vše, co musíte udělat, je připojit modul k počítači přes USB. KISS!

Připojení s externím převodníkem UART-USB

Pokud váš modul ESP nemá interní převodník UART-USB, potřebujete externí. Jsou jich tuny – stačí si to vygooglit.

Vyberte ten, který pracuje s Linuxem (v podstatě většina z nich) a má 3,3V kolík a pamatujte:většina převodníků UART-USB má kolíky pro 3,3V i 5V, ale neměli byste připojovat ESP k 5V kolíkům. Toto zařízení není tolerantní k napětí a je možné spálit váš modul.

Nyní připojte (ESP -> Convertor):

VCC -> 3,3 V

GND -> GND

RX0 -> TX (ne RX)

TX0 -> RX

CH_PD -> 3,3 V

Připojení k Arduinu

Pokud nemáte UART-USB převodník, ale máte Arduino s 3,3V piny, můžete jej snadno použít k připojení ESP:

  1. Připojte Arduino k počítači přes USB
  2. Připojte RESET Arduina k jeho GND:je nutné deaktivovat hostitelský procesor, protože potřebujeme pouze modul UART-USB
  3. Připojit ESP (ESP -> Arduino)
    1. VCC -> 3,3 V
    2. GND -> GND
    3. RX0 -> RX0 (ne TX)
    4. TX0 -> TX
    5. CH_PD -> 3,3 V

Ověřování připojení

Pokud je vaše připojení v pořádku, ESP by se mělo objevit jako nové tty zařízení. Obvykle se NodeMCU a ESP připojené přes UART-USB převodník objeví jako /dev/ttyUSBx (x =0, 1, 2 atd.) a verze Arduina se objeví jako /dev/ttyACMx (x =0, 1, 2 atd.)

Můžete použít příkaz dmesg | grep usb najít vaše zařízení.

Například po připojení NodeMCU uvidíte něco takového:

 

[  1496.765417] usb 2-3.3: new full-speed USB device number 15 using xhci_hcd
[ 1496.867729] usb 2-3.3: New USB device found, idVendor=10c4, idProduct=ea60
[ 1496.867736] usb 2-3.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1496.867740] usb 2-3.3: Product: CP2102 USB to UART Bridge Controller
[ 1496.867743] usb 2-3.3: Manufacturer: Silicon Labs
[ 1496.867745] usb 2-3.3: SerialNumber: 4202
[ 1497.900384] usbcore: registered new interface driver usbserial
[ 1497.900423] usbcore: registered new interface driver usbserial_generic
[ 1497.900457] usbserial: USB Serial support registered for generic
[ 1497.903897] usbcore: registered new interface driver cp210x
[ 1497.903989] usbserial: USB Serial support registered for cp210x
[ 1497.904382] usb 2-3.3: cp210x converter now attached to ttyUSB0

Jak můžete vidět, NodeMCU je nyní k dispozici jako /dev/ttyUSB0 .

Pro závěrečnou kontrolu použijte libovolný terminál pro připojení k novému zařízení; Budu používat picocom. Jedná se o lehký terminál. V Ubuntu jej lze nainstalovat pomocí: 

sudo apt install picocom

Zkouším:

picocom /dev/ttyUSB0 -b 115200

Pokud je vše v pořádku, měli byste vidět „Terminál připraven ” ve výstupu picocom.

Oprava chyby „Přístup odepřen“

Pokud picocom říká „Přístup odepřen“, obvykle to znamená, že aktuální uživatel není členem dialoutu group:v Linuxu musí být uživatel pro přístup k sériovým portům členem této skupiny.

Spustit:

sudo usermod -aG docker $USER

příkaz, odhlaste se, přihlaste se zpět a zkuste znovu připojit ESP. „Přístup odepřen“ by měl zmizet.

Budování Mongoose

Stáhněte si nejnovější verzi Mongoose zde.

Mongoose je dodáván s příkladem pro ESP8266 a RTOS SDK. Nachází se zde na GitHubu.

Poznámka:ESP8266 má dvě verze SDK. První je bez OS a druhý je založen na RTOS. V tomto článku použiji to druhé. Rozdíly mezi nimi najdete na googlu nebo si přečtěte tuto odpověď na oficiálním fóru.

Chcete-li vytvořit příklad, máte dvě možnosti:

  1. Používejte ukotvitelný panel a obrázky ukotvitelného panelu připravené k použití
  2. Nainstalujte si do počítače sadu SDK a sadu nástrojů

Používání Dockeru

Toto je jednodušší a věřím, že lepší způsob. Obrázky dokovacích stanic Cesanta obsahují vše, co potřebujete k sestavení Mongoose pro ESP (a nejen Mongoose - jakoukoli aplikaci ESP). Nemusíte tedy věci instalovat lokálně a svůj kód můžete snadno sdílet s přáteli a kolegy, aby mohli sestavit váš firmware a získat přesně stejný výsledek.

Průvodce instalací dockeru je k dispozici zde. Vyzkoušejte, je to opravdu jednoduché, stačí přidat úložiště dockeru do vašeho Linuxu a nainstalovat jej jako běžný program pomocí apt .

Jakmile je docker nainstalován, přejděte do složky mongoose/examples/ESP8266_RTOS a spusťte build.sh

Při prvním sestavení docker stáhne požadovaný obrázek. V závislosti na vašem internetovém kanálu to může chvíli trvat. Jakmile je však build.sh dokončen ve složce ./bin, najdete dva soubory .bin.

To je firmware. Udělal jsi to!

Použití místní sady SDK

Pokud je pro vás docker příliš jednoduchý nebo z jakéhokoli důvodu chcete použít lokálně nainstalované nástroje, můžete to udělat také.

Je to trochu těžší a nudnější, ale nic moc složitého. Obzvláště vzhledem k tomu, že Cesanta vytvořil  některé nástroje pro vás a nemusíte je vytvářet ze zdroje.

Funguje to takto:

  1. Klonujte ESP RTOS SDK z tohoto úložiště. Ukázkový makefile jej hledá ve složce /opt/ESP8266_RTOS_SDK, takže do této složky můžete buď vložit klonované úložiště, nebo před vytvořením příkladu upravit cestu k němu (viz níže).
  2. Stáhněte si xtensa-lx106-elf.tar.bz2 z této veřejné složky.
  3. Rozbalte soubor xtensa-lx106-elf.tar.bz2. Například do složky /opt:

    sudo tar -xvf xtensa-lx106-elf.tar.bz2 -C /opt

  4. Upravte svou proměnnou PATH, například když jste rozbalili toolchain do složky /opt, použijte následující příkaz:

    export PATH=/opt /xtensa-lx106-elf/bin:$PATH

(také bych doporučil přidat tento příkaz do vašich složek .bashrc nebo .profile, aby změny zůstaly zachovány i po restartu systému)

Nyní spusťte:

$ export SDK_PATH=/opt/ESP8266_RTOS_SDK  # Put your path to SDK here
$ export BIN_PATH=./bin; mkdir ./bin
$ make clean; make BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=dio SPI_SIZE_MAP=0

A nyní, pokud je vše správně nainstalováno, budete mít firmware v ./bin složka

Udělal jsi to znovu!

Bliká ESP

Pro flashování ESP8266 je k dispozici mnoho nástrojů. Budeme používat esptool . Chcete-li jej použít, naklonujte toto úložiště a přidejte cestu k esptool.py do své proměnné PATH (toto je volitelné a pohodlné).

Nyní odpojte picocom, pokud je stále připojen (Tip:stiskněte Ctrl+A; Ctrl+D pro ukončení) a spusťte:

esptool.py --port /dev/ttyUSB0 --baud 230400 \
   write_flash --flash_mode=dio --flash_size=4m \
   0x00000 ${BIN_PATH}/eagle.flash.bin \
   0x20000 ${BIN_PATH}/eagle.irom0text.bin \
   0x7e000 ${SDK_PATH}/bin/esp_init_data_default.bin

Důležitá poznámka: pokud váš modul není NodeMCU, musíte před blikáním uzemnit GPIO0 (uzemnění GPIO0 přepne modul do režimu blikání). Po blikání odpojte GPIO0 od země a restartujte ESP.

Pokud nedošlo k žádné chybě, uvidíte výstup takto:

Connecting...

Erasing flash...

Took 0.58s to erase flash block

Wrote 35840 bytes at 0x00000000 in 1.8 seconds (157.5 kbit/s)...

Erasing flash...

Took 2.02s to erase flash block

Wrote 301056 bytes at 0x00020000 in 15.4 seconds (156.7 kbit/s)...

Erasing flash...

Took 0.11s to erase flash block

Wrote 1024 bytes at 0x0007e000 in 0.1 seconds (163.5 kbit/s)...

Leaving…

Připraveno! Nyní je zařízení vybaveno vaším firmwarem.

První výsledky

Nyní byste měli vidět síť WiFi „Mongoose“. Příklad nastavuje AP. Pro připojení použijte heslo „Mongoose“, poté přejděte na http://192.168.4.1/ a zobrazí se vám uvítací stránka „Ahoj, světe“.

Gratulujeme! Stačí spustit webový server na ESP8266!

Další kroky

Další kroky závisí na vás. Jako výchozí bod můžete použít popsaný příklad.

Podívejte se na jeho user_main.c soubor. Nastaví přístupový bod WiFi a spustí webový server. Můžete snadno změnit režim AP na režim stanice (a připojit se k vaší WiFi síti) a pomocí Mongoose API implementovat, co chcete. Toto je běžný způsob použití Mongoose, takže můžete použít jiný příklad Mongoose k vytvoření svého programu a mít na svém zařízení ESP další funkce http, tcp, udp, mqtt a další.

Pomocí dokumentů Espressif (například tohoto) se dozvíte, jak ovládat modul WiFi ESP8266 (a nejen WiFi) a dokumentaci Mongoose, abyste objevili funkce Mongoose.

Punks not dead!


Linux
  1. Linuxové tipy pro používání cronu k plánování úloh

  2. Použití AppImage pro správu balíčků Linuxu

  3. Jak zabalit aplikace Python pro Linux

  1. 10 Linuxových příkazů pro diagnostiku sítě

  2. Kompletní průvodce pro použití AsciiDoc v Linuxu

  3. Linux – Jak zrušit sdílení sítě pro aktuální proces?

  1. Použití at pro jednorázové úlohy cron v Linuxu

  2. Použití nástroje SS pro řešení problémů se sítí

  3. Použití proměnných v SQLCMD pro Linux