Cum să începi cu FreeRTOS și ESP8266

  • 4 minute de citit
  • 13 exemple de cod
  • 9 imagini

Disponibil și în English

Pe această pagină

Fotografia de copertă de Matan Segev de pe PexelsCover Recent, am cumpărat de pe AliExpress un NodeMCU, cam pentru 4 dolari. Motivul a fost să aflu ce e atâta tam-tam cu ESP8266.

NodeMCU este o platformă IoT open source. Include un firmware care rulează pe SoC-ul Wi-Fi ESP8266 de la Espressif Systems și un hardware bazat pe modulul ESP-12.

Sursa: fișa tehnică ESP8266 Comparativ cu Arduino UNO, ESP8266 mea le întrece pe toate la putere de calcul și la preț.

ESP8266 este de 500% mai rapid și de 82% mai ieftin decât Arduino. ESP8266 are și conectivitate WiFi.

Am fost foarte surprins când am vizitat site-ul Espressif pentru ESP8266. Există multă documentație și multe resurse pe care le poți folosi. De exemplu, există o aplicație Android care îi spune ESP8266 să se conecteze la WiFi-ul tău. Aplicația trimite SSID-ul și parola sub formă de pachete, ESP8266 le interceptează și apoi se conectează la WiFi-ul tău. Aceasta se numește SmartConfig și a fost inventată de Texas Instruments.

În acest articol, te voi ghida să configurezi și să rulezi exemplul Smart Config din RTOS SDK-ul Espressif.

Iată ce vei avea nevoie:

  • Un calculator modern.
  • O placă NodeMCU cu ESP12-E
  • VirtualBox ( )
  • Ubuntu Server LTS ( )

Configurarea VirtualBox pentru dezvoltare

  1. Descarcă VirtualBox și instalează Ubuntu Server. Ar trebui să fie ușor de făcut, dar dacă nu știi cum, caută pe Google sau uită-te la acest ghid pas cu pas. Instalarea unui sistem de operare este o abilitate utilă. (Sfat: Când VirtualBox îți cere să selectezi discul, alege-l alocat dinamic și de cel puțin 50GB. Asta te va scuti de multe bătăi de cap mai încolo.)
  2. Asigură-te că poți accesa internetul din mașina virtuală și configurează serverul DNS:

Fă clic dreapta pe mașină, apoi Settings -> Network Pentru a configura serverul DNS, uită-te la acest exemplu.

Exemplu: dns-nameservers 8.8.8.8 8.8.4.4 Dacă poți face ping la Google, ești pregătit!

  1. (Opțional) Instalează serverele OpenSSH și Samba. Asta îți va face viața mult mai ușoară.
  2. (Opțional) Activează port forwarding. Pentru a te conecta direct prin SSH la mașina virtuală, trebuie să activezi port forwarding. De exemplu, pentru a mapa portul 2222 de pe mașina gazdă la portul 22 al mașinii virtuale.

Activează Port forwarding: Settings -> Network -> Port Forwarding

Dacă ai activat port forwarding, acum te poți conecta prin SSH la mașina virtuală din mașina gazdă, ca în figura de mai jos.

FIG1: ssh -p 2020 denis@localhost Notă: Dacă folosești Windows, ai nevoie de Putty pentru a te conecta prin SSH la mașina virtuală.

  1. Conectează NodeMCU și execută următoarea comandă:

tail -f /var/log/kern.log

Ar trebui să vezi că dispozitivul a fost identificat ca /dev/ttyUSB0. Dacă nu se întâmplă nimic, trebuie să adaugi USB-ul la mașina virtuală. După ce adaugi USB-ul, deconectează și reconectează dispozitivul.

Adăugarea USB: Settings -> Ports -> USB Dacă ai ajuns până aici și totul funcționează, felicitări! Acum ești pregătit să compilezi SDK-ul și să rulezi exemplul SmartConfig. Chiar poți să-mi trimiți un tweet la

Compilarea SDK-ului și flash-uirea plăcii

  1. Instalează pachetele necesare (ca mai jos). Aceste informații sunt disponibile și în readme.md al SDK-ului.
