Pages: [1]   Go Down
Author Topic: [Arduino Vs Android] Open accessory protocol: problema  (Read 675 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Da pochissimo avvicinatomi all'ambiente Arduino cerco subito lumi.
Devo gestire un certo scambio dati tra Arduino e terminale Android, pertanto come prima cosa ho cercato di testare un sample di comunicazione che mi hanno passato:

Code:
#include <Max3421e.h>
#include <Usb.h>
#include <AndroidAccessory.h>
 
#define ARRAY_SIZE 12
 
AndroidAccessory acc("Manufacturer",
"Model",
"Description",
"Version",
"http://mondocrudele.com",
"0000000012345678");
 
char hello[ARRAY_SIZE] = {'h','e','l','l','o',' ',
'w','o','r','l','d','!'};
char alo[ARRAY_SIZE] = {'t','e',' ','l','o',' ',
's','c','o','r','d','i'};
 
void setup() {
  Serial.begin(9600);
  acc.powerOn();
}
 
void loop() {
  if (acc.isConnected()) {
    for(int x = 0; x < ARRAY_SIZE; x++) {
      Serial.print(hello[x]);
      delay(250);
    }
    Serial.println();
    delay(250);
  }
  else {
  for(int x = 0; x < ARRAY_SIZE; x++) {
      Serial.print(alo[x]);
      delay(250);
    }
  Serial.println();
  delay(250);
}
}

Inserite le librerie, compilo il codice e lo carico sulla scheda (ARDUINO MEGA ADK).
A quel punto collegando la scheda al terminale Android il monitor seriale non dovrebbe visualizzare in loop il messaggio? Non visualizza neanche quello relativo al ramo else.
Testato con i seguenti smartphone:
Sony xperia Arc aggiornato ad ICS, kernel 2.6.32.9
Samsung Galaxy S Android 2.3.4, kernel 2.6.35
Ho letto che è stato fatto il backport dell'open accessory alle versioni 2.3.4 quindi mi chiedo:
sbaglio qualcosa? o i due terminali non supportano l'OA?
Logged

Offline Offline
Edison Member
*
Karma: 28
Posts: 2031
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Allora come hai collegato la scheda al tuo cell?puoi mettere una foto?
Hai caricato lo sketch sulla mega l'hai collegata al cell e poi che hai fatto?pretendi che i caratteri ti compaiano sullo schermo cosi per magia?hai bisogno di un app che riceva i dati via seriale!(credo ceh tu lo sappia no?)
ne usi già una?

Aiutaci ad aiutarti  smiley-mr-green
« Last Edit: July 12, 2012, 03:34:15 am by Madwriter » Logged

"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

Offline Offline
Newbie
*
Karma: 1
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Allora mi sa che sto sbagliando io.
Nelle mie intenzioni (e secondo quanto ho letto  qua)bastava collegare alla porta usb tipo A di Arduino un telefono compatibile con l'accessory mode (e saperlo quali sono sti telefoni a parte i googlefonini)e alla porta usb di tipo B il Pc. A questo punto dall'IDE di Arduino apro il monitor seriale (serial.print stampa là no?). Infatti se rimuovo la riga con il metodo powerON() che dovrebbe servire ad attivare il device android, sul monitor seriale leggo le stampe del ramo else visto che la var isConnected ovviamente sarà false.
Con quello sketch volevo semplicemente testare il corretto collegamento, lato Android per adesso non voglio che faccia nulla.
Logged

Offline Offline
Edison Member
*
Karma: 28
Posts: 2031
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

giustamente se stampi su seriale li vedi sull'ide hai ragione  smiley-mr-green come debug è perfetto cosi  smiley-mr-green
Logged

"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

Offline Offline
Newbie
*
Karma: 1
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

A questo punto potrebbe essere un problema ci compatibilità? Se il metodo powerOn() non fa nulla anzi inficia il funzionamento del codice nel loop(perché non stampa il ramo else) potrebbe essere perché entrambi i telefoni che ho provato non supportano l'accessory mode?
In tal caso mi procurerò un terminale con versione 3.1+, troppo comodo scrivere su device con acc.write()  e leggere con acc.read()  smiley-mr-green
Logged

Offline Offline
Edison Member
*
Karma: 28
Posts: 2031
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

purtroppo vedo che c'è pochissima documentazione,purtroppo posso aiutarti poco anche essendo programmatore android io ci comunico via bluetooth seriale e non ho tutti questi problemi  smiley-mr-green
http://letsmakerobots.com/node/26839
a quanto pare co nexus funziona!
mah chissà dovrebbe funzionare in teoria anche col tuo prova un pò i loro esempi.
Visto che comunque tu hai l'host sulla scheda il telefono dovrebbe supportare via software la accessory mode.
Altrimenti prova a seguire questa guida:
http://blog.makezine.com/archive/2011/06/using-the-android-open-accessory-api-without-a-nexus.html
Logged

"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

Pages: [1]   Go Up
Jump to: