Archivi categoria: Sviluppo

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é

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

Debug remoto sul Beaglebone

Nel precedente articolo abbiamo preparato l’ambiente con Eclipse per la cross compilazione per il Beaglebone

Cross compilazione per Beaglebone

Procediamo ora a configurare Eclipse ed il Beaglebone per eseguire in debug del codice direttamente sul Beaglebone.

 Sul Beaglebone installare il gdbserver

 Sul sistema Debian con Eclipse installare gdb-multiarch

 Da Eclipse accedere a Run->Debug Configurations

debug configurationsCliccare due volte su C++ Remote Application per impostare i parametri

configurazione debug remotoAlla finestra successiva creare una nuova connessione di tipo ssh con il tasto New

nuova connessione Inserire i parametri per la connessione

parametri connessioneImpostare la destinazione remota del file e la gestione dell’esecuzione; con il tasto browse si sceglie dove copiare il file e con il campo “Commands to execute before application” si danno i permessi di esecuzione al file

cartelle remoteNel nostro caso si crea una cartella esempi sotto /root/ sul Beaglebone in cui eseguire il debug remoto

impostazioni main debug

Impostare il multarch debugger nel tab Debugger e gli altri parametri di startup e gdb command line

impostazioni debugger debugImpostare la porta del server di debug remoto installato sul Beaglebone nel tab GdbServer Settings

impostazioni debug serverCreare il file .gdbinit nella cartella del progetto con il comando

touch debugPer avviare il debug eseguire la configurazione prima impostata

esecuzione debugEclipse si connette con il Beaglebone ed esegue il debug remoto con l’apertura della Debug Perspective

debug perspective

Cross compilazione per Beaglebone

Nell’articolo sull’ambiente Debian abbiamo preparato il sistema per lo sviluppo per ambienti embedded

Sistema di sviluppo su Debian

Nell’articolo sulla compilazione dell’immagine dell’Orange PI PC abbiamo installato i tool di cross complilazione per l’ambiente armhf

Creazione immagine Armbian per Orange PI PC

Partendo dalla immagine pulita dell’ambiente di sviluppo su Debian riportiamo i passi da eseguire per installare l’ambiente di cross compilazione. Ci si collega sul deskop Debian come sviluppo/password.

Come operazione preliminare installiamo il cross compilatore in 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 embedian.org

Installiamo i seguenti pacchetti e l’architettura armhf

Installiamo a questo punto l’ide Eclipse per cpp. Scarichiamo l’ide per linux a 64bit

Eclipse IDE

 Scompattare il pacchetto eclipse sotto /home/sviluppo.

Installare il jre java

 Aggiungere alla fine

Eseguire

 Eseguire Eclipse dalla cartella eclipse per avviare l’IDE

Avvio EclipseCome primo esempio creiamo un semplice programma in C per il Beaglebone.

Creare un nuovo progetto in C, inserendo i dati elencati di seguito

nuovo progettoSelezionare ambedue le configurazioni

project configurationInserire il prefisso per la cross compilazione ed il percorso del compilatore

crosscompilerprefixPremere Finish. Aggiungere al progetto un file sorgente in C

source file cInserire il semplice codice di esempio

Procedere alla compilazione selezionando il progetto con il tasto destro del mouse e scegliendo Build Project

build project

Copiare il file generato sul Beaglebone. Si puo usare scp o ftp. Dare i permessi di esecuzione al file compilato ed eseguirlo

Il risultato è ovviamente il testo inserito nel codice

esecuzione esempio

Strumenti di sviluppo su scheda Beaglebone

Nel precedente articolo abbiamo installato ed aggiornato l’ultima immagine Debian per Beaglebone

Preparazione sdcard Debian per Beaglebone Black

Abbiamo anche abilitato i servizi di rete in modo da accedere tramite il nome host sul sistema.

Dopo tali modifiche si può accedere mediante browser sul Beaglebone con l’indirizzo

http://beaglebone.local

Nell’interfaccia che si presenta vengono indicati vari esempi di codice eseguiti con bonescript, libreria in javascript basata sul framework node.js

Node.js

Si possono eseguire questi semplici esempi per incominciare ad interagire con la scheda. Sono presenti anche i link agli strumenti di sviluppo Cloud9 e Nodered e le informazioni su tali tools

strumenti di sviluppo

 Cliccando su Cloud9 viene mostrata la sezione nella pagina dedicata a tale strumento. In tale sezione viene indicato come creare un semplice esempio ed farlo partire all’avvio della scheda piazzandolo nella cartella autorun presente nella interfaccia dell’ide. Da tale sezione si accede all’ide vero e proprio presente sulla porta 3000 del sito in funzione sul Beaglebone