sudo apt-get install make unrar-free autoconf automake libtool gcc g++ gperf flex bison texinfo gawk ncurses-dev libexpat-dev python-dev python python-serial sed git unzip bash help2man wget bzip2 libtool-bin
  1. Creează un folder nou și intră în el: mkdir Development && cd Development

  2. Clonează Open SDK: git clone --recursive https://github.com/pfalcon/esp-open-sdk.git

  3. Rulează make: make

Avertisment: Acest pas va dura ceva până se termină, așa că fii răbdător. Pe mașina mea virtuală a durat 50 de minute. Pe a ta poate dura mai mult sau mai puțin, dar înainte să rulezi, asigură-te că ești conectat la internet și că DNS-ul este configurat corect. Cel mai bun mod de a verifica este să execuți un ping către Google sau alt site, dacă Google este blocat în regiunea ta.

Comandă ping reușită: $ ping medium.com Dacă ping-ul reușește, poți minimiza ferestrele și urmări un episod din emisiunea ta TV preferată. Revino după aproximativ 40 de minute (dar asigură-te că nu intră calculatorul în somn).

După ce SDK-ul a fost compilat cu succes, vei vedea un mesaj care îți spune să adaugi ceva în PATH. Pentru asta, execută următoarea comandă:

echo 'export PATH=/home/denis/Development/esp-open-sdk/xtensa-lx106-elf/bin:$PATH' >> ~/.profile

Comanda va adăuga șirul la fișierul ~/.profile. Acum rulează următoarea comandă:

xtensa-lx106-elf-gcc --version

Dacă comanda se execută cu succes, ești pregătit!

  1. Testează placa

Conectează NodeMCU și rulează lsusb pentru a verifica dacă dispozitivul este conectat. După aceea, rulează esptool.py chip_id. Ar trebui să vezi acum ID-ul chip-ului plăcii.

esptool.py chip_id 5. Clonează ESP8266_RTOS_SDK

git clone https://github.com/espressif/ESP8266_RTOS_SDK.git
  1. Exportă calea către SDK și calea către SDK/BIN folosind comenzile de mai jos.
echo 'export SDK_PATH=/home/denis/Development/ESP8266_RTOS_SDK' >> ~/.profile
echo 'export BIN_PATH=/home/denis/Development/ESP8266_RTOS_SDK/bin' >> ~/.profile
  1. Compilează exemplul SmartConfig
cd /home/denis/Development/ESP8266_RTOS_SDK/examples/<strong>smart_config</strong>/
chmod +x ./gen_misc.sh
./gen_misc.sh

Acum acceptă valorile implicite până ajungi la SPI_SIZE_MAP. Aici selectezi 4, deoarece NodeMCU are o memorie flash de 32Mbit, ceea ce înseamnă 4MB. Poți selecta și SPI_SPEED 3=80Mhz

Vei vedea ceva de genul:

!!!SDK_PATH: /home/denis/Development/ESP8266_RTOS_SDKBIN_PATH: /home/denis/Development/ESP8266_RTOS_SDK/bin
No boot needed.Generate eagle.flash.bin and eagle.irom0text.bin successully in BIN_PATHeagle.flash.bin — — — →0x00000eagle.irom0text.bin — →0x20000!!!
  1. Flash-uiește placa
cd $BIN_PATH
esptool.py erase_flash
esptool.py write_flash 0x00000 $BIN_PATH/eagle.flash.bin 0x20000 $BIN_PATH/eagle.irom0text.bin 0x3FC000 $BIN_PATH/esp_init_data_default.bin

Acum, dacă resetezi placa, ar trebui să nu vezi niciun LED clipind.

  1. Folosește aplicația de telefon

Captură de ecran de pe dispozitivul meu Android Deschide aplicația, asigură-te că ești conectat la un AP WiFi, introdu parola și apasă confirm. După câteva secunde, ESP8266 ar trebui să se conecteze la AP-ul tău. Gata. Felicitări că ai ajuns până la capăt!

Dacă vrei să dezvolți mai mult folosind ESP8266-RTOS-SDK, te rugăm să vizitezi site-urile oficiale. Acolo vei găsi multe resurse și documentație. De asemenea, uită-te și la celelalte exemple din folderul SDK-ului.

Mulțumesc foarte mult că ai citit acest articol. Dacă vrei să mă contactezi, poți face asta pe Twitter: MetonymyQT

Resurse