Archivi tag: ambiente di sviluppo

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

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

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