Go Down

Topic: Besoin d'aide pour Bluetooth shield v2.2 (Read 2625 times) previous topic - next topic

phos

Bonjour à tous,

Je suis tout à fais nouveau dans ce domaine donc excusez-moi si je fais des erreurs.
Je vous explique mon problème :

Je dois récupérer des valeurs d'accélération et d'angles et les transmettre à un ordinateur via Bluetooth.
J'utilise donc un shield (https://www.sparkfun.com/products/10121) permettant de récupérer ces valeurs, composé d'un accéléromètre (ADXL345) et d'un gyroscope (ITG3200). Les valeurs sont transmises par communication i2c avec un Arduino UNO.

Lorsque je fais les tests par câble USB tout marche à merveille et je peux lire les valeurs dans le moniteur série de l'IDE arduino.

Seulement voilà j'aimerais les envoyer via Bluetooth, et pour ça j'utilise ce shield http://itead-europe.com/pm/platform/shield/bt%20shield%20%28master%20slave%29/DS_IM120417010_BTShield.pdf. Mais j'ai eu beau chercher sur internet des tutos ou des exemples je n'ai pas trouver grand chose ! Il n'existe pas de librairie non plus contrairement à l'accéléromètre , donc j'aimerai savoir comment peut-on faire pour envoyer ces valeurs avec ce shield.

Voici mon code :

Code: [Select]
#include <Wire.h>
#include <CommunicationUtils.h>
#include <DebugUtils.h>
#include <FIMU_ADXL345.h>
#include <FIMU_ITG3200.h>
#include <FreeSixIMU.h>

float acc [3];
float gyr [2];

FreeSixIMU accgyr = FreeSixIMU();

void setup(){
  Serial.begin(9600);
  Wire.begin();
 
  delay(5);
  accgyr.init();
  delay(5);
 
}

void loop (){
  accgyr.getValues(acc);
  accgyr.getEuler(gyr);
 
  Serial.print("#S|CSV|[");
  Serial.print("   ");
 
  Serial.print(gyr[0]);
  Serial.print(";");
  Serial.print(gyr[1]);
  Serial.print(";");
  Serial.print(gyr[2]);
  Serial.print(" ; ");
  Serial.print(acc[0]);
  Serial.print(";");
  Serial.print(acc[1]);
  Serial.print(";");
  Serial.print(acc[2]);
 
  Serial.println("]#");
 
  delay(50);
 
 
 
}



Merci pour vos réponses !

skywodd

Bonjour,

Ces modules bluetooth sont très simple à utiliser.
Ils agissent comme un pont série entre deux points bluetooth de manière transparente.

Le plus compliqué dans ta shield c'est de mettre les jumper correctement ;)
Si tu met les jumper Rx=D1 Tx=D0 il te suffit d'utiliser Serial pour envoyer tes données.
Si tu met les jumpers sur d'autres broches il te faut SoftwareSerial.

Ne pas oublier de mettre le switch en mode "data" quand tu veut envoyer des données.

Ensuite dans ton code la vitesse du port série n'est semble-t-il pas bonne :
Quote
Default state:
Slave mode, pin code :1234, device name: H-C-2010-06-01 ,Baud 38400bits/s.


Essaye donc :
Code: [Select]
Serial.begin(38400);
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

phos

Ok merci je vais modifier et essayer pour voir si ça marche :)

encore merci a + !

phos

Re,
J'avais réussi à établir la connexion entre un pc  et l'arduino avec le module bluetooth, je recevais alors les valeurs exactement comme par câble.
J'ai réessayé il y a quelques temps et depuis plus rien ne fonctionne correctement... Quand je fais par câble tout va bien , mais quand j'essaye de nouveau le bluetooth il me renvoi tout un charabia incompréhensible :

üµãµãµãµãµüµãµãµüµãµãµüµüµüµãµãµãµãµüµãµãµãµãµãµüµãµüµãµüµüµãµüµüµüµüµüµãµãµãµãµãµüµãµãµãµãµüµãµ
üµãµãµüµãµüµüµüµãµãµãµãµüµüµüµüµãµãµãµüµüµüµãµãµãµãµãµãµãµãµüµãµüµãµüµüµãµüµüµüµãµãµüµüµãµüµüµüµ

Voilà ce que je reçois sur le port série.
J'ai un peu modifier le code mais je ne vois vraiment pas d'où ça vient :
Code: [Select]
#include <Wire.h>
#include <CommunicationUtils.h>
#include <DebugUtils.h>
#include <FIMU_ADXL345.h>
#include <FIMU_ITG3200.h>
#include <FreeSixIMU.h>

float acc [3];
float gyr [2];

FreeSixIMU accgyr = FreeSixIMU();

void setup(){

  Serial.begin(38400);
  Wire.begin();
 
  delay(5);
  accgyr.init();
  delay(5);
 
}

void loop (){

  accgyr.getValues(acc);
  accgyr.getEuler(gyr);
 
  Serial.print("#S|CSV|[");

  Serial.print("   ");
  Serial.print(gyr[0]);
  Serial.print(";");
  Serial.print(gyr[1]);
  Serial.print(";");
  Serial.print(gyr[2]);
  Serial.print(" ; ");
  Serial.print(acc[0]);
  Serial.print(";");
  Serial.print(acc[1]);
  Serial.print(";");
  Serial.print(acc[2]);
 
  Serial.println("]#");
 
  delay(50);
 
 
 
}


Merci pour vos réponses !

skywodd

C'est surement un problème côté ordi, vérifie le paramétrage de ton logiciel série ;)
Sinon test avec un simple "hello world" en boucle.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Go Up