Archivi tag: arm

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

Mqtt con Beaglebone ed ESP8266 – Installazione mosquitto su Beaglebone

Dopo aver riassunto l’architettura che si sta implementando nel precedente articolo

Mqtt con Beaglecone ed Esp8266-Architettura

Si procede con l’installazione del message broker mqtt sul Beaglebone Black con il sistema mostrato di seguito

L’immagine usata è la seguente

Immagine Beaglebone Black

Si procede anche alla ulteriori configurazioni già elencate nell’articolo

Preparazione sd card Debian per Beaglebone Black

Procedere ad una estensione dello spazio sulla scheda sd con l’applicazione gparted su host linux o con il tool grow_partition.sh disponibile sul Beaglebone nella cartella /opt/scritpts/tools

Nell’eseguire l’upgrade con tale immagine si riscontrano problemi di spazio con la partizione di 4Gb.

Il message broker che si installa è mosquitto

Mosquitto

Con la versione presente su Debian Jessie di Mosquitto non si hanno a disposizione i servizi di websockets, che si utilizzeranno successivamente con la Dashboard. Per tale motivo occorre installare la versione aggiornata del broker.

Si accede in una shell sul Beaglebone come root e si inserisce il repository di test di debian

aggiungere

Eseguire poi

Dopo l’installazione commentare il riferimento ai software di test di debian in /etc/apt/sources.list

ed eseguire

Testiamo a questo punto se il server è installato correttamente eseguendo in una shell la sottoscrizione ad un topic

In un’altra shell eseguire la pubblicazione sul topic “topic/test”

La  prima shell deve mostrare il messaggio “Prova”

mqtt Test

Con il protocollo MQTT si possono definire diversi QOS , come descritto nelle FAQ di Mosquitto

QOS Mosquitto

Con QOS=0 il messaggio viene spedito una sola volta e non è richiesta la conferma della avvenuta ricezione da parte dei sottoscrittori; negli esempi che si faranno il QOS=0 e non vi sarà protezione dello smistamento dei messaggi con nome e password o canale ssl.

 Nel prossimo articolo si procederà alla preparazione dell’ESP9266 con le librerie lua per gestire il protocollo MQTT

Mqtt con Beaglebone ed ESP8266-MQTT ESP8266

Mqtt con Beaglebone ed Esp8266-Architettura

In questa serie di articoli trattiamo come impostare un message broker mqtt sul Beaglebone Black che permetta di gestire vari dispositivi esp8266, collegati a loro volta a sonde di temperatura, relays.

Il tutto viene gestito con l’ausilio di app su smartphone Android e Dashboard installata su Apache sul Beaglebone.

Partiamo dal message broker  MQTT (Message Queue Telemetry Transport); qui vi è la descrizione del protocollo

MQTT

In particolare nella sezione FAQ vi sono le prime indicazioni sul protocollo e suo utilizzo

MQTT Faq

Il sistema è formato da tre componenti:

  • Mqtt Broker: ruota i messaggi pubblicati a tutti i sottoscrittori.
  • Publisher: Pubblica i messaggi nel topic  sul Mqtt Broker.
  • Subscriber: Riceve i messaggi sui topic su cui è sottoscritto dal Mqtt Broker.

Di seguito mostriamo la topologia per due topic utilizzata nel nostro esempio

archIl sistema è costituito da un server MQTT broker sul Beaglebone. In questo server MQTT broker si possono definire dei topics a cui si possono registrare vari client. Per ciascun topic l’azione può essere di sottoscrizione e di pubblicazione. Con la sottoscrizione si ricevono tutti i messaggi del topics, mentre con la pubblicazione si possono eseguire delle azioni sul topic (ad esempio accendi un  relé, riavvia un dispositivo, inviare la misura del sensore, ecc). Nel caso in esame vi sarà, ad esempio, una coda per il monitor delle temperature, agganciata al client esp8266 di lettura temperatura, un’altra per la gestione di un relay, sempre gestito con esp8266. Il server MQTT broker provvede ad ruotare i messaggi ricevuti fra tutti i client sottoscrittori/publisher per ciascun topic.

