Esp8266
Hardware
Informazioni sulla famiglia NodeMCU: https://www.esp8266.com/wiki/doku.php?id=esp8266-module-family
Schematiche: https://github.com/nodemcu/nodemcu-devkit-v1.0/blob/master/NODEMCU_DEVKIT_V1.0.PDF
Pinout: https://github.com/nodemcu/nodemcu-devkit-v1.0/blob/master/Documents/NODEMCU_DEVKIT_V1.0_PINMAP.png
Die shot: https://zeptobars.com/en/read/Espressif-ESP8266-wifi-serial-rs232-ESP8089-IoT
Caveat
- D3 (GPIO0) DEVE essere usato come output, visto che è condiviso con la funzione di flash, se è basso all'avvio il SoC entra in modalità flash.
- D4 (GPIO2) e D8 (GPIO15) all'avvio devono essere rispettivamente HI e LOW (tramite dei pull-up/down già presenti), per cui *dovrebbero* essere usati come output.
- D9 (GPIO3) e D10 (GPIO1) sono condivisi con la seriale (RXD0 e TXD0).
- D0 (GPIO16) è stupido, può essere solo scritto/letto, ma non supporta PWM o qualunque altra cosa. È usato per risvegliare il processore.
- D11 (GPIO9) e D12 (GPIO10) sono sul lato opposto, ed etichettate come SD2 e SD3.
- I pin etichettati con SD* (compresi SD2 e SD3) sono i pin SPI, e sono collegati internamente alla flash.
- SD3 (D12) può essere usato come PWM/interrupt (a proprio rischio e pericolo, visto che è connesso anche alla flash), mentre il medesimo uso di SD2 (D11) provoca un reset e riavvio del sistema.
Complessivamente vi sono 8 GPIO completamente funzionali, 10 se si rinuncia alla seriale, e 11 usando uno dei pin usati per la flash.
Installazione toolchain
Si raccolgono qui le procedure di installazione della toolchain per programmare l'Esp8266, nei vari casi d'uso.
Linux generico
- https://www.esp8266.com/wiki/doku.php?id=toolchain#how_to_setup_a_vm_to_host_your_toolchain
- Scaricare esptool.py per fare il flashing: https://github.com/espressif/esptool
Arch Linux
La procedura generica non funziona, almeno non con l'ultima versione di GCC. È disponibile un pacchetto AUR:
$ git clone https://aur.archlinux.org/esp-open-sdk-git.git $ makepkg -si
Il PKGBUILD scaricherà e compilerà il toolchain. La procedura è decisamente lenta (>40 min).
Installare esptool:
# pacman -S esptool
Download firmware con supporto LUA
$ git clone https://github.com/nodemcu/nodemcu-firmware
Collegare l'ESP tramite una MicroUSB al computer, e verificare il funzionamento:
$ esptool --port <serial-port> flash_id
In questo modo, fra le altre cose si vedono le specifiche della scheda e le dimensioni della flash (typ. 4MB).
A questo punto è possibile compilare e flashare il firmware:
$ cd nodemcu-firmware $ make $ make flash4m
A questo punto il dispositivo dovrebbe essere pronto ad accogliere i file .lua!
A questo scopo si può usare esplorer (https://github.com/4refr0nt/ESPlorer), disponibile in AUR per Arch.