Archivi tag: esp8266

Micropython – Strumenti di sviluppo Ampy – Eric

Dopo aver installato uPyCraft nell’articolo precedente

MicroPython – IDE MicroPython uPyCraft

esaminiamo ora altri strumenti disponibili per lo sviluppo MicroPython su varie piattaforme.

In questo articolo si mostrano le operazioni da eseguire su Windows e Linux.

Primo pacchetto Python da installare è Ampy (Adafruit MicroPython Tool)

ampy

Il tool è presente nei repository python, per cui può essere installato mediante pip.

In Windows eseguire in una console dos

Analogamente in Linux eseguire in una shell

I comandi disponibili sono visibili eseguendo

ampyAmpy consente il trasferimento, creazione, visualizzazione, esecuzione dei file sul dispositivo.

Per quanto concerne l’IDE si può installare Eric, IDE Python generico

Eric

Eric non consente dall’IDE la comunicazione con il dispositivo come visto con uPyCraft; tale compito è demandato ad Ampy. Per l’installazione procedere come segue:

  •  Per Linux Debian 9 basta eseguire

Il tool è disponibile tra gli strumenti di sviluppo; alla prima esecuzione richiede delle impostazioni di default

ericSettingsSi definisce la posizione del workspace

ericWorkspacee si accede all’IDE

eric

  • Per Windows scaricare lo zip

Eric

Scompattare lo zip in una cartella da cui eseguirlo; installare i prerequisiti

Eseguire a questo punto l’installazione di eric cliccando due volte su install.py

ericInstallWindows

Il programma procede al controllo dei prerequisiti ed al completamento della installazione

ericWindowsProcedure

Cliccando due volte su eric6.py  o eseguendo eric6 da una finestra dos viene eseguito il programma in modo analogo a quanto visto per Linux Debian

ericWindows

Nel prossimo articolo esamineremo brevemente la struttura di un programma MicroPython

MicroPython – Struttura programma MicroPython

Micropython – IDE MicroPython uPyCraft

Dopo l’installazione del firmware sul dispositivo Nodemcu esp8266 DevKit

Firmware MicroPython

passiamo ora ad esaminare uno strumento di sviluppo può essere adatto allo sviluppo di codice Python.

 Uno strumento che permette sia di scrivere codice che di caricarlo sul dispositivo è uPyCraft

uPyCraft

 Lo strumento al momento funziona per Windows e dalla versione 0.30 è disponibile anche per Linux; il codice sorgente è presente al link

uPyCraft Source

Di seguito i passi per Windows e Linux.

  • Windows

Una volta scaricato il pacchetto lo si esegue come amministratore; viene richiesta l’installazione del font Monaco

monaco-fontDopo l’installazione del font si accede all’IDE

upycraft-v0-29Si imposta la regione corretta in Tools->Preferences->Language Location

upycraftlocationed i parametri della porta seriale in Tools->Preferences->Serial

upycraftserialsettingsColleghiamo a questo punto il dispositivo su una porta USB ed impostiamo la porta corretta uPyCraft

upycraftserialSi sceglie il dispositivo, in questo caso ESP8266

upycraftdeviceCliccando sulla icona di connessione si accede al dispositivo ed ai file presenti sullo stesso

upycraftconnectionCon l’installazione del firmware è presente solo il file boot.py sul dispositivo

upycraftfilesystemLo strumento permette di scaricare degli esempi di codice MicroPython per la scheda in esame;  scegliamo blink.py

examplesPremendo il pulsante “Download and Run” si carica sul dispositivo il codice e lo si esegue

blinkIn questo caso il led presente sulla scheda Nodemcu DevKit lampeggia.

  • Linux

Il tool è analogo nella versione Linux; si scarica il pacchetto a cui si assegna il diritto di esecuzione e lo si lancia, Occorre assegnare all’utente i diritti per l’accesso sulla porta seriale con il comando, già visto in precedenza

Nel nostro caso, su Debian 9, si hanno le seguenti schermate analoghe a quanto visto su Windows.

Si apre l’IDE

upycraft-v0-30linuxSi imposta la regione corretta in Tools->Preferences->Language Location

upycraftlocationlinuxed i parametri della porta seriale in Tools->Preferences->Serial

upycraftserialsettingslinuxColleghiamo a questo punto il dispositivo su una porta USB ed impostiamo la porta corretta uPyCraft

upycraftseriallinuxSi sceglie il dispositivo, in questo caso ESP8266

