Archivi tag: Python

MicroPython – Python per microcontrollori – usarlo su BBC micro:bit – lezione 1

Da diverso tempo mi sto occupando di didattica con BBC micro:bit, una splendida scheda elettronica progettata appositamente per fare Coding a scuola, ben si adatta per studenti di scuola elementare, media e primi anni delle superiori. Su questo sito come saprete ho raccolto in una sezione specifica lezioni e sperimentazioni. Recentemente è stato aggiunto a Scratch, come segnalato in qualche tempo fa, il supporto a micro:bit quindi a livello didattico si potrebbero implementare percorsi interessanti che partono da Scratch, passano per JavaScript Blocks Editor per poi giungere a MicroPython.

Dal mio punto di vista MicroPython è il trampolino di lancio che mi permetterà di aggiungere sperimentazioni di automazione con microcontrollori, un modo naturale per realizzare continuità dal secondo anno dell’ITIS al terzo/quarto anno poi. Ovviamente non solo MicroPython, tanto C anche con Arduino, ma è essenziale per me aggiungere anche questa competenza.

MicroPython è una reinterpretazione di Python 3 per microcontrollori e sistemi embedded, inoltre Python è uno dei linguaggi di programmazione più belli, ottimo per la didattica ed averlo anche su sistemi elettronici rende incredibilmente divertente ed efficiente lo sviluppo di sistemi di controllo.

Per seguire queste brevi lezioni non bisogna essere professionisti nella programmazione di Python (anche io non programmo spesso in questo linguaggio) il percorso parte da un livello 0. Il mio obiettivo è quello di fornire uno strumento che poi invogli alla sperimentazione.

La documentazione è pensata per studenti ed insegnanti di ogni ordine e grado.

MicroPython non vuol dire solo micro:bit ma anche PyBoard, ESP8266/ESP 32 e molto altro.

Pertanto ho pensato di realizzare, nel limite del tempo didattico che posso dedicare a queste piattaforme un corso introduttivo, didascalico e spero semplice. Ciò che scriverò sarà indirizzato all’uso di micro:bit, ma con qualche impostazione iniziale, tutto si adatta benissimo anche alle altre piattaforme.

Da dove incominciare?

Nei link indicati sopra trovate i riferimenti essenziali, ma un libro fondamentale è: Programming with MicroPython – by Nicholas Tollervey and pyboard lite il link rimanda ad amazon.it, l’acquisto può essere fatto anche con la 18app o con la carta del docente.

Tutto il percorso si basa sull’ottimo lavoro realizzato da Mike Rowbitt con First Steps with MicroPython ne ho fatto in parte una traduzione ed in parte ho aggiunto altri argomenti ed esercizi.

