Linux Day Torino 27-10-2012 Hardware is the new Web Gianfranco PONCINI [email protected]  Lo sviluppo dell' hardware elettronico e' in pieno fermento, tanto che qualcuno lo ha paragonato all' esplosione di Internet quando e' diventata raggiungibile da tutti. Cosa lo ha reso possibile   Lo sviluppo hardware era prerogativa delle aziende a causa dei costi delle attrezzature. Ora sono disponibili: − Memorie flash non volatili − Programmazione sul circuito gia' montato − (ICSP / JTAG) − Bootloader cha si comandano da un PC − Ambienti di sviluppo gratuiti basati sul compilatore GNU Alcuni esempi  Arduino  Beagle & Beagle Bone  Raspberry Pi  UBW32 e altre schede basate su Pic32 .... e molte altre. Tutte queste schede permettono all' hobbista di sviluppare sistemi embedded con un costo accessibile a tutti. E su tutti aleggia l' ombra di Steve Jobs Arduino   E' il piu' famoso di tutti. Da un micro a 8 bit con 2k di RAM e 32k di flash si e' costruito un caso planetario, imitato anche in America. Una conferma del detto: “Italians do it better” Raspberry PI  E' nato come un PC economicissimo  Ma non e' solo questo ..... Beagle Board  Nata anch' essa come PC economicissimo Beagle Bone  Una Beagle board ridotta all' osso (bone) da usare come sistema embedded senza display, meno caro. UBW32   Sostanzialmente un PIC32 con i piedini piu' grossi (e cristallo e regolatore di tensione). Confrontabile con i sistemi di sviluppo ufficiali. Non supportato ufficialmente da Microchip. Motivazioni recondite   I fenomeni di massa non accadono solo per moda, le motivazioni ci sono anche se sovente non le percepiamo a livello cosciente. Qui ce ne sono molte, e vanno analizzate non solo come fenomeno sociologico, ma anche per i motivi tecnici Spionaggio elettronico  Il disagio per l' uso dell' elettronica nello spionaggio di massa spinge il desiderio di saper controllare e bloccare questi strumenti. Sistemi troppo blindati   I sistemi operativi commerciali si autoproteggono limitando troppo le reali possibilita' della macchina Per fortuna che c' e' Linux ! Disoccupazione giovanile   Nell' attuale momento economico qualcuno si sta dando una mossa. E tanti sperano di essere il nuovo Steve Jobs Il mito della rivolta delle macchine  Oggi sembra dimenticato, ma una volta era molto dibattuto. Terminator, con la sua Skynet, e' uscito assai prima che Internet diventasse nota al grande pubblico. Linux nei computer embedded   L' ampia Ram a basso costo ha permesso di usare un sistema operativo in sistemi che avevano solo un programma ad hoc Linux lo troviamo in sistemi che i piu' non immaginano nemmeno Linux su varie CPU  Linux e' stato portato su varie architetture: le piu' famose: X86 ARM MIPS Sistemi presentati oggi  Esaminiamo ora i sistemi presentati oggi come comunicanti fra loro, e cioe'  Arduino Raspberry Pi Pic32  In ottica: Facilita' d' uso Design intelligente E soprattutto: Consumo di corrente ! Un' applicazione specifica     Sistemi wireless collegati con radiomodem su interfaccia seriale per controllo distribuito Perche' queste due cose (seriale e modem) che sembrano passate di moda ? Non c' e' il wireless a 2.4 Ghz ? Risposta: perche' esistono applicazioni industriali in cui rimangono competitivi o insostituibili, specie su piccoli sistemi, Su Arduino ad esempio il wireless si mangia quasi tutti i 32 k Le frequenze radio  Le frequenze radio si dividono in tre categorie: quelle dall' uso ormai bloccato (TV, cellulari, aeronautica, forze armate, polizia, carabinieri) quelle libere (Wi-Fi , ISM) quelle disponibili pagando un opportuno canone al ministero delle poste Uso delle frequenze “inconsuete”     Per queste frequenze mettere in piedi un sistema tipo W-Fi ha costi impensabili. Un radiomodem seriale e' progettabile anche da una piccola azienda (i radioamatori lo fanno da un sacco di tempo, e sulle loro frequenze si puo' fare la software defined radio). Inoltre non esiste solo l' Italia. Sudamerica e paesi Arabi con i loro grandi spazi hanno contesti assai differenti. In tempi di crisi un' opportunita' da considerare. Pro e contro : Arduino   Facilita' d' uso: lo usano anche gli artisti. Programmazione in un linguaggio tipo C, ma molto semplificato, soprattutto senza i files .h !  Controllo diretto dell' hardware senza virtualizzazione.  Tutto a 5 Volt. C' e' anche il 3.3 ma non danneggia.  Connettori di espansione femmina.  Disposizione dei connettori che permette di costruire shield a ponte meccanicamente assai robusti.  No USB host  I/O analogici Pro e contro: Raspberry Pi  Grande memoria (256/512 MB)  Grande potenza di calcolo  Ha un' uscita video per interagire con l' utente  Molti linguaggi di programmazione (quelli Linux)  A differenza dei PC alimenta le periferiche non USB  USB Host con supporto degli Hubs  Supporto del multitasking (Linux)  Supporto di un sacco di periferiche (Linux) Pro e contro: Raspberry Pi   Funziona a 3.3 Volt ma alimenta le periferiche con 5V, con rischio di danni (innumerevoli i warning) Connettore di espansione maschio su due file vicine: montaggio delle espansioni precario  No I/O analogico  Consumo di corrente elevato  L' hardware virtualizzato sotto Linux ne rende la programmazione non per tutti. Pro e contro: Pic32  Microchip assai amichevole con gli hobbisti: vende direttamente via web anche pochi pezzi  Alimentazione a 3.3V con I/O tollerante a 5V  Controllo diretto dell' hardware (no host env)  Programmazione solo in C (compilatore GNU)  I/O analogico  Non supporta ancora Linux (esistono versioni ridotte, ma sperimentali e inutili). Per la sua architettura (MIPS) esiste un Linux vero (OpenWrt), ma che richiede Ram a megabytes e MMU. Pro e contro: Pic32  Hardware costruibile da un hobbista.  Supporta 1 USB, anche isocrono, ma non gli Hubs.  Memoria media (piu' di Arduino, ma sempre kB)  Rimasto indietro come immagine rispetto ad Arduino  Signore assoluto del consumo di corrente Il radiomodem utilizzato    E' l' Aurel Rtx-Mid, disponibile sia a 3.3 che a 5 Volt Frequenza fissa 433.92 Mhz, massimo baudrate 9600, potenza in uscita 10 mW, basato su chip MAXIM. Piccolissimo e a basso costo (circa 15 euro) Il radiomodem utilizzato   Piedinatura assai semplice, passo standard 0.1 pollici, interfaccia bene con i microcontrollori. Consumo di corrente basso, con power down. Il radiomodem utilizzato   La commutazione da ricezione a trasmissione e' diretta Quella inversa passa dal reset. Questo crea qualche problema con l' hardware virtuale di Raspberry Pi. Lo shield Arduino  Strutturato a ponte, meccanicamente robusto  Il radiomodem a 5 V e' alimentato direttamente Lo shield Arduino  Usa la seriale hardware, cosi' puo' ricevere in modalita' interrupt, Occorre pero' smontare lo shield durante la riprogrammazione, per non interferire. Lo shield Arduino  Usa due linee analogiche per leggere due termistori e una linea digitale per pilotare un LED. Lo shield Raspberry Pi  Struttura a 1/2 ponte, da una parte appoggia (meno robusta) Lo shield Raspberry Pi  Il radiomodem deve essere a 3.3 Volt, ma i piedini a 3.3 erogano solo pochi milliampere. Bisogna attaccarsi al 5 V e mettere un regolatore di tensione Lo shield Raspberry Pi  La CPU funziona a 700 Mhz, piu' della portante del radiomodem. Il rumore elettrico generato e' assai forte, considerata la sensibilita' del ricevitore. Occorre schermare la CPU, visto che l' antenna deve comunque restare fuori La gestione hardware Raspberry Pi    A partire dal concetto UNIX (everything is a file), i piedini di I/O vengono gestiti da pseudofiles. La seriale e' una vera e propria periferica (/dev/ttyAMA0) e come tale viene gestita. I pins di controllo digitale del radiomodem (per questo shield 23 e 24) da linea di comando si gestiscono cosi' echo “23” > /sys/class/gpio/export 'apre' il pin 23 echo ”out” > /sys/class/gpio/gpio23/direction lo mette in modalita' output (“in” per input) La gestione hardware Raspberry Pi echo ”1” > /sys/class/gpio/gpio23/value lo mette a 3.3 V (“0” per 0 V) − Con 24 al posto di 23 si gestisce il pin 24 − Per rilasciare il pin echo “23” > /sys/class/gpio/unexport  Ovviamente essendo dei files si possono gestire da programma, ad esempio scritto in C La gestione hardware Raspberry Pi  Per la comunicazione funziona questo programma: http://www.comptechdoc.org/os/linux/programming/c/com.c ovviamente modificato per le nuove periferiche e con l' aggiunta di parti per gestire Arduino e PIC32 via radio.   Tutta la parte di gestione hardware e segnali funziona immutata La gestione dei segnali del radiomodem viene mostrata nella slide seguente, per il caso specifico gia' citato della commutazione da riceziona a trasmissione Per Arduino e' piu' semplice // NON COMMUTARE IN RICEZIONE PRIMA CHE // ABBIA FINITO DI TRASMETTERE ! // enable radiomodem as receiver // prima abbassa il T/R digitalWrite(7,LOW) ; delay(10) ; // poi abbassa l' enable digitalWrite(4,LOW) ; delay(10) ; // poi rialza l' enable digitalWrite(4,HIGH) ; delay(20) ; // here wait for commands from raspberry pi La gestione hardware Raspberry Pi    Raspberry Pi puo' gestire webcam USB. Puo' essere usato per videosorveglianza, ma ha come hard disk una scheda SD, su cui non si puo' scrivere tutti i momenti. Meglio limitarsi a immagini fisse. E' stato ricompilato uvccapture, che acquisisce immagini fisse dalle webcam a specifiche UVC (non tutte ! Fate delle prove prima di comprarne una !) Uvccapture ha i vantaggi della multiprogrammazione: dopo aver acquisito un' immagine puo' lanciare un altro programma per un altro compito collegato La scheda Pic32  Progettata in casa per essere costruita in casa, Un altro passo avanti sulla via dell' hardware per tutti!  Il Pic32 e' nel package SOIC28 con passo piedini 1.27  Nessun componente SMD piu' piccolo dello 0805 La scheda Pic32  Se autocostruito si mette solo quello che effettivamente serve (USB Host, USB device, regolatore a 5 V per USB, quarzo a 32 Khz, LED alimentazione, connettori maschio o femmina ….) La scheda Pic32  Tre connettori di espansione con funzionalita' riprogrammabile, di cui due a ponte tipo Arduino e uno con pinout predisposto per inserire direttamente il radiomodem La scheda Pic32   USB host anche isocrono fino a 12 Mbit/secondo Acquisizione di immagini a bassa risoluzione da webcam USB a specifiche UVC La scheda Pic32  Alimentabile in maniera device da USB  Alimentabile in maniera host da Vcc non regolata  Commutabile spostando un ponticello  Consumo di corrente che puo' scendere a microampere  Possibilita' di spegnere l' USB tramite il regolatore a 5 V con output enable La scheda Pic32  Possibilita' di regolare dinamicamente il clock (e conseguentemente il consumo di corrente) secondo le necessita' scendendo fino a 32 Khz  Wake up on receive da linea seriale in modalita' sleep  E finalmente: MPLAB anche su Linux ! Conclusioni  Nessun sistema e' perfetto, ognuno ha i suoi vantaggi e svantaggi, c' e' posto per tutti.  Per gli “smanettoni” c' e' ampia scelta  Le difficolta' sono un' opportunita'  Il mondo sta aspettando il nuovo Steve Jobs   Il mondo del software open source, nato con Linux, ha gia' prolificato generando l' hardware open source Quale sara' la prossima nascita ? “Non sapevano che era impossibile farlo, quindi lo fecero” Bertrand Russell