Archivi tag: linux

Compilazione Immagine OpenWrt per Linkit 7688 e 7688 Duo

Dopo aver descritto nel precedente articolo le caratteristiche generali delle due schede

Schede di sviluppo Linkit 7688 e 7688 Duo

si passa alla compilazione della immagine OpenWrt dai sorgenti. Si segue quanto descritto al link

Compilazione immagine dai sorgenti

 Procediamo quindi a creare una cartella Linkit sotto /home/sviluppo nella nostra immagine Debian, già utilizzata per la compilazione di OpenWrt in altro articolo

Compilazione immagine OpenWrt

Passiamo alla installazione dei prerequisiti

Cloniamo il repository con il comando

Entriamo nella cartella openwrt e copiamo il file feeds.conf.default in feeds.conf

 Aggiungere  il feed Mediatek per la scheda

Aggiorniamo le informazioni dei feed per tutti i package

Installiamo i package

Configuriamo il kernel eseguendo

con le seguenti impostazioni

  • Target System: Ralink RT288x/RT3xxx
  • Subtarget: MT7688 based boards
  • Target Profile: LinkIt7688

menuconfigSalviamo ed usciamo,

Eseguire la compilazione con il comando

Ad un certo punto la compilazione genera un errore sulle librerie della scheda wireless. Mediatek non ha rilasciato i sorgenti della scheda wireless, ma un sdk con i binari che hanno versione differente rispetto al kernel che si sta usando; l’errore riportato è

Un modo per risolvere il problema è il seguente.

Accedere alla cartella /home/sviluppo/Linkit/openwrt/feeds/linkit/mtk-sdk-wifi/wifi_binary/ e copiare i seguenti file

Rilanciare la compilazione. Al termine della compilazione il file viene generato nella cartella bin/ramips

immaginelinkitIl file compilato è scaricabile da qui

Immagine OpenWrt Linkit 7688 e 7688 Duo

ATTENZIONE: L’installazione dell’immagine generata sul dispositivo è a vostro rischio e pericolo. Non ci assumiamo alcuna responsabilità nel caso tale installazione generi malfunzionamento o blocco del dispositivo

Se si aggiorna la scheda usando una chiavetta usb bisogna rinominare il file openwrt-ramips-mt7688-LinkIt7688-squashfs-sysupgrade.bin in lks7688.img.

Il kernel dell’immagine è alla versione 3.18_45; se si volesse utilizzare un kernel recente occorre usare i driver opensource disponibili per la scheda; nel caso della scheda Linkit 7688 Duo, in nostro possesso, è possibile ricompilare il tutto utilizzando i driver Realtek rt76 per la scheda di rete wireless ed aggiungere i componenti aggiuntivi per l’ mcu Atmel utilizzando la distribuzione fork di OpenWrt Lede

Progetto LEDE

Nel prossimo articolo si compila una immagine LEDE per la scheda Linkit 7688 Duo. Per la scheda Linkit 7688 al momento non sono ancora compatibili le librerie mraa, che gestiscono l’interfacciamento con le periferiche,  con l’ultima versione di LEDE e le funzionalità dell’immagine sono limitate. Possono essere presenti anche dei bug  dei driver opensource della scheda wireless, che si spera siano risolti nell’affinamento di tali driver.

Compilazione Immagine LEDE per Linkit 7688 Duo

Schede di sviluppo Linkit 7688 e 7688 Duo

In questo articolo si descrivono brevemente le schede di sviluppo Mediatek Linkit 7688 e 7688 Duo. Di seguito il link alle due schede

Linkit 7688

7688Linkit 7688 Duo

7688duo

Le specifiche generali delle due schede sono le seguenti

Linkit 7688

ModelloLinkit Smart 7688
MPUMT7688AN, MIPS24KEc, 580MHz
RAM128 Mb DDR2
Memoria Flash32 Mb
GPIO22 (MT7688AN) a 3,3 V
PWM4 (MT7688AN) a 3,3 V
Interrupts esterni22 (MT7688AN)
SPI1 (MT7688AN)
UART Lite3 (MT7688AN)
AlimentazioneMicro USB 5V DC o tramite PIN 3,3 V
USB HOSTMicro USB
EthernetTramite Estensione
Wifi1T1R 802.11 b/g/n (2.4G)
Memoria aggiuntivaMicro SDSDXC sdcard
Dimensioni55.7 x 26 mm
Peso39 grammi

Linkit 7688 Duo

ModelloLinkit Smart 7688 Duo
MPUMT7688AN, MIPS24KEc, 580MHz
MCUAtmel AVR 8MHz
RAM128 Mb DDR2
Memoria Flash32 Mb
GPIO3 (MT7688AN) a 3,3 V
24 (ATmega32U4)
PWM8 (ATmega32U4) a 3,3 V
Interrupts esterni8 (ATmega32U4)
SPI1 (ATmega32U4)
UART Lite1 (ATmega32U4)
1 (MT7688AN)
AlimentazioneMicro USB 5V DC o tramite PIN 3,3 V
USB HOSTMicro USB
EthernetTramite Estensione
Wifi1T1R 802.11 b/g/n (2.4G)
Memoria aggiuntivaMicro SDSDXC sdcard
Dimensioni55.7 x 26 mm
Peso39 grammi

Le due schede condividono lo stesso Microprocessore (MPU MT7688AN), ma nel caso del Linkit 7688 Duo questo è coadiuvato dal Microcontroller Atmel (MCU ATmega32U4) per la gestione delle periferiche.

Di seguito gli schemi di interfacciamento con le periferiche nei due casi

linkit_smart_7688lintit_smart_7688-duo

Il sistema operativo utilizzato per ambedue le schede è OpenWrt, ma la gestione delle periferiche è diffente. Mentre nel caso del Linkit 7688 ci si affida al solo MPU ed a specifiche librerie per la gestione dell’interfacciamento con le periferiche,  per il Linkit 7688 Duo è  il microcontrollore ATmega32U4 che provvede a gestire le periferiche. La gestione dell’ATmega32U4  è eseguita con l’IDE  di Arduino inserendo nello strumento il supporto alla scheda come specificato al seguente link

Scheda Linkit 7688 Duo su Arduino

Al presente link vi è la documentazione Mediatek per le due schede

Risorse Linkit 7688 e 7688 Duo

Per la gestione delle perriferiche delle due schede fare riferimento alle pagine

Periferiche su Linkit 7688

Periferiche su Linkit 7688 Duo

Sil sito Mediatek, sono presenti anche esempi da seguire passo passo per provare le varie caratteristiche della scheda.

Nel prossimo articolo si mostrano i collegamenti da eseguire con l’USB OTG da usare con una chiavetta USB e una USB  TTL serial per il monitor del dispositivo

 Collegamento Linkit 7688 Duo

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

Compilazione addon Libreelec8 per Orange PI PC

Nell’articolo sulla compilazione di Libreelec  8 per Orange PI PC

Libreelec8 su Orange PI PC

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

Procediamo ora a compilare degli addon. I packages che si possono compilare sono presenti nelle cartelle kodi-binary-addons

libreelec8 addonse nella cartella packages/addons

addons packagesCompiliamo per esempio il modulo pvr.iptvsimple con il  seguente comando da shell dalla cartella /home/sviluppo/orangepi/libreelec/libreelec-8.0

 addon command

Compiliamo l’addon proftpd, tra quelli presenti in packages/addons, con il comando

Gli addon risultanti sono presenti nelle relative cartelle in

addon compilatiDi seguito i link per scaricare alcuni addons compilati

PVR addon

Service Addons

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

 

 

Libreelec8 su OrangePI PC

In questo articolo si descrivono i passi che ho eseguito per preparare una prima versione di Libreelec 8 su Orange PI PC e altre schede con soc H3.

Partendo dall’ambiente di sviluppo Debian, con i relativi pacchetti installati,  già utilizzato per la compilazione di Openelec 7

 Compilazione immagine Openelec per Orange PI PC

si procede alla generazione della immagine per Libreelec 8.

E’ stato utilizzato come base il lavoro fatto per Openelec 7 e Libreelec 7 presenti sui due repository github

Github H3 Openelec 7

Github H3 Libreelec 7

Collegandosi sulla shell come sviluppo operiamo in modo analogo a quanto fatto per Openelec. Creaiamo una cartella libreelec sotto orangepi e spostiamoci in essa

Cloniamo il github di Libreelec con il comando

Le patch sono state create per una versione specifica del commit, per cui allineiamo il nostro clone github a quella versione

Scarichiamo dal link le patch ed il progetto per H3

H3 Libreelec 8

e scompattarlo in /home/sviluppo/orangepi/libreelec

Eseguire le seguenti operazioni

1)Copiare in /home/sviluppo/orangepi/libreelec/libreelec-8.0/projects la cartella

H3

2) Copiare in /home/sviluppo/orangepi/libreelec/libreelec-8.0/packages/multimedia le cartelle

cedarx
libmpeg2

3) Copiare in /home/sviluppo/orangepi/libreelec/libreelec-8.0/packages/tools la cartella

sunxi-tools

4) Copiare in /home/sviluppo/orangepi/libreelec/libreelec-8.0/packages/sysutils  la cartella

  sunxi-sys-utils

5) Copiare in /home/sviluppo/orangepi/libreelec/libreelec-8.0/packages/graphics  la cartella

sunxi-mali

6) Copiare in /home/sviluppo/orangepi/libreelec/libreelec-8.0/packages/linux-drivers  la cartella

mt7601u

7)  Le patch sono presenti in /home/sviluppo/orangepi/libreelec/H3LE8/patches

linux.patch

image.patch

mkimage.patch

kodi.patch

libcec.patch

u-boot.patch

u-boot-release.patch

u-boot-update.patch

Patchare il codice posizionandosi in /home/sviluppo/orangepi/libreelec ed eseguendo i comandi

Procedere alla compilazione della immagine per OrangePI PC dalla cartella /home/sviluppo/orangepi/libreelec/libreelec-8.0 con il comando

L’immagine viene generata nella cartella /home/sviluppo/orangepi/libreelec/libreelec-8.0/target

 Dal link

Openelec 7 H3 FAQ

sono elencati le schede che si possono compilare modificando il parametro SYSTEM nel comando di compilazione

SYSTEM=opi2
SYSTEM=opione
SYSTEM=opipc
SYSTEM=opiplus
SYSTEM=opilite
SYSTEM=opipcplus
SYSTEM=opiplus2e
SYSTEM=bpim2p
SYSTEM=bx2

Tale immagine è un primo tentativo di porting di H3 su Libreelec 8. L’immagine è stata installata su Orange PI PC e il sistema ha funzionato bene, ma sono possibili comunque bug e malfunzionamenti.

Qui è presente l’immagine Libreelec 8 compilata per Orange PI PC

Immagine Libreelec 8 Orange PI PC

Tale immagine è stata testata su Orange Pi PC.

Di seguito altre immagini non testate sui vari dispositivi

Immagine Libreelec 8 Orange Pi2

Immagine Libreelec 8 Orange Pi Lite

Immagine Libreelec 8 Orange Pi One

Immagine Libreelec 8 Orange Pi PC Plus

Immagine Libreelec 8 Orange Pi Plus

Immagine Libreelec 8 Orange Pi Plus 2e

ATTENZIONE: L’installazione dell’immagine generata sul dispositivo è a vostro rischio e pericolo. Non ci assumiamo alcuna responsabilità nel caso tale installazione generi malfunzionamento o blocco del dispositivo.

 Nel seguente articolo si mostra come compilare gli addon

Compilazione addon Libreelec8 per Orange PI PC

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é