La storia inizia un giorno d’inverno quando decisi di fare l’upgrade e di passare ad Arduino. All’epoca ero ancora a programmare in Basic 2 con i microcontrollori Picaxe, tanto facili da usare quanto inutili dal punto di vista dello sviluppo( comunque devo ammettere che con loro è stato il mio primo approccio alla programmazione). Il nuovo mondo di Arduino mi si presentò come magico, pieno di divertimento e potenzialità . Il suo playground (sito dove tutti i nerdarduino si ritrovano e inventano cose strabilianti) prometteva valanghe di codice da rubare(con un semplice copia-incolla), senza il minimo sforzo di apprendimento. Così mi decisi a comprare la famosa tavoletta open-souce dell’italianissimo peso piuma Massimo Banzi. Appena arrivata mi misi subito a programmare e mi accorsi che fortunatamente il processing non altro è che il caro vecchio C, che fortunatamente avevo studiato solo l’anno prima all’università .

L’amore tra me e la tavoletta naque e maturò tra nottate passate al lume di candela (nel vero senso della parola poichè qualche volta ho fatto davvero saltare la luce) ed e proprio durante queste lunghe sessione che sono nati alcuni miei progetti molto interessanti, tra cui l’interruttore della luce azionato con un battito di mani(di cui scriverò più avanti) o le rivisitazioni del mio vecchio robot che feci all’età di 17 anni.
Ma, così velocemente come era iniziato, il nostro rapporto iniziò ad incrinarsi. Un altra tavoletta stava bussando alla porta della mia vita. Fu inizialmente una relazione a distanza, mediata da uno schermo, in quanto ancora non la potevo possedere(hehe!!). Essa era dolce e mi prospettava di trascinarmi in una storia ancora più passionale, piena di dolcezze come le fette di torta. Fetta di torta…ebbene si, era lei, la Torta di Lamponi, la freschissima inglesina: la Raspberry Pi. Essa è entrata nella mia vita da pochi giorni, ma io di lei già sapevo tutto. La differenza fondamentale è che essa è veramente un computer, a differenza della Arduino che è un microprocessore. Come abbiano fatto ad infilare la complessità di un Pentium 2 in una tavoletta grossa quanto un cellulare è un mistero. Non si surriscalda e la puoi pure mandare a pile! Non ha praticamente problemi di alimentazione.

Da qui parte la grande battaglia tra il mio vecchio amore Arduino e la nuova conquista Raspberry Pi. Va detto che l’Arduino parte svantaggiato, poiché la sua ultima versione hardware (Arduino Uno) risale a tempo fa, mentre la Raspberry ha solo qualche mese di vita. Bisognerà aspettare l’uscita della Arduino 2 per poter mettere il contest allo stesso piano. Ma ora passiamo al ring tra le due contendenti:
Pro Arduino:
1- E’ open souce: la cosa non è da sottovalutare, poichè avere davanti agli occhi sia le schematiche hardware sia il bootloader software può svelarti cose che altrimenti non sarebbero possibili. Al di là di questo è bella l’idea dell’open souce
2- E’ un microcontrollore: essendo specifico, ciò che fa lo fa bene. Non ha bisogno di tempo per avviarsi(o meglio, il suo tempo di boot è infinitesimo) e consuma pochissimo. Con 3 pile lo puoi mandare avanti per molto tempo.
3- Analog input: questa tavoletta vanta molti più pins I/O della rivale, ma sopratutto ha ben 5 analog inputs in cui la rivale è completamente deficiente. Anche se sulla raspeberry uno può usare degli shield per ovviare a questo problema, l’avere direttamente i pin ha il suo vantaggio.
4- Personalizzazione: esiste una tipologia di arduino per ogni bisogno: Uno, Nano, Mega, Mini, Leonardo, Fio, LilyPad: dalle versione più piccole a quello per essere cucito sui vestiti!
5- Librerie: non sai come fare qualcosa? carica una libreria con tutte le funzioni già fatte! Il bello dell’open source(in maniera scorretta) è che qualcuno molto probabilmente ha già fatto quello che vuoi fare tu e te lo copi spudoratamente
6- E’ italiano: una delle poche volte per cui si può essere fieri del genio italiano.
Pro Raspeberry Pi:
1- E’ un computer: anche se in miniatura, è sempre un computer! Se attaccato ad un monitor ha pure la versione grafica niente male. Ovviamente questo da un vantaggio sulla potenza di calcolo non indifferente rispetto al rivale.
2- Nessun codice: non serve sapere il codice per poterlo utilizzare, a differenze della rivale.
3- Ha le app: se in arduino bisognava scervellarci per ogni problema, qui probabilmente può essere risolto scaricando una adeguata app.
4- Video: una potenza maggiore permette di usufruire dei tanto dolorosi video(in termini di richiesta software/hardware). Sembra che la raspberry non dia problemi neanche sui blue-ray di ultima generazione!
5- Output implementati: tutte le tipologie di uscita(Ethernet, Usb, Audio, RCA video, HDMI) sono già sulla tavoletta, senza il bisogno di acquistare costosi shield(mi riferisco a quello ethernet di arduino)
6- Os: perchè mettere proprio la versione raspian di Debian sul proprio raspberry? Ma possiamo metterci qualsiasi cosa! Addirittura android! http://www.raspberrypi.org/archives/1700
————————————–
Anche se dal sopra sembra che sia più facile utilizzare un Raspeberry Pi, qui mi contraddico; nel senso che per fare le cose standard che potrebbe fare un computer allora il raspberry pi è ottimo, altrimenti la difficoltà del suo utilizzo diventa pericolosamente grande(se non si è familiari con l’OS Linux), contrariamente a quella di arduino che, dopo uno sforzo iniziale nel capire come funziona il suo codice, è alla fineabbastanza semplice. Sulle prestazioni relative alla connessione al mondo di internet notiamo un sostanziale pareggio dal punto di vista server(entrabi lo possono diventare senza problemi) ma ovviamente una netta vincita da perte del rasperry pi quando si parla di navigare e di facilità di interazione(si usa un normale browser!).
In fin dei conti, tirando le somme, non possiamo decretare un vero vincitore. Ogni tavoletta è perfetta per lo specifico in cui è stata progettata. Mentre la Arduino ha discreti vantaggi poichè è una architettura semplice ma potente con tanti pins I/O, che le permettono di essere la regina nell’iteraction design; la Raspberry Pi vince nel mondo del multimedia(sopratutto video, dove arduino fallisce miseramente), poichè ha tutte le dinamiche di un computer ma in dimensione ridottissima.
Utilizzi preferiti per Arduino: Interaction Design, Robotica, led controller, progetti con molti I/O, comunicazione wireless, intallazioni con più di un controllore.
Arduino progetti cool: La pianta che ti twitta quando ha sete, Indicatore della strada di casa, Sintetizzatori, 3D Printer
Utilizzi preferiti per Raspberry Pi: Home Media Center, mini computer “da tasca”, Robotica avanzata, programmazione di altri dispositivi.
Raspberry Pi progetti cool: Radio che legge i tweet, Televisore streaming, Robot controllato dalla voce
Interessante questo post, era quello che cercavo, un confronto pacato tra le due schede.
Se posso chiedere, mi piacerebbe l’utilizzo di questi per un paio di cose:
1) un lettore mp3 da collegare all’impianto Hi-Fi;
2) un sistema per il volo simulato controllato via IR (system-trackingIR)
Se le cose fossero nella stessa scheda sarebbe come fare tombola.
Unici nei: capisco poco e nulla di programmazione, anche se mi incuriosisce molto, così pure di elettronica.
Mi daresti qualche suggerimento.
Grazie
Ciao Carlo!
Non mi è chiaro cosa intendi nel punto 1)…nel collegare un lettore mp3 ad un impianto stereo Hi-Fi perchè dovresti mai passare per una scheda? Basta che colleghi con un jack o un mini jack il lettore all’impianto!
Per il 2), la vedo dura. Il system tracking funziona solo oggetti a poca distanza(pochi cm), in che senso vorresti usarlo per controllare un sistema di volo? Cmq la arduino va più che bene per l’IR e credo che già molti esperimenti siano stati fatti in questo campo.
Grazie della risposta. Sì so già del collegamento con il lettore mp3 e minijack, ma da quello che ho capito dipende molto dalle differenza delle impedenze tra lettore mp3 e impianto.
Nel secondo caso ho già realizzato un sistema usando Freetrack con 4 led e la cam VX-3000 della MS, ma essendo tutto gestito dal software il carico sul pc è molto gravoso. Quindi pensavo ad arduino per poter gestire i flussi IR e la gestione giroscopio ecc.ecc. necessari nella simulazione di volo in 3D. So che la stessa cosa è possibile utilizzando il Wiimote della Intendo, ma l’open sources mi aggrada di più, nonostante la mia ignoranza…
Allora per 1) si è vero il collegamento tra mp3 e Hi-Fi dipende anche dalle impedenze, ma purtroppo su questo ci puoi fare poco, anche se si utilizzasse una scheda le cose non penso migliorerebbero.
Per il 2) non so molto dell’argomento, però mi sembra strano che per un pc non sia in grado di reggere il peso dei calcoli di un sistema IR. Casomai è più un problema legato all’aquisizione dei dati…non tutti i pc hanno una DAQ per la connessione di segnali analogici in imput/output per sensori e per motori. L’uso delle schede tipo arduino può aiutare il pc rispetto alle connessioni output/input, in modo da passare al/dal pc il dato già processato da una DAQ-e quindi già trasformato in segnale digitale. Solo in questo modo si può usufruire delle schede. Se tu invece volessi utilizzare le schede per “calcolo parallelo” al pc è uno spreco di tempo. Le schede sono tanto piccole quanto inutili dal punto di vista della potenza di calcolo.
Dimenticavo, avevo trovato alcune pagine web circa questa cosa del controllo IR e dei giroscopi e accelerometri, qui alcune pagine:
https://www.sparkfun.com/products/9332
https://www.sparkfun.com/pages/accel_gyro_guide
Il problema è mettere assieme i vari pezzi per avere un risultato e data la mia ignoranza…devo capire come iniziare.
Leggere da accellerometri e/o giroscopi non è poi così difficile. La arduino fa già la trasformazione da segnale analogivo a digitale quindi quando vai a leggere il segnale vedi solo un numero che rifletterà la velocità a cui si sta muovendo il sensore(nel caso dell’accellerometro-ma è analogo per il giroscopio). Poi cosa farai con quel numero sta a te decidere! Non ho capito bene come vorresti implementarlo con un sistema di volo…intendi tipo per monitorare un modellino di veivolo?
No, la mia intenzione sarebbe quella di utilizzare arduino per l’headtracking via IR, ma non con un modellino reale, ma per alcuni simulatori di volo (FSX, BMS). So che in realtà ci sono alcuni prodotti che già lo fanno come Freetrack, FreetracknoIR (ambedue lo fanno con un controllo via software) oppure come TrackIR. In realtà , visti alcuni video di Arduino per questa attività , mi intrigava realizzarne uno in cui la scheda fa da controllore dei movimenti della testa similmente a quello che fa il TrackIR utilizzando per l’appunto una sorgente infrarossa. Non so se sia possibile ed è per questo che chiedevo.
Grazie dell’attenzione
Carlo
Un’altra dimenticanza è l’aggiunta di FreeIMU ad arduino: http://www.varesano.net/projects/hardware/FreeIMU