Nuova sezione libri disponibile!

HB Cloud Tutorial #1 - Uso dei Led

Ludovico Russo

lettura in 4 minuti

Ciao a tutti, iniziamo oggi questa serie di tutorial per insegnare a programmare i robot DotBot-ROS dalla piattaforma di cloud robotics che stiamo sviluppando: HB Cloud.

roscore ROS shell

Questo primo tutorial è dedicato all'accensione e allo spegnimento del Led, e si basa sulla versione beta del sistema operativo HBrain (v0.3.2). Scrivo questo tutorial in preparazione al percorso di alternanza scuola lavoro con l'ITIS Avogadro di Torino. Se qualcuno volesse però provare per conto proprio ad utilizzare la piattaforma ci contatti in privato per ricevere supporto.

Cos’è HB Cloud?

HB Cloud è una piattaforma di cloud robotics che stiamo sviluppando in HB Robotics. Lo scopo è quello di permettere a makers, studenti e non professionisti di imparare in modo semplice l'utilizzo di tecnologie innovative nel mondo della Cloud Robotics, ed in particolare su ROS.

Il nostro scopo è quello di semplificare lo sviluppo e la gestione di applicazioni robotiche! HB Cloud si interfaccia automaticamente con HBrain, un sistema operativo da noi sviluppato per Raspberry Pi che include il framework ROS (Robot Operating System).

Scriviamo il primo codice per accendere un LED

Circuito Elettrico

Il codice python per la gestione di un led è molto semplice, ma prima di tutto è importante sviluppare il circuito. Colleghiamo l'anodo del Led al Pin GPIO05 del Raspberry Pi. Colleghiamo il catodo ad uno degli estremi di una resistenza da 220Ohm, e mettiamo il secondo estremo della resistenza a massa.

Codice

A questo punto, siamo pronti a scrivere un semplice programma per far blinkare il led, cioè per farlo accendere e spegnere in modo continuato ad una frequenza fissa. Adremo ad utilizzare le librerie python gpiozero e dotbot_ros.

  • gpiozero è una libreria che permette la gestione dei pin GPIO del Raspberry Pi
  • dotbot_ros è una versione semplificata di ROS appositamente sviluppata per l'applicazione.

Scheletro dell'applicazione

Lo scheletro dell'applicazione che andremo a sviluppare ha la seguente forma

import dotbot_ros

class Node(dotbot_ros.DotbotNode):
    node_name = 'blink'

    def setup(self):
        pass

    def loop(self):
        pass

Come per arduino, dovremmo implementare due funzioni:

  • la funzione setup, che viene chiamata una volta all'inizio del programma.
  • la funzione loop, che viene chiamata in modo iterativo fino allo stop forzato del programma.

Bisogna inoltre settare la variabile di classe node_name, che rappresenta il nome del nodo che abbiamo sviluppato in ROS. In questo caso, il nostro nodo si chiamerà blink.

Nota Bene: In Python, la direttiva pass significa letteralmente non fare niente.

Configurazione della frequenza di Iterazione

Utilizzando dotbot_ros, possiamo decidere in modo semplice a che frequenza far iterare la funzione loop. In altre parole, se settimano la frequenza di iterazione a (per esempio) 10Hz, loop verrà chiamata 10 volte al secondo.

Per farlo, bisogna settare una variabile chiamata self.loop_rate all'interno della funzione setup. Se questa variabile non viene settata, la funzione loop non verrà mai chiamata.

Implementiamo quindi la funzione setup in modo da settare self.loop_rate a 2Hz

    def setup(self):
        self.loop_rate = dotbot_ros.Rate(2)

Perfetto, adesso siamo certi che la funzione loop verrà chiamata 2 volte al secondo!

Importiamo l'oggetto LED la libreria gpiozero

Possiamo ora iniziare ad usare la libreria gpiozero ed in particolare l'oggetto LED. Per farlo, prima di tutto, importiamolo con la seguente linea di codice

from gpiozero import LED

A questo punto siamo pronti ad inizializzare un oggetto di tipi LED. Ricordo che abbiamo collegato il nostro led al pin GPIO05. Nella funzione setup dovremo quindi creare un nuovo oggetto self.led associato al PIN numero 5

    def setup(self):
        self.loop_rate = dotbot_ros.Rate(2)
        self.led = LED(5)

Come vedete, il tutto è molto semplice. Si noti che ho "appeso" l'oggetto appena creato (led) alla variabile self. In questo modo posso utilizzarlo all'interno delle altre funzioni della nostra classe Node, ed in particolare all'interno della funzione loop.

Blink del Led

A questo punto non ci resta che far blinkare il led. Per farlo dobbiamo implementare un codice che faccia sì che il led si spenga se è acceso e viceversa ogni volta che la funzione loop viene chiamata. Per farlo, gpiozero mette a disposizione un utilissimo metodo di LED chiamata LED.toggle(), che non fa altro che fargli cambiare stato.

Implementiamo la funzione loop, quindi, come segue

    def loop(self):
        self.led.toggle()

Codice completo

Ecco il codice appena sviluppato

import dotbot_ros
from gpiozero import LED

class Node(dotbot_ros.DotbotNode):
    node_name = 'blink'

    def setup(self):
        self.led = LED(5)
        self.loop_rate = dotbot_ros.Rate(2)

    def loop(self):
        self.led.toggle()

Ti è piaciuto questo post?

Registrati alla newsletter per rimanere sempre aggiornato!

Ci tengo alla tua privacy. Leggi di più sulla mia Privacy Policy.

Ti potrebbe anche interessare

HB Cloud Tutorial #2 - Uso dei Bottoni
Rieccomi con il secondo tutorial legato all'uso dei bottoni per il robot **DotBot-ROS**. In questo tutorial, vedremo come configurare ed utilizzare in Python un bottone attaccato ad un pin GPIO del Raspberry Pi 3.
HB Cloud Tutorial #3 - I Motori
I Motori sono una delle parti essenziali dei robot. In questo tutorial, vederemo come è possibile in modo semplice ed intuitivo implementare un programma in Python che controlla i motori in base a comandi inviati via Wifi al Robot.
Utilizzare la RaspiCam in streaming con la piattaforma Cloud
Breve tutorial che spiega come abilitare la RaspiCam su ROS e la piattaforma di Cloud Robotics
Installiamo ROS su Raspberry Pi
Un breve tutorial su come utilizzare ROS sul Raspberry Pi
Video Corso ROS Rokers - Completati i video di Introduzione
Sono disponibili online i video tutorial del corso di ROS partito dalla community Rokers
Inviare Goals alla Navigation Stack - versione nodo ROS Python
Inviare un goal all ROS navigation stack utilizzando un nodo Python
Controllare siBOT dalla piattaforma HBR
Come controllare il manipolatore siBOT utilizzando la piattaforma HBR
Sviluppare un rilevatore di fiamma con la visione artificiale
Sviluppare un rilevatore di fiamma con la visione artificiale
Scriviamo un Blog in Python e Flask
Tutorial su come implementare, a partire da zero, un blog personale utilizzando Python e Flask! Prima parte!
Un laboratorio di Fisica con Arduino e Python
Primi esperimenti con Arduino e Python per realizzare un semplice laboratorio di fisica sfruttando la potenza di Python e la versatilità di Arduino
Un IDE web Arduino sviluppato in Python e Flask
Un mio progetto dell'estate del 2015 che permette di programmare Arduino da un'interfaccia Web esposta da un Raspberry Pi
Utilizziamo Atom come editor di testo remoto su Raspberry Pi
Come usare Atom come editor di testo remoto per Raspberry Pi
Canopy: una Pythonica alternativa a Matlab
Presento questo interessante tool python che può essere considerato una buona alternativa a Matlab per l'analisi dei dati!
Spyder, un'altra alternativa in Python a Matlab
Una velocissima prova del tool interattivo Spyder per l'analisi scientifica in Python
Simuliamo il moto parabolico in Python e Spyder
Un piccolo tutorial per iniziare ad utilizzare Spyder con Python
Python + Arduino = Nanpy
Programmare Arduino in Python con Nanpy
Utilizzo di Nanpy con il sensore di temperatura/umidità della famiglia DHT
Come utilizzare Nanpy col sensore DHT di temperatura e Umidità
Accendere led con Arduino e Telegram
Un bot telegram in grado di controllare Arduino realizzato da 3 ragazzi del Liceo Stampacchia
Gestire le macchine virtuali senza sforzo con Vagrant
Introduzione ed esempio di utilizzo su Vagrant, il tool che semplifica la gestione delle macchine virtuali per lo sviluppo.
Implementiamo un bot Telegram con Python
Una semplice guida per iniziare a muovere i primi passi nello sviluppo di chatbot Telegram con Python
Pillole di Python: pyscreenshot
Una semplice tutorial che mostra il funzionamento della libreria pyscreenshot
Python Decorators
Introduzione ai decoratori in Python
TDD con Flask e PyTest per lo sviluppo di API REST. Parte 1
Tutorial su come usare il Test Driver Development (TDD) con Flask e PyTest per sviluppare delle semplici API REST
Implementiamo un bot Telegram con Python - I Comandi
Vediamo come gestire i comandi del nostro bot in Telegram
4 (+1) Libri su Python (in Inglese) da cui imparare
Una lista di libri su Python (in Inglese) da cui ho imparato a programmare
Virtualenv: gestiamo meglio le dipendenze in Python
A cosa servono e come si utilizzano i virtualenv Python
Leggere i codici a barre con OpenCV e zbar in Python
Come usare Python per leggere i codici a barre degli alimenti e ricavarne alcune informazioni utili
TDD con Flask e PyTest per lo sviluppo di API REST. Parte 2
Tutorial su come usare il Test Driver Development (TDD) con Flask e PyTest per sviluppare delle semplici API REST
Sviluppiamo un bot Telegram che legge i codici a barre degli alimenti
Implementiamo un bot Telegram in grado di leggere ed analizzare le immagini per la lettura ed interpretazione dei codici a barre
TDD con Flask e PyTest per lo sviluppo di API REST. Parte 3
Tutorial su come usare il Test Driver Development (TDD) con Flask e PyTest per sviluppare delle semplici API REST
Divertiamoci sviluppando UI da terminale con ASCIIMATICS
Le UI da terminale fanno molto anni '80, però sono sempre diventerti da implementare. Oggi vi voglio introdurre ad una semplice libreria per creare questo tipo di applicazione.
Sviluppiamo un Robot con tecnologie Open Source
Inizio una serie di videoguide, in cui voglio introdurvi al mondo della robotica di servizio in modo pratico, facendo vedere come è possibilile, sfruttando tecnologie completamente Open Source, quali Arduino, Raspberry Pi, ROS e Docker, costruire un piccolo robot di Servizio.
Parliamo come GMaps: come creare file audio con gtts (Google Text to Speech) in Python
gtts è una libreria in Python per sfruttare le API di Google Text to Speech per generare file audio dal testo
Robot Open Source - Introduzione a Docker
È disponibile il video "Introduzione a Docker".
I chatbot possono Parlare? Sviluppiamo un bot telegram che manda messaggi vocali
Usiamo le API di sintesi vocale di google per creare un bot in grado di mandare messaggi vocali
Robot Open Source - Docker e Raspberry
È disponibile il video "Docker e Raspberry".