Vos talents en rétroengineering

Bonjour,

J’ai un grand besoin de vos talents en rétroengineering pour avancer sur un projet très intéressant de tracteur télécommander avec une application SMATPHONE + Arduino nano

J’ai le fichier APK de l’applic et le fichier *.ino pour le nano, mais pour l’instant je n’en tire RIEN

Le projet complet est ici Android app based Bluetooth controlled RC Tractor (Arduino Nano) by shivackt - Thingiverse avec une vidéo assez explicite : Android app based Bluetooth controlled rc tractor - YouTube

Malgré mes tentatives répété le concepteur ne m’a jamais répondu.

L’application APK n’est pas véroler et très bien faite, je peux me connecter sur un arduino uno mais je ne vais pas plus loin !

UNE BONNE AME pourra-t-elle se pencher dessus est me dire si l’on peut en tirer quelque chose ?

J’ai tous les fichiers à disposition(sinon dans le lien de thingiverse) et reste à l’écoute pour plus d’infos.

Merci par avance,

Qu'elles infos te manque-t-il?

Bonsoir Henrigp

C'est à dire? Tu ne peut pas télécharger le programme, tu as des erreurs, tu ne sait pas ce que fait le programme de l'Arduino......
Il faut plus de détails sur ce qui te bloque.

A+
Cordialement
jpbbricole

C'est pour commander un modelé réduit de tracteur avec un smartphone, le .APK est bien fait mais pour le reste je ne sais pas et mes premiers essais ne sont pas vraiment concluant,
En fait j’ai utilisé un peu ARDUINO il y a une demis douzaines d’années et il faut que je regroupe tout ça (et j’ai pris 6 ans + une leucémie entre temps + la retraite ! )
Vous avez ouvert le fichier et ceci vous semble cohérant ?
Déjà au départ j’ai eu un problème avec la première ligne #include "Timer.h" qui ne semble pas être la librairie standard,
Si je me souviens un peu de ARDUINO selon la forme de déclaration du #include les accolades <> ou les deux "" signifient que la lib est dans le USER de ARDUINO ou dans un répertoire !
Ensuite j’utilise pour le moment un UNO plutôt qu’un NANO, mais ce ne devrait pas trop changer une fois le brochage adapté,
J’utilise comme composant BLUETOOTH un H05 en 9600 baud, Quel serai la façon de récupérer une chaine afin de voir si je communique bien ? (ce serai un premier pas) Merci de votre aide.

Pour le moment ouvrir le fichier et voir si ça vous semble cohérant,
Déjà la lib "timer.h" ne passe pas

Bonjour Henrigp

Le programme me semble pas fini? L'entrée pour le Bluetooth n'est pas faite

//#include <SoftwareSerial.h> 
//SoftwareSerial SIM900(11,12);// RX, TX

Donc tu peux envoyer les commandes, qui devraient venir du BT, directement dans la console. D'après ce que j'ai pu voire, les commandes débutent par un *

J'ai du l'installer et l'ai déclaré

#include <Timer.h>

[quote="Henrigp, post:4, topic:885611"]
Quel serai la façon de récupérer une chaine afin de voir si je communique bien ? (ce serai un premier pas)
[/quote]

Je te ferais un petit bout de programme pour voire ce que tu reçoit du BT, le principal à faire est d'intégrer le BT, mais je rentre demain.

Cordialement
jpbbricole

