Still alive

Questo slideshow richiede JavaScript.

Annunci

Android ti presento Arduino

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!

MultiWii: piccole novità

Grazie al forum di Arduino e in particolar modo all’utente Astrobeed si sono evidenziate alcune dimenticanze/imprecisioni sui tutorial presenti sul sito di multiwii.

Ho sperimentato la nuova configurazione e sembra che le cose siano leggermente migliorate, perciò fate caso anche a questi due particolari:

  • Alimentazione: questi dispositivi i2c vanno alimentati a 3.3 volt, e quindi non direttamente dal pin 12. Le soluzioni sono due, attaccarsi all’uscita 3.3v di arduino o mettere in serie al pin 12 due diodi in modo da abbassare la tensione.
    (NB: in questo caso saremmo anche protetti da eventuali freeze del wm+).
  • Resistenze di pullup: per aiutare il funzionamento del protocollo i2c bisogna prevedere due resistenze di pullup di adeguata dimensione, dai calcoli che ha effettuato Astrobeed risulta che servono due resistenze da 1.5k ohm da mettere tra i bus SDA e SCL e l’alimentazione. (In pratica i pin A4 e A5 devono essere collegati al 3.3 volt con le resistenze)

Se ci saranno altre novità non esiterò a citarle, intanto ecco il video con la nuova configurazione:

MultiWii: come collegare il nunchuck e il Wii motion plus ad Arduino

Dopo aver provato ad utilizzare i giroscopi e gli accelerometri presenti nei sensori della wii all’interno dei loro case, è giunto il momento di estrarli e collegarli direttamente.

Per far ciò ho preferito saldare direttamente i fili già presenti invece di saldare direttamente sui pcb a causa delle dimensioni degli stessi, quando avrò una stazione saldante più seria mi cimenterò anche in queste saldature più piccole.

Si tratta solo di collegare i fili giusti, quindi la difficoltà non è altissima..

Per il collegamento basta seguire queste due immagini (io ho usato un arduino Uno)

Per ulteriori dubbi o perplessità vi rimando al video in cui vi mostro come ho smontato e collegato i due sensori, e il loro funzionamento attraverso il software MultiWii.

 

EDIT: come richiesto metto una foto che mostra dove va il filo verde citato nel video

Primi passi con Arduino e un giroscopio

Ecco i miei primi passi verso il mio primo quadrotore..

Il Wii Motion Plus (giroscopio a 3 assi) ed Arduino Uno.

Nell’utilizzo di MultiWii citano l’utilizzo di Arduino pro mini, ma a quanto pare non è facilissimo da trovare.. Quindi prima di disperarmi ho deciso di provare se poteva andare anche con la Uno..

Sembra vada tutto bene :):)

Il filmato non è il massimo ma era solo per provare, più avanti metterò video migliori..

Il software di arduino è quello di Multiwii, come anche la GUI che vedete sullo schermo, ma se volete provare a collegare per la prima volta il Wii Motion Plus ad Arduino vi consiglio quest’ottima guida.

Simulatore Arduino

Al momento non è possibile trovare una soluzione rapida ed efficiente per emulare un circuito con arduino, ma siccome la richiesta è molta appena trovo qualcosa la voglio pubblicare..

L’ultima novità salta fuori da spice, e in particolare dal plugin Proteus, che permette di emulare il microcontrollore Atmega328p, il cervello di arduino.

Quello che bisogna fare è costruire il circuito base di arduino standalone, e dopodichè sarà possibile utilizzare gli strumenti classici di spice in abbinamento con la programmazione dell’ide di arduino.

Ciò che dovete fare lo potete trovare in questo tutorial in lingua inglese.   [link aggiornato, grazie Cris]

Buon divertimento con il vostro simulatore di arduino 🙂

ArduKal I pilotato da arduino

Dopo aver provato l’hardware di ArduKal I con un radiocomando è arrivato il momento di insegnare ad Arduino a pilotarlo..

Al momento non gestisco ancora le letture dei poli del motore, quindi per ovviare alle differenti velocità dei servomotori mi sono affidato ad una calibrazione manuale..

La parte bella è che riesco a gestire i servi anche con una  normale batteria da 9V :):)

Le prossime cose da fare sono: trovare delle ruote migliori e al posto delle mollette in plastica (obrobriose..) mettere una ruotina pivotante, utilizzare i dati dei poli, e infine dare un pò di ‘vista’ al robot.. Vedrò se usare dei baffi, sensori ir della sharp, o dei semplici led ir con algoritmo erer..

E poi chissà.. ho messo i servi al centro perchè magari potrò fare a meno del ruotino pivotante e tenere il robot in equilibrio con un giroscopio..

Intanto ecco il video del robot che ‘disegna’ un quadrato 🙂

PS: ovviamente appena sarà completato scriverò un tutorial un pò più ordinato 😉