Nous sommes des élèves de terminale S SI et nous avons choisi comme projet de réaliser une canne pour aveugle à base de capteurs ultrason HC-sr04. L'enjeu de ce projet est de transmettre la distance mesurée par les capteurs à l'utilisateur pour le prévenir d'un obstacle à travers d'une application android. Pour cela, nous utilisons un module bluetooth HC-06 et nous essayons depuis quelques jours de trouver un simple code pour tester une transmission de données (ici une valeur pour le moment). Malheureusement après des heures de recherche, nous ne comprenons pas très bien les codes proposés car la plupart du temps cela est mal expliqué ou pas ce que l'on recherche. Pour le moment, nous avons simplement réussi à nous connecter au module.
Ainsi nous décidons de nous tourner vers vous, amateurs d'arduino. Est-ce que quelqu'un pourrait nous proposer un code nous permettant d'envoyer une distance ?
Nous mettons à disposition notre code appinventor :
if (millis()-temps >5000)
{
//Serial.print("Test liaison HC-06 bluetooth ");
Serial.println(counter);
Serial3.print(counter++);
if(counter==4){counter=1;}//Serial.println("");
//Serial.print(" " );
temps=millis(); //Un envoi de données par seconde
}
Pour que ça fonctionne bien, il faut que la variable temps ait été définie de type 'long' et initialisée auparavant avec 'temps = millis();' (ce dernier point n'étant pas nécessaire)
J'avais aussi essayé au tout début de configurer mon module bluetooth HC-06 mais voilà ce qu'il me répond lorsque je tape "AT" (je précise que ce n'est pas mon code) :
Pour les opérateurs en C (comme ++), voir ici
Le reste est bon
Pour la configuration du module BT as-tu configuré en 9600 bauds ? Ta photo vient d'un sketch de discussion série avec le module ou c'est juste une commande envoyée dans la console ?
Oui je l'avais bien configuré en 9600 bauds et ma photo vient d'une commanda envoyée dans la console.
Mais juste, dans le code arduino ci-dessus, Serial3 représente le bluetooth ?
Les numéros 10 et 11 sont à adapter selon ton branchement du module BT.
Pense aussi au fait que le module BT doit avoir du 3.3V sur la patte RX (l'autre supporte bien le 5V), voir ici : il faut mettre un pont diviseur si ton Arduino fournit du 5V.
Tu declares une ligne SoftwareSerial sur les broches 0 et 1.
Or ces broches sont celles utilisées par Serial (liaison avec l'IDE)
Utilise d'autres broches pour ta ligne série supplémentaire.
Je pense que niveau branchement nous n'avons pas de problème :
Le GND est branché au GND
Le VCC directement au 3,3 V de notre nano
Rx branché à RX0 et TX à TX1
Il y a aussi quelque chose que je ne comprends pas très bien et je me demande si cela est utile pour nous qui souhaitons simplement envoyer des données :
À quoi sert cet extrait :
if (HC06.available()){
Serial.println(HC06.read()); //par exemple
{
J'ai fait quelques recherches et HC06.available() signifierait que le module reçoit quelque chose mais est-ce obligatoire dans notre cas ?
f (HC06.available()){
Serial.println(HC06.read()); //par exemple
{
à traduire par :
si le Bluetooth à reçu quelque chose, on le lis.
sinon, on continue le prg
donc à chaque tour de boucle le prg vérifie si le bluetooth à reçu une data
j'ai un gros doute sur votre branchement.
qu'y a t'il d'indiqué sur l’arrière de votre platine bluetooth?
Très bien donc, dans notre cas, nous n'avons pas besoin du if (HC06.available()){. Merci de vos réponses et du coup concernant le réglage du bluetooth des idées pourquoi cela me renvoie cela ?
Je pense qu'il dit que tu ne lis pas bien ce qui est écrit.
Ta conclusion "je n'ai pas besoin de HC06.available()" est fausse.
Tu as un programme qui tourne sans arrêt, qui exécute sans cesse des instructions.
Or il n'y a pas sans cesse des données qui arrivent par le bluetooth.
Quand des données sont arrivées, il faut faire quelque chose,
sinon il faut faire autre chose, ou ne rien faire.
Tu as donc strictement besoin de la fonction available() pour savoir quoi faire dans ton programme.