community italiana di domotica personale
 
Programmare e configurare NodeMCU usando firmware Tasmota

Programmare e configurare NodeMCU usando firmware Tasmota

Scopi DELLA GUIDA
  • Programmare un dispositivo NodeMCU con firmware Tasmota al fine di controllarne le interfacce (quindi le funzionalità) tramite comandi e caratteristiche di questo firmware
  • Livello di difficoltà: medio
Concetti affrontati:
  • flash firmware
Componenti software utilizzate:
Dispositivi fisici utilizzati:
  • un dispositivo NodeMCU
  • un cavo micro UBS
  • un computer (Apple, Windows o Linux).
GUIDA maggiormente indicatA per:

Tutti gli ambienti

NOTE E DISCLAIMER
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata e realizzata SOLO da personale qualificato;
  • qualsiasi modifica non prevista attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno infatti puro scopo didattico) e fa decadere garanzia, omologazioni e certificazioni di qualità; dei dispositivi interessati;
  • tutte le tecniche descritte si intendono applicate a software e firmware aggiornati alle ultime versioni disponibili;
  • gli articoli di inDomus sono totalmente indipendenti e non sponsorizzati. Se mai questo cambiasse, verrà segnalato chiaramente sulle pagine oggetto di sponsorizzazione;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In caso di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat;
  • se hai bisogno di orientarti, c'è la mappa.
Revisione guida: 2.0

ATTENZIONE: la presente guida è più che sufficiente allo scopo di riprogrammare il componente; nell’eventualità di problemi, far riferimento alla più ampia e strutturata MASTERGUIDE dedicata alla riprogrammazione dei dispositivi basati su ESP8266, presso la quale sono spiegati molti più concetti e tecniche.

Abstract

Ogni dispositivo elettronico contiene a grandi linee una piccola porzione software, chiamata firmware, che ne determina funzioni e comportamento. La nostra automobile è dotata di firmware; ne possiede uno la lavatrice, il nostro telecomando, persino una radiosveglia moderna.

Il NodeMCU non fa differenza: concepito per essere un dispositivo economico utile alla realizzazione di prototipi e progetti veri e propri, esso accoglie – con la sola limitazione legata alla sua memoria disponibile – qualunque firmware concepito per la sua tipologia di architettura. Maggiori informazioni sul dispositivo sono disponibili sulla sua scheda presente su inDomus.

Obiettivo della presente guida è la programmazione del NodeMCU tramite firmware Tasmota, uno dei tanti progetti Open Source disponibili in rete, da noi (e da molti) preferiti ad altri per ampiezza delle funzionalità, supporto da parte della community e ampiezza dei dispositivi supportati.

Per fare questo serve un computer, un dispositivo di connessione tra il computer e il NodeMCU (chiamato adattatore USB/TTL) e un software sul computer (in questo caso utilizzeremo “ATOM”) per effettuare la procedura di programmazione. Nel NodeMCU, però, l’adattatore tendezialmente non serve perché già integrato sull’unità: infatti, essa presenta una porta microUSB utile alla connessione diretta col computer di supporto.

Utilizzare Tasmota (che, come suggerito dal nome, nascerebbe per la riprogrammazione dei componenti della famiglia ITEAD Sonoff Smart Home) per programmare un NodeMCU è una buona idea dal momento che l’adozione di questo firmware permette il controllo facilitato, quasi elementare, delle interfacce fisiche del NodeMCU, rendendolo così semplice da utilizzare anche per progetti complessi (nonché integrabile in domotica tramite HUB personali).

Procedimento

  1. Descrizione procedimento
  2. Installazione e configurazione ATOM&PlatformIO
  3. Verifica della porta COM assegnata dal computer
  4. Download e configurazione su PlatformIO del firmware Tasmota
  5. Collegamento del NodeMCU in modalità “flash”
  6. Upload del firmware sul dispositivo NodeMCU
  7. Come aggiornare OTA (over the air) un Sonoff

Descrizione procedimento

Per programmare un NodeMCU è necessario, in primis, installare e configurare ATOM, dopodiché:

  • scaricare il firmware Tasmota;
  • collegare (non in modalità flash) l’unità al computer tramite cavo micro USB aprendo poi il “Serial Monitor” scoprire quale sia la porta COM automaticamente assegnata, poi scollegare il NodeMCU;
  • configurare i due file di configurazione, “platformio_override.ini” e “tasmota/my_user_config.h“;
  • effettuare la compilazione ovvero effettuare la “Build” (in caso di errori, correggerli e riprovare);
  • collegare il NodeMCU al computer in modalità flash;
  • effettuare l’aggiornamento, ovvero “Upload”.

Entriamo ora nel dettaglio.

Installazione e configurazione ATOM

Scaricare e installare il software ATOM presso questo link: https://atom.io/. Tale software è gratuitamente disponibile per tutte le maggiori piattaforme (Apple, Windows e Linux). Una volta installato, è necessario configurarlo installando il pacchetto aggiuntivo chiamato “platformio-ide“.
Per far ciò, recarsi presso:

  • Mac OS XMenu: Atom > Preferences > Install
  • WindowsMenu: File > Settings > Install
  • LinuxMenu: Edit > Preferences > Install

e nella buca di ricerca cercare, appunto, “platformio-ide“. Una volta trovato il pacchetto, cliccare su Install.

platformio-ide

N.b. L’installazione di Atom + platform-io può prevedere l’installazione di ulteriori pacchetti aggiuntivi, come per esempio Python. Qualora l’installer chiedesse tali aggiunte, provvedere a soddisfare la sua richiesta (pena il mancato funzionamento successivo del tool).

Dopo l’installazione, chiudere e riaprire ATOM, che a questo punto avvierà per default il pacchetto PlatformIO, necessario per riprogrammare il NoceMCU. Il software provvederà a installare una serie di pacchetti aggiuntivi in modo completamente automatico.

Al termine, PlatformIO chiederà di riavviare per un’ultima volta ATOM.
(ndr. Da qui in poi si farà riferimento direttamente a PlatformIO, intendendolo come ATOM+PlatformIO.)

Verifica della porta COM assegnata dal computer

In caso la connessione tramite il solo cavo micro USB verso il computer di appoggio non dovesse funzionare, è possibile utilizzare un adatatore USB/TTL.

Un adattatore USB/TTL (FTDI) è un semplice dispositivo che ci permette di mettere in comunicazione il nostro computer e il cuore del dispositivo NodeMCU. L’adattatore, che può variare nella forma e nei colori, di base presenta una porta USB e quattro contatti, i quali vanno messi a contatto con quelli presenti sulla board del NodeMCU utilizzando dei cavetti di connessione Dupont.

I contatti da utilizzare sulla board NodeMCU sono i primi quattro a in basso a destra nella figura che segue (che rappresenta il NodeMCU visto dall’alto con la porta microUSB verso il basso e l’antenna Wi-Fi verso l’altro):

NodeMCU - Schema connessione - 4 pin

Come collegare NodeMCU e adattatore USB/TTL:

  • collegare il pin che eroga la tensione in uscita (VCC) dell’adattatore USB/TTL sul primo pin del NodeMCU (“3.3V“), assicurandosi che (se presente) il selettore di tensione dell’adattatore USB/TTL sia impostato su 3.3V e non su 5V. In caso l’adattatore possa erogare in uscita solo 5V, utilizzare il primo pin sulla sinistra dell’immagine (“Vin”);
  • collegare il neutro in uscita (GRN) dall’adattatore USB/TTL sul secondo pin del NodeMCU (“GND”);
  • collegare il pin “TX” dell’adattatore USB/TTL al pin “RX” del NodeMCU (“GPIO 03”);
  • collegare il pin “RX” dell’adattatore USB/TTL al pin “TX” del NodeMCU (“GPIO 01”);

Collegare dunque il modulo NodeMCU all’adattatore USB/TTL ed esso, a sua volta, ad una porta USB del computer tramite il cavo.
Selezionare poi la voce di menu “PlatformIO > Serial Monitor“.

Si aprirà una finestra come la seguente:

Dopo un istante, nella voce “Port” verrà indicata quale porta COM il computer abbia assegnato al modulo USB/TTL.
Prenderne nota.
Scollegare ora il modulo dalla porta USB.

NOTA per gli utenti Apple: Atom, su macOS, potrebbe identificare una porta diversa dalla classica COMx. Per capire come configurare la porta in questa casistica, far riferimento a questo thread (valevole per i moduli Sonoff ma analogamente anche per NodeMCU). Al di lì di quanto espresso nel link, si ricordi sempre di installare il driver corretto per Mac del proprio adattatore USB/TLL.

Dopo aver installato il driver corretto, nel system report del Mac, alla voce USB, dovrà (collegando l’adattatore USB/TTL), una voce come segue:

FT232R on Mac

Download e configurazione su PlatformIO del firmware Tasmota

A questo punto va scaricata l’ultima versione del firmware Tasmota.
Una volta scaricato, decomprimere il file .zip dove si preferisce.

Ora, nel menu di PlatformIO, selezionare “File > Add Project Folder”  e selezionare quindi la cartella dove si è precedentemente decompresso il file zip di cui sopra.

Così facendo, PlatformIO aprirà il progetto Tasmota.

A questo punto è necessario “configurare” il pacchetto software. Esso infatti viene fornito “di base”, senza personalizzazioni, le quali sono necessarie affinché, al termine della programmazione, il NoceMCU possa operare correttamente.

Nello specifico, il processo è il seguente:

  • scegliere quale componente del firmware Tasmota compilare (“sonoff” è il pacchetto base che ci interessa);
  • indicare il nome e la password della Wifi nel quale il NodeMCU dovrà “entrare” automaticamente una volta programmato e acceso;
  • indicare la porta COM da utilizzare per la trasmissione dati (identificata al passo precedente della guida);
  • compilare il firmware;
  • scriverlo sul dispositivo.

Per scegliere quale parte del firmware compilare, aprire su PlatformIO il file “platformio_override.ini” e accertarsi che sia configurato solo “default_envs = tasmota” come da immagine:

Atom - platform.io

Le voci commentate a seguire identificano le alternative, ovvero la compilazione o di una parte minimale del firmware (“default_envs = tasmota-minimal“) oppure delle versioni complete in lingua (“default_envs = tasmota-IT” è quella italiana), oppure quella standard (appunto, come suggerito sopra, “default_envs = tasmota“).

Cercare ora la voce “upload_port =“) e inserire come valore la COM precedentemente identificata al passo precedente.

Una volta completato il tutto, salvare e chiudere il file.

Ora è necessario configurare nome e password della nostra Wifi.

Aprire il file “tasmota/my_user_config.h” e trovare le variabili: “#define STA_SSID1” e  #define STA_PASS1“:

Atom - user_config.h

Inserire lì il nome della propria Wi-fi e la relativa password.

N.b. Se si sta utilizzando Tasmota allo scopo di pilotare un’antenna ZigBee (per esempio come nel progetto di realizzazione di un BRIDGE/Gateway tramite NodeMCU, il quale sfrutta la funzionalità ZigBee-To-Tasmota) , cercare la riga (tipicamente commentata) contenente la chiave:

#define USE_ZIGBEE

e rimuovere i caratteri di commento (“//“).

Infine, salvare e chiudere il file.

Ora siamo pronti per “compilare” il nostro pacchetto firmware. Cliccare sul menu “PlatformIO > Build“.
Se la procedura andrà a buon fine, dovreste ottenere una schermata simile a questa:

compilazione firmware

Il pacchetto è compilato e pronto per essere inviato al dispositivo.

Nb. l’azione di compilare (“Build”) il firmware Tasmota si traduce nella creazione di un file (“firmware.bin“) presso il percorso “%directorycontenentetasmota/.pio/build/tasmota“. Questa informazione viene utile quando si vorrà effettuare l’aggiornamento OTA (Over-The-Air), il quale chiede di indicare il file “firmware.bin” della nuova versione del firmare che sia stato precedentemente compilato.

Qui è disponibile una guida dedicata all’aggiornamento massivo dei dispositivi dotati di firmware Tasmota tramite un’unica operazione centralizzata, o singolarmente.

Collegamento del NodeMCU in modalità “flash”

Per fare in modo che il NodeMCU accetti “in ingresso” un nuovo firmware è necessario impostarlo in modalità “flash”.
Per impostare un NodeMCU in questa modalità, la sequenza è la seguente

  • collegare il NoceMCU;
  • tenere premuto il pulsante “FLASH” presente sul NodeMCU
  • collegare il cavo alla porta USB del computer;
  • rilasciare il pulsante “FLASH”.

A questo punto (e solo a questo punto, se avrete fatto tutto bene), il NodeMCU sarà pronto a ricevere il nostro pacchetto firmware Tasmota precedentemente configurato e compilato.

Se l’upload (prossimo paragrafo) fallisse, riprovate questa procedura daccapo.

Upload del firmware sul NodeMCU

A questo punto sarà sufficiente selezionare sul menu “PlatformIO > Upload” per avviare la fase di programmazione e propria. Se al termine della procedura leggerete “SUCCESS” (analogamente alla schermata relativa alla compilazione del firmware), allora bene, avrete effettuato correttamente la prima configurazione custom del vostro NodeMCU. In caso invece la procedura fallisca, ripetere i passi sopra, avendo cura di verificare con attenzione la configurazione della COM, delle connessioni e tutte e sequenze operative.

Ora che la procedura è andata a buon fine, è necessario verificare che tutto funzioni correttamente. Disconnettete il cavo USB per poi riconnetterlo subito, questa volta SENZA tenere premuto il pulsante “FLASH”: questo farà sì che il NodeMCU venga alimentato e cominci a funzionare normalmente senza che entri in modalità di programmazione.

A questo punto il NodeMCU si sarà acceso e dovrebbe accedere alla Wi-Fi, in quanto già informato delle coordinate d’accesso (vedi punto 2 della guida). Per collergarsi su di esso è però necessario scoprire quale IP il nostro router gli avrà assegnato, cosa che a priori non possiamo conoscere.

Per far questo è necessario cliccare su  “PlatformIO > Serial Monitor” e, nella schermata che segue:

platformIO - Serial monitor

selezionare alla voce “Baudrate” impostare “115200”, mentre il campo “Port’ dovrebbe configurarsi automaticamente.
Cliccando su “Start” dovrebbe apparire una schermata come segue:

ip firmware platformio

la quale dovrebbe indicare l’IP ottenuto dal NodeMCU nel momento in cui è entrato nella rete Wifi, in questo caso “10.0.1.43”. Ora, aprendo un qualsiasi browser sul proprio computer, si inserisca nell’indirizzo l’IP poco fa ottenuto e premere invio.

Se tutto è andato bene, dovrebbe apparire una schermata come segue:Complimenti!
Il NodeMcu è correttamente riprogrammato con il firmware Tasmota.

Come si nota dall’immagine, in alto viene indicato il modello “Sonoff Basic“, in quanto il firmware Tasmota è ancora configurato in modalità default. Sarà quindi necessario entrare nel menu “Configuration” > “Module Configuration” e scegliere il modello più adatto in base al dispositivo fisicamente in uso.

In questo caso, trattandosi NON di un componente ITEAD, l’impostazione relativa  la configurazione sarà “Generic”, come da figura che segue:

Sonoff-Tasmosta - Generic Module

Come si noterà, dopo aver impostato il modulo in modalità “Generic” apparirà una lista di 11 elementi configurabili i quali raffigurano logicamente l’equivalenza dei pin fisici (GPIO) presenti sul NodeMCU.

NodeMCU - Schema connessione - Pin utilizzabili da Sonoff-Tasmota

In base all’uso che si farà di NodeMCU, tali voci saranno utili per configurare logicamente ciò che – sul piano fisico – collegheremo e vorremo controllare tramite NodeMCU e firmware Tasmota.

Come aggiornare OTA (Over The Air) un NodeMCU

Per aggiornare un NodeMCU precedentemente programmato Tasmota è sufficiente compilare la versione aggiornata del firmware Tasmota (ovvero questo passaggio della presente guida) e recuperare il file “firmware.bin” (vedi la voce “nota bene” alla fine del passaggio indicato indicato).

In realtà è necessario prima compilare il firmware “minimal” (“default_envs = tasmota-minimal” nel file plaformio.ini), mettere da parte il file “firmware.bin” risultante, ricompilare il firmware “completo” (“default_envs = tasmota” – oppure distribuzione in lingua – nel file plaformio.ini) e mettere da parte il secondo file “firmware.bin“.

Successivamente, collegarsi tramite web browser al Sonoff e selezionare “Firmare Upgrade”.

Alla voce “Upgrade by file upload“, selezionare il file “firmware.bin” di cui sopra relativo alla versione “minimal”, poi cliccare il bottone “Start upgrade” e attendere semplicemente la conclusione dell’operazione. Al termine, ricollegarsi all’interfaccia web e rifare la procedura, questa volta passandogli il file “firmware.bin” del firmware “completo”.

Qui è disponibile una guida dedicata all’aggiornamento massivo dei dispositivi dotati di firmware Tasmota con un’unica operazione centralizzata, oppure singolarmente.

Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. Se ti sei perso, a tua disposizione c'è la mappa.