Go Down

Topic: Arduino - bluetooth - android (Read 1 time) previous topic - next topic

vibram

Bonjour à tous,
Avant de me lancer dans l'apprentissage d'une application android, j'aimerais être sur que mon projet soit réalisable, je viens donc vous demander un peu d'aide.
L'idée ce serait d'avoir une appli android qui se connecte à l'arduino en bluetooth et qui scan le code de l'arduino afin d'en détecter les variables et ensuite proposer d'envoyer les commandes pour modifier les variables en question.
Il y a deja pas mal d'infos sur l'envoi de commandes via le serial et bluetooth mais je me demande si la première partie de l'appli à savoir scanner/lire le code présent sur l'arduino est réalisable.

Merci de votre aide et bonne journée

vibram

#1
Sep 20, 2016, 04:18 pm Last Edit: Sep 20, 2016, 04:41 pm by vibram
Je me réponds (c'est bon pour le moral)
Du coté de l'arduino, je pense mettre ce bout de code:

Quote
String inputString = "";         // a string to hold incoming data
boolean stringComplete = false;  // whether the string is complete

void setup() {
  // initialize serial:
  Serial.begin(9600);
  // reserve 200 bytes for the inputString:
  inputString.reserve(200);
}

void loop() {
  // print the string when a newline arrives:
  if (stringComplete) {
   // Serial.println(inputString);
    Serial.println(Var1);
    Serial.println(Var2);
    Serial.println(Var3);
    // clear the string:
    inputString = "";
    stringComplete = false;
  }
  delay(500);
  // Serial.println(inputString);
}

/*
  SerialEvent occurs whenever a new data comes in the
 hardware serial RX.  This routine is run between each
 time loop() runs, so using delay inside loop can delay
 response.  Multiple bytes of data may be available.
 */
void serialEvent() {
  while (Serial.available()) {
    // get the new byte:
    char inChar = (char)Serial.read();
    // add it to the inputString:
    inputString += inChar;
    // if the incoming character is a newline, set a flag
    // so the main loop can do something about it:
    if (inputString == "list") {
      stringComplete = true;
    }
  }
}
Si j'envoie "list", alors je renvoie les variables
une chose m'inquietait: c'était la durée écoulée durant laquelle le processeur doit effectuer l'opération mais je crois que le SerialEvent est censé répondre à ce problème de maniere plus efficace que de mettre le Serial.available dans le loop.

Si cela ne pose pas de souci, je vais m'attaquer à la partie android que ce soit via WIFI ou bluetooth.
J'ai deja regardé Blynk mais cela ne répond pas à mes exigences. Je dois encore tester Amarino, je suis dubitatif. Mais je n'ai pas spécialement envie de créer ma propre appli

Jambe

mais je me demande si la première partie de l'appli à savoir scanner/lire le code présent sur l'arduino est réalisable.

Le problème majeur c'est que le code que tu écris en C/C++ est compilé avant d'être écris dans l'arduino. Et donc il ne ressemble plus en rien à quelque chose de lisible par l'homme (c'est du binaire) et de ce fait le nom des variables n'existe plus

vibram

Salut Jambe et merci de ta réponse
Avec le bout de code ci dessus, j'arrive à obtenir quelque chose de lisible dans le serial.
A voir ce que j'arrive à en faire via l app Android mais je lutte pas mal même avec les premiers tutoriels de base

dfgh

#4
Sep 21, 2016, 09:11 am Last Edit: Sep 21, 2016, 11:48 am by dfgh
hello
tu as mal posé ton problème
"l'android doit scanner le code dans le 328 et y trouver les variables".

comme te le signale jambe, le code n'est plus lisible au vrai sens du terme.

ta solution échange le plus normalement du monde entre androide et 328
à savoir: quelles sont tes variables et le 328 répond

c'est équivalent à "quel est l'état de l'entrée D6 ou Dx ?" et le 328 répond "1" ou "0"


vibram

Salut dfgh, merci pour ta réponse.
Tu as raison, c'est pour ca que je m'oriente sur une fonction à executer coté arduino lorsqu'il recoit la commande "list" via le Serial ainsi il envoie les infos comme je le souhaite.
Maintenant je dois créer l'app android pour que dans l'ordre:
1. Connexion via WiFi ou BT
2. envoie de la commande list
3. réception des données et analyse de celles ci (a savoir quelle variable et quelle valeur)
4. envoie des commandes à l'arduino

Y'a encore du boulot...

Go Up