Cloud9

Per maggiori informazioni sullo strumento fare riferimento al sito

Cloud9

 Accedendo invece alla sezione di Nodered viene indicato il link per incominciare a conoscere lo strumento

Primi Passi con Nodered

 e poter accedere direttamente all’ide del framework, presente sulla porta 1880 del web server funzionante sul Beaglebone

Nodered Beaglebone

Nodered beaglebone

Dal link presente sopra sui primi passi per Nodered sono disponibili degli esempi per iniziare ad usare lo strumento. Dalla home del sito https://nodered.org/ si ricavano ulteriori informazioni sullo strumento.

Oltre agli strumenti in javascript sul Beaglebone sono giò presenti i compilatori in linguaggio C/C++, l’interprete in Python e la possibilità di aggiungere ulteriori strumenti di sviluppo.

Nella pagina iniziale dell’interfaccia web del Beaglebone, http://beaglebone.local, sono indicati tutti i pin disponibili e la loro funzione. Di seguito viene riportata solo l’immagine con gli header di espansione

cape headersNei prossimi articoli mostreremo qualche esempio di codice con la scheda.

Compilazione addon Openelec per Orange PI PC

Nell’articolo sulla compilazione di Openelec per Orange PI PC

Compilazione Openelec per Orange PI PC

avevamo creato l’ambiente  e compilato l’immagine Openelec per la nostra scheda di sviluppo. Integriamo quanto detto nel precedente articolo mostrando come compilare gli addons Openelec.

Partendo dall’ambiente creato in precedenza ci si posiziona nella cartella OPENELEC-OPIPC

Accedendo con l’interfaccia grafica su Debian nella cartella packages si può verificare che gli addon official sono presenti. Per aggiungere quelli non ufficiali eseguire da OPENELEC-OPIPC

Procediamo ora a compilare un addon official ed uno unofficial. I packages che si possono compilare sono presenti nelle cartelle official

official Addonse unofficial

unofficial Addons

Per l’official compiliamo il modulo pvr.iptvsimple con il comando

Per l’unofficial il modulo p7zip

Gli addon risultanti sono presenti nelle relative cartelle in

addons

Può risultare un errore nel download e compilazione dell’addon. Per esempio nel caso di trasmission non veniva trovato il pacchetto sorgente sul link presente sul file file

Per superare questo imprevisto abbiamo aggiunto un altro link al pacchetto, ossia si è modificato il file package.mk da

a

In tal modo il pacchetto transmission è stato compilato correttamente, sempre con il comando

Esempio lua per modulo nodemcu enduser_setup (parte2)

Dopo aver compilato e collegato il nodemcu ad uno switch il pin D5, come mostrato nel precedente articolo

Esempio Lua con modulo enduser_setup(parte1)

passiamo a caricare il codice che fa uso del modulo enduser_setup.

 Apriamo ESPlorer e carichiamo il seguente codice

  • webserver.lua

  • riasserawifi.lua

  • init.lua

 Nel seguente file zip sono presenti i file elencati sopra

 Codice esempio

Qui vi è la documentazione sul modulo enduser_setup

Documentazione modulo enduser_setup

 L’esempio è composto da tre  file:

  1. init.lua:  Si esegue all’avvio dell’esp8266.
  2. riazzerawifi.lua: Avvia il portale per definire il proprio Access Point.
  3. webserver.lua: Avvia il semplice webserver sul nodemcu.

Come si può notare dal codice presente in init.lua, nel caso in cui il pin D5 sia nello stato ALTO, si avvia il portale usando il modulo enduser_setup. Nel caso in cui il pin D5 è nello stato BASSO la scheda acquisisce l’IP da un Access Point definito in precedenza e si avvia il webserver di test.

Per salvare la configurazione dell’Access Point cui collegarsi posizioniamo lo switch in modo tale da avere l’ingresso HIGH sul pin D5 e riavviamo la scheda.

Da un pc possiamo osservare la presenza di un altro Access Point, definito nel file riazzerawifi.lua

composto dalla stringa Mynode+chipid del modulo

nodemcu portal wifiProvvediamo a collegarci a tale Access Point e mediante browser accediamo al portale, definito in genere all’indirizzo 192.168.4.1

Login portal wifi nodemcuSelezioniamo o immettiamo l’SSID di un Access Point con relativa password. Al termine della connessione riposizioniamo lo switch sulla posizione BASSO per il pin D5 e riavviamo il nodemcu dev kit.

Ora il sistema si collega automaticamente all’SSID definito mediante il portale ed avvia l’esempio del webserver.

Si rimanda alla documentazione Lua nodemcu per ulteriori approfondimenti e moduli utilizzabili

Documentazione LUA Nodemcu