upycraftdevicelinuxCliccando sulla icona di connessione si accede al dispositivo ed ai file presenti sullo stesso

upycraftconnectionlinuxCon l’installazione del firmware è presente solo il file boot.py sul dispositivo

upycraftfilesystemlinuxLo strumento permette di scaricare degli esempi di codice MicroPython per la scheda in esame;  scegliamo blink.py

exampleslinuxPremendo il pulsante “Download and Run” si carica sul dispositivo il codice e lo si esegue

blinklinuxCome in Windows il led presente sulla scheda Nodemcu DevKit lampeggia.

Nella versione 0.30 per Windows abbiamo notato un funzionamento non sempre corretto, per cui in tale sistema operativo abbiamo continuato ad usare la versione 0.29.

Ulteriori informazioni su uPyCraft sono reperibili sul sito dello strumento

Documentazione uPyCraft

Nel prossimo articolo tratteremo un altro strumento di sviluppo Python

MicroPython – Strumenti di sviluppo Ampy – Eric

MicroPython – Python su dispositivi embedded

In questo articolo iniziamo a trattare MicroPython

MicroPython

una implementazione di Python3

Python

per dispositivi embedded.

Sul sito MicroPython sono disponibili varie immagini per diversi dispositivi, tra cui i moduli esp8266 ed esp32

MicroPython Dowloads

 Iniziamo i nostri test con una scheda nodemcu esp8266 DevKit

Nodemcu Devkit

Si procede a caricare il firmware su tale scheda.

Sul sito MicroPython si fa riferimento anche al caricamento del firmware sulla scheda con le informazioni disponibili al link

Tutorial MicroPython per esp8266

Per il caricamento del firmware su utilizza sempre il tool esptool, disponibile anche sul repository Python.

Per poter procedere all’utilizzo occorre installare Python3 sulla piattaforma di sviluppo utilizzata. Di seguito i passi da seguire per Windows e Linux.

  • Windows

Per Windows occorre innanzitutto installare l’ambiente Python3, disponibile al seguente link

Python per Windows

Nel nostro caso è stata scaricata la versione 3.6.4 per sistemi a 64 bit. Si procede alla installazione del pacchetto con diritti di amministrazione

setuppythonDopo aver proceduto ad aggiungere Python nel Path si preme “Install Now”

pythonsetupendDopo aver concluso l’installazione si apre una shell dos e si controlla la versione di Python installata

pythonversionSempre dalla consolle dos si procede alla installazione di esptool con il comando

esptoolinstallationSi può procedere a questo punto all’installazione del firmware MicroPython sulla scheda Nodemcu esp8266 DevKit. Occorre, naturalmente, aver installato su Windows i drivers del chip seriale-ttl presente sul proprio modello di scheda. Ci si posiziona nella cartella in cui si è scaricato il firmware e si eseguono i comandi da shell dos

erase_flashProcedere al caricamento del firmware

firmware_flashUna volta installato il firmware connettiamoci sulla consolle Python utilizando, nel nostro caso con la scheda nodemcu DevKit, la stessa porta già sfruttata per il caricamento del firmware.

Su Windows si può utilizzare il programma putty

Putty

ed impostare la connessione seriale ad un baudrate di 115200

repl_putty

  • Linux

Per Linux utilizziamo la distribuzione Debian 9, ma la procedura può essere estesa ad altre distribuzioni. Dopo l’installazione di Debian 9, analoga a quanto eseguito per la versione 8

Debian 8

si procede alla installazione in Python3 e del tool esptool

 Aggiungere l’utenza utilizzata su Debian al gruppo dialout

Nel nostro caso, utilizzando sviluppo come utente, il comando è il seguente

Passiamo alla installazione del pacchetto Python esptool

Si può quindi procedere alla installazione del firmware in modo analogo a quanto fatto su Windows.

Si controlla su che porta seriale è disponibile la scheda (ttyUSBX)

ttylinuxSi procede quindi alle operazioni di cancellazione e caricamento del firmware

 Per  collegarsi sulla scheda si usa screen

il cui manuale è presente al link

Manuale screen

Per eseguire il detach premere

per eseguire il resume

 Per chiudere screen

Una volta collegato si ottiene il medesimo risultato di Windows

screenNel prossimo articolo incominceremo a vedere quali IDE si possono usare per creare e caricare il nostro codice Python

IDE MicroPython uPyCraft

