Programmare e configurare NodeMCU usando firmware Tasmota

Scopi DELLA GUIDA
  • Programmare un dispositivo NodeMCU con firmware Sonoff-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:
GUIDA maggiormente indicatA per:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi modifica all'impianto elettrico dev'essere effettuata da personale qualificato
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (la presente guida ha puro scopo didattico)
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere la garanzia.

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 Sonoff-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.

Utilizzare Sonoff-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

1. Descrizione procedimento

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

  • scaricare il firmware Tasmota;
  • collegare (non in modalità flash) il Sonoff all’adattatore USB/TTL e, aprendo il “Serial Monitor” scoprire quale sia la porta COM automaticamente assegnata, poi scollegare il NodeMCU;
  • configurare i due file di configurazione, “platformio.ini” e “user_config.h”;
  • effettuare la compilazione ovvero effettuare la “Build” (in caso di errori, correggerli e riprovare);
  • collegare il NodeMCU all’adattatore USB/TTL in modalità flash;
  • effettuare l’aggiornamento, ovvero “Upload”.

Entriamo ora nel dettaglio.

2. 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.

scorri per ringrandire

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.)

3. Verifica della porta COM assegnata dal computer

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

4. 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.ini” e accertarsi che sia configurato solo “env_default = sonoff” come da immagine:

scorri per ingrandire

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

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 “Sonoff > user_config.h” (oppure “Sonoff > my_user_config.h” a partire dalla versione 6.3 di Sonoff-Tasmota) e trovare le variabili: “#define STA_SSID1” e  “#define STA_PASS1“:

scorri per ingrandire

Inserire lì il nome della propria Wi-fi e la relativa password. 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:

scorri per ingrandire

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\.pioevens\sonoff“. 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 Sonoff-Tasmota tramite un’unica operazione centralizzata, tramite TasmoAdmin.

5. 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 al modulo USB/TTL (come spiegato prima);
  • 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.

6. 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:

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

scorri per ingrandire

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 Sonoff-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 Sonoff-Tasmota.

7. Come aggiornare OTA (Over The Air) un NodeMCU

Per aggiornare un NodeMCU precedentemente programmato Tasmota è sufficiente compilare la versione aggiornata del firmware Sonoff-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” (“env_default = sonoff-minimal” nel file plaformio.ini), mettere da parte il file “firmware.bin” risultante, ricompilare il firmware “completo” (“env_default = sonoff” – 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 Sonoff-Tasmota con un’unica operazione centralizzata, tramite TasmoAdmin.


Dubbi? Perplessità? Fai un salto sul FORUM o sulla CHAT @DISCORD!
Questa pagina è coperta dalla licenza Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License il che significa che puoi liberamente condividerlo, senza modificarlo, citando il link della fonte.