Archivi categoria: Sviluppo

Seeeduino XIAO – Rilevamento Oggetti

Dopo aver configurato l’ambiente Arduino IDE per la scheda Seeeduino XIAO nell’articolo precedente

Seeeduino XIAO – Ambiente Arduino

in questo faremo un piccolo esempio con tale scheda.

Nel piccolo progetto vengono usati come componenti

  1. Sensore ad ultrasuoni HC-SR04
  2. Schermo Oled  0,96 pollici SSD1306 I2C

Come prima operazione occorre installare le librerie dei due componenti sopra elencati su Arduino.

Si accede al menù Sketch->Include Libreria->Gestione librerie

addlib-itPer HCSR04 scegliamo HCSR04 by Martin Sosic

hcsr04-itPer SSD1306 scegliamo ACROBOTIC SSD1306

SSD1306-itOra abbiamo tutti i compomenti per il progetto. Colleghiamo allo Seeeduino XIAO i componenti come elencato nella tabella seguente

PIN XIAOPIN SSD1306PIN HCSR04
3V3VDD
GNDGNDGND
5VVCC
D2ECHO
D1TRIG
D5SCK
D4SDA

Come si evince dalla tabella si utilizzano i pin I2C e digitali 1,2 dello XIAO

pinsexampleDi seguito lo schema dei collegamenti

xiaoconnectionsIl codice per il funzionamento dell’esempio è il seguente

Alla presenza del passaggio di un oggetto nel campo visivo del sensore, l’evento viene segnalato sullo schermo OLED con la misura registrata. All’interno del codice vi è la descrizione di tutte le operazioni eseguite.

Di seguito il link al file del codice

esempioXiao.ino

ESP32 – IDF Sdk con IDE Eclipse

Dopo aver configurato l’ambiente di sviluppo IDF nell’articolo precedente

ESP32 – IDF Sdk

vediamo ora come utilizzare Eclipe come IDE per lo sviluppo del codice. Le istruzioni sono disponibili al link

Configurazione Eclipse

Scaricare Eclipse per C/C++ per Linux

Download Eclipse

Scompattare il file e spostarlo su /opt/

Eseguire ecplise

Impostare il workspace per eclipse

eclipse-workspaceUna volta aperto l’IDE selezionare File–>Import–>C/C++- -> Existing Code as Makefile Project

eclipse-importPremere Next; alla schermata successiva selezionare la cartella contenente il Makefile di un progetto di esempio ne campo “Existing Code Location” e scegliere come “Toolchain for indexer settings” CrossGcc come ad esempio indicato di seguito

eclipse-import2Una volta caricato il progetto con il tasto destro sul nome del progetto si sceglie l’opzione properties

eclipse-project-propertiesSotto C/C++ Build–>Envinronment aggiungere la variabile

eclipse-batchAggiungere sempre nella medesima sezione la variabile IDF_PATH che punta all’SDK IDF scaricato

eclipse-idf-pathEditare la variabile PATH ed aggiungere il path ai bin del cross compilatore /home/sviluppo/Esp32/espressif/esp/xtensa-esp32-elf/bin

eclipse-pathAccedere sempre in “C/C++ General”–> “Preprocessor Include Paths”; scelgliere il tab Providers e cliccare su “CDT Cross GCC Built-in Compiler Settings”

eclipse-cross-cdtSostituire ${COMMAND}

eclipse-cross-cdt1con xtensa-esp32-elf-gcc

eclipse-cross-cdt2Accedere ora nei providers e scegliere “CDT GCC Build Output Parser”

eclipse-cross-cdt3ed inserire all’inizio del Compiler command pattern xtensa-esp32-elf-

eclipse-cross-cdt4Salvare le configurazioni.

Le impostazioni del progetto vanno fatte sempre da make menuconfig nella shell unix. Accedere nella shell ed impostare come GPIO del led da spegnere ed accendere il valore 2; questo perché nel nostro caso la scheda è una doit il cui design è illustrato nel presente documento

SchematicsforESP32

Accedere a Example configuration

blink-configurationed impostare il valore del gpio a 2

blink-gpioSalvare la configurazione. Riandare su Eclipse e procedere alla pulizia con

eclipse-clean-blinke successiva compilazione con Project–> Build

eclipse-build-blinkPer eseguire il flash del firmware da eclipse, selezionare il progetto e con il tasto destro scegliere Build Targets -> Create…

eclipse-create-targetInserire nel campo target il valore flash, lasciando di default tutto il resto

eclipse-create-target-flashA questo punto si procede al caricamento dell’immagine cliccando due volte sulla nuova voce flash all’interno dei target del progetto

eclipse-run-flash Le impostazioni per eseguire il flash devono essere impostate con make menuconfig, come visto nell’articolo precedente

ESP32 – Idf Sdk

 

MicroPython – Esempi nodi con DHT11, Relé ed MQTT

In una serie di articoli visti in precedenza su Mqtt, Beaglebone ed ESP8266

Mqtt con Beaglebone ed ESP8266 – Lista Articoli

abbiamo creato l’infrastruttura per la gestione dei nodi esp8266.

In questo articolo gestiamo i due nodi esp8266 invece che non Nodemcu e Lua con MicroPython.

Il resto della infrastruttura rimane identica; sul Beaglebone vi è il mqtt Mosquitto e Freeboard per la gestione dei topic mqtt, visualizzazione ed interazione.

Per gli esempi del nodo ESP8266 con relé e sensore DHT11 occorre caricare le librerie MicroPython umqtt, disponibili sul sito

umqtt simple

Negli esempi che seguono si utlizza solo la umqtt simple; nel codice sono stati inseriti vari delay per permettere alla scheda di gestire i messaggi e non incorrere in errori; è stato, inoltre, impostato che nel caso il server mqtt non risponda di riavviare la scheda.

Di seguito il codice utilizzato per gli esempi.

Nodo con sensore DHT11

  • boot.py: codice eseguito all’avvio

  • umqtt/simple.py: libreria mqtt

  • dht11.py: modulo per la lettura della temperatura ed umidità sul GPIO2.

  • main.py: codice eseguito dopo il boot

  •  client_mqtt.py: Modulo principale per la gestione del nodo

  • riavvia.py: codice di servizio per riavviare il modulo da uPyCraft

Nodo con relé

  • boot.py: codice eseguito all’avvio

  • umqtt/simple.py: libreria mqtt

  • main.py: codice eseguito dopo il boot
  •  client_mqtt.py: Modulo principale per la gestione del nodo

  • riavvia.py: codice di servizio per riavviare il modulo da uPyCraft

Di seguito il filesystem su ESP8266 per l’esempio del relé

ESPFilesystemAccedendo a Freeboard si hanno le stesse informazioni ottenute con Nodemcu e LUA

FreeboardMicroPython

Di seguito le schermate della gestione da Smartphone con MQTT Dashboard, con la possibilità di controllare lo stato del relè, leggere i parametri del sensore e far ripartire o mettere in sleep i due nodi

MqttPublish

MqttSubscribe

Questi sono i collegamenti per scaricare i due esempi

Esempio sensore dht11

Esempio relé

Nel prossimo articolo compileremo il firmware MicroPython per ESP8266

MicroPython – Compilazione MicroPython per ESP8266

 

 

 

 

MicroPython – Struttura programma MicroPython

Dopo aver esaminato diversi strumenti di sviluppo per MicroPython negli articoli precedenti

MicroPython – Strumenti di sviluppo Ampy – Eric

MicroPython – IDE MicroPython uPyCraft

in questo articolo si descrivono brevemente le principali caratteristiche di MicroPython. Esaminiamo in particolare la documentazione inerente all’ESP8266, ma i concetti possono essere estesi anche alle altre schede.

La documentazione sul soc ESP8266 e MicroPython è disponibile al link

Documentazione MicproPython ESP8266

Al link si trovano tutte le informazione necessarie per implementare il proprio codice sulla scheda e le caratteristiche di MicroPython nonché le differenze rispetto a Python.

Di seguito i punti principali per la codifica in MicroPython:

  • MicroPython ha una consolle REPL (Read Evaluate Print Loop) attraverso la porta seriale cui è connesso il dispositivo sui cui si posso impartire i vari comandi MicroPython in modo interattivo.
  • Si può accedere alla consolle REPL anche tramite connessione all’indirizzo IP del dispositivo mediante l’abilitazione della consolle WEBREPL  (Web Browser Interactive prompt)

Documentazione WebREPL

importando il pacchetto webrepl, abilitandolo ed avviandolo ad ogni ripartenza del dispositivo. Per accedere al dispositivo configurato si puo usare il link

Accesso WEBREPL

o localmente clonandolo da github

  • I file che vengono eseguiti all’avvio del dispositivo sono  boot.py e successivamente main.py.
  • Le librerie disponibili per MicroPython sono  presenti sul github al link

Librerie MicroPython

  • Pacchetti aggiuntivi

I moduli aggiuntivi possono essere scaricati dal link delle librerie presentato sopra o scaricati con la utility upip (Package Manager) dalla consolle REPL se presenti nel repository Python Package Index (PyPI)

PYPI

come descritto di seguito

upip

Di seguito un semplice esempio che si connette al router e ci permette di accedere alla consolle MicroPython con il browser e WEBREPL.

  • Codice boot.py

Al primo accesso viene richiesta l’abilitazione di webrepl da eseguire nella consolle REPL con il comando

e seguendo le istruzioni si abilita il servizio e si imposta  la  password di accesso.

La procedura genera sul dispositivo il file webrepl_cfg.py.

Dopo l’impostazione e riavvio accediamo alla consolle web aprendo il file webrepl.html clonato  localmente con un browser

WebreplPremiamo connetti e dopo aver inserito la password impostata nel setup iniziale accediamo alla consolle

WebreplConnectedInstalliamo ora dalla consolle WEBREPL, ad esempio,  il modulo stat utilizzando upip

Per  incollare del testo nella consolle eseguire Ctrl+A e Ctrl+V

WebreplupipIn questo caso il pacchetto è stato prelevato dal repository PYPI, scompattato ed installato sul dispositivo.

Abbiamo notato che alcuni moduli, sebbene presenti sul repository, danno errore in fase di installazione con upip; tali moduli li installiamo direttamente senza usare la utility upip, ma scaricando la libreria dal sito elencato sopra e trasferendo il codice sul dispositivo.

Di seguito il link al codice mostrato sopra

Webreplsample

Altra opzione disponibile è compilare il firmware con i moduli richiesti.

Nel prossimo articolo esamineremo degli esempi analoghi a quanto fatto con LUA su ESP8266 in articoli precedenti

MicroPython – Esempi nodi con DHT11, Relé ed MQTT

 

 

 

 

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

Linkit 7688 Duo con Lede – Comunicazione Uart MPU-MCU

Dopo avere compilato ed installato il firmware LEDE con i pacchetti della scheda Linkit 7688 Duo

Installazione e configurazione immagine Lede su Linkit 7688 Duo

passiamo a testare il funzionamento di alcune funzionalità della scheda.

Si riporta l’articolo Mediatek con le varie modalità di gestione delle periferiche

Modalità di programmazione

Come primo esempio trattiamo quello presente sul sito Mediatek come descritto nel titolo dell’articolo

Linkit 7688 DUo MPU-MCU Uart Connection

che corrisponde al seguente schema di modalità di programmazione

duo-primitive-uart

Come prima operazione si configura l’ IDE  Arduino come descritto al link

Arduino IDE con Linkit 7688 Duo

si procede a caricare sulla scheda Linkit 7688 Duo il seguente codice

che provvede a fare gestire all’MCU il led in base ai comandi che arrivano sulla porta Serial1.

La logica è invece gestita da codice python che viene eseguito su Linux; creare a questo scopo un file, ad esempio blink.py, con il seguente codice

Eseguendo il codice con il comando in una shell

Il Led presente ulla scheda dovrebbe accendersi e spegnersi in continuazione.

Nel prossimo esempio si utilizzera la libreria python Firmata per eseguire la medesima operazione

Linkit 7688 Duo con Lede – Firmata e Python

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

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