Aide pour mise en route module Bluetooth Bee

Bonjour,

J'ai acheté un module bluetooh, mais je galère un (beaucoup) à l'utiliser. Mon matériel : Carte Arduino Leonard Arduino Wireless SD Shield (http://www.evola.fr/product_info.php/en/arduino-wireless-shield-p-259) Bluetooth Bee (http://www.evola.fr/product_info.php/bluetooth-bee-p-69)

De base, le bluetooth ne semble pas être visible. Après quelques recherches, j'ai vu qu'il fallait d'abord la configurer. J'ai bien mis le switch du Shield sur "USB", mais lorsque j'envoie une commande avec le terminale de l'IDE Arduino, il se fige. Avec x-ctu j'obtient "Unable to communicate with modem" (même après un reset).

Pouvez-vous m'aider SVP ?

Merci d'avance !

Bonjour, J'ai des doutes sur la compatibilité totale du shield avec la Leonardo (qui n'a pas les mêmes ports Serie que la Uno). En particulier pour le mode "bridge", sur la position USB pour la communication directe entre le Xbee et le Pc. Les broches D0 etD1 (utilisées par le shield) ne sont pas liées à l'USB, ce sont les broches du port Serial1 de la leonardo. (voir la doc officielle de la Leonardo, le schéma et la doc du shield) Sur la Uno, Mega, Nano.. ces broches: c'est le port Serial qui, lui, est lié à l'USB donc au PC.