Ai topic sul broker mqtt ci si accede con app android mediante le quali si interagisce oltre che per la ricezione dei messaggi anche mediante la pubblicazione di comandi  verso i client esp8266 (Accendi Relay, Riavvia Sensore, ecc).

Con il framework javascript Freeboard

Freeboard

installato su Apache del Beablebone si accede ad una dashboard per il monitor dei dispositivi in tempo reale.

Per ulteriori informazioni sul sistema MQTT fare riferimento al sito indicato sopra.

Nel prossimo articolo si parte dalla installazione del server MQTT sul Beaglebone Black

Mqtt con Beaglebone ed ESP8266 – Installazione mosquitto su Beaglebone

Creazione Immagini per Beaglebone con Omap Image Builder

In questo articolo si descrive come procedere alla creazione autonoma di una immagine per il Beaglebone Black/Green con lo strumento Omap Image Builder. Nell’esempio specifico si crea l’immagine per il Beaglebone Black Rev. C.

 Le informazioni sulla procedura da seguire sono presenti sul sito

Omap image builder

Come prerequisito alla creazione della immagine vi è la necessità di eseguire le operazioni su hardware arm; con altri sistemi si possono avere problemi. Per tale scopo procederemo ad eseguire le operazioni su una scheda Orange PI PC con sistema operativo Armbian. Dopo aver preparato il sistema Armbian per Orange PI PC, come descritto nell’articolo

Avvio Armbian su Orange PI PC

Collegarsi in ssh sull’Orange PI PC; nel nostro caso abbiamo usato  l’utenza sviluppo/password

ssh su Orange PI PC

Ci si può anche connettere abilitando il Desktop Remoto

Abilitazione Desktop Remoto Orange Pi PC

Creare una cartella beaglebone

Clonare il codice per la creazione della immagine

La lista delle cartelle è la seguente

Procediamo alla creazione di una immagine standard Debian 8 per Beaglebone Black

Il task dura parecchio tempo e crea altre cartelle fra cui deploy entro la quale troveremo le immagini. Al termine posizionarsi nella cartella deploy/immagine compilata ed eseguire

Comprimere l’immagine creata con il comando

Per creare una immagine con delle personalizzazioni procedere come indicato di seguito:

  1. Posizionarsi in image-builder/configs e copiare una configurazione da cui partire in custom-debian.conf. Noi abbiamo usato come base la configurazione bb.org-debian-jessie-lxqt-4gb-v4.1.conf. In custom-debian.conf aggiungere le seguenti modifiche nealla sezione deb_include per avere pronto il server vsftpd nella immagine da creare e si cambia il chroot_script


    Per escludere di pacchetti da installare si utilizza la sezione deb_exclude. Nello script sono commentate le varie sezioni, tra le quali ricordiamo quelle relative alla definizione del nome host, password, utenza da creare, ecc.
  2. Accedere alla cartella image-builder/target/chroot e copiare beagleboard.org-jessie.sh come custom-debian.sh.
  3. Nel caso si vogliano aggiungere pacchetti python editare il file custom-debian.sh ed aggiungere gli altri pacchetti nella funzione  install_pip_pkgs

    In tale esempio si è aggiunto solo il server ftp. Accedere nella cartella image-builder ed eseguire il comando

    Il task dura parecchio tempo. Al termine accedere nella cartella deploy/nomeimmagine ed eseguire

    Procedere alla compressione della immagine con il comando

    Si può  creare la scheda micro sd con l’immagine personalizzata con il server ftp già presente e l’hostname modificato in beagleboneblack.

    L’installazione sulla scheda microsd avviene nel modalità già vista nell’articolo

    Preparazione scheda sd per Beaglebone Black

    Sul sito Omap image builder sono descritte le altre tipologie di immagine tra le quali segnaliamo quelle per BeagleBone Black, Green, Iot, Machine Kit (immagine per gestire macchine CNC Machinekit), ecc.

Progetto in C per lettura sensore temperatura Beaglebone

Dopo aver visto come impostare la cross compilazione e collegato un sensore DHT11  di temperatura/umidità alla scheda

Debug Remoto Beaglebone

Sensori con Beaglebone

Lettura temperatura ed umidità in python

vediamo ora come creare un progetto in C, partendo dai sorgenti C  per la lettura del sensore dht di Adafruit

Libreria sensori DHT Python Adafruit

Utilizzando Eclipse,  si crea un progetto per la lettura del nostro sensore. Si richiamano le funzioni presenti nel codice C della libreria Adafruit. Questi sorgenti sono importati nel progetto Eclipse

progetto Dht sensor

e mediante il codice di esempio C dhtSensor.c, che contiene il main del programma C, viene richiamata la lettura del sensore dai sorgenti Adafruit in modo analogo a quanto visto per Python.

Eseguendo

viene mostrato l’help dell’eseguibile.

 Per leggere il sensore DHT11 sul pin P8_11 si esegue

il cui risultato è mostrato di seguito

lettura Sensore CDi seguito il progetto Eclipse con i sorgenti utilizzati

Progetto dhtSensor Eclipse

Lettura sensore dht su Beaglebone con node.js

Dopo aver visto nell’articolo precedente come leggere la temperatura ed umidità dal sensore DHT11 in python

Lettura temperatura ed umidità in python

eseguiamo la stessa operazione in javascript. Scarichiamo il modulo dht per node.js. Il modulo è disponibile sul sito

beaglebone dht

Colleghiamoci sul Beaglebone in ssh come debian (temppwd come password di default) ed eseguiamo il comando

per installare il modulo globalmente.

Per la lettura del sensore creare un file test.js con il seguente codice all’interno

La lettura viene eseguita con il comando

Il risultato nel nostro caso è il seguente

risultato lettura sensoreLo stesso codice può essere eseguito dall’IDE Cloud9. Accedere all’ide Cloud9 sul Beaglebone con il link http://beaglebone.local:3000 e creare un file dht.js con il seguente codice all’interno

 L’esecuzione dello script dà il seguente risultato

cloud9 dht11Di seguito il link per scaricare il due file di esempio

Esempio node.js

Esempio in Cloud9

Lettura temperatura ed umidità su Beaglebone in python

Nel precedente articolo è stato collegato il sensore DHT11 al Beaglebone

Sensori con Beaglebone

Installiamo a questo punto la libreria in python ed i moduli in c per leggere il sensore. Il sito con le indicazioni per la libreira è il seguente

Libreria sensori DHT Python Adafruit

Colleghiamoci in ssh sul Beaglebone come root/senza password e creiamo la cartella temperature dalla quale eseguiamo

Si installano i prerequisiti

Procedere alla installazione della libreria python con il comando

Entrare nella cartella examples ed eseguire quanto segue per la lettura dei valori del sensore (dht 11 e pin P8_11)

Il risultato nel nostro caso è il seguente

risultato lettura temperatura

 

Sensori con Beaglebone

Dopo aver descritto il Beaglebone ed gli strumenti di sviluppo

Avvio della scheda Beaglebone

Strumenti di sviluppo per Beaglebone

come esempio mostriamo come far interagire il Beaglebone con un sensore di temperatura ed umitità.

Tra i più diffusi vi sono i DHT11. Il sensore ha 4 Pin che vanno connessi alla alimentazione anche mediante una resistenza da 4,7 o 10 kΩ. Nel nostro caso abbiamo a disposizione un sensore dht11 a tre pin con le resistenze già inserite nel circuito. Nel caso in cui si ha solo il sensore seguire quanto specificato nell’articolo seguente

DHT sensore umidità

L’immagine seguente mostra le connessioni con il Beaglebone

Beaglebone DHT11Nell’articolo Strumenti di sviluppo per Beaglebone sono mostrati i pin del Beaglebone; in questo caso sono stati usati i pin 3.3V, terra e P8_11.

Nel prossimo articolo installeremo una libreria in python e moduli in c per leggere temperatura ed umidità

Lettura temperatura ed umidità su Beaglebone in python