Connexion impossible : Arduino Mega + BlueSmirf + Ubuntu

Bonsoir ! :grin:

Voilà, j'ai découvert les cartes Arduino il y a quelques temps deja et dans l'optique prochaine de créer un petit robot autonome et sans fil, je me suis acheté le module Bluetooth : BlueSMiRF Gold http://www.sparkfun.com/products/582.

Le probleme : cela fait 4 jours que je planche dessus, et impossible d'établir une quelconque liaison entre ubuntu et le module BlueSMiRF.

En surfant, j'ai suivi quelques tutos, et ainsi j'ai relié les pins CTS-I et RTS-0 du module.
Puis, connecter celle-ci à ma carte Aduino Mega 2560 tq:
-> Pin TX-0 [BlueSMiRF] ------ RX0 (Pin 0) [Arduino Mega]
-> Pin RX-I [BlueSMiRF] ------ TX0 (Pin 1) [Arduino Mega]

-> Pin VCC [BlueSMiRF] ------ 5V [Arduino Mega]
-> Pin GND [BlueSMiRF] ------ GND [Arduino Mega]

La carte Arduino etant alimenté à coté avec une pile de 9V.

Mais c'est à partir de maintenant que les choses se gâte :~
Ubuntu reconnait un périphérique, mais impossible de s'y appairer...

Je suis sous Ubuntu 11.04 64 bits avec Arduino 0022 qui fonctionne très (très) bien avec le cable USB XD XD

Voilà, donc si vous avez une idée, n'hésitez surtout pas ! $)

bGt_

bonjour,

J'ai déjà eu ce problème avec mon bluesmirf de sparkfun, il faut d'abord entrer en mode console par le coté série du bluesmirf puis envoyer les commandes AT qui vont bien pour le configurer.

Regarde le manuel tout est expliqué:

Yep!

Attention : L'usb utilise les pins Tx0 & Rx0.

http://arduino.cc/en/Main/ArduinoBoardMega2560

Pins 0 and 1 are also connected to the corresponding pins of the ATmega8U2 USB-to-TTL Serial chip.

@+

Zoroastre.

Tout d'abord, merci à tous les deux, vous me sortez vraiment de la galère !! :smiley:
J'ai juste deux petites questions encore...

skywodd :

il faut d'abord entrer en mode console par le coté série du bluesmirf puis envoyer les commandes AT qui vont bien pour le configurer.

Mais comment puis-je me connecter à celle-ci en mode console avec le port serie? Par l'arduino, avec les port de communication (port serial)? Ou bien c'est completement autre chose ??

zoroastre :
L'usb utilise les pin Tx0 et Rx0, cela pose t-il un problème si la carte n'est pas reliée au pc? :blush:
Sinon, je devrais utiliser les ports TX1(pin 18) et RX1(pin19) et créer un objet "Serial1", non?

Merci encore !

bGt_

Si tu as un mega relie ton dents bleues comme tu l'as dit sur TX1/RX1 et utilise Serial1.

Apès s'il faut que tu configure en commandes AT ton module, tu doit pouvoir les taper dans le moniteur qui va les transmettre au module, je pense que cela peux marcher un mini soft tel que :

void setup()
{
   Serial.begin(9600);
   Serial1.begin(9600);
}

void loop()
{
   char ch;

   if (Serial.available() > 0)
   {
        ch = Serial.read();
        Serial1.print(ch);
        Serial.print(ch, BYTE);
   }
   if (Serial1.available() > 0)
   {
        ch = Serial1.read();
        Serial.print(ch); 
   }
}

Ca devrait pouvoir fonctionner

J'avance, j'avance XD XD

J'arrive à bien me connecter à la BlueSMiRF !! En passant par le "Serial1" de la carte Arduino...

Mais maintenant en regardant la datasheep, je me demande quelles commandes je dois envoyer, pour que je puisse l'utiliser???

bGt_

P.S. : J'ai améliorer ton code Grag38, et grâce à celui-ci j'obtient :

SEND : $$
RECEIVED : CMD

Et la petite lampe de la BlueSMiRF se met à clignoter tres rapidement ! :grin:

void setup()
{
   Serial.begin(9600);
   Serial1.begin(115200);
}

void loop()
{
   char ch;

   if (Serial.available() > 0)
   {
      delay(100);
      
      Serial.print("SEND : ");
      while (Serial.available() > 0)
      {
        ch = Serial.read();
        Serial1.print(ch);
        Serial.print(ch, BYTE);
      }
      Serial.println("");
   }
   
   if (Serial1.available() > 0)
   {
      delay(100);
      
      Serial.print("RECEIVED : ");
      while (Serial1.available() > 0)
      {
        ch = Serial1.read();
        Serial.print(ch);
      }
      Serial.println("");
   }
}

Je suis désolé, je suis tjs coincé^^

J'ai bien réussi à discuter avec le module bluetooth, et à le mettre en mode SLAVE (commande : "SM,0").
(Est-ce le bon mode ?)

Ubuntu le voit et je peux m'associer avec (nom du module : "FireFly-AAFB"), enfin je crois car la lampe clignote tjs en rouge et ne devient pas verte !!

Que dois-je faire d'apres-vous? Comment expliquer à ubuntu que c'est un port série?
Pour pouvoir enfin discuter avec elle, comme si c'était un port serial normal...

Merci d'avance !

bGt_

Bonjour,
Une fois le périphérique firefly-xxxx associé la led doit être rouge, puis dés que le port série bluetooth est ouvert la led devrait viré au vert.

Sous linux:
hcitool scan
sdptool browse XX:XX:XX:XX:XX:XX (XX:XX:XX:XX:XX:XX = l'adresse mac du firefly-xxxx retourné par la commande ci dessus)
rfcomm connect 0 XX:XX:XX:XX:XX:XX C (C = channel du firefly-xxxx retourné par la commande ci dessus)
minicom -p /dev/rfcomm0

Génial :grin: :grin: :grin:
Merci beaucoup, ca fonctionne nickel !!!!

bGt_

hcitool scan
sudo rfcomm connect 0 XX:XX:XX:XX:XX:XX