Nuova sezione libri disponibile!

Un IDE web Arduino sviluppato in Python e Flask

Ludovico Russo

lettura in 3 minuti

Solitamente, quando devo imparare ad utilizzare una nuova tecnologia, cerco di inventarmi un progetto interessante che potrebbe essere sviluppato con questa tecnologia e mi impegno a portarlo avanti fino alla fine. Quando ho iniziato ad interessarmi a Flask e Python, ho ideato il progetto che vi presento oggi, proprio per motivarmi ad imparare ad utilizzare bene questa libreria.

img1

Idea e Sviluppo

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.

Quindi lo scenario di utilizzo è il seguente (si vede che sono un PhD? Solo i PhD parlano di scenari di utilizzo :D):

  • Arduino collegato via USB a Raspberry Pi
  • Raspberry Pi connesso ad una rete WiFi o Ethernet local
  • Un computer/tablet/smartphone connesso alla stessa rete

Il progetto doveva permettere di programmare Arduino e di accedere al monitor seriale (esattamente come fa l'IDE Arduino ufficiale).

Installazione

Trovate tutto il codice sviluppato a questo link GitHub. Per utilizzarlo è necessario accedere alla shell del Raspberry Pi e configurarlo come segue:

Installazione Dipendenze

Prima di tutto dobbiamo installare le dipendenze, che sono:

  • Arduino-mk: un progetto che permette di interagire con Arduino da linea di comando
  • pySerial: libreria Python per accedere alla porta seriale
  • Flask: libreria Python per creare e gestire webapp

Arduino-mk si installa da apt-get da linea di comando

$ sudo apt-get install arduino-mk

Per le librerie Python, invece, conviene creare prima di tutto un virtualenv.

Per installare virtualenv basta eseguire il comando

$ sudo pip install virtualenv

Una volta installato, entriamo nella cartella dove mettiamo solitamente i nostri progetti (nel mio caso è devs), creiamo un ambiente virtuale e installiamo le dipendenze Python

$ virtualenv remote-arduino
$ cd remote-arduino
$ source bin/activate
(remote-arduino)$ pip install flask flask-bootstrap flask-script pyserial

A questo punto possiamo clonare la repository GitHub

git clone https://github.com/ludusrusso/arduino-compiler-web

Prima di lancare la webapp, dobbiamo informare il programma della scheda Arduino che utilizziamo e della porta a cui è collegato. Per farlo, bisogna esportare le seguenti variabili d'ambiente:

(remote-arduino)$ export ARDUINO_PORT=/dev/ttyACM0
(remote-arduino)$ export ARDUINO_BOARD=uno

In questo caso, utilizziamo un Arduino UNO collegato alla porta ttyACM0.

Lanciare l'applicazione

Per lanciare l'app, basta entrare nella cartella arduino-compiler-web e lancaire il seguente comando

./manage.py runserver -h 0.0.0.0 --threaded

Utilizzo della WebApp

A questo punto, da qualsiasi browser, collegandosi all'url http://<IP RASPBERRY>:5000 accederemo all'applicazione. index

Possiamo utilizzare l'editor di testo per scrivere codice

code

E installarlo su Arduino premendo il tasto Compile

compilation

Allo stesso modo, possiamo aprire e chiudere il serial monitor dai tasti Monitor e Stop

monitor

Conclusioni

Questo progetto è ancora molto acerbo, ma mi ha permesso di sviluppare tantissime competenze in ambito di programmazione web in Python e Flask.

Avete dei commenti e suggerimenti su come migliorarlo? Scrivetemi sulla mia pagina facebook.

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 #1 - Uso dei Led
Iniziamo ad utilizzare la piattaforma di Cloud Robotics
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
Controllare siBOT dalla piattaforma HBR
Come controllare il manipolatore siBOT utilizzando la piattaforma HBR
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
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!
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à
Pasqua al Liceo Stampacchia di Tricase: Corsi di Arduino e Stampa 3D
In occasione delle vacanze di Pasqua 2017, il Liceo G. Stampacchia organizza due corsi tenuti da me su Arduino e stampa 3D.
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
Sviluppiamo un'app in Electron per controllare la scheda Arduino - parte 2
In questo tutorial, vediamo come sviluppare un oscilloscopio con Node.js, Electron e Typescript
Implementiamo un bot Telegram con Python - I Comandi
Vediamo come gestire i comandi del nostro bot in Telegram
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.
Buildare e usare container Docker per Raspberry Pi
In questa guida vediamo come buildare ed utilizzare Docker su Raspberry Pi (ed in generale sistemi Linux Embedded) per velocizzare la produzione di applicazioni Linux Embedded
Robot Open Source - Docker e Raspberry
È disponibile il video "Docker e Raspberry".
Setup Wifi super semplice per Raspbian Lite
Vi propongo un trucchetto per gestire in modo semplicissimo il WiFi su Raspbian (Lite).
Abilitare l'accesso SSH del raspberry pi senza usare un monitor
Un piccolo trucco per gestire al meglio lo sviluppo su Raspberry Pi, specialmente se non si ha a disposizione un monitor.
Un bot telegram che invia messaggi al verificarsi di eventi sui GPIO del Raspberry Pi
Mandare un messaggio tramite telegram quando il un GPIO del Raspberry cambia stato è possibile, ecco come!
Passive income con Raspberry Pi e earnapp
Come guadagnare un po' di soldi senza muovere un dito usando un raspberry pi e una connessione ad internet