Caricare il firmware nodemcu

Nell’articolo precedente abbiamo trattato il mdoulo wifi ESP8266 integrato nella scheda di sviluppo Nodemcu

Modulo WiFi ESP8266

Qui analizziamo come caricare il firmware sulla propria scheda.

Prima operazione da eseguire è valutare il modello di scheda di sviluppo nodemcu a disposizione. Nel nostro caso eseguiremo le varie operazioni con una scheda di sviluppo Nodemcu V0.9. Il chipset usb-seriale in questo caso è il CH340G

I drivers per questo chipset possono essere scaricati direttamente dallo github di nodemcu

USB-Seriale Drivers

Per caricare il firmware si possono usare i metodi descritti nel sito di Nodemcu

Flash del Firmware

In sostanza vi sono due metodi principali

  • Flash tramite il tool windows Nodemcu Flasher

Nodemcu Flasher

  • Flash tramite una utility in Python da usare in Linux, OSX o Windows

esptool

Il tool Nodemcu flasher permette di caricare un firmware di default sulla scheda in modo abbasta intuitivo e  velocemente.

Come si evince dalla documentazione sopra allegata con il devkit non è necessario eseguire alcuna operazione sul pin GPI0 dell’ESP; le operazioni di flash ed esecuzione si avviano automaticamente.

Nel prossimo articolo caricheremo il firmware usando il Nodemcu flasher

Caricare il firmware con Nodemcu Flasher

Firmware Nodemcu

Come discusso nel precedente articolo

Modulo WiFi ESP8266

lavoreremo con il soc ESP8266 utilizzando il firmware Nodemcu

Firmware Nodemcu

Nodemcu, alla data alla revisione 1.5.4.1, è basato sulla revisione LUA 5.1.4. Utilizza come base l’SDK NONOS di Expressif

SDK NONOS Expressif

 e come filesystem utilizza spiffs

spiffs filesystem

Il firmware può essere ottenuto, come specificato al link

Compilazione firmware Nodemcu

in vari modi

  • Tramite un servizio cloud, specificando anche i moduli aggiuntivi se necessari

Compilazione firmware tramite cloud

  • Tramite un sistema Docker

Compilazione tramite Docker

  •  Tramite un cross compilazione su Linux

Descriveremo come installare il sistema di cross compilazione su Linux.

 Vi è anche la possibilità di installare un firmware di default tramite il tool Nodemcu  Flasher.

Nel prossimo articolo tratteremo come caricare il firmware

Caricare il firmware Nodemcu

Modulo Wifi ESP8266

In questo articolo descriviamo brevemente il microcontroller ESP8266 della Espressif

ESP8266

E’ uns soc a basso consumo, composto da un microcontroller RISC a 32 bit ed  integra già al suo interno un sistema wifi. Al link delle risorse di Espressif si trovano le infomazioni dettagliate sul soc

Risorse ESP8266

Le specifiche del dispotivo sono presenti nel seguente documento pdf

Specifiche ESP8266

Il chip è disponibile in vari moduli o in schede di sviluppo, che facilita notevolmente l’uso dal momento che ha già al suo interno le corrette impostazioni hardware per il caricamento del firmware e la sua esecuzione.

Su internet si trovano vari siti che descrivono diversi progetti di Home Automation o IOT utilizzanti tale soc. Un sito di riferimento è sicuramente il seguente

ESP8266 Forum

All’interno del sito si trovano i riferimenti ai metodi maggiormente utilizzati per lo sviluppo del firmware per tale soc

  • Arduino Ide

Arduino IDE

ESP8266 Arduino github

  • SDK Espressif

Forum Espressif Sdk

ESP8266 SDK

  • PlatformIO

PlatformIO

  • Nodemcu

Nodemcu nel forum esp8266.com

Nodemcu

Nodemcu github

L’ESP8266 è acquistabile sui vari siti, ad esempio ebay, sia in forma di modulo

ESP8266 su ebay

o come piattaforma di sviluppo

Piattaforma di sviluppo ESP8266

Vi sono vari moduli di AI-Thinker

AI-Thinker

che implementano ESP8266; noi useremo il devkit Nodemcu con all’interno i moduli AI-Thinker ESP-12/ESP-12E. Nei link precedenti su ebay erano presenti anche i moduli  ESP8266 ESP-01 e kit di sviluppo di altri produttori.

Sul github di Nodemcu sono presenti le schede di sviluppo che utilizzeremo in seguito. In particolare sono presenti due versioni della piattaforma

  • Piattaforma di sviluppo Nodemcu V1 (ESP-12E)

Nodemcu devkit V1.0

  • Piattaforma di sviluppo Nodemcu V0.9 (ESP-12)

Nodemcu devkit V0.9

Al seguente link vi è una descrizione dei vari moduli AI-Thinker disponibili e come ricavare le informazioni per la propria flash