A je suis vraiment preneur d'un bout de code pour exploiter le BT,
Le BT doit envoyer une chaine de caractères avec un séparateur quelconque pour les différents organes( c'est ce que je ferai !)
si j'avais ça je pourrai avancer, C'a fait si longtemps que je n'ai pas mis le nez sur ARDUINO mais c'est comme le vélo ç'a ne s'oublie pas
Merci de votre aide,
Henri

Bonjour Henrigp
Avec un peu dâvance vu le temps pourri!

Joli l'application!
En fait, chaque commande débute avec un * et a une longueur fixe, ça donne ça

*E54*H50*550*05B*05A

Pour visualiser les codes, tu prends l'exemple de SoftwareSerial SoftwareSerialExample.ino
Tu initialises ainsi:

SoftwareSerial mySerial(A0, A1); // RX, TX

Tu connectes Tx du Bluetooth sur A0 et Rx sur A1.
Avec la console à 9600 et le BT aussi tu devrais voire les codes.

J'ai pris A0 et A1 parce que beaucoup des autres pin sont déjà occupées.
Au vu des codes reçus, regardes dans le programme ce qui se passe et dit moi ce que tu en penses.

A+
Cordialement
jpbbricole

Salut la compagnie :wink:

D’après ce que j'en comprend ... le gars utilise les pins RX/TX (broche 1 et 2 ... celles du téléchargement donc !!) de la NANO par défaut , ou il doit brancher son HC05...

et ça fonctionne pour moi !!

Juste pour un test visuel sur la led 13 intégrée a la NANO :

modifier: int Rightindicator = 12;
par : int Rightindicator = 13;

depuis le Moniteur série envoyer : *P
et tu verras les warnings du tracteur :grin:

Mr jpbbricole a raison les commandes commencent par * ....

Bonne continuation et bonne prog :wave:

Bonsoir rylryl

C'est broches 0 Rx et 1 Tx, mais tu as raison, il reçoit les ordres BT sur les broches du téléchargement, ce qui est très peu pratique, c'est pourquoi je propose A0 et A1 pour la liaison BT.
La seule raison pratique d'employer les broches du téléchargement, seulement pendant le développement, est de pouvoir essayer les commandes depuis la console.

Cordialement
jpbbricole

Une des réponse venant de FACEBOOK(de Michel Coliñ) me donne ceci CECI
J'ai le câblage complet et vraiment bien fait,
Avec toute les infos données ici je devrai en tirer quelques choses.
Entre temps j'ai reçus quelques ARDUINO NANO, donc je vais tester dans la semaine.
Merci à Tous
Henri

Voici un code de test, je n'ai pas utiliser un nano, donc faudra adapter:

// Test bluetooth pour application RC Tractor V1

int compteur;
byte start = 0;
byte donneesPretes = 0;
const int maxCaracteres = 4;
char receptionBluetooth[maxCaracteres + 1]; // +1 pour le caractère de fin de chaine


void setup() {
  Serial1.begin(9600);  // port de com avec le module bluetooth
                        // à modifier selon votre carte arduino

  Serial.begin(9600);   // port USB relier au PC (c'est celui par défaut)
                        // vous n'aurez normalement pas à le modifier
  while (!Serial) {
    // wait
  }
  Serial.println("Prêt à recevoir");
}

void loop() {
  char valeur = ' ';

  if (Serial1.available()) {
    valeur = Serial1.read();
    if (valeur == '*') {
      compteur = 0;
      start = 1;
      memset(&receptionBluetooth, 0, maxCaracteres + 1);
      receptionBluetooth[compteur] = valeur;
    } else {
      if (start == 1) {
        compteur += 1;
        receptionBluetooth[compteur] = valeur;
        if (compteur == 3) {
          donneesPretes = 1;
          start = 0;
        }
      }
    }
  }

  if (donneesPretes == 1) {
    donneesPretes = 0;
    Serial.println("Chaine reçue: ");Serial.println(receptionBluetooth);
    char donnees1 = receptionBluetooth[1];
    char donnees2 = receptionBluetooth[2];
    char donnees3 = receptionBluetooth[3];
    Serial.println("-----------------------------");
    Serial.println("donnees1: ");Serial.println(donnees1); 
    Serial.println("donnees2: ");Serial.println(donnees2); 
    Serial.println("donnees3: ");Serial.println(donnees3); 
    Serial.println("-----------------------------");
  }
}