Pour la position "Micro" (liaison entre le shield et l'arduino) il faudra utiliser le port Serial1 dans le programme de la Leonardo.

Le problème c'est pour configurer le Bluetooth, par la Leonardo, sans doute possible par programme mais sûrement moins facile qu'avec un terminal. Une idée à creuser: configurer le Bluetooth avec une uno, si tu en disposes. Ou faire un petit soft, pour la leonardo, qui fera une liaison transparente entre le port Serial et le port Serial1 dans les 2 sens...

Merci pour ta réponse papybricol,

Je n'ai pas de Uno sous la main..

En cherchant du coté de l'incompatibilité du Shield avec la Leonardo, je suis tombé sur ce topic qui explique comment faire la laison entre Serial et Serial1 : http://forum.arduino.cc/index.php/topic,114936.0.html Conformément aux instructions données, j'ai chargé ce sketch sur la carte et mis le switch sur MICRO :

#
#define BAUD_RATE 9600
void setup() {
  Serial.begin(BAUD_RATE);
  Serial1.begin(BAUD_RATE);
  while(!Serial){ //required for the Leonardo
  ;
  }
}

void loop() {
  while(Serial.available()>0){ 
    Serial1.write(Serial.read());// input from Serial to Serial1
  }
  while(Serial1.available()>0){
    Serial.write(Serial1.read()); //input from Serial1 to Serial
  }
}

J'ai aussi essayé en changeant le BAUD_RATE à 38400 (valeur par défaut du Bluetooth Bee) dans le sketch et X-CTU, mais rien n'y fais. J’obtiens toujours le "Unable to communicate with modem" :(

Je ne comprend pas du tout pourquoi ça ne marche pas ?! Ai-je louper quelque chose ? :~

Edit : Les LED (TX, RX, RSSI, PWR) sur le Shield sont toutes éteintes, par contre le Bluetooth Bee clignote. Normal ?

Hello,

Le shield et bluetooth bee sont bien compatibles avec la Leonardo, j'utilise exactement les mêmes composants (provenant du même magasin ^_^) pour envoyer des infos sur un smartphone.

Par contre je n'ai pas souvenir d'avoir configuré quoi que ce soit sur le Bee. Mise à part via le code de l'Arduino: nom du modem, code pin, etc.

Il est par défaut en mode client/recherche, et donc clignote en continu, ce qui est normal.

Je regarde ce soir pour le code d'initialisation...

Hello,

Voici le code d'init du Bluetooth Bee.

// Use Serial or Serial1 depending of board model.
#define bluetoothSerial Serial1


void setupBluetoothConnection()
{
  bluetoothSerial.begin(38400); // Set BluetoothBee BaudRate to default baud rate 38400

  while (!bluetoothSerial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  sendBluetoothCommand("\r\n+STWMOD=0\r\n");
  sendBluetoothCommand("\r\n+STNA=Test\r\n");
  sendBluetoothCommand("\r\n+STAUTO=0\r\n");
  sendBluetoothCommand("\r\n+STOAUT=1\r\n");
  sendBluetoothCommand("\r\n +STPIN=0000\r\n");
  delay(2000); // This delay is required.
  sendBluetoothCommand("\r\n+INQ=1\r\n");
  delay(2000); // This delay is required.
}

void sendBluetoothCommand(char command[])
{
  bluetoothSerial.print(command);
  delay(500);
}

Merci Trracer, mais je n’arrive pas à compiler le code (“Erreur de compilation”). Il y a une librairie à installer ou un truc dans le genre ? :~

Donne le message d'erreur complet. Attention, le programme tel que présenté ici n'est pas complet, c'est juste la portion d'initialisation du BTBee...

Heu oui.. Désolé bêtise de ma part... Le message d'erreur complet était :

core.a(main.cpp.o): In function main': F:\arduino-1.0.5\hardware\arduino\cores\arduino/main.cpp:11: undefined reference tosetup' F:\arduino-1.0.5\hardware\arduino\cores\arduino/main.cpp:14: undefined reference to `loop'

J'ai ensuite rajouté ceci après ton code :

void setup()
{
  setupBluetoothConnection() ;

}
void loop()
{

}

Le module BT Bee s'est mis à clignoter rouge-vert, et celui-ci est devenu visible ! Merci beaucoup ! :) Me reste à potasser pour voir comment ça marche..

Questions bêtes : Le code d’initialisation doit être exécuter à chaque fois, ou les réglages s'enregistrent dans le module ?

Je ne reçois aucun print sur le terminal Arduino, et je ne peux en envoyer aucun via le bluetooth (freeze du terminal), alors que tout marche parfaitement via le port série USB.

Merci pour tout !

Oui tous les réglages sont persistants.

A noter qu'avec la séquence d'init telle que présentée, le module BT est mis en "slave". Il attend une demande de la part d'un périph, ce n'est jamais lui qui initie la connexion. Et qu'il est réglé pour ne pas se reconnecter automatiquement au dernier client.

J'ai pas compris ton problème :P

Tu ne verra rien sur le terminal de l'ide Arduino (Serial) puisque tu souhaite communiquer avec le module BT (Serial1, renommé bluetoothSerial dans le code). Tous les print() que tu fera sur le port bluetoothSerial seront visibles uniquement sur le terminal bluetooth qui se sera connecté et appairé au module.

En fait, dans mon code j'ai rajouté :

void loop()
{
  Serial.println("TestUSB");
  bluetoothSerial.println("TestBT");
  delay(1500);
  
}

En ouvrant un terminal (Tera Term) si j'écoute le port série USB (COM6 dans mon cas), j'ai bien les "TestUSB" qui arrivent. Mais si j'écoute les ports série BT (COM11 et 12), j'ai le message "Impossible d'ouvrir COM11" (ou COM12). On dirait que la liaison série n'est pas établie, pourtant la carte est bien apparié avec le PC. A ce stade je ne sais pas trop s'il s'agit d'un problème venant du module ou du PC.

Merci encore une fois pour ton aide et ta patience !

Ton com11 our com12 est, je suppose, un dongle BT ?
Quand tu l’apaire avec le bbee il te demande bien le code pin (0000) ?
Tu vois bien le bbee dans la liste des periph bluetooth (“test” dans mon exemple) disponible ?
A ce stade, si le message d’erreur vient du pc, je dirais que le probleme vient de lui (y’a pas de raison que tu ne puisse pas ouvrir le port…)

Re,

Les port COM 10 et 11 correspondent au BT intégré à mon PC portable. J'ai bien le periph "test" qui apparait, et l'appariement est ok avec le pin "0000".

En regardant dans le gestionnaire de périphériques dans la rubrique "Ports (COM et LPT)" j'ai : - Arduino Leonardo COM9 (qui correspond à l'USB) - Lien série sur Bluetooth standard COM10 - Lien série sur Bluetooth standard COM11

J'ai fait un essai avec mon téléphone Android (et le terminal "Arduino Bluetooth") : L'appariement se fait bien, mais là encore le terminal ne reçoit rien, et si j'essaie d'envoyer une commande via le téléphone, cela fait planter l'appli.

Le sketch uploadé sur l'Arduino pour le test :

#define bluetoothSerial Serial1

void setup()
{
  Serial.begin(9600);
  bluetoothSerial.begin(38400);
    while (!bluetoothSerial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
}
void loop()
{
  bluetoothSerial.println("TestBT");
  Serial.println("TestUSB");
  delay(1500);
}

Edit : J'ai réussi à me connecter avec mon Android.. Ouf c'est donc bien un problème logiciel ! Merci beaucoup ! :) :)

Edit 2 : Bon en fait cela ne s'est produit qu'une fois... Malgrès de multiple tentative, reset, appairiement/désappairiement.... Il doit y avoir une subtilité quelque part... J'ai l'impression que le module a du mal à se connecter/s'apparié, car les led rouge et verte clignote alternances tout le temps (sauf la fois où j'ai réussi à me connecter).

Mystère résolu je crois, il manque un compostant sur le module :0 Celui entouré en rouge ici :

Hello,

Effectivement il doit y avoir un souci quelque part, parce que je n'ai pas éprouvé autant de difficultés pour utiliser ce module. En fait j'ai même était étonné avec quelle facilité cela avait fonctionné :astonished: (pour une fois qu'un truc marche du premier coup...).

Je viens de renvoyer le module. Je devrais recevoir le nouveaux dans une semaine :grin:

Re Bonjour !

J'ai reçu le nouveau module. Hé ben je ne comprend pas... J'ai suivi la procédure décrite précédement, ca a marché avec mon PC et deux Android différent. Et là plus rien, a chaque fois j'ai "impossible d'ouvrir le port COM". Il y'a un truc que j'ai raté ? Possibilité de réinitialiser le module ?