Arduino Robotica ed Elettronica

Google recentemente ha rivelato che i device Android potranno essere collegati a dispositivi hardware grazie all’utilizzo di ADK (Android Open Accessory Development Kit).

Ma chi non ha voglia di spendere i 400 dollari del kit può già sperimentare una sorta di comunicazione partendo da una spesa praticamente irrisoria.

Ebbene si, non useremo i soliti wi-fi o bluetooth, ma un semplice filo smaltato, una resistenza e un diodo. Eresia? State a vedere.

In realtà il principio di funzionamento è estremamente semplice: i dispositivi recenti sono dotati di magnetometro, uno strumento sensibile alle variazioni e alla direzione dei campi magnetici, e noi useremo il filo come una bobina e variando il campo magnetico prodotto comunicheremo con il device.

Chiaramente avrete già capito che si tratta di una comunicazione di sola andata e a bassa velocità, ma per quello che costa cosa vi aspettavate?

Il circuito da costruire è anch’esso estremamente semplice, la resistenza servirà a limitare la corrente, mentre il diodo offrirà una protezione flyback.

La bobina, formata da circa 30 giri del diametro di 1 cm, produrrà un campo magnetico in base alla quantità di corrente che vi faremo scorrere.

Per trovare la posizione esatta del magnetometro nel telefono useremo un’ottima applicazione gratuita che potete scaricare dal market, Tricorder.

(Chi è fan di Star Trek starà già sbavando..)

Questa applicazione ci mostra dei semplici grafici ottenuti dai vari sensori presenti sul device, tra cui appunto il magnetometro.

Una volta individuato, potete usare anche una calamita, possiamo passare alla stesura dello sketch, ma prima una chiarificazione: i limiti di questo esperimento ci sono e sono abbastanza pesanti, il magnetometro ha un sampling rate di soli 40 Hz, quindi nulla di estremamente veloce.

Ma a parte questo ecco lo sketch da caricare:

#define BIT_DELAY 140
int i;
char *text = “Hello World! “;
void setup() {
  pinMode(13,OUTPUT);
}
void loop() {
  char *s;
  s = text;
  while (*s != 0) {
    transmitByte(*s++);
  }
  delay (BIT_DELAY*10);
}
/**
 * Bit bang a byte
 */
void transmitByte (byte c) {
  // Start bit
  digitalWrite (13,1);
  delay(BIT_DELAY);
  // Data bits
  for (i = 0; i < 8; i++) {
      digitalWrite (13, ( (c&0x80)!=0 ? 1 : 0) );
      delay(BIT_DELAY);
      c <<= 1;
  }
  // Stop bit
  digitalWrite (13, 0);
  delay(BIT_DELAY);
}

Ed ecco fatto, come vi avevo promesso non si tratta di nulla di trascendentale, a questo punto vi basterà scaricare il software android da qui , e cominciare a sperimentare!

A chi non bastasse tutto ciò,  può spingere al massimo questa idea con alcuni piccoli accorgimenti:  utilizzando un vero DAC, (o al massimo il pwm su un filtro passa basso),  possiamo sfruttare gli 8 bit di risoluzione del magnetometro, oppure visto e considerato che il sensore è sensibile alle variazioni sui 3 assi, potremmo costruire 3 bobine da utilizzare contemporaneamente.

Chiaramente questo è solo un piccolo assaggio di ciò che vorremmo fare, il mondo dell’open source e quello dell’open hardware si tendono la mano in questo piccolo esperimento, ma il futuro sembra estremamente roseo.

A mio avviso è da notare un’altra soluzione low cost suggerita da un commento dell’articolo originale, ormai molti device hanno una fotocamera e un flash a led, e quindi suggeriva di utilizzare questi abbinati ad un led e una fotoresistenza su arduino.

In questo caso quindi si avrebbe una comunicazione a due vie, e probabilmente si potrebbe addirittura andare un pochino più veloci, anche se avere la fotocamera continuamente accesa porterebbe ad un consumo eccessivo della batteria. (il sensore di luminosità che controlla lo schermo è troppo lento).

Come ultima possibilità, in onore del low cost, possiamo pensare di passare attraverso il jack delle cuffie.

Esiste già un programma, AudioSerialOut, che permette di utilizzare le cuffie come un’uscita seriale, pronta ad essere raccolta da un microcontrollore.

In questo caso poi, si avrebbe una velocità notevole, ma ancora una sola via di comunicazione..

A meno che non si riesca a collegare il microfono delle cuffie ad un uscita di Arduino e far leggere ad Android i dati ricevuti.

Queste sono le alternative che ho trovato per far comunicare il nostro telefono con il nostro Arduino, ma sicuramente ce ne saranno delle altre, avete qualche altra proposta low cost? scrivetela nei commenti!

Commenti su: "Android ti presento Arduino" (2)

  1. lacoscienzaperduta ha detto:

    Android ha il grandissimo vantaggio di avere un ottica ‘open’ per le integrazioni e l’accesso alla piattaforma, purtroppo Izozz viene limitato, limitando la fantasia degli sviluppatori…

    Infatti se andiamo a vedere le fetatures possibili con android non c’è limite alla fantasia dello sviluppatore su iPhone be la carogna prima di andare a miglior vita ha deciso che il # è un carattere MALEFICO ed io non posso sviluppare su Izozz una app veloce come andoird per un callingh card dialer…

    Ma be si la mesa è trendy e stabile…. certo che è stabile!!! anche il cancello automatico di casa mia, che deve fare solo avanti e indietro è stabile…

    Vorrei vedere le capacità di apple di sviluppare un S.O. pc o mobile che possa andare a priori su hardware ‘general purpose’ a priori…

    Purtroppo i fanboy apple hanno un baco che gli si è magnato il cercello e vedono solo retina, ohhhh facetime (che se non ho la wifi mi servono 2 izozz x usarlo… 1 in tethering ed uno con facetime…. ba….

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Tag Cloud

%d blogger cliccano Mi Piace per questo: