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