Mqtt con Beaglebone ed ESP8266 – Lista articoli

Di seguito si elencano i vari articoli da seguire per costruire il proprio ambiente IOT composto da sensori e relé con Beaglebone, ESP8266 e server MQTT Mosquitto.

  1. Architettura e protocollo Mqtt
  2. Mqtt Mosquitto su Beaglebone
  3. Mqtt su ESP8266
  4. Sensore di Temperatura su ESP8266 con protocollo Mqtt
  5. Relé su ESP8266 con protocollo Mqtt
  6. Impostazione server Http, protocollo websocket Mqtt su Beaglebone
  7. Installazione e configurazione Dashboard Freeboard per report misure su Beaglebone
  8. Client Android con protocollo Mqtt per gestione sensori

 

 

Mqtt con Beaglebone ed ESP8266 – Client Android

Dopo  aver configurato il server Mosquitto, i nodi ESP8266 e la dashboard Freeboard

Mqtt con Beaglebone ed ESP8266 – Installazione mosquitto su Beaglebone

Mqtt con Beaglebone ed ESP8266-MQTT ESP8266

Mqtt con Beaglebone ed ESP8266-MQTT su ESP8266 per sensore temperatura

Mqtt con Beaglebone ed ESP8266-MQTT su ESP8266 per Relé

Mqtt con Beaglebone ed ESP8266 – Freeboard

passiamo ad installare un client Mqtt su un dispostivo Android.

 Dal playstore sono disponibili vari client Mqtt

android mqttDopo aver configurato i topic di publishing e subscriber sul client Android, in modo analogo a quanto fatto per i widget di Freeboard

Mqtt con Beaglebone ed ESP8266 – Freeboard

è possibile controllare temperatura ed umidità del sensore, monitorare lo stato dei dispositivi, inviare comandi al relé (Accensione, Spegnimento, Stato, Riavvio, Sleep) ed al sensore (Riavvio,Sleep, Stato).

Di seguito uno screenshot con alcuni topic e publishing dell’esempio con MQTT Dashboard

android mqtt relayoffCon il relé attivato

android mqtt relayon

Mqtt con Beaglebone ed ESP8266 – Freeboard

Dopo aver installato un client mqtt web

Mqtt con Beaglebone ed ESP8266-Web server e Mqtt websocket

passiamo ad installare la dashboard freeboard

Freeboard

Posizionamoci in /var/www/html sul Beaglebone come root e cloniamo il repository github di freeboard; cambiare il proprietario della cartella freeboard in www-data:www-data

 Accedendo con brower sul Beaglebone nella cartella freeboard si accede alla dashboard

freeboardOccorre a questo punto inserire dei plugin aggiuntivi a freeboard. Si aggiungono i seguenti plugin

  •  freeboard-mqtt

Clonare il github https://github.com/alsm/freeboard-mqtt

Scaricare la libreria javascript mqtt paho

Paho mqtt javascript library

Il link alla libreria è il seguente

Ultima Versione mqttws31.js

Creare una cartella mqtt sotto la cartella plugins di freeboard e copiare i file mqttws31.js e paho.mqtt.plugin.js

Editare il file paho.mqtt.plugin.js ed inserire il riferimento della libreria mqttws31.js nella sezione external_scripts; anche in questo caso cambiare il proprietario per la nuova cartella mqtt ed i suoi contenuti

Cambiare il proprietario

Editare il file /var/www/html/freeboard/index.html ed inserire il riferimento al nuovo plugin paho.mqtt.plugin.js  nella sezione head.js

  • Aggiungere il plugin dynamic-highcharts

Clonare in una cartella il github

Copiare il file plugin_highcharts.js nella cartella /var/www/html/plugins/thirdparty e cambiare il proprietario

Editare anche in questo caso il file /var/www/html/freeboard/index.html ed aggiungere il plugin come fatto al punto precedente

Accedere sulla dashboard freeboard ed aggiungere i collegamenti ai topic di temperatura ed umidità come datasource, i gauge per la misura instananea dei valori e la rappresentazione dei valori nel corso del tempo. Di seguito esempi di impostazioni :

  • Datasource

freeboard datasource

  • Gauge

freeboard gauge

  • Timeseries

freeboard timeseriesUtilizzando Chrome/Chromium come brower è possibile salvare le impostazioni in un file json. La configurazione può essere caricata localmente dal brower o può essere caricata dal browser dal webserver, salvando ad esempio il file dashboard.json in /var/www/html/freeboard; inserendo l’url

si accede alla Dashboard.

Di seguito la interfaccia Freeboard con varie widgets che mostrano lo stato e l’andamento dei sensori e relay ESP8266

freeboard dashboardIn questa serie di articolo il Beaglebone è stato configurato in modo da porte accedere utlizzando l’alias beaglebone.local/beaglebone

Preparazione sd card Debian per Beaglebone Black

ma si può usare comunque l’IP del Beaglebone per accedere ai servizi forniti dalla scheda.

Nel prossimo articolo si tratta la configurazione di client Mqtt Android

Mqtt con Beaglebone ed ESP8266 – Client Android

 

 

Mqtt con Beaglebone ed ESP8266-Web server e Mqtt Websocket

Dopo aver configurato il server MQTT ed i nodi ESP8266

Mqtt con Beaglebone ed ESP8266 – Installazione mosquitto su Beaglebone

Mqtt con Beaglebone ed ESP8266-MQTT ESP8266

Mqtt con Beaglebone ed ESP8266-MQTT su ESP8266 per sensore temperatura

Mqtt con Beaglebone ed ESP8266-MQTT su ESP8266 per Relé

passiamo alla configurazione del webserver su Beaglebone ed alla configurazione del websocket sul broker mqtt mosquitto.

 Accediamo sul Beaglebone in ssh e disabilitiamo i seguenti servizi

Accedere in /etc/apache2/sites-enabled e modificare in 000-default.conf la porta del webserver da 8080 ad 80

In /etc/apache2/port.conf modificare la porta in ascolto da 8080 ad 80

Far ripartire il server http con il comando

Accedere alla configurazione di mosquitto in /etc/mosquitto/conf.d e creare il file websockets.conf con il seguente contenuto

Dopo aver salvato il file far ripartire mosquitto

Disabilitiamo l’ipv6 sul Beaglebone come descritto al link

Disabilitazione Ipv6 Debian

Nel file /etc/sysctl.conf aggiungiamo

e facciamo ripartire il Beaglebone.

Procediamo a questo punto ad installare sul server http un client MQTT su websocket e la dashboard Freeboard.

 Per quanto concerne il client websocket mqtt hive-mqtt si scarica il codice dal github

Hive mqtt

Accedere come root in ssh sul Beaglebone in /var/www/html;  clonare il client sotto mqtt-web e cambiare il proprietario della cartella clonata

Se accediamo da brower sul server http in mqtt-web viene mostrato il client web; si inseriscono le informazioni per la connessione

mqtt web client connessioneSi inserisco i topic in sottoscrizione e publishing e si hanno i vari messaggi e comandi per il broker

mqtt web clientNel prossimo articolo imposteremo la dashboard Freeboard sul Beaglebone

Mqtt con Beaglebone ed ESP8266 – Freeboard

Mqtt con Beaglebone ed ESP8266-MQTT su ESP8266 per Relé

Dopo aver esaminato la connessione con il sensore di temperatura ed umidità

Mqtt con Beaglebone ed ESP8266-MQTT su ESP8266 per sensore temperatura

in questo articolo si imposta l’esp8266 per gestire un relé. Di seguito i collegamenti utilizzati

nodemcu relay

Anche in questo esempio metteremo il nodemcu in sleep. Perché il sistema possa riavviarsi dopo il comando di sleep è necessario collegare il PIN D0 (GPIO16) al PIN RST come specificato nella documentazione nodemcu

Nodemcu sleep

Passiamo ad analizzare il codice da caricare sul dispositivo; consta del init.lua e del file relay.lua.

Analizziamo i punti principali di ciascun file.

  • init.lua

Nel file sono impostate globalmente i parametri dell’access point, l’indirizzo e porta del broker mqtt ed il file da eseguire sull’esp dopo la connessione all’access point. Nel caso non riesca ad acquisire l’indirizzo il sistema viene fatto ripartire.

  • relay.lua

Il file relay.lua gestisce il relay, la sottoscrizione sul broker mqtt con invio dello stato con il topic monitor. Sono stati impostati dei parametri globali per gestire i topic, i tempi di attesa in tmr.alarm. Sono presenti in particolare i seguenti topic

  • /home/relay1/status : viene inviato lo stato del relé all’avvio ed in risposta dei comandi nel topic /home/relay1/command.
  • /home/relay1/monitor: periodicamente viene inviato lo stato del relé.
  • /home/relay1/command: Da altri client è possibile inviare dei comandi all’esp8266.
    • Restart: riavvia l’esp.
    • Sleep n: Tempo di sleep di n secondi.
    • ON: Accende il relay.
    • OFF: Spegne il relay.
    • Status: Richiede lo stato del relé (Acceso o Spento).