Moduli ESP8266

Dal github di Nodemcu

Nodemcu Devkit

i pin del devkit 1.0 sono i seguenti

Nei prossimi articoli descriveremo il firmware Nodemcu, come compilarlo, come caricarlo sulla scheda e faremo degli esempi utilizzando il linguaggio di scripting  LUA, utilizzato in tale firmware

Lua

insieme ai moduli sofware messi a disposizione da tale firmware

Documentazione nodemcu

Nel prossimo articolo descriveremo il firmware Nodemcu

Firmware Nodemcu

Compilazione modulo openwrt

Nell’articolo precedente

Compilazione Immagine OpenWrt

si è descritto come compilare il firmware OpenWrt per il router TP-Link TL-MR3420 V1. Di seguito si mostra come compilare un modulo, vsftpd, ed installarlo sul sistema da shell.

Eseguire il comando make menuconfig

ed accedere alla sezione relativa al modulo vsftpd sotto  Network->File Transfer ed abilitarlo come moduloOpenWrtModulovsftpdSalvare la configurazione in .config ed eseguire i comandi

Al termine del processo il pacchetto del modulo è presente nella directory packages sotto la  cartella bin della piattaforma utilizzataOpenWrtModulovsftpdCompilatoCopiare il file sul router come root mediante scp (su windows si può utilizzare WinScp) nella cartella /tmp. Non eseguire l’aggiornamento dei repository dei pacchetti dalla interfaccia web (se eseguito far ripartire il dispositivo) ed accedere al router mediante ssh, sempre come root, per procedere alla installazione del pacchetto

OpenWrt mette a disposizione tanti moduli che permettono di potenziare notevolmente le funzionalità del dispositivo; alcuni moduli sono abbastanza esosi come risorse , per cui è possibile installarli su router con hardware più potente.

Compilazione immagine openwrt

Dopo aver descritto brevemente il firmware OpenWrt nel precedente articolo

OpenWrt

si passa alla compilazione del firmware OpenWrt per il proprio dispositivo.

L’esempio sarà basato sul router TP-Link TL-MR3420 versione 1. Tale modello è presente fra la lista dei modelli supportati da OpenWrt; di seguito il link alla documentazione del modello in oggetto

TP-Link TL-MR3420

Dalla documentazione si nota che il SOC è un Atheros AR7241. Questa informazione sarà utilizzata in fase di configurazione della compilazione del firmware. Come operazione preliminare scaricare anche il firmware originale del router presente al link precedente

Firmware Originale

Nella pagina TP-Link TL-MR3420 sono presenti inoltre i link al firmware opewrt in due varianti:

  • Firmware per intallazione: openwrt-15.05.1-ar71xx-generic-tl-mr3420-v1-squashfs-factory.bin.
  • Firmware per aggiornamento: openwrt-15.05.1-ar71xx-generic-tl-mr3420-v1-squashfs-sysupgrade.bin

Partendo dal firmware originale si usa il firmware per installazione, mentre per aggiornare da openwrt si usa il secondo tipo.

Dal link di OpenWrt sulla compilazione dell’immagine

Sviluppo OpenWrt

si eseguono le seguenti operazioni su Debian preparato in precedenza

Preparazione ambiente Debian

Aperta una shell su Debian come utente normale (non root) si installano i prerequisiti

Creare una cartella OpenWrt e clonare il repository. Nel nostro caso scegliamo il branch stabile 15.05

Al termine del processo git eseguire

Siamo pronti a questo punto ad eseguire la compilazione della immagine per il TP-Link TL-MR3420 V1.

Si lancia il comando

scegliendo come Target System AR7xxx/AR9xxx come indicato di seguitoOpenWrtmenuconfigCon i seguenti pulsanti si modificano le opzioni:

  • y: si  compila.
  • m: si compila come modulo.
  • n: non viene considerato.

Fare riferimento al link

Compilazione OpenWrt

per tutte le opzioni.

Premendo Invio alla schermata successiva si sceglie la piattaforma correttaOpenWrtmenuconfigAtherosSi devono installare anche i pacchetti minimi per l’amministrazione del sistema, ossia LuCI baseOpenWrtmenuconfigLuciAlla schermata successiva si sceglie CollectionOpenWrtmenuconfigLuciCollectionse quindi l’opzione luci che installa automaticamente i prerequisiti tra i quali anche un server httpOpenWrtmenuconfigLuciCollectionsBaseSi installano anche i moduli crittografici del kernel accedendo ai moduli del kernelOpenWrtmenuconfigKernelModulesSi sceglie poi l’opzione delle api crittograficheOpenWrtmenuconfigKernelModulesCryptoApied infine si scelgono i seguenti moduli compilati con l’immagineOpenWrtmenuconfigKernelModulesCryptoApioptionsConviene salvare la configurazione in un file in modo da riutilizzarla in seguito. Salvare infine la configurazione nel file .config.

