ݺߣ

ݺߣShare a Scribd company logo
Linux Embedded per l'automazione
Linux Embedded per lautomazione
GNU/Linux, Google App Engine e Android
Daniele Costarella
Electronic Engineer, GDG Campania Co-Organizer, Open Makers Italy
Mobile Innovation Day Caserta | 16 maggio 2014, Caserta
Part 1: Linux Embedded
Vantaggi C Un esempio reale C Esempi di utilizzo
Cos?
Con Embedded Linux ci si riferisce a quellinsieme di distribuzioni
concepite per essere utilizzate su sistemi embedded.
[Wikipedia]
 Riutilizzo dei componenti
 Capacit di riutilizzo dei componenti
 Molti componenti per il nostro sistema sono gi disponibili e open-source
 Supporto hardware ai protocolli di rete, periferiche multimediali, librerie grafiche ecc.
 Focus sul prodotto finale
 Costo basso
 Il software libero pu essere copiato su pi dispositivi e senza alcun costo
 Strumenti di sviluppo per la maggior parte liberi
 Costo delle licenze software estremamente ridotto
 Incremento del budget per lhardware
Vantaggi
 Pieno controllo su tutto il software utilizzato
 Disponibilit di componenti di qualit elevatissima
 Semplicit nella fase di testing
 Supporto della community
 Entrare a far parte di una gigantesca community
Vantaggi
Scelta della board: BeagleBone Black
Un computer su singola scheda, progettato per mantenere bassi i costi di vendita, pur
offrendo prestazioni e connettivit prossime a quelle di un laptop.
In grado di eseguire il boot di Linux in meno di 10 secondi. Uno strumento di sviluppo ideale
per hobbisti e sviluppatori.
 GNU/Linux
 Filesystem
 Multitasking
 Supporto di rete
 Connettivit
 Timekeeping
 Accesso remoto
 Dimensioni
 Community
Tutto in una scheda
BeagleBone Black: caratteristiche tecniche
Processore: AM335x 1GHz ARM? Cortex-A8
512MB DD3 RAM
2GB 8-bit eMMC on-board flash storage
Acceleratore grafico 3D
Connettivit
USB client for power and communications
USB host
Ethernet
HDMI
2x46 pin headers
Compatibilit software
?ngstr?m Linux
Android
Cloud9 IDE on Node.js w/ BoneScript Library
E altro ancora
Operativi in pochi secondi
 Connessione tramite cavo USB
 Test della connessione
 Da browser: http://192.168.7.2
 Pagine introduttive su BeagleBone
 Tutto pronto per iniziare
Connessione tramite SSH
 Su Linux e Mac basta semplicemente lanciare un terminale e digitare il
seguente comando:
$ ssh 192.168.7.2 Cl root
La libreria Adafruit_BBIO
Una volta eseguito laccesso tramite SSH (su Angstrom Linux):
$ opkg update && opkg install python-pip python-setuptools python-smbus
$ pip install Adafruit_BBIO
Per verificare che linstallazione sia avvenuta con successo:
import Adafruit_BBIO.GPIO as GPIO; print GPIO
#you should see this or similar:
<module 'Adafruit_BBIO.GPIO' from '/usr/local/lib/python2.7/dist-packages/Adafruit_BBIO/GPIO.so'>
Utilizzo della libreria Adafruit_BBIO
Aprire una console Python e importare la libreria (per esempio GPIO)
Python 2.7.5 (default, Sep 2 2013, 05:24:04)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import Adafruit_BBIO.GPIO as GPIO
Accesso ai pin tramite pin key o nome
import Adafruit_BBIO.GPIO as GPIO
GPIO.setup("P8_10", GPIO.OUT)
GPIO.output("P8_10", GPIO.HIGH
GPIO.setup("P8_14", GPIO.IN)
if GPIO.input("P8_14"):
print("HIGH")
else:
print("LOW")
Esempio 1: LED blinking
Anodo sul pin 6 e catodo su GND
LED Blinking: scriviamo il codice
Creiamo un file eseguibile con un semplice programma per il lampeggio del LED
$ nano blink.py
Python
import Adafruit_BBIO.GPIO as GPIO
import time
GPIO.setup("P8_10", GPIO.OUT)
while True:
GPIO.output("P8_10", GPIO.HIGH)
time.sleep(0.5)
GPIO.output("P8_10", GPIO.LOW)
time.sleep(0.5)
Esempio 2: misura di temperatura
MCP9700
Misura di temperatura: scriviamo il codice
Creiamo un file eseguibile con un semplice programma per la misura
$ nano temperature.py
Python
import Adafruit_BBIO.ADC as ADC
import time
sensor_pin = 'P9_40'
ADC.setup()
while True:
reading = ADC.read(sensor_pin)
millivolts = reading * 1800 # 1.8V reference = 1800 mV
temp_c = (millivolts - 500) / 10
temp_f = (temp_c * 9/5) + 32
print('mv=%d C=%d F=%d' % (millivolts, temp_c, temp_f))
time.sleep(1)
Part 2: Software
Scrittura dellapplicazione per il controllo remoto
Scritto in Python,  uno strumento molto flessibile per realizzare infrastrutture complesse e
performanti.
Caratteristiche
 Contiene server e debugger per lo sviluppo
 Richieste RESTful
 Supporta cookie di sicurezza (sessioni lato client)
 100% WSGI 1.0 compatibile
 Documentazione estensiva
 Compatibilit con Google App Engine
 Estensioni disponibili per migliorare le caratteristiche desiderate
Flask
Python
Hello Flask
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
 Project Directory/ - Contiene tutti i file della tua app
 app.py C Codice Python/Flask
 requirements.txt C Lista di tutte le dipendenze
 static/
 js/ - file javascript, per contenuti web interattivi
 css/ - file CSS, per offrire alla tua app un proprio stile
 img/ - immagini
 templates/ - directory contenente I template Flask
Struttura
BASH
Lista dei dispositivi connessi
$ curl -i http://localhost:5000/remote/api/v1.0/devices
{
"devices": [
{
"active": true,
"description": Temperatura rilevata in camera di Daniele",
"status": false,
"title": Room Temperature",
"type": "Termometer",
"uri": "http://localhost:5000/remote/api/v1.0/devices/1",
"value": "20.1"
},
.
.
Esempio 1: accendere (e spegnere) un LED
GET
$ curl -i http://localhost:5000/remote/api/v1.0/devices/2
PUT (value: 0 | 1)
$ curl -i -H "Content-Type: application/json" -X PUT -d '{"value":1}'
http://localhost:5000/remote/api/v1.0/devices/2
BASH
Esempio 2: pilotare un termostato
GET
$ curl -i http://localhost:5000/remote/api/v1.0/devices/1
PUT (temp_on e temp_off)
$ curl -i -H "Content-Type: application/json" -X PUT -d '{"temp_on":1, "temp_off":10}'
http://localhost:5000/remote/api/v1.0/devices/term
BASH
Metodi implementati
Metodo HTTP Azione Esempio
GET Ottenere informazioni sulle risorse http://localhost:5000/remote/api/v1.0/devices
GET Ottenre informazioni su una risorsa
http://localhost:5000/remote/api/v1.0/devices/123
POST Aggiungere un nuovo dispositivo
http://localhost:5000/remote/api/v1.0/devices
(creare un nuovo dispositivo a partire dai dati presenti nella richiesta)
PUT
Aggiornare lo stato di un
parametro/dispositivo
http://localhost:5000/remote/api/v1.0/devices/123
(modificare #123 con i dati presenti nella richiesta)
DELETE Eliminare un dispositivo
http://localhost:5000/remote/api/v1.0/devices/123
(eliminare litem #123)
Android
UnApp per i nostri test
 Semplicit duso
 Codice semplice e pulito
 Struttura modulare
 Ricezione automatica dei nuovi dispositivi
 Compatibile con tutte le versioni pi
recenti di Android
Open Makers Day
16 giugno 2014 | Universit Parthenope, Centro Direzionale di Napoli
Partecipa al Call For Makers su www.openmakersitaly.org
Scadenza: 30 maggio 2014
Grazie per lattenzione
email:
web:
G+
Twitter
Github:
daniele.costarella@gmail.com
danielecostarella.com | openmakersitaly.org
https://plus.google.com/u/0/+DanieleCostarella
@dcostarella
http://github.com/blackbliss
Linux Embedded per l'automazione

More Related Content

What's hot (20)

Introduzione a Docker
Introduzione a DockerIntroduzione a Docker
Introduzione a Docker
Roberto Messora
?
Docker
Docker Docker
Docker
Andrea Laspada
?
Google cloud: Big Data + docker = kubernetes
Google cloud: Big Data + docker = kubernetesGoogle cloud: Big Data + docker = kubernetes
Google cloud: Big Data + docker = kubernetes
Giuliano Latini
?
Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017
MongoDB
?
Windows Phone 7.5 Refresh: Performance e localizzazione
Windows Phone 7.5 Refresh: Performance e localizzazioneWindows Phone 7.5 Refresh: Performance e localizzazione
Windows Phone 7.5 Refresh: Performance e localizzazione
Matteo Pagani
?
Docker & DevOps
Docker  & DevOpsDocker  & DevOps
Docker & DevOps
Gerardo Di Iorio
?
TuxIsAlive
TuxIsAliveTuxIsAlive
TuxIsAlive
Claudio Mignanti
?
Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2
Fabio Mora
?
Git best practices
Git best practicesGit best practices
Git best practices
Matteo Gavagnin
?
Automation Night (Docker)
Automation Night (Docker)Automation Night (Docker)
Automation Night (Docker)
Giuliano Latini
?
Progetto Linux va a scuola - Descrizione tecnica
Progetto Linux va a scuola - Descrizione tecnicaProgetto Linux va a scuola - Descrizione tecnica
Progetto Linux va a scuola - Descrizione tecnica
Bergamo Linux Users Group
?
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Natale Vinto
?
I linguaggi di programmazione e il mondo open-source
I linguaggi di programmazione e il mondo open-sourceI linguaggi di programmazione e il mondo open-source
I linguaggi di programmazione e il mondo open-source
Bergamo Linux Users Group
?
GNU Linux Programming introduction
GNU Linux Programming introductionGNU Linux Programming introduction
GNU Linux Programming introduction
Vincenzo Paolo Fraddosio
?
Progetto Linux va a scuola
Progetto Linux va a scuolaProgetto Linux va a scuola
Progetto Linux va a scuola
Bergamo Linux Users Group
?
Anatomia di un progetto open-source
Anatomia di un progetto open-sourceAnatomia di un progetto open-source
Anatomia di un progetto open-source
Bergamo Linux Users Group
?
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Gerardo Di Iorio
?
Introduzione a Git (ITA - 2017)
Introduzione a Git (ITA - 2017)Introduzione a Git (ITA - 2017)
Introduzione a Git (ITA - 2017)
Valerio Radice
?
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
DrupalDay
?
Google cloud: Big Data + docker = kubernetes
Google cloud: Big Data + docker = kubernetesGoogle cloud: Big Data + docker = kubernetes
Google cloud: Big Data + docker = kubernetes
Giuliano Latini
?
Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017
MongoDB
?
Windows Phone 7.5 Refresh: Performance e localizzazione
Windows Phone 7.5 Refresh: Performance e localizzazioneWindows Phone 7.5 Refresh: Performance e localizzazione
Windows Phone 7.5 Refresh: Performance e localizzazione
Matteo Pagani
?
Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2
Fabio Mora
?
Progetto Linux va a scuola - Descrizione tecnica
Progetto Linux va a scuola - Descrizione tecnicaProgetto Linux va a scuola - Descrizione tecnica
Progetto Linux va a scuola - Descrizione tecnica
Bergamo Linux Users Group
?
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Natale Vinto
?
I linguaggi di programmazione e il mondo open-source
I linguaggi di programmazione e il mondo open-sourceI linguaggi di programmazione e il mondo open-source
I linguaggi di programmazione e il mondo open-source
Bergamo Linux Users Group
?
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Gerardo Di Iorio
?
Introduzione a Git (ITA - 2017)
Introduzione a Git (ITA - 2017)Introduzione a Git (ITA - 2017)
Introduzione a Git (ITA - 2017)
Valerio Radice
?
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
DrupalDay
?

Viewers also liked (16)

Distribuzione delle sessioni in PHP in caso di load balancing su pi server
Distribuzione delle sessioni in PHP in caso di load balancing su pi serverDistribuzione delle sessioni in PHP in caso di load balancing su pi server
Distribuzione delle sessioni in PHP in caso di load balancing su pi server
Gianluca Gimigliano
?
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of ThingsCodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
Mirko Mancin
?
TDD in C - Recently Used List Kata
TDD in C - Recently Used List KataTDD in C - Recently Used List Kata
TDD in C - Recently Used List Kata
Olve Maudal
?
Parte 2 - Linux ed i sistemi embedded per le reti (di Massimiliano Toce)
Parte 2 - Linux ed i sistemi embedded per le reti (di Massimiliano Toce)Parte 2 - Linux ed i sistemi embedded per le reti (di Massimiliano Toce)
Parte 2 - Linux ed i sistemi embedded per le reti (di Massimiliano Toce)
Andrea Tassi
?
Parte 1 - Linux ed i sistemi embedded per le reti (di Andrea Tassi)
Parte 1 - Linux ed i sistemi embedded per le reti (di Andrea Tassi)Parte 1 - Linux ed i sistemi embedded per le reti (di Andrea Tassi)
Parte 1 - Linux ed i sistemi embedded per le reti (di Andrea Tassi)
Andrea Tassi
?
ǶʽLinuxn-GNU Toolchain
ǶʽLinuxn-GNU ToolchainǶʽLinuxn-GNU Toolchain
ǶʽLinuxn-GNU Toolchain
卿Ƽ
?
Insecure coding in C (and C++)
Insecure coding in C (and C++)Insecure coding in C (and C++)
Insecure coding in C (and C++)
Olve Maudal
?
C++ idioms by example (Nov 2008)
C++ idioms by example (Nov 2008)C++ idioms by example (Nov 2008)
C++ idioms by example (Nov 2008)
Olve Maudal
?
Advanced C
Advanced C Advanced C
Advanced C
Emertxe Information Technologies Pvt Ltd
?
C Programming - Refresher - Part I
C Programming - Refresher - Part I C Programming - Refresher - Part I
C Programming - Refresher - Part I
Emertxe Information Technologies Pvt Ltd
?
Top C Language Interview Questions and Answer
Top C Language Interview Questions and AnswerTop C Language Interview Questions and Answer
Top C Language Interview Questions and Answer
Vineet Kumar Saini
?
Solid C++ by Example
Solid C++ by ExampleSolid C++ by Example
Solid C++ by Example
Olve Maudal
?
Embedded c c++ programming fundamentals master
Embedded c c++ programming fundamentals masterEmbedded c c++ programming fundamentals master
Embedded c c++ programming fundamentals master
Hossam Hassan
?
Embedded C programming based on 8051 microcontroller
Embedded C programming based on 8051 microcontrollerEmbedded C programming based on 8051 microcontroller
Embedded C programming based on 8051 microcontroller
Gaurav Verma
?
INTRODUCTION TO C PROGRAMMING
INTRODUCTION TO C PROGRAMMINGINTRODUCTION TO C PROGRAMMING
INTRODUCTION TO C PROGRAMMING
Abhishek Dwivedi
?
Deep C
Deep CDeep C
Deep C
Olve Maudal
?
Distribuzione delle sessioni in PHP in caso di load balancing su pi server
Distribuzione delle sessioni in PHP in caso di load balancing su pi serverDistribuzione delle sessioni in PHP in caso di load balancing su pi server
Distribuzione delle sessioni in PHP in caso di load balancing su pi server
Gianluca Gimigliano
?
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of ThingsCodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
Mirko Mancin
?
TDD in C - Recently Used List Kata
TDD in C - Recently Used List KataTDD in C - Recently Used List Kata
TDD in C - Recently Used List Kata
Olve Maudal
?
Parte 2 - Linux ed i sistemi embedded per le reti (di Massimiliano Toce)
Parte 2 - Linux ed i sistemi embedded per le reti (di Massimiliano Toce)Parte 2 - Linux ed i sistemi embedded per le reti (di Massimiliano Toce)
Parte 2 - Linux ed i sistemi embedded per le reti (di Massimiliano Toce)
Andrea Tassi
?
Parte 1 - Linux ed i sistemi embedded per le reti (di Andrea Tassi)
Parte 1 - Linux ed i sistemi embedded per le reti (di Andrea Tassi)Parte 1 - Linux ed i sistemi embedded per le reti (di Andrea Tassi)
Parte 1 - Linux ed i sistemi embedded per le reti (di Andrea Tassi)
Andrea Tassi
?
ǶʽLinuxn-GNU Toolchain
ǶʽLinuxn-GNU ToolchainǶʽLinuxn-GNU Toolchain
ǶʽLinuxn-GNU Toolchain
卿Ƽ
?
Insecure coding in C (and C++)
Insecure coding in C (and C++)Insecure coding in C (and C++)
Insecure coding in C (and C++)
Olve Maudal
?
C++ idioms by example (Nov 2008)
C++ idioms by example (Nov 2008)C++ idioms by example (Nov 2008)
C++ idioms by example (Nov 2008)
Olve Maudal
?
Top C Language Interview Questions and Answer
Top C Language Interview Questions and AnswerTop C Language Interview Questions and Answer
Top C Language Interview Questions and Answer
Vineet Kumar Saini
?
Solid C++ by Example
Solid C++ by ExampleSolid C++ by Example
Solid C++ by Example
Olve Maudal
?
Embedded c c++ programming fundamentals master
Embedded c c++ programming fundamentals masterEmbedded c c++ programming fundamentals master
Embedded c c++ programming fundamentals master
Hossam Hassan
?
Embedded C programming based on 8051 microcontroller
Embedded C programming based on 8051 microcontrollerEmbedded C programming based on 8051 microcontroller
Embedded C programming based on 8051 microcontroller
Gaurav Verma
?
INTRODUCTION TO C PROGRAMMING
INTRODUCTION TO C PROGRAMMINGINTRODUCTION TO C PROGRAMMING
INTRODUCTION TO C PROGRAMMING
Abhishek Dwivedi
?

Similar to Linux Embedded per l'automazione (20)

Closure Visto Da Vicino
Closure Visto Da VicinoClosure Visto Da Vicino
Closure Visto Da Vicino
davide ficano
?
Arduino - Massimiliano D'Ambrosio
Arduino - Massimiliano D'AmbrosioArduino - Massimiliano D'Ambrosio
Arduino - Massimiliano D'Ambrosio
firenze-gtug
?
Sistemi di Virtualizzazione con Gnu/Linux Xen vs VMware
Sistemi di Virtualizzazione con Gnu/Linux Xen vs VMwareSistemi di Virtualizzazione con Gnu/Linux Xen vs VMware
Sistemi di Virtualizzazione con Gnu/Linux Xen vs VMware
Claudio Cardinali
?
High Performance Web Apps con PHP e Symfony 2
High Performance Web Apps con PHP  e Symfony 2High Performance Web Apps con PHP  e Symfony 2
High Performance Web Apps con PHP e Symfony 2
Giorgio Cefaro
?
Infrastructure as Data
Infrastructure as DataInfrastructure as Data
Infrastructure as Data
Francesco Collova'
?
ݺߣ Mulesoft Meetup Milano #10.pdf
ݺߣ Mulesoft Meetup Milano #10.pdfݺߣ Mulesoft Meetup Milano #10.pdf
ݺߣ Mulesoft Meetup Milano #10.pdf
Florence Consulting
?
Tesi-Todone
Tesi-TodoneTesi-Todone
Tesi-Todone
guestb31690c
?
High specialized vm on open stack cloud
High specialized vm on open stack cloudHigh specialized vm on open stack cloud
High specialized vm on open stack cloud
Gabriele Baldoni
?
Azure IoTHub - Roboval 2018
Azure IoTHub - Roboval 2018Azure IoTHub - Roboval 2018
Azure IoTHub - Roboval 2018
Andrea Tosato
?
Introduzione ad Android
Introduzione ad AndroidIntroduzione ad Android
Introduzione ad Android
Emanuel Di Nardo
?
GIT commands version control system and collaboration
GIT commands version control system and collaborationGIT commands version control system and collaboration
GIT commands version control system and collaboration
satmania
?
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Daniele Falamesca
?
Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20
Romualdo Gobbo
?
Desktop searching
Desktop searchingDesktop searching
Desktop searching
Flavio Castelli
?
Raspberrypi
RaspberrypiRaspberrypi
Raspberrypi
Federico Bassignana
?
XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13
Dominopoint - Italian Lotus User Group
?
Link. javascript ajax
  Link. javascript ajax  Link. javascript ajax
Link. javascript ajax
santi caltabiano
?
Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)
Marcello Missiroli
?
Closure Visto Da Vicino
Closure Visto Da VicinoClosure Visto Da Vicino
Closure Visto Da Vicino
davide ficano
?
Arduino - Massimiliano D'Ambrosio
Arduino - Massimiliano D'AmbrosioArduino - Massimiliano D'Ambrosio
Arduino - Massimiliano D'Ambrosio
firenze-gtug
?
Sistemi di Virtualizzazione con Gnu/Linux Xen vs VMware
Sistemi di Virtualizzazione con Gnu/Linux Xen vs VMwareSistemi di Virtualizzazione con Gnu/Linux Xen vs VMware
Sistemi di Virtualizzazione con Gnu/Linux Xen vs VMware
Claudio Cardinali
?
High Performance Web Apps con PHP e Symfony 2
High Performance Web Apps con PHP  e Symfony 2High Performance Web Apps con PHP  e Symfony 2
High Performance Web Apps con PHP e Symfony 2
Giorgio Cefaro
?
ݺߣ Mulesoft Meetup Milano #10.pdf
ݺߣ Mulesoft Meetup Milano #10.pdfݺߣ Mulesoft Meetup Milano #10.pdf
ݺߣ Mulesoft Meetup Milano #10.pdf
Florence Consulting
?
High specialized vm on open stack cloud
High specialized vm on open stack cloudHigh specialized vm on open stack cloud
High specialized vm on open stack cloud
Gabriele Baldoni
?
Azure IoTHub - Roboval 2018
Azure IoTHub - Roboval 2018Azure IoTHub - Roboval 2018
Azure IoTHub - Roboval 2018
Andrea Tosato
?
GIT commands version control system and collaboration
GIT commands version control system and collaborationGIT commands version control system and collaboration
GIT commands version control system and collaboration
satmania
?
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Daniele Falamesca
?
Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20
Romualdo Gobbo
?
Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)
Marcello Missiroli
?

More from Daniele Costarella (10)

Fondamenti di GNU/Linux: FileSystem e Partizioni
Fondamenti di GNU/Linux: FileSystem e PartizioniFondamenti di GNU/Linux: FileSystem e Partizioni
Fondamenti di GNU/Linux: FileSystem e Partizioni
Daniele Costarella
?
Arduino e stampa 3D - Le nuove frontiere della robotica homemade
Arduino e stampa 3D - Le nuove frontiere della robotica homemadeArduino e stampa 3D - Le nuove frontiere della robotica homemade
Arduino e stampa 3D - Le nuove frontiere della robotica homemade
Daniele Costarella
?
energy-harvesting-pres-final-std
energy-harvesting-pres-final-stdenergy-harvesting-pres-final-std
energy-harvesting-pres-final-std
Daniele Costarella
?
Development of a Wireless Sensors Network powered by Energy Harvesting techni...
Development of a Wireless Sensors Network powered by Energy Harvesting techni...Development of a Wireless Sensors Network powered by Energy Harvesting techni...
Development of a Wireless Sensors Network powered by Energy Harvesting techni...
Daniele Costarella
?
Hands On Embedded Linux with BeagleBone Black
Hands On Embedded Linux with BeagleBone BlackHands On Embedded Linux with BeagleBone Black
Hands On Embedded Linux with BeagleBone Black
Daniele Costarella
?
Electronics LAB [with Arduino] | DAY 2
Electronics LAB [with Arduino] | DAY 2Electronics LAB [with Arduino] | DAY 2
Electronics LAB [with Arduino] | DAY 2
Daniele Costarella
?
Electronics LAB [with Arduino] | DAY 1
Electronics LAB [with Arduino] | DAY 1Electronics LAB [with Arduino] | DAY 1
Electronics LAB [with Arduino] | DAY 1
Daniele Costarella
?
Electronics LAB [with Arduino] | DAY 3
Electronics LAB [with Arduino] | DAY 3Electronics LAB [with Arduino] | DAY 3
Electronics LAB [with Arduino] | DAY 3
Daniele Costarella
?
Development of a wireless sensor network powered by energy harvesting techniques
Development of a wireless sensor network powered by energy harvesting techniquesDevelopment of a wireless sensor network powered by energy harvesting techniques
Development of a wireless sensor network powered by energy harvesting techniques
Daniele Costarella
?
Software libero nei sistemi embedded
Software libero nei sistemi embeddedSoftware libero nei sistemi embedded
Software libero nei sistemi embedded
Daniele Costarella
?
Fondamenti di GNU/Linux: FileSystem e Partizioni
Fondamenti di GNU/Linux: FileSystem e PartizioniFondamenti di GNU/Linux: FileSystem e Partizioni
Fondamenti di GNU/Linux: FileSystem e Partizioni
Daniele Costarella
?
Arduino e stampa 3D - Le nuove frontiere della robotica homemade
Arduino e stampa 3D - Le nuove frontiere della robotica homemadeArduino e stampa 3D - Le nuove frontiere della robotica homemade
Arduino e stampa 3D - Le nuove frontiere della robotica homemade
Daniele Costarella
?
Development of a Wireless Sensors Network powered by Energy Harvesting techni...
Development of a Wireless Sensors Network powered by Energy Harvesting techni...Development of a Wireless Sensors Network powered by Energy Harvesting techni...
Development of a Wireless Sensors Network powered by Energy Harvesting techni...
Daniele Costarella
?
Hands On Embedded Linux with BeagleBone Black
Hands On Embedded Linux with BeagleBone BlackHands On Embedded Linux with BeagleBone Black
Hands On Embedded Linux with BeagleBone Black
Daniele Costarella
?
Electronics LAB [with Arduino] | DAY 2
Electronics LAB [with Arduino] | DAY 2Electronics LAB [with Arduino] | DAY 2
Electronics LAB [with Arduino] | DAY 2
Daniele Costarella
?
Electronics LAB [with Arduino] | DAY 1
Electronics LAB [with Arduino] | DAY 1Electronics LAB [with Arduino] | DAY 1
Electronics LAB [with Arduino] | DAY 1
Daniele Costarella
?
Electronics LAB [with Arduino] | DAY 3
Electronics LAB [with Arduino] | DAY 3Electronics LAB [with Arduino] | DAY 3
Electronics LAB [with Arduino] | DAY 3
Daniele Costarella
?
Development of a wireless sensor network powered by energy harvesting techniques
Development of a wireless sensor network powered by energy harvesting techniquesDevelopment of a wireless sensor network powered by energy harvesting techniques
Development of a wireless sensor network powered by energy harvesting techniques
Daniele Costarella
?
Software libero nei sistemi embedded
Software libero nei sistemi embeddedSoftware libero nei sistemi embedded
Software libero nei sistemi embedded
Daniele Costarella
?

Linux Embedded per l'automazione

  • 2. Linux Embedded per lautomazione GNU/Linux, Google App Engine e Android Daniele Costarella Electronic Engineer, GDG Campania Co-Organizer, Open Makers Italy Mobile Innovation Day Caserta | 16 maggio 2014, Caserta
  • 3. Part 1: Linux Embedded Vantaggi C Un esempio reale C Esempi di utilizzo
  • 4. Cos? Con Embedded Linux ci si riferisce a quellinsieme di distribuzioni concepite per essere utilizzate su sistemi embedded. [Wikipedia]
  • 5. Riutilizzo dei componenti Capacit di riutilizzo dei componenti Molti componenti per il nostro sistema sono gi disponibili e open-source Supporto hardware ai protocolli di rete, periferiche multimediali, librerie grafiche ecc. Focus sul prodotto finale Costo basso Il software libero pu essere copiato su pi dispositivi e senza alcun costo Strumenti di sviluppo per la maggior parte liberi Costo delle licenze software estremamente ridotto Incremento del budget per lhardware Vantaggi
  • 6. Pieno controllo su tutto il software utilizzato Disponibilit di componenti di qualit elevatissima Semplicit nella fase di testing Supporto della community Entrare a far parte di una gigantesca community Vantaggi
  • 7. Scelta della board: BeagleBone Black Un computer su singola scheda, progettato per mantenere bassi i costi di vendita, pur offrendo prestazioni e connettivit prossime a quelle di un laptop. In grado di eseguire il boot di Linux in meno di 10 secondi. Uno strumento di sviluppo ideale per hobbisti e sviluppatori.
  • 8. GNU/Linux Filesystem Multitasking Supporto di rete Connettivit Timekeeping Accesso remoto Dimensioni Community Tutto in una scheda
  • 9. BeagleBone Black: caratteristiche tecniche Processore: AM335x 1GHz ARM? Cortex-A8 512MB DD3 RAM 2GB 8-bit eMMC on-board flash storage Acceleratore grafico 3D Connettivit USB client for power and communications USB host Ethernet HDMI 2x46 pin headers Compatibilit software ?ngstr?m Linux Android Cloud9 IDE on Node.js w/ BoneScript Library E altro ancora
  • 10. Operativi in pochi secondi Connessione tramite cavo USB Test della connessione Da browser: http://192.168.7.2 Pagine introduttive su BeagleBone Tutto pronto per iniziare
  • 11. Connessione tramite SSH Su Linux e Mac basta semplicemente lanciare un terminale e digitare il seguente comando: $ ssh 192.168.7.2 Cl root
  • 12. La libreria Adafruit_BBIO Una volta eseguito laccesso tramite SSH (su Angstrom Linux): $ opkg update && opkg install python-pip python-setuptools python-smbus $ pip install Adafruit_BBIO Per verificare che linstallazione sia avvenuta con successo: import Adafruit_BBIO.GPIO as GPIO; print GPIO #you should see this or similar: <module 'Adafruit_BBIO.GPIO' from '/usr/local/lib/python2.7/dist-packages/Adafruit_BBIO/GPIO.so'>
  • 13. Utilizzo della libreria Adafruit_BBIO Aprire una console Python e importare la libreria (per esempio GPIO) Python 2.7.5 (default, Sep 2 2013, 05:24:04) [GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> >>> import Adafruit_BBIO.GPIO as GPIO Accesso ai pin tramite pin key o nome import Adafruit_BBIO.GPIO as GPIO GPIO.setup("P8_10", GPIO.OUT) GPIO.output("P8_10", GPIO.HIGH GPIO.setup("P8_14", GPIO.IN) if GPIO.input("P8_14"): print("HIGH") else: print("LOW")
  • 14. Esempio 1: LED blinking Anodo sul pin 6 e catodo su GND
  • 15. LED Blinking: scriviamo il codice Creiamo un file eseguibile con un semplice programma per il lampeggio del LED $ nano blink.py Python import Adafruit_BBIO.GPIO as GPIO import time GPIO.setup("P8_10", GPIO.OUT) while True: GPIO.output("P8_10", GPIO.HIGH) time.sleep(0.5) GPIO.output("P8_10", GPIO.LOW) time.sleep(0.5)
  • 16. Esempio 2: misura di temperatura MCP9700
  • 17. Misura di temperatura: scriviamo il codice Creiamo un file eseguibile con un semplice programma per la misura $ nano temperature.py Python import Adafruit_BBIO.ADC as ADC import time sensor_pin = 'P9_40' ADC.setup() while True: reading = ADC.read(sensor_pin) millivolts = reading * 1800 # 1.8V reference = 1800 mV temp_c = (millivolts - 500) / 10 temp_f = (temp_c * 9/5) + 32 print('mv=%d C=%d F=%d' % (millivolts, temp_c, temp_f)) time.sleep(1)
  • 18. Part 2: Software Scrittura dellapplicazione per il controllo remoto
  • 19. Scritto in Python, uno strumento molto flessibile per realizzare infrastrutture complesse e performanti. Caratteristiche Contiene server e debugger per lo sviluppo Richieste RESTful Supporta cookie di sicurezza (sessioni lato client) 100% WSGI 1.0 compatibile Documentazione estensiva Compatibilit con Google App Engine Estensioni disponibili per migliorare le caratteristiche desiderate Flask
  • 20. Python Hello Flask from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run()
  • 21. Project Directory/ - Contiene tutti i file della tua app app.py C Codice Python/Flask requirements.txt C Lista di tutte le dipendenze static/ js/ - file javascript, per contenuti web interattivi css/ - file CSS, per offrire alla tua app un proprio stile img/ - immagini templates/ - directory contenente I template Flask Struttura
  • 22. BASH Lista dei dispositivi connessi $ curl -i http://localhost:5000/remote/api/v1.0/devices { "devices": [ { "active": true, "description": Temperatura rilevata in camera di Daniele", "status": false, "title": Room Temperature", "type": "Termometer", "uri": "http://localhost:5000/remote/api/v1.0/devices/1", "value": "20.1" }, . .
  • 23. Esempio 1: accendere (e spegnere) un LED GET $ curl -i http://localhost:5000/remote/api/v1.0/devices/2 PUT (value: 0 | 1) $ curl -i -H "Content-Type: application/json" -X PUT -d '{"value":1}' http://localhost:5000/remote/api/v1.0/devices/2 BASH
  • 24. Esempio 2: pilotare un termostato GET $ curl -i http://localhost:5000/remote/api/v1.0/devices/1 PUT (temp_on e temp_off) $ curl -i -H "Content-Type: application/json" -X PUT -d '{"temp_on":1, "temp_off":10}' http://localhost:5000/remote/api/v1.0/devices/term BASH
  • 25. Metodi implementati Metodo HTTP Azione Esempio GET Ottenere informazioni sulle risorse http://localhost:5000/remote/api/v1.0/devices GET Ottenre informazioni su una risorsa http://localhost:5000/remote/api/v1.0/devices/123 POST Aggiungere un nuovo dispositivo http://localhost:5000/remote/api/v1.0/devices (creare un nuovo dispositivo a partire dai dati presenti nella richiesta) PUT Aggiornare lo stato di un parametro/dispositivo http://localhost:5000/remote/api/v1.0/devices/123 (modificare #123 con i dati presenti nella richiesta) DELETE Eliminare un dispositivo http://localhost:5000/remote/api/v1.0/devices/123 (eliminare litem #123)
  • 26. Android UnApp per i nostri test Semplicit duso Codice semplice e pulito Struttura modulare Ricezione automatica dei nuovi dispositivi Compatibile con tutte le versioni pi recenti di Android
  • 27. Open Makers Day 16 giugno 2014 | Universit Parthenope, Centro Direzionale di Napoli Partecipa al Call For Makers su www.openmakersitaly.org Scadenza: 30 maggio 2014
  • 28. Grazie per lattenzione email: web: G+ Twitter Github: daniele.costarella@gmail.com danielecostarella.com | openmakersitaly.org https://plus.google.com/u/0/+DanieleCostarella @dcostarella http://github.com/blackbliss