Per essere informati sulle nuove versioni del manuale in lingua inglese sviluppato da Mike Rowbitt potete iscrivervi alla mailing list: microbit@python.org
(https://mail.python.org/mailman/listinfo/microbit).

Le mie lezioni sono in costruzione, conto di pubblicare almeno un paio di guide alla settimana in modo che per chi vorrà potrà prendere questi appunti reinterpretarli secondo le proprie necessità e realizzare un percorso nella seconda parte dell’anno scolastico.

I progetti e gli esercizi sviluppati in MicroPython su BBC micro:bit fanno uso di:

Mu – un semplice editor di codice, credo che sia il modo più semplice per incominciare a programmare in MicroPython su BBC micro:bit.

Vi invito quindi a scaricare l’editor “mu” per poter lavorare con le lezioni proposte.

Tutte le istruzioni per il download e l’installazione potete trovarle sul sito di riferimento, sono ben fatte e di facile comprensione.

Mu funziona con Windows, OSX and Linux (anche Raspberry Pi).

L’ultima versione di Mu vi permette di selezionare mediante il pulsante “Modes” la modalità di programmazione in funzione della piattaforma: Adafruit CircuitPython, BBC micro:bit, Pygame Zero, Python 3.

Una volta installato Mu selezionate il modo micro:bit, collegate il vostro micro:bit al computer tramite un cavo USB.

Il processo di scrittura è upload su micro:bit richiede pochi passaggi:

  • scrivete il vostro script nella finestra dell’editor
  • fate click sul pulsante “Flash” per trasferire il programma sul micro:bit.
  • se il trasferimento non avviene, assicurati che il vostro micro:bit appaia come periferica USB nel vostro file system.

Faremo queste operazioni tra breve scrivendo un semplicissimo programma.

Prima di andare oltre un richiamo sulle caratteristiche del micro:bit riprese dal corso introduttivo che trovate su questo sito.

La scheda BBC micro:bit è costituita da:

  • 25 LED rossi che possono essere utilizzati per comporre un testo o una icona stilizzata.
  • Due pulsanti programmabili (A e B) che possono essere utilizzati per dire a micro:bit quando si avvia o si interrompe un’operazione.
  • Un sensore di temperatura per rilevare la temperatura ambiente.
  • Un sensore di luce per rilevare le variazioni di luminosità ambientale.
  • Un accelerometro per rilevare un movimento.
  • Un magnetometro per rilevare la direzione del campo magnetico.
  • Connessione Radio e Bluetooth Low Energy per interagire con altri device.

Il primo programma – “Hello World!”

E’ possibile pensare al Coding con micro:bit come ad un ciclo costituito fa 4 fasi:

Il modo tradizionale per iniziare a programmare in una nuova lingua di programmazione è quello di far dire al computer “Hello, World!”.

Fare questo è semplice in MicroPython:

from microbit import *
display.scroll("Hello, World!")

Analizziamo le due linee di codice.

La prima linea:

from microbit import *

Nella prima riga viene richiesto a MicroPython tutto il materiale (codice) necessario per lavorare con micro:bit. Il codice richiesto è un modulo chiamato microbit  (un modulo è una libreria di codice preesistente). Quando fate l’import  (importate qualcosa), state dicendo a MicroPython che volete usarlo, “*” è il modo in cui Python dice tutto.
Quindi from microbit import *  significa, in inglese, “Voglio poter usare tutto ciò che è disponibile dalla libreria di codici microbit”.

Seconda linea:

display.scroll(“Hello, World!”)

dice a MicroPython di usare il display per far scorrere la stringa di caratteri.

La parte di codice display  permette la visualizzazione del testo Hello, World!  .

display  è un oggetto dal modulo microbit che rappresenta la visualizzazione fisica del testo “Hello, World!” sul dispositivo.

La parte di codice indicata con display  è un object (oggetto) del modulo microbit  che rappresenta il display fisico. Possiamo dire al display di eseguire l’operazione indicata fino al .  dopo il .  è presente qualcosa di molto simile ad un comando (che chiameremo metodo). In questo caso stiamo usando il metodo scroll  (scorrimento). Poiché scroll  ha necessità di sapere quali caratteri far scorrere sul display fisico, questi saranno specificati tra doppie virgolette () tra parentesi ( (  e )  ). Tutto ciò che è tra parentesi e tra le virgolette prende il nome di argomento. Quindi, display.scroll(“Hello, World!”)   significa, in inglese, “Voglio che tu usi il display per far scorrere il testo ‘Hello, World!'”. Se un metodo non ha bisogno di argomenti non inseriremo nulla tra parentesi: ()  .

Copiate all’interno dell’editor il codice “Hello, World!” ed eseguite l’upload sul vostro BBC micro:bit.

Siete in grado di capire come cambiare messaggio?

Potete farlo salutare? Ad esempio, potreste far dire “Ciao, Michele!”.
Suggerimento: è necessario modificare l’argomento del metodo di scroll. 🙂

Avvertimento

Potrebbe non funzionare 🙂

Nel caso in cui venga commesso un errore MicroPython ci viene in aiuto, in questo caso scorrerà sul display del micro:bit un messaggio di errore, sempre sul display apparirà il numero della linea di codice in cui è presente l’errore.

Python si aspetta che voi digitiate ESATTAMENTE il codice. Quindi, ad esempio l’istanza, Microbit  , microbit  e microBit  sono tutte cose diverse per Python. Se MicroPython restituisce un errore NameError  , probabilmente avete digitato qualcosa in modo non corretto.

Se MicroPython restituisce un SyntaxError  probabilmente avete scritto qualcosa che MicroPython non riesce a capire. Verificate che non manchino ad esempio i caratteri speciali   o :  .

Usiamo Mu

Colleghiamo il micro:bit al computer:

Utilizziamo Mu per codificare:

Un click sul pulsante Repl per estendere la finiestra di editing e visualizzare l’area in cui vengono mostrati i messaggi inviati dal micro:bit

Per trasferire il programma sul micro:bit click sul pulsante “Flash”:

Durante la fase di trasferimento del programma il led giallo di stato incomincia a lampeggiare al termine il micro:bit verrà disconnesso dal computer ed immediatamente il programma incomincerà a funzionare:

Nel caso in cui nel vostro programma sia presente un errore, nella parte bassa della finestra di editing vi verrà restituito un messaggio che indica il tipo di errore. Usando il comando help() potrete consultare una guida che vi aiuterà a risolvere il problema.

Nel caso di errore sul display del micro:bit apparirà il messaggio di errore.

Buon Coding a tutti 🙂

Costruiri un personalissimo IDE web per Arduino sviluppato in Python e Flask

Alcune volte mi domando come trovare soluzioni nuove per insegnare a programmare  e questa volta ci ha pensato l’amico Ludovico Russo, amico di avventure robotiche 🙂 , che mi ha regalato una nuova soluzione che senza alcun dubbio è da usare a scuola e vi invito fortemente a sperimentare. Vi assicuro che seguendo passo passo il suo tutorial, 30 minuti massimo, sarete in grado di creare il vostro IDE web per Arduino.

Ludovico mi ha detto che sta sviluppando il progetto e più avanti renderà disponibile una nuova versione, ma se avevate necessità di imparare a programmare in Python e Flask allora questo tutorial vi darà un buon motivo.

Riprendo dal suo sito:


L’idea di base era quella di sviluppare un semplice IDE web per Arduino, che mi permettesse di sviluppare codice su un Arduino direttamente connesso ad un Raspberry Pi (ormai sapete che utilizzo tantissimo entrambi questi Hardware), ma senza la scomodità di dover utilizzare direttamente l’interfaccia grafica del Raspberry Pi per programmare.

Se volete saperne di più seguite il link: Un IDE web Arduino sviluppato in Python e Flask

Buona sperimentazione a tutti 🙂

compilation

Secondo Workshop sulla Cloud Robotics: Vieni da noi a creare l’Internet dei Robot

Sono felice di annuncirvi che gli amici Ludovico Russo e Gabriele Ermacora di HotBlack Robotics, col supporto di DotBot, dopo il successo della prima edizione hanno deciso di organizzare un secondo workshop legato alle nuove tecnologie di Robotica, Internet of Things e Cloud Robotics. Lo scopo del workshop è avvicinare i partecipanti a queste tematiche e permettere di continuare a sperimentare queste tecnologie in autonomia.

Vieni da noi a creare l’Internet dei Robot
3 Dicembre 2016 (ore 9:00 – 18:00), Torino, via Mantova 36
prezzo: 25€ a persona (max 10 persone), include accesso gratuito illimitato alla piattaforma di Cloud Robotics da Beta Tester.

Il workshop è rivolto a chiunque sia interessato alla robotica e all’Internet delle Cose, e vuole approfondire questa tematica. È quindi rivolto a makers e insegnanti con una propensione alla sperimentazione.

E’ necessario avere una conoscenza base di programmazione in almeno uno di questi linguaggi: C, C++ o Python.

Per maggiori informazioni sulla modalità di iscrizione e sul programma vi rimando al sito di riferimento.

internet dei robot

Vieni a creare l’Internet dei Robot – Workshop su Robotica e Internet of Things (IoT)

L’avventura della Maker Faire di Roma 2016 è stata utilissima, ci ha permesso di avere un’immediato riscontro su quanto stiamo sviluppando, inoltre il contatto diretto con insegnanti e studenti ha messo in luce esigenze ed ha aperto nuove relazioni di collaborazione didattica. DotBot quindi apprezzato sia dal punto di vista della struttura fisica, su cui ci saranno sicuramente evoluzioni, ma soprattutto per la modalità di programmazione, che come avete avuto modo di leggere può essere implementata in più modi, in C su piattaforma Arduino oppure in ROS (Robot Operative System) implementando funzioni scritte in Python che fanno uso del framework ROS  su piattaforma Raspberry Pi ed è proprio il controllo con ROS che riteniamo fortemente innovativo in quanto più vicino alle esigenze delle aziende del settore. Con ROS sarà possibile implementare la Cloud Robotics e sfruttare le potenzialità del Cloud per distribuire funzionalità e interazioni tra robot. ROS attualmente è implementato su sistemi robotici industriali che hanno costi elevati, costi che non possono essere sostenuti dalla scuola, ecco perché usare la versione DotBot-R (dove R indica appunto ROS), quindi

ROS + Cloud + DotBot = Cloud Robotics con DotBot

Quindi piattaforma Cloud realizzata con tecnologia alla portata di tutti.

Ma come imparo ad utilizzare ROS?

Attualmente solo in pochissime realtà, tra cui il Politecnico di Torino, si parla di ROS ed io ho avuto la fortuna di avvicinarmi a questi argomenti grazie all’amico Ludovico Russo, dottorando al Politecnico di Torino.

Negli scorsi mesi ho avuto la conferma, anche didattica, delle potenzialità tecnologiche offerte da ROS ed ecco perché ritengo più che indispensabile segnalare su queste pagine l’iniziativa, unica nel suo genere, di HotBlack Robotics, la Startup fondata da Gabriele Ermacora e Ludovico Orlando Russo che si occupa proprio di Robotica con ROS.

HotBlack Robotics ha organizzato il Workshop:

Vieni a creare l’Internet dei Robot
Workshop su Robotica e Internet of Things (IoT)

che si terrà il 9-10 Novembre 2016, Torino, in via San Massimo 24 dalle 14:30 alle 18:30

Prezzo: 25€ a persona (max 20 persone), include accesso gratuito illimitato alla piattaforma di Cloud Robotics da Beta Tester

Per informazioni e iscrizioni www.dotbot.cc/workshop

workshop-ros-dotbot

Questa la presentazione dell’evento:

HotBlack Robotics, in collaborazione con il CINI (Consorzio Universitario Nazionale di Informatica), organizza un workshop di due giorni legato alle nuove tecnologie di Robotica, Internet of Things e Cloud Robotics.

Lo scopo del workshop è avvicinare i partecipanti a queste tematiche e permettere di continuare a sperimentare queste tecnologie in autonomia, con particolare riferimento alle sperimentazioni orientate alla didattica.

Tali competenze verranno fornite utilizzando il dispositivo sperimentale DotBot-R, un piccolo robot economico (in fase di sviluppo) in grado di connettersi alla piattaforma di Cloud Robotics e di sfruttare tutte le potenzialità del Cloud.

A chi è rivolto il corso?

Il corso è rivolto a chiunque sia interessato alla robotica e all’Internet delle Cose, e vuole approfondire questa tematica. È quindi rivolto a makers e insegnanti con una propensione alla sperimentazione. E’ fortemente consigliato avere una conoscenza base di coding (qualsiasi linguaggio di programmazione va bene, l’importante è sapere cosa vuol dire programmare).

Requisiti tecnici

Ai partecipanti è richiesto di portare almeno uno dei seguenti dispositivi:

  • Un PC portatile abilitato a navigare in Wi-Fi, con qualsiasi sistema operativo (Windows, macOS o Linux) e il browser Google Chrome
  • (sperimentale) un Tablet o Smartphone abbastanza recente ( > 2014) capace di connettersi via Wi-Fi.

Contenuti del corso

9 Novembre

  1. Introduzione (1h)
    1. Cos’è l’Internet of Things e cosa vuol dire Cloud Robotics. Perché abbiamo coniato il termine Internet del Robot?
    2. Cos’è ROS (Robot Operative System): scopo, finalità e funzionamento
    3. Raspberry-Pi
    4. Perché progettare DotBot-R?
  2. Python (1h)
    1. Breve introduzione al linguaggio Python (1h)
    2. Sintassi base di Python
  3. Primi esperimenti in Python (2h)

10 Novembre

  1. Iniziamo a programmare DotBot-R (1.5h)
    1. Utilizzo dell’IDE
    2. Publisher
    3. Subscriber
  2. Esperimenti su DotBot-R (2.5h)
    1. Programmare un joystick via WebAPP!
    2. Facciamo interagire tra loro i robot!

Io ci sarò sicuramente, come studente perché ho bisogno di ripassare l’argomento 🙂 ma anche, se sarà possibile, per dare una mia testimonianza.

VIPER, la suite made in Italy per la programmazione degli oggetti intelligenti, è disponibile online

VIPER

Come di consueto riservo questa parte dell’anno alla progettazione didattica e formazione personale in modo da impostare nuovi argomenti o soluzioni a problematiche riscontrate durante le mie attività di formazione.

E’ da tempo che desideravo proporre un’alternativa all’insegnamento della programmazione e dell’automazione, detta usando la frase del momento 🙂 “interazione con il mondo reale (IoT)” da proporre ai miei studenti. L’idea è quella di proporre una soluzione basata sul linguaggio di programmazione Python che come sicuramente saprete ben si adatta in ambito didattico.
Da circa un mese ho incominciato a costruire un manuale “semplice” su Python estremamente pratico però avevo la necessità di trovare una soluzione altrettanto facile e coinvolgente che potesse in qualche modo permettermi, usando Python, di interagire con il mondo reale.
Fortunatamente negli scorsi giorni sono stato contattato direttamente dalla startup italiana Viper, nella persona di Gabriele Montelisciani, che ringrazio e che mi segnalava il rilascio della prima versione della piattaforma di programmazione che permette di programmare nel semplice linguaggio Python la maggior parte delle schede a 32bit attualmente presenti sul mercato compreso Arduino.
L’anello mancante al mio nuovo progettare 🙂 che sperimenterò intensamente.

Qualche dettaglio in più su Viper che vi invito a sperimentare.

La startup italiana VIPER ha rilasciato lo scorso 24 giugno la prima versione della sua nuova piattaforma di programmazione. La campagna di raccolta fondi su Kickstarter, conclusasi con successo lo scorso Marzo, ha permesso di ultimare lo sviluppo del prodotto.
VIPER è una suite di sviluppo multipiattaforma (Linux, Windows e Mac) che permette di programmare nel semplice linguaggio Python la maggior parte delle schede a 32bit attualmente presenti sul mercato: sia le schede professionali basate su chip 32bit, che le schede di prototipazione più note al momento come Arduino DUE, UDOO, Particle e ST Nucleo.
L’idea è stata concepita dopo aver condotto alcune dettagliate analisi di mercato, dove il team ha scoperto che designers, “makers” e programmatori si trovano quotidianamente ad affrontare le stesse sfide di semplificazione e ottimizzazione dei processi di sviluppo di nuovi prodotti interattivi. VIPER nasce quindi dall’esigenza di ottimizzare tali processi, attraverso un’interfaccia web per gestire e programmare le schede, una macchina virtuale “real time” e una vasta libreria di funzioni pronte per l’uso. La suite include inoltre un’App per mobile che permette di controllare gli oggetti VIPER attraverso gli smartphone senza dover sviluppare nessuna applicazione mobile. Il tutto è già “nativamente connesso al cloud”. Tale configurazione permette di ridurre tempi ed energie per lo sviluppo.

Con poche righe di codice, gli utenti possono sviluppare una vasta gamma di applicazioni del mondo dell’internet degli oggetti, che vanno dalla domotica al fitness, dalla robotica alla nautica, dalle applicazioni industriali ai controlli manutentivi da remoto, fino all’agricoltura intelligente. Per il consumatore finale ciò si traduce nella possibilità di collegare e comandare le smart TV, le lampade intelligenti, i termostati di nuova generazione, ma anche di sincronizzare le sveglie con la macchina da caffè, la lavatrice, l’aspirapolvere.
La campagna Kickstarter ha dato ottimi risultati, oltre 400 utenti da 25 paesi diversi hanno creduto in Viper. Ora la suite diventa disponibile in modalità opensource per tutti gli interessati allo sviluppo di soluzioni non commerciali, nonché a provarne le potenzialità anche nel campo della formazione.

VIPER è disponibile per il download al sito ufficiale.

Buona sperimentazione a tutti!