Uscire dal menuconfig ed eseguire il comando

in modo da controllare tutti i prerequisiti necessari alla compilazione.

Per avviare la compilazione eseguire il comando

Il comando precedente esegue la compilazione in verbose mode.

Al termine della compilazione si hanno i file dei firmware nella cartella bin piattaforma scelta. Nel nostro caso le immagini sono evidenziate nella figura seguenteOpenWrtFirmwareSi può procedere alla installazione del firmware.

ATTENZIONE: Prima di procedere alla installazione del firmware verificate la procedura di recupero del vostro router in caso di qualche problema, quale avvio in recovery mode, flash via tftp, jtag,  ecc. L’installazione dell’immagine generata sul dispositivo è a vostro rischio e pericolo. Non ci assumiamo alcuna responsabilità nel caso tale installazione generi malfunzionamento o blocco del disposivo.

Si faccia riferimento al sito di OperWrt per tutte le opzioni ed impostazioni utilizzabili per la compilazione e lo sviluppo dei moduli. Nel prossimo articolo

Compilazione modulo OpenWrt

si descrive come compilare ed installare da linea comando il server ftp vsftpd.

Immagini OpenWrt

In questo articolo parliamo brevemente di OpenWRT

OpenWrt

Come descritto sul sito inserito sopra è una distribuzione linux per dispositivi wireless embedded. E’ disponibile per vari router come elencato nella pagina seguente

Lista dispositivi supportati

Il firmware, basato su codice Open Source, è modulare con la possibiltà di inserire vari moduli.

Al seguente link è elencata la documentazione inerente i moduli e la funzionalità di installazione con il comando opkg

Moduli

Dopo l’installazione del firmware è possibile collegarsi in ssh sul router e controllare ad esempio la lista dei pacchetti installati o disponibili.

In particolare il comando

mostra i moduli disponibili per il dispositivo.

Il comando è attivo se viene inserita la lista dei siti per il download nel file opkg.conf

Moduli disponibili OpenWrt

ma questa operazione può essere eseguita anche dalla interfaccia web.

Ci si collega sul routerOpenWrtLoginSi accede alla sezione SoftwareOpenWrtSoftwarepngSi aggiorna la lista dei repositoryOpenWrtSoftwareUpdateListViene caricata la listaOpenWrtSoftwareListSi cerca tra i software disponibili, ad esempio vsftpdOpenWrtSoftwarevsftpdE si procede alla installazioneOpenWrtSoftwareInstallvsftpdA questo punto è tra i pacchetti installatiOpenWrtSoftwarevsftpdInstallatoNei prossimi articoli si descrive come compilare l’immagine per il proprio router insieme ad un package aggiuntivo

Compilazione Immagine OpenWrt

Creazione immagine Armbian per Orange PI PC

Passiamo ora alla creazione della immagine Armbian per Orange PI PC. Dal github dello sviluppatore

Armbian Github

sono elencati i passi da seguire.

Dal sito Armbian

Compilazione immagine Armbian

l’ambiente di compilazione testato è Ubuntu. Nel nostro test utilizzando una distribuzione Ubuntu 16.04.1 LTS x86-64

Ubuntu

lo script compile.sh installa automaticamente i pacchetti necessari alla compilazione dell’immagine. Sul sito sono presenti inoltre le varie opzioni di compilazione.

Volendo utilizzare la distribuzione Debian 8.5 come host per eseguire la procedura, si sono seguiti i seguenti passi riportati di seguito. Nel caso si riportino errori si utilizzi la distribuzione Ubuntu suggerita sul sito Armbian.

Come operazione preliminare installiamo il crosscompilatore per Debian

https://wiki.debian.org/CrossToolchains

Creare il file crosstools.list in /etc/apt/sources.list.d

ed inseriamo la voce

Salviamo il file ed aggiungiamo la chiave del repository

Installiamo i seguenti pacchetti e l’architettura armhf

Siamo pronti ad installare l’ambiente per la compilazione sia su Ubuntu che Debian. Creaimo una cartella armbian sotto orangepi nella cartella dell’utente con cui ci si collega, che nel nostro caso è sviluppo

 Ci si posiziona in questa cartella e si eseguono i comandi

 Per procedere alla compilazione eseguire

Inserire la password di root per poter proseguire. Quando richiesto selezionare come indicato nelle immagini seguenti.

  • Immagine completa

fullosimage

  • Scheda OrangePI PC

orangepipc

  • Scegliamo il kernel di default

defaultkernel

  • Immagine Debian stabile

debianstable

  • Immagine con Desktop Envinronment

debiande

Sotto la cartella output/images viene generata l’immagine da caricare sulla scheda micro sd come descritto in articolo precedente

immagine