Vi sono varie funzioni di servizio che gesticono il tutto. I commenti all’interno del codice descrivono ciascuna funzionalità.

Nel prossimo articolo tratteremo la configurazione del webserver sul Beaglebone e la configurazione del websocket per Mosquitto sempre sul Beaglebone

Mqtt con Beaglebone ed ESP8266-Web server e Mqtt Websocket

Mqtt con Beaglebone ed ESP8266-MQTT su ESP8266 per sensore temperatura

Dopo aver caricato il firmware sul dispositivo esp8266

Mqtt con Beaglebone ed ESP8266-MQTT ESP8266

si passa a collegare tale modulo con un sensore di temperatura ed umidità DHT11. Di seguito i collegamenti utilizzati

Nodemcu DHT11

Nell’esempio che faremo si considererà l’opzione di mettere il nodemcu in sleep. Perché il sistema possa riavviarsi dopo il comando di sleep è necessario collegare il PIN D0 (GPIO16) al PIN RST come specificato nella documentazione nodemcu

Nodemcu sleep

Passiamo ad analizzare il codice da caricare sul dispositivo; consta del file init.lua e del file tempumid.lua.

Analizziamo i punti principali di ciascun file.

  • init.lua

Nel file sono impostate globalmente i parametri dell’access point, l’indirizzo e porta del broker mqtt ed il file da eseguire sull’esp dopo la connessione all’access point. Nel caso non riesca ad acquisire l’indirizzo il sistema viene fatto ripartire.

  • tempumid.lua

Il file temumid.lua gestisce la misura della temperatura ed umidità, la sottoscrizione sul broker mqtt con invio dei dati rilevati. Sono stati impostati dei parametri globali per gestire i topic, i tempi di attesa in tmr.alarm. Sono presenti in particolare i seguenti topic

  • /home/room1/temperature: vengono inviati i dati della temperatura rilevata.
  • /home/room1/humidity: vengono inviati i dati della umidità rilevata.
  • /home/room1/status : viene inviato lo stato del sensore all’avvio ed in risposta dei comandi nel topic /home/room1/command.
  • /home/room1/monitor: periodicamente viene inviato lo stato del sensore.
  • /home/room1/command: Da altri client è possibile inviare dei comandi al sensore.
    • Restart: riavvia il sensore.
    • Sleep n: Tempo di sleep di n secondi.

Vi sono varie funzioni di servizio che gestiscono il tutto. I commenti all’interno del codice descrivono ciascuna funzionalità.

Nel prossimo articolo imposteremo l’esp con il relé

Mqtt con Beaglebone ed ESP8266-MQTT su ESP8266 per Relé

Mqtt con Beaglebone ed ESP8266-MQTT ESP8266

Dopo aver installato il server MQTT sul Beaglebone

Mqtt con Beaglebone ed ESP8266-Installazione mosquitto su Beaglebone

passiamo ad impostare i nodi MQTT basati su ESP8266.

Come prima operazione occorre generare il firmware nodemcu, come descritto nel precedente articolo

Compilare Nodemcu su linux

con almeno i seguenti parametri attivati nel file user_module.h

  • DHT
  • file
  • GPIO
  • MQTT
  • net
  • node
  • timer
  • UART
  • WiFi

Tali impostazioni sono presenti di default sul file user_module.h.

Al momento è stata rilasciata la versione aggiornata del firmware 2.0.  Alleghiamo i file da caricare sul dispositivo.

Nodemcu2.0.0 firmware

Come già descritto negli articoli precedenti e dal link di nodecmu sul flashing

Flashing the firmware

si impostano i parametri corretti per il proprio modello di esp8266.

Nel nostro caso, con la flash di 4MB, si usano i parametri riportati nella immagine per caricare il firmware sul dispositivo con il tool nodemcu-flasher. Si possono utilizzare anche altri tool per il caricamento del firmware. Nel nostro caso le impostazioni usate sono le seguenti

nodemcu flasherNel prossimo articolo viene descritto il nodo MQTT ESP8266 che rileva temperatura ed umidità

Mqtt con Beaglebone ed ESP8266-MQTT su ESP8266 per sensore temperatura