SlideShare une entreprise Scribd logo
1  sur  47
Télécharger pour lire hors ligne
Free Software & Open Hardware

         Arduino è una piattaforma hardware / software rilasciata sotto
              L
         licenza Creative Commons che permette la realizzazione oggetti fisici
              o
         interattivi, in grado di utilizzare un ricco insieme di sensori e
         attuatori. Il seminario illustra come creare una piccola stazione di
         rilevamento di dati ambientali basata su Linux e accessibile via web.




                                                       Stefano Sanna
                                               http://www.gerdavax.it
Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                                            1
Sommario
    ●   Free Software e Open Hardware

    ●   Gli esempi più famosi di Open Hardware

    ●   Arduino: un successo tutto italiano!

    ●   Panoramica su Arduino

    ●   Stazione di rilevamento Linux-based & web-based


Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                          2
Speaker
    ●   Co-fondatore del GULCh (correva l'anno 1996!)

    ●   Senior Developer & Java ME Tech Lead
         –   beeweeb technologies

    ●   Autore del libro “Java Micro Edition”
         –   Hoepli Informatica, Milano, 2007

    ●   Tech & Food blogger
         –   http://www.gerdavax.it

Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                        3
Free Software




Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                               4
Free Software
    ●   Libertà di eseguire il programma, per qualsiasi
        scopo (libertà 0).
    ●   Libertà di studiare come funziona il programma e
        adattarlo alle proprie necessità (libertà 1).
        L'accesso al codice sorgente ne è un prerequisito.
    ●   Libertà di ridistribuire copie in modo da aiutare il
        prossimo (libertà 2).
    ●   Libertà di migliorare il programma e distribuirne
        pubblicamente i miglioramenti, in modo tale che
        tutta la comunità ne tragga beneficio (libertà 3).
        L'accesso al codice sorgente ne è un prerequisito.
Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                               5
Oltre la percezione comune...
    ●   Per molti (troppi?) utenti della Rete “free
        software” e “open source” sono sinonimi di

                            SALVA CON NOME

    ●   I valori di condivisione della conoscenza, di
        miglioramento collettivo di una risorsa (il
        software), di verifica incrociata (degli algoritmi)
        sono completamente ignorati




Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                              6
Open Hardware
    ●   L'“open source” del software diventa “open
        diagram” dell'hardware, ovvero:
         –   elenco di tutti i componenti
         –   schema elettrico con tutte le connessioni
         –   schema del PCB, cui cui realizzare immediatamente
             il circuito stampato e provvedere alla realizzazione
             del prodotto
         –   libertà di progettare e costruire varianti del circuito
             di partenza



Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                                       7
Attenzione: l'hardware costa!
    ●   A differenza del software, l'hardware non può
        essere replicato a costi pressoché nulli

    ●   La produzione di circuiti e l'uso di componenti di
        media complessità fa lievitare i costi di
        realizzazione e il processo potrebbe non essere
        disponibile a livello dilettantistico/amatoriale

    ●   Open Hardware non significa “hardware gratuito”,
        ma godere delle medesime libertà del free
        software

Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                             8
Tre esempi importanti
    ●   OpenMoko: free your phone!
         –   Piattaforma hardware e software interamente open,
             basata su Linux
         –   http://www.openmoko.org
    ●   BeagleBoard
         –   Piattaforma embedded hardware e software
         –   http://www.beagleboard.org
    ●   Arduino
         –   Piattaforma di interaction design e sensor network

Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                                  9
OpenMoko FreeRunner
    ●   Touch screen 2.84” (43mm x 58mm) 480x640 px
    ●   128MB SDRAM memory, 256 MB flash memory
    ●   uSD slot supporting up to 8GB SDHC
    ●   Internal GPS module
    ●   Bluetooth e 802.11 b/g WiFi
    ●   400Mhz ARM processor
    ●   Doppio accelrometro 3D
    ●   Tri-band GSM and GPRS
    ●   USB Host function with 500mA power

Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                      10
FreeRunner “a nudo”




Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                               11
BeagleBoard
    ●   Processore OMAP3530, oltre 1,200 Dhrystone MIPS
    ●   OpenGL © ES 2.0 con acceleratore 2D/3D
    ●   HD video con
        DSP TMS320C64x+
        DSP (430MHz)
    ●   Alimentazione via
        USB




Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                          12
BeagleBoard




Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                               13
Arduino
    ●   E' un sistema economico, semplice, aperto,
        flessibile, programmabile per la realizzazione di
        sistemi in grado di acquisire dati da diversi sensori
        ed attivare diversi attuatori
    ●   Il linguaggio di
        programmazione
        deriva dal C
    ●   Ideato da Massimo Banzi
    ●   Derivato da altri due progetti
        open: Wiring e Processing
    ●   Arduino è orgogliosamente MADE IN ITALY!
Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                                14
Versioni di Arduino
    ●   Prime versioni:
         –   Arduino, Arduino USB, Arduino NG
    ●   Version attuali:
         –   Arduino Diecimila (“appena” sostituito da Arduino
             Duemilanove)
         –   Arduino Mini
         –   Arduino Nano
         –   Arduino Bluetooth
         –   Lilypad, Boarduino, Freeduino

Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                                 15
Arduino FAQ
    ●   Da dove si inizia?
         –   Da qui: http://www.arduino.cc
    ●   Dove si acquista?
         –   http://www.smartprj.com
    ●   Quando costa?
         –   Il modello più economico (Arduino Duemilanove)
             costa meno di 30 euro
    ●   Funziona solo con Linux?
         –   No, funziona perfettamente anche con Windows e
             Mac OS X
Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                              16
Punti di forza di Arduino
    ●   Completamente aperto: codice, diagrammi,
        librerie sono rilasciate sotto licenza Creative-
        Commons
    ●   Molto molto molto economico!
    ●   Facile da programmare e da interfacciare
        virtualmente con qualsiasi tipo di hardware
    ●   E' supportato da una vastissima community di
        sviluppatori, appassionati, designer e progettisti
    ●   E' un'ottima scuola per creare sensor network e
        sistemi di interaction design, prima di passare a
        piattaforme più complesse (e costose)
Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                             17
Arduino Diecimila




Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                               18
Arduino: schema elettrico




Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                               19
Caratteristiche hardware
    ●   Microcontroller Atmel Atmega168
    ●   Alimentazione 6V-20V
    ●   14 ingressi/uscite digitali (6 uscite PWM)
    ●   6 ingressi analogici
    ●   1 porta seriale TTL
    ●   16KB di memoria flash (2KB bootloader)
    ●   1KB RAM
    ●   EEPROM 512B
    ●   Clock 16MHz

Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                     20
Estensioni hardware




Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                               21
Arduino IDE




Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                               22
Installazione
    ●   Scaricare e decomprimere l'IDE di Arduino
        (verificare su http://www.arduino.cc l'ultima
        versione disponibile)

    ●   Installare il compilatore e librerie per il
        microcontrollore AVR. Su Ubuntu:
         –   sudo aptitude install gcc-avr
         –   sudo aptitude install avr-libc




Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                        23
Hello Arduino
    int ledPin = 13;

    void setup()
    {
      pinMode(ledPin, OUTPUT);
    }

    void loop()
    {
      digitalWrite(ledPin, HIGH);
      delay(1000);
      digitalWrite(ledPin, LOW);
      delay(1000);
    }




Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                               24
Programmazione
    ●   Linguaggio e librerie standard ereditano molte
        delle funzioni del C

    ●   E possibile scrivere librerie native utilizzando il C o
        l'assembler standard del microcontroller




Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                                  25
Programmazione
    ●   Variabili: byte, int, unsigned int, long, unsigned
        long, float, double, boolean, char, array
    ●   Costanti specifiche:
         –   Livelli logici: HIGH, LOW
         –   Stati booleani: true, false
         –   Configurazione dei PIN: INPUT, OUTPUT
    ●   Operatori, funzioni, controllo di flusso, include di
        librerie...



Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                               26
Libreria standard
    ●   I/O digitale:
         –   pinMode(PIN, INPUT | OUTPUT)
         –   digitalWrite(PIN, HIGH | LOW)
         –   int digitalRead(PIN)
    ●   I/O analogico
         –   int analogRead(PIN)
         –   analogWrite(PIN, valore)
    ●   Invio e lettura treni di bit, temporizzazioni,
        comunicazione seriale...

Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                         27
Librerie estese “ufficiali”
    ●   Accesso EEPROM
    ●   Display LCD
    ●   Motori: trazione diretta, stepper, servo
    ●   Software Serial (no buffer)
    ●   Interfaccia 1-Wire e I2C
    ●   LED Matrix
    ●   LED Sprite




Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                   28
Librerie estese “community”
    ●   Gestione date e orari
    ●   Libreria di comunicazione per PC
    ●   Vari driver per display LCD
    ●   LED Driver
    ●   Manipolazione stringhe
    ●   Controller X10
    ●   Controller PWM
    ●   Interfacce per cellulari


Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                               29
Sensori
    ●   Sono disponibili moltissimi sensori analogici e
        digitali, in grado di rilevare pressoché qualsiasi
        grandezza fisica:
         –   temperatura, luminosità
         –   pressione, umidità, CO2
         –   accelerazione, direzione goniometrica, posizione
         –   sensori di contatto, prossimità, distanza
         –   lettori RFID



Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                                30
Attuatori
    ●   Attraverso opportuni driver è possibile controllare
        virtualmente qualsiasi tipo di attuatore:
         –   motori a trazione diretta, stepper, servo
         –   display LED e LCD
         –   buzzer
         –   memory card




Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                              31
Stazione di Rilevamento
    ●   Arduino consente di realizzare una piccola
        interfaccia USB universale per qualsiasi tipo di
        sensore:
         –   attraverso gli ingressi analogici e digitali è possibile
             leggere la grandezza fisica di interesse
         –   il programma caricato sul microcontrollore si occupa
             di effettuare conversioni, verifiche sui dati acquisiti,
             eventuali interpolazioni o confronti da più sensori
         –   il dato “ben formato” può essere inviato al PC
             attraverso la porta USB sotto forma di stringa di
             testo

Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                                        32
Sensore di temperatura LM35




    Fonte: http://www.national.com/ds/LM/LM35.pdf


Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                    33
Chi fa cosa




                      Jetty

            Linux Day
         “Sensor Station”

                JavaComm


Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                               34
Arduino: input analogico
    ●   Attraverso i 6 ingressi analogici, Arduino è in
        grado di leggere tensioni comprese tra 0V e 5V,
        effettuando un campionamento a 10 bit

    ●   La funzione analogRead() riceve come parametro
        il numero del PIN su cui effettuare la lettura e
        restituisce un valore compreso tra 0 e 1023

    ●   Ogni “step” di analogRead() corrisponde a circa
        4.9mV


Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                           35
Arduino: comunicazione seriale
    ●   I PIN digitali 0 e 1 sono connessi alla seriale TTL
        fornita dal microcontroller
    ●   Due LED sulla board (pilotati dal controller USB
        FTDI) notificano il transito di dati in ingresso e in
        uscita
    ●   La classe (!) Serial permette di gestire la porta:
         –   Serial.begin(SPEED) imposta la velocità
         –   int Serial.read() legge un byte
         –   Serial.print(VALORE) invia un byte sulla seriale


Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                                36
Cablaggio su breadboard




Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                               37
Sketch su Arduino
    int TEMP_PIN= 5;                    Il valore letto da analogRead() è diviso
    int temp;                           per dieci, così da avere uno incremento
                                        di una unità per ogni grado centigrado
    void setup()
    {
      Serial.begin(9600);
    }

    void loop()
    {
      temp = analogRead(TEMP_PIN) * 0.5 + 2;
      Serial.println(temp, DEC);
      delay(1000);
    }




Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                                              38
Server Java
    public class SensorStation
    {
        private static String temp;
        private static String time;
        private Timer timer;
        private SerialWatcher serialWatcher;
        private StationHandler handler;
        private SerialPort serialPort;
        private BufferedReader reader;




Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                               39
Server Java
    public static void main(String[] args) {
      new SensorStation();
    }

    public SensorStation() {
      try {
        timer = new Timer();
        handler = new StationHandler();
        Server server = new Server(8080);
        server.setHandler(handler);
        server.start();
        serialWatcher = new SerialWatcher();
        timer.scheduleAtFixedRate(serialWatcher, 5000, 1000);
        initSerial();
      } catch (Exception ex) { }
    }


Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                                40
Inizializzazione porta seriale
    private void initSerial() {
      try {
        CommPortIdentifier id =
    CommPortIdentifier.getPortIdentifier(quot;/dev/ttyUSB0quot;);

           serialPort = (SerialPort) id.open(quot;GULChquot;, 1000);

        serialPort.setSerialPortParams(9600,
    SerialPort.DATABITS_8, SerialPort.STOPBITS_1,
    SerialPort.PARITY_NONE);

        reader = new BufferedReader(new
    InputStreamReader(serialPort.getInputStream()));

        } catch (Exception e) {         System.exit(1); }
    }


Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                               41
Lettura dei dati
    private class SerialWatcher extends TimerTask {
      public void run() {
        String read = null;

            if (reader != null) {
              try {
                while ((read = reader.readLine()) != null) {

              time = (new
    Date(System.currentTimeMillis())).toString();

                     temp = read;
                  }
                } catch (Exception e)      { }
            }
        }
    }
Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                               42
Modulo web (1)
    private class StationHandler extends AbstractHandler {
      public void handle(String target, HttpServletRequest
    request, HttpServletResponse response, int dispatch)
                    throws IOException, ServletException {

        response.setContentType(quot;text/htmlquot;);
        response.setStatus(HttpServletResponse.SC_OK);
        PrintWriter writer = response.getWriter();
        writer.println(quot;<html>quot;);
        writer.println(quot;<head>quot;);
        writer.println(quot;<meta http-equiv=quot;refreshquot;
    content=quot;10quot;>quot;);
        writer.println(quot;</head>quot;);
        writer.println(quot;<body>quot;);
        writer.println(quot;<h1>Linux Sensor Station</h1>quot;);
        writer.println(quot;<hr/>quot;);


Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                             43
Modulo web (2)
        writer.println(quot;<p>quot;);
        writer.println(quot;Last temperature read: quot; + temp + quot; @
    quot; + time);
        writer.println(quot;</p>quot;);
        writer.println(quot;</body>quot;);
        writer.println(quot;</html>quot;);

            ((Request) request).setHandled(true);
        }
    }




Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                                44
Rullo di tamburi...




                            DEMO

Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                               45
Conclusioni
    ●   Lo spirito del Free Software muove i primi passi
        nel mondo dell'hardware e i primi progetti sono
        validi ed estremamente interessanti

    ●   Arduino è una delle piattaforme di hardware
        aperto di maggior successo: le sue caratteristiche
        lo rendono estremamente flessibile e adattabile a
        numerosi contesti di utilizzo
    ●   Utilizzando Arduino, Linux e un po' di codice Java è
        possibile realizzare una piccola stazione di
        rilevamento accessibile via web

Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                                               46
Grazie per l'attenzione
Stefano Sanna, Free Software e Open Hardware
Cagliari, 25 Ottobre 2008
                                               47

Contenu connexe

Tendances

Freedomotic pitch 12.05.16 Smart Home Now Milano
Freedomotic pitch 12.05.16 Smart Home Now MilanoFreedomotic pitch 12.05.16 Smart Home Now Milano
Freedomotic pitch 12.05.16 Smart Home Now Milanofreedomotic
 
Arduino&raspberry pi - Un connubio vincente
Arduino&raspberry pi - Un connubio vincenteArduino&raspberry pi - Un connubio vincente
Arduino&raspberry pi - Un connubio vincenteMirco Sbrollini
 
Arduino: breve introduzione & progetti
Arduino: breve introduzione & progettiArduino: breve introduzione & progetti
Arduino: breve introduzione & progettiMirco Piccin
 
Introduzione ad Arduino
Introduzione ad ArduinoIntroduzione ad Arduino
Introduzione ad ArduinoSimone Lusenti
 
Introduzione a Arduino
Introduzione a ArduinoIntroduzione a Arduino
Introduzione a ArduinoPietro Aiuola
 
Electronics LAB [with Arduino] | DAY 3
Electronics LAB [with Arduino] | DAY 3Electronics LAB [with Arduino] | DAY 3
Electronics LAB [with Arduino] | DAY 3Daniele Costarella
 
Introduzione alla tecnologia Sun SPOT
Introduzione alla tecnologia Sun SPOTIntroduzione alla tecnologia Sun SPOT
Introduzione alla tecnologia Sun SPOTStefano Sanna
 
Arduino prima spiegazione
Arduino  prima spiegazioneArduino  prima spiegazione
Arduino prima spiegazioneFlaviano Fior
 
Introduzione all'elettronica con i microcontrollori: Arduino
Introduzione all'elettronica con i microcontrollori: ArduinoIntroduzione all'elettronica con i microcontrollori: Arduino
Introduzione all'elettronica con i microcontrollori: ArduinoStefano Varano
 
Corso Arduino Base - MUST
Corso Arduino Base - MUSTCorso Arduino Base - MUST
Corso Arduino Base - MUSTOPS Italia
 
Presentazione Arduino
Presentazione ArduinoPresentazione Arduino
Presentazione Arduinoguest01fc9d
 
Lezione 3 arduino - corso 20 ore
Lezione 3 arduino - corso 20 oreLezione 3 arduino - corso 20 ore
Lezione 3 arduino - corso 20 oreMirko Mancin
 
Electronics LAB [with Arduino] | DAY 1
Electronics LAB [with Arduino] | DAY 1Electronics LAB [with Arduino] | DAY 1
Electronics LAB [with Arduino] | DAY 1Daniele Costarella
 

Tendances (19)

Freedomotic pitch 12.05.16 Smart Home Now Milano
Freedomotic pitch 12.05.16 Smart Home Now MilanoFreedomotic pitch 12.05.16 Smart Home Now Milano
Freedomotic pitch 12.05.16 Smart Home Now Milano
 
Arduino&raspberry pi - Un connubio vincente
Arduino&raspberry pi - Un connubio vincenteArduino&raspberry pi - Un connubio vincente
Arduino&raspberry pi - Un connubio vincente
 
Arduino ICT2016 [IT]
Arduino ICT2016 [IT]Arduino ICT2016 [IT]
Arduino ICT2016 [IT]
 
Arduino: breve introduzione & progetti
Arduino: breve introduzione & progettiArduino: breve introduzione & progetti
Arduino: breve introduzione & progetti
 
Introduzione ad Arduino
Introduzione ad ArduinoIntroduzione ad Arduino
Introduzione ad Arduino
 
Arduino nella Pmi
Arduino nella PmiArduino nella Pmi
Arduino nella Pmi
 
Introduzione a Arduino
Introduzione a ArduinoIntroduzione a Arduino
Introduzione a Arduino
 
Electronics LAB [with Arduino] | DAY 3
Electronics LAB [with Arduino] | DAY 3Electronics LAB [with Arduino] | DAY 3
Electronics LAB [with Arduino] | DAY 3
 
Arduino galileo edison_udoo
Arduino galileo edison_udooArduino galileo edison_udoo
Arduino galileo edison_udoo
 
Introduzione alla tecnologia Sun SPOT
Introduzione alla tecnologia Sun SPOTIntroduzione alla tecnologia Sun SPOT
Introduzione alla tecnologia Sun SPOT
 
Arduino&Raspberry
Arduino&RaspberryArduino&Raspberry
Arduino&Raspberry
 
Arduino prima spiegazione
Arduino  prima spiegazioneArduino  prima spiegazione
Arduino prima spiegazione
 
Introduzione all'elettronica con i microcontrollori: Arduino
Introduzione all'elettronica con i microcontrollori: ArduinoIntroduzione all'elettronica con i microcontrollori: Arduino
Introduzione all'elettronica con i microcontrollori: Arduino
 
Arduino day
Arduino dayArduino day
Arduino day
 
Corso Arduino Base - MUST
Corso Arduino Base - MUSTCorso Arduino Base - MUST
Corso Arduino Base - MUST
 
Presentazione Arduino
Presentazione ArduinoPresentazione Arduino
Presentazione Arduino
 
Lezione 3 arduino - corso 20 ore
Lezione 3 arduino - corso 20 oreLezione 3 arduino - corso 20 ore
Lezione 3 arduino - corso 20 ore
 
Electronics LAB [with Arduino] | DAY 1
Electronics LAB [with Arduino] | DAY 1Electronics LAB [with Arduino] | DAY 1
Electronics LAB [with Arduino] | DAY 1
 
Internet delle cose
Internet delle coseInternet delle cose
Internet delle cose
 

En vedette

Working in electronics laboratory in Gastaldi-Abba GE (IT) Comenius v1
Working in electronics laboratory in Gastaldi-Abba GE (IT) Comenius v1Working in electronics laboratory in Gastaldi-Abba GE (IT) Comenius v1
Working in electronics laboratory in Gastaldi-Abba GE (IT) Comenius v1Elisa Rubino
 
Poster 70x100 2014_v2
Poster 70x100 2014_v2Poster 70x100 2014_v2
Poster 70x100 2014_v2Elisa Rubino
 
Arduino n° 2 (astronave)
Arduino n° 2 (astronave)Arduino n° 2 (astronave)
Arduino n° 2 (astronave)Elisa Rubino
 
Safer internet day_2014_ragazzi
Safer internet day_2014_ragazziSafer internet day_2014_ragazzi
Safer internet day_2014_ragazziElisa Rubino
 
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...Sardegna Ricerche
 

En vedette (6)

Working in electronics laboratory in Gastaldi-Abba GE (IT) Comenius v1
Working in electronics laboratory in Gastaldi-Abba GE (IT) Comenius v1Working in electronics laboratory in Gastaldi-Abba GE (IT) Comenius v1
Working in electronics laboratory in Gastaldi-Abba GE (IT) Comenius v1
 
Poster 70x100 2014_v2
Poster 70x100 2014_v2Poster 70x100 2014_v2
Poster 70x100 2014_v2
 
Flyer 2014 v2
Flyer 2014 v2Flyer 2014 v2
Flyer 2014 v2
 
Arduino n° 2 (astronave)
Arduino n° 2 (astronave)Arduino n° 2 (astronave)
Arduino n° 2 (astronave)
 
Safer internet day_2014_ragazzi
Safer internet day_2014_ragazziSafer internet day_2014_ragazzi
Safer internet day_2014_ragazzi
 
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...
 

Similaire à Free Software e Open Hardware

Arduino : l'esperienza di IRES FVG - OpenSourceDay2012
Arduino : l'esperienza di IRES FVG - OpenSourceDay2012Arduino : l'esperienza di IRES FVG - OpenSourceDay2012
Arduino : l'esperienza di IRES FVG - OpenSourceDay2012Mirco Piccin
 
Software libero nei sistemi embedded
Software libero nei sistemi embeddedSoftware libero nei sistemi embedded
Software libero nei sistemi embeddedDaniele Costarella
 
[NALUG] Workshop@UniNA2014: "Quando gli GNU si dopano con il silicio"
[NALUG] Workshop@UniNA2014: "Quando gli GNU si dopano con il silicio"[NALUG] Workshop@UniNA2014: "Quando gli GNU si dopano con il silicio"
[NALUG] Workshop@UniNA2014: "Quando gli GNU si dopano con il silicio"gbr1
 
Linux e il mondo della scuola - LinuxDay 2010 (Pistoia)
Linux e il mondo della scuola - LinuxDay 2010 (Pistoia)Linux e il mondo della scuola - LinuxDay 2010 (Pistoia)
Linux e il mondo della scuola - LinuxDay 2010 (Pistoia)Andrea Grandi
 
Introduzione all’Iot e alle schede elettroniche
Introduzione all’Iot e alle schede elettronicheIntroduzione all’Iot e alle schede elettroniche
Introduzione all’Iot e alle schede elettronicheEnrico La Sala
 
LinuxDay 2010, Arduino il re dell'hardware open
LinuxDay 2010, Arduino il re dell'hardware openLinuxDay 2010, Arduino il re dell'hardware open
LinuxDay 2010, Arduino il re dell'hardware openMauro Fava
 
Hardware Libero - Linux Day 2007
Hardware Libero - Linux Day 2007Hardware Libero - Linux Day 2007
Hardware Libero - Linux Day 2007pino_otto
 
GNU/Linux PowerPC Notebook Linux day 2015 Milano
GNU/Linux PowerPC Notebook Linux day 2015 MilanoGNU/Linux PowerPC Notebook Linux day 2015 Milano
GNU/Linux PowerPC Notebook Linux day 2015 MilanoRoberto Innocenti
 
Introduzione ad ubuntu core
Introduzione ad ubuntu coreIntroduzione ad ubuntu core
Introduzione ad ubuntu coreMarco Trevisan
 
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...Ionela
 
Introduzione al software libero
Introduzione al software liberoIntroduzione al software libero
Introduzione al software liberoStefano Sabatini
 
Claudio Cardinali - Virtualizzazione. Di tutti. Per tutti. - LINUX LTSP KVM S...
Claudio Cardinali - Virtualizzazione. Di tutti. Per tutti. - LINUX LTSP KVM S...Claudio Cardinali - Virtualizzazione. Di tutti. Per tutti. - LINUX LTSP KVM S...
Claudio Cardinali - Virtualizzazione. Di tutti. Per tutti. - LINUX LTSP KVM S...Claudio Cardinali
 
Csp@scuola uav corso1_lez2
Csp@scuola uav corso1_lez2Csp@scuola uav corso1_lez2
Csp@scuola uav corso1_lez2CSP Scarl
 
Arduino nella-pmi
Arduino nella-pmiArduino nella-pmi
Arduino nella-pmitrevisoAUG
 
Intelligenza artificiale, robotica, rpa, machine learning Smau Bologna 2019
Intelligenza artificiale, robotica, rpa, machine learning Smau Bologna 2019Intelligenza artificiale, robotica, rpa, machine learning Smau Bologna 2019
Intelligenza artificiale, robotica, rpa, machine learning Smau Bologna 2019Alberto Sarullo
 

Similaire à Free Software e Open Hardware (20)

Arduino day 2017
Arduino day 2017Arduino day 2017
Arduino day 2017
 
Arduino : l'esperienza di IRES FVG - OpenSourceDay2012
Arduino : l'esperienza di IRES FVG - OpenSourceDay2012Arduino : l'esperienza di IRES FVG - OpenSourceDay2012
Arduino : l'esperienza di IRES FVG - OpenSourceDay2012
 
Software libero nei sistemi embedded
Software libero nei sistemi embeddedSoftware libero nei sistemi embedded
Software libero nei sistemi embedded
 
Ubuntu Linux
Ubuntu LinuxUbuntu Linux
Ubuntu Linux
 
Ubuntu Linux - Corso Base
Ubuntu Linux - Corso BaseUbuntu Linux - Corso Base
Ubuntu Linux - Corso Base
 
[NALUG] Workshop@UniNA2014: "Quando gli GNU si dopano con il silicio"
[NALUG] Workshop@UniNA2014: "Quando gli GNU si dopano con il silicio"[NALUG] Workshop@UniNA2014: "Quando gli GNU si dopano con il silicio"
[NALUG] Workshop@UniNA2014: "Quando gli GNU si dopano con il silicio"
 
Linux e il mondo della scuola - LinuxDay 2010 (Pistoia)
Linux e il mondo della scuola - LinuxDay 2010 (Pistoia)Linux e il mondo della scuola - LinuxDay 2010 (Pistoia)
Linux e il mondo della scuola - LinuxDay 2010 (Pistoia)
 
prova
provaprova
prova
 
Introduzione all’Iot e alle schede elettroniche
Introduzione all’Iot e alle schede elettronicheIntroduzione all’Iot e alle schede elettroniche
Introduzione all’Iot e alle schede elettroniche
 
LinuxDay 2010, Arduino il re dell'hardware open
LinuxDay 2010, Arduino il re dell'hardware openLinuxDay 2010, Arduino il re dell'hardware open
LinuxDay 2010, Arduino il re dell'hardware open
 
Hardware Libero - Linux Day 2007
Hardware Libero - Linux Day 2007Hardware Libero - Linux Day 2007
Hardware Libero - Linux Day 2007
 
GNU/Linux PowerPC Notebook Linux day 2015 Milano
GNU/Linux PowerPC Notebook Linux day 2015 MilanoGNU/Linux PowerPC Notebook Linux day 2015 Milano
GNU/Linux PowerPC Notebook Linux day 2015 Milano
 
Introduzione ad ubuntu core
Introduzione ad ubuntu coreIntroduzione ad ubuntu core
Introduzione ad ubuntu core
 
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...
 
Il software libero
Il software liberoIl software libero
Il software libero
 
Introduzione al software libero
Introduzione al software liberoIntroduzione al software libero
Introduzione al software libero
 
Claudio Cardinali - Virtualizzazione. Di tutti. Per tutti. - LINUX LTSP KVM S...
Claudio Cardinali - Virtualizzazione. Di tutti. Per tutti. - LINUX LTSP KVM S...Claudio Cardinali - Virtualizzazione. Di tutti. Per tutti. - LINUX LTSP KVM S...
Claudio Cardinali - Virtualizzazione. Di tutti. Per tutti. - LINUX LTSP KVM S...
 
Csp@scuola uav corso1_lez2
Csp@scuola uav corso1_lez2Csp@scuola uav corso1_lez2
Csp@scuola uav corso1_lez2
 
Arduino nella-pmi
Arduino nella-pmiArduino nella-pmi
Arduino nella-pmi
 
Intelligenza artificiale, robotica, rpa, machine learning Smau Bologna 2019
Intelligenza artificiale, robotica, rpa, machine learning Smau Bologna 2019Intelligenza artificiale, robotica, rpa, machine learning Smau Bologna 2019
Intelligenza artificiale, robotica, rpa, machine learning Smau Bologna 2019
 

Plus de Stefano Sanna

Mobile Security su Android - LinuxDay 2018
Mobile Security su Android - LinuxDay 2018Mobile Security su Android - LinuxDay 2018
Mobile Security su Android - LinuxDay 2018Stefano Sanna
 
Android Things, from mobile apps to physical world
Android Things, from mobile apps to physical worldAndroid Things, from mobile apps to physical world
Android Things, from mobile apps to physical worldStefano Sanna
 
Android Things Linux Day 2017
Android Things Linux Day 2017 Android Things Linux Day 2017
Android Things Linux Day 2017 Stefano Sanna
 
Android Things in action
Android Things in actionAndroid Things in action
Android Things in actionStefano Sanna
 
Introduzione alla tecnologia iBeacon
Introduzione alla tecnologia iBeaconIntroduzione alla tecnologia iBeacon
Introduzione alla tecnologia iBeaconStefano Sanna
 
Augmented Smartphone
Augmented SmartphoneAugmented Smartphone
Augmented SmartphoneStefano Sanna
 
Bluetooth Low Energy
Bluetooth Low EnergyBluetooth Low Energy
Bluetooth Low EnergyStefano Sanna
 
Google TV: la nuova frontiera Android
Google TV: la nuova frontiera AndroidGoogle TV: la nuova frontiera Android
Google TV: la nuova frontiera AndroidStefano Sanna
 
Enlarge your screen: introducing the Google TV
Enlarge your screen: introducing the Google TVEnlarge your screen: introducing the Google TV
Enlarge your screen: introducing the Google TVStefano Sanna
 
NFC: tecnologia e applicazioni
NFC: tecnologia e applicazioniNFC: tecnologia e applicazioni
NFC: tecnologia e applicazioniStefano Sanna
 
Android - Programmazione Avanzata
Android -  Programmazione AvanzataAndroid -  Programmazione Avanzata
Android - Programmazione AvanzataStefano Sanna
 
HCIM08 - Mobile Applications
HCIM08 - Mobile ApplicationsHCIM08 - Mobile Applications
HCIM08 - Mobile ApplicationsStefano Sanna
 
Android & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioniAndroid & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioniStefano Sanna
 
Application Store: opportunita' e trappole
Application Store: opportunita' e trappoleApplication Store: opportunita' e trappole
Application Store: opportunita' e trappoleStefano Sanna
 
Android Bluetooth Hacking
Android Bluetooth HackingAndroid Bluetooth Hacking
Android Bluetooth HackingStefano Sanna
 
Playing with Mobile 2.0
Playing with Mobile 2.0Playing with Mobile 2.0
Playing with Mobile 2.0Stefano Sanna
 
Comunicazione Pervasiva
Comunicazione PervasivaComunicazione Pervasiva
Comunicazione PervasivaStefano Sanna
 
Sensoristica Avanzata per Dispositivi Mobili
Sensoristica Avanzata per Dispositivi MobiliSensoristica Avanzata per Dispositivi Mobili
Sensoristica Avanzata per Dispositivi MobiliStefano Sanna
 

Plus de Stefano Sanna (20)

Mobile Security su Android - LinuxDay 2018
Mobile Security su Android - LinuxDay 2018Mobile Security su Android - LinuxDay 2018
Mobile Security su Android - LinuxDay 2018
 
Android Things, from mobile apps to physical world
Android Things, from mobile apps to physical worldAndroid Things, from mobile apps to physical world
Android Things, from mobile apps to physical world
 
Android Things Linux Day 2017
Android Things Linux Day 2017 Android Things Linux Day 2017
Android Things Linux Day 2017
 
Android Things in action
Android Things in actionAndroid Things in action
Android Things in action
 
Introduzione alla tecnologia iBeacon
Introduzione alla tecnologia iBeaconIntroduzione alla tecnologia iBeacon
Introduzione alla tecnologia iBeacon
 
Augmented Smartphone
Augmented SmartphoneAugmented Smartphone
Augmented Smartphone
 
Bluetooth Low Energy
Bluetooth Low EnergyBluetooth Low Energy
Bluetooth Low Energy
 
Google TV: la nuova frontiera Android
Google TV: la nuova frontiera AndroidGoogle TV: la nuova frontiera Android
Google TV: la nuova frontiera Android
 
Enlarge your screen: introducing the Google TV
Enlarge your screen: introducing the Google TVEnlarge your screen: introducing the Google TV
Enlarge your screen: introducing the Google TV
 
Introduzione ad NFC
Introduzione ad NFCIntroduzione ad NFC
Introduzione ad NFC
 
NFC: tecnologia e applicazioni
NFC: tecnologia e applicazioniNFC: tecnologia e applicazioni
NFC: tecnologia e applicazioni
 
Android - Programmazione Avanzata
Android -  Programmazione AvanzataAndroid -  Programmazione Avanzata
Android - Programmazione Avanzata
 
HCIM08 - Mobile Applications
HCIM08 - Mobile ApplicationsHCIM08 - Mobile Applications
HCIM08 - Mobile Applications
 
Android & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioniAndroid & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioni
 
Application Store: opportunita' e trappole
Application Store: opportunita' e trappoleApplication Store: opportunita' e trappole
Application Store: opportunita' e trappole
 
Android Bluetooth Hacking
Android Bluetooth HackingAndroid Bluetooth Hacking
Android Bluetooth Hacking
 
Android
AndroidAndroid
Android
 
Playing with Mobile 2.0
Playing with Mobile 2.0Playing with Mobile 2.0
Playing with Mobile 2.0
 
Comunicazione Pervasiva
Comunicazione PervasivaComunicazione Pervasiva
Comunicazione Pervasiva
 
Sensoristica Avanzata per Dispositivi Mobili
Sensoristica Avanzata per Dispositivi MobiliSensoristica Avanzata per Dispositivi Mobili
Sensoristica Avanzata per Dispositivi Mobili
 

Free Software e Open Hardware

  • 1. Free Software & Open Hardware Arduino è una piattaforma hardware / software rilasciata sotto L licenza Creative Commons che permette la realizzazione oggetti fisici o interattivi, in grado di utilizzare un ricco insieme di sensori e attuatori. Il seminario illustra come creare una piccola stazione di rilevamento di dati ambientali basata su Linux e accessibile via web. Stefano Sanna http://www.gerdavax.it Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 1
  • 2. Sommario ● Free Software e Open Hardware ● Gli esempi più famosi di Open Hardware ● Arduino: un successo tutto italiano! ● Panoramica su Arduino ● Stazione di rilevamento Linux-based & web-based Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 2
  • 3. Speaker ● Co-fondatore del GULCh (correva l'anno 1996!) ● Senior Developer & Java ME Tech Lead – beeweeb technologies ● Autore del libro “Java Micro Edition” – Hoepli Informatica, Milano, 2007 ● Tech & Food blogger – http://www.gerdavax.it Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 3
  • 4. Free Software Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 4
  • 5. Free Software ● Libertà di eseguire il programma, per qualsiasi scopo (libertà 0). ● Libertà di studiare come funziona il programma e adattarlo alle proprie necessità (libertà 1). L'accesso al codice sorgente ne è un prerequisito. ● Libertà di ridistribuire copie in modo da aiutare il prossimo (libertà 2). ● Libertà di migliorare il programma e distribuirne pubblicamente i miglioramenti, in modo tale che tutta la comunità ne tragga beneficio (libertà 3). L'accesso al codice sorgente ne è un prerequisito. Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 5
  • 6. Oltre la percezione comune... ● Per molti (troppi?) utenti della Rete “free software” e “open source” sono sinonimi di SALVA CON NOME ● I valori di condivisione della conoscenza, di miglioramento collettivo di una risorsa (il software), di verifica incrociata (degli algoritmi) sono completamente ignorati Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 6
  • 7. Open Hardware ● L'“open source” del software diventa “open diagram” dell'hardware, ovvero: – elenco di tutti i componenti – schema elettrico con tutte le connessioni – schema del PCB, cui cui realizzare immediatamente il circuito stampato e provvedere alla realizzazione del prodotto – libertà di progettare e costruire varianti del circuito di partenza Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 7
  • 8. Attenzione: l'hardware costa! ● A differenza del software, l'hardware non può essere replicato a costi pressoché nulli ● La produzione di circuiti e l'uso di componenti di media complessità fa lievitare i costi di realizzazione e il processo potrebbe non essere disponibile a livello dilettantistico/amatoriale ● Open Hardware non significa “hardware gratuito”, ma godere delle medesime libertà del free software Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 8
  • 9. Tre esempi importanti ● OpenMoko: free your phone! – Piattaforma hardware e software interamente open, basata su Linux – http://www.openmoko.org ● BeagleBoard – Piattaforma embedded hardware e software – http://www.beagleboard.org ● Arduino – Piattaforma di interaction design e sensor network Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 9
  • 10. OpenMoko FreeRunner ● Touch screen 2.84” (43mm x 58mm) 480x640 px ● 128MB SDRAM memory, 256 MB flash memory ● uSD slot supporting up to 8GB SDHC ● Internal GPS module ● Bluetooth e 802.11 b/g WiFi ● 400Mhz ARM processor ● Doppio accelrometro 3D ● Tri-band GSM and GPRS ● USB Host function with 500mA power Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 10
  • 11. FreeRunner “a nudo” Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 11
  • 12. BeagleBoard ● Processore OMAP3530, oltre 1,200 Dhrystone MIPS ● OpenGL © ES 2.0 con acceleratore 2D/3D ● HD video con DSP TMS320C64x+ DSP (430MHz) ● Alimentazione via USB Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 12
  • 13. BeagleBoard Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 13
  • 14. Arduino ● E' un sistema economico, semplice, aperto, flessibile, programmabile per la realizzazione di sistemi in grado di acquisire dati da diversi sensori ed attivare diversi attuatori ● Il linguaggio di programmazione deriva dal C ● Ideato da Massimo Banzi ● Derivato da altri due progetti open: Wiring e Processing ● Arduino è orgogliosamente MADE IN ITALY! Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 14
  • 15. Versioni di Arduino ● Prime versioni: – Arduino, Arduino USB, Arduino NG ● Version attuali: – Arduino Diecimila (“appena” sostituito da Arduino Duemilanove) – Arduino Mini – Arduino Nano – Arduino Bluetooth – Lilypad, Boarduino, Freeduino Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 15
  • 16. Arduino FAQ ● Da dove si inizia? – Da qui: http://www.arduino.cc ● Dove si acquista? – http://www.smartprj.com ● Quando costa? – Il modello più economico (Arduino Duemilanove) costa meno di 30 euro ● Funziona solo con Linux? – No, funziona perfettamente anche con Windows e Mac OS X Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 16
  • 17. Punti di forza di Arduino ● Completamente aperto: codice, diagrammi, librerie sono rilasciate sotto licenza Creative- Commons ● Molto molto molto economico! ● Facile da programmare e da interfacciare virtualmente con qualsiasi tipo di hardware ● E' supportato da una vastissima community di sviluppatori, appassionati, designer e progettisti ● E' un'ottima scuola per creare sensor network e sistemi di interaction design, prima di passare a piattaforme più complesse (e costose) Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 17
  • 18. Arduino Diecimila Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 18
  • 19. Arduino: schema elettrico Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 19
  • 20. Caratteristiche hardware ● Microcontroller Atmel Atmega168 ● Alimentazione 6V-20V ● 14 ingressi/uscite digitali (6 uscite PWM) ● 6 ingressi analogici ● 1 porta seriale TTL ● 16KB di memoria flash (2KB bootloader) ● 1KB RAM ● EEPROM 512B ● Clock 16MHz Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 20
  • 21. Estensioni hardware Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 21
  • 22. Arduino IDE Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 22
  • 23. Installazione ● Scaricare e decomprimere l'IDE di Arduino (verificare su http://www.arduino.cc l'ultima versione disponibile) ● Installare il compilatore e librerie per il microcontrollore AVR. Su Ubuntu: – sudo aptitude install gcc-avr – sudo aptitude install avr-libc Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 23
  • 24. Hello Arduino int ledPin = 13; void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); } Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 24
  • 25. Programmazione ● Linguaggio e librerie standard ereditano molte delle funzioni del C ● E possibile scrivere librerie native utilizzando il C o l'assembler standard del microcontroller Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 25
  • 26. Programmazione ● Variabili: byte, int, unsigned int, long, unsigned long, float, double, boolean, char, array ● Costanti specifiche: – Livelli logici: HIGH, LOW – Stati booleani: true, false – Configurazione dei PIN: INPUT, OUTPUT ● Operatori, funzioni, controllo di flusso, include di librerie... Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 26
  • 27. Libreria standard ● I/O digitale: – pinMode(PIN, INPUT | OUTPUT) – digitalWrite(PIN, HIGH | LOW) – int digitalRead(PIN) ● I/O analogico – int analogRead(PIN) – analogWrite(PIN, valore) ● Invio e lettura treni di bit, temporizzazioni, comunicazione seriale... Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 27
  • 28. Librerie estese “ufficiali” ● Accesso EEPROM ● Display LCD ● Motori: trazione diretta, stepper, servo ● Software Serial (no buffer) ● Interfaccia 1-Wire e I2C ● LED Matrix ● LED Sprite Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 28
  • 29. Librerie estese “community” ● Gestione date e orari ● Libreria di comunicazione per PC ● Vari driver per display LCD ● LED Driver ● Manipolazione stringhe ● Controller X10 ● Controller PWM ● Interfacce per cellulari Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 29
  • 30. Sensori ● Sono disponibili moltissimi sensori analogici e digitali, in grado di rilevare pressoché qualsiasi grandezza fisica: – temperatura, luminosità – pressione, umidità, CO2 – accelerazione, direzione goniometrica, posizione – sensori di contatto, prossimità, distanza – lettori RFID Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 30
  • 31. Attuatori ● Attraverso opportuni driver è possibile controllare virtualmente qualsiasi tipo di attuatore: – motori a trazione diretta, stepper, servo – display LED e LCD – buzzer – memory card Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 31
  • 32. Stazione di Rilevamento ● Arduino consente di realizzare una piccola interfaccia USB universale per qualsiasi tipo di sensore: – attraverso gli ingressi analogici e digitali è possibile leggere la grandezza fisica di interesse – il programma caricato sul microcontrollore si occupa di effettuare conversioni, verifiche sui dati acquisiti, eventuali interpolazioni o confronti da più sensori – il dato “ben formato” può essere inviato al PC attraverso la porta USB sotto forma di stringa di testo Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 32
  • 33. Sensore di temperatura LM35 Fonte: http://www.national.com/ds/LM/LM35.pdf Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 33
  • 34. Chi fa cosa Jetty Linux Day “Sensor Station” JavaComm Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 34
  • 35. Arduino: input analogico ● Attraverso i 6 ingressi analogici, Arduino è in grado di leggere tensioni comprese tra 0V e 5V, effettuando un campionamento a 10 bit ● La funzione analogRead() riceve come parametro il numero del PIN su cui effettuare la lettura e restituisce un valore compreso tra 0 e 1023 ● Ogni “step” di analogRead() corrisponde a circa 4.9mV Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 35
  • 36. Arduino: comunicazione seriale ● I PIN digitali 0 e 1 sono connessi alla seriale TTL fornita dal microcontroller ● Due LED sulla board (pilotati dal controller USB FTDI) notificano il transito di dati in ingresso e in uscita ● La classe (!) Serial permette di gestire la porta: – Serial.begin(SPEED) imposta la velocità – int Serial.read() legge un byte – Serial.print(VALORE) invia un byte sulla seriale Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 36
  • 37. Cablaggio su breadboard Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 37
  • 38. Sketch su Arduino int TEMP_PIN= 5; Il valore letto da analogRead() è diviso int temp; per dieci, così da avere uno incremento di una unità per ogni grado centigrado void setup() { Serial.begin(9600); } void loop() { temp = analogRead(TEMP_PIN) * 0.5 + 2; Serial.println(temp, DEC); delay(1000); } Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 38
  • 39. Server Java public class SensorStation { private static String temp; private static String time; private Timer timer; private SerialWatcher serialWatcher; private StationHandler handler; private SerialPort serialPort; private BufferedReader reader; Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 39
  • 40. Server Java public static void main(String[] args) { new SensorStation(); } public SensorStation() { try { timer = new Timer(); handler = new StationHandler(); Server server = new Server(8080); server.setHandler(handler); server.start(); serialWatcher = new SerialWatcher(); timer.scheduleAtFixedRate(serialWatcher, 5000, 1000); initSerial(); } catch (Exception ex) { } } Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 40
  • 41. Inizializzazione porta seriale private void initSerial() { try { CommPortIdentifier id = CommPortIdentifier.getPortIdentifier(quot;/dev/ttyUSB0quot;); serialPort = (SerialPort) id.open(quot;GULChquot;, 1000); serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); reader = new BufferedReader(new InputStreamReader(serialPort.getInputStream())); } catch (Exception e) { System.exit(1); } } Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 41
  • 42. Lettura dei dati private class SerialWatcher extends TimerTask { public void run() { String read = null; if (reader != null) { try { while ((read = reader.readLine()) != null) { time = (new Date(System.currentTimeMillis())).toString(); temp = read; } } catch (Exception e) { } } } } Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 42
  • 43. Modulo web (1) private class StationHandler extends AbstractHandler { public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) throws IOException, ServletException { response.setContentType(quot;text/htmlquot;); response.setStatus(HttpServletResponse.SC_OK); PrintWriter writer = response.getWriter(); writer.println(quot;<html>quot;); writer.println(quot;<head>quot;); writer.println(quot;<meta http-equiv=quot;refreshquot; content=quot;10quot;>quot;); writer.println(quot;</head>quot;); writer.println(quot;<body>quot;); writer.println(quot;<h1>Linux Sensor Station</h1>quot;); writer.println(quot;<hr/>quot;); Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 43
  • 44. Modulo web (2) writer.println(quot;<p>quot;); writer.println(quot;Last temperature read: quot; + temp + quot; @ quot; + time); writer.println(quot;</p>quot;); writer.println(quot;</body>quot;); writer.println(quot;</html>quot;); ((Request) request).setHandled(true); } } Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 44
  • 45. Rullo di tamburi... DEMO Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 45
  • 46. Conclusioni ● Lo spirito del Free Software muove i primi passi nel mondo dell'hardware e i primi progetti sono validi ed estremamente interessanti ● Arduino è una delle piattaforme di hardware aperto di maggior successo: le sue caratteristiche lo rendono estremamente flessibile e adattabile a numerosi contesti di utilizzo ● Utilizzando Arduino, Linux e un po' di codice Java è possibile realizzare una piccola stazione di rilevamento accessibile via web Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 46
  • 47. Grazie per l'attenzione Stefano Sanna, Free Software e Open Hardware Cagliari, 25 Ottobre 2008 47