bluesmirf-thumb

Bluesmirf Module Bluetooth pour Arduino

Pré­sen­ta­tion

Le module Blues­mirf de chez Spark­fun per­met une connexion sans fil, par Blue­tooth, entre une carte Arduino et un péri­phé­rique (tablette, smart­phone, ordi­na­teur…) équipé en Bluetooth.

Le site de Spark­fun détaille pré­ci­sé­ment le module, sur cette page et sur celle-ci.

Tout les exmeples de cette page ont été testé sur un Mac­book­Pro, OSX 10.11.6, carte Arduino Uno Genuino, blues­Mirf Gold (RN 41).

Confi­gu­ra­tion

Avant toute chose, il faut confi­gu­rer le module. Il faut savoir que par défaut il pos­sède un temps rela­ti­ve­ment court de 60 secondes de confi­gu­ra­tion. Il peut être ali­men­ter par une ten­sion entre 3.3 V et 5 V, en sachant que le signal de don­nées qu’il enverra sera de la même valeur que la ten­sion d’entrée.

Pour confi­gu­rer le module, nous allons pas­ser par plu­sieurs étapes, la pre­mière étant de relier le module à la carte arduino selon le schéma suivant.

Schéma de branchements

bluesmirf-arduino-config

Code Arduino

Nous copions/collons ce code dans Arduino IDE.

#include <SoftwareSerial.h>  

int bluetoothTx = 2;  // TX-O pin of bluetooth mate, Arduino D2
int bluetoothRx = 3;  // RX-I pin of bluetooth mate, Arduino D3

SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);

void setup()
{
  Serial.begin(9600);  // Begin the serial monitor at 9600bps

  bluetooth.begin(115200);  // The Bluetooth Mate defaults to 115200bps
  bluetooth.print("$");  // Print three times individually
  bluetooth.print("$");
  bluetooth.print("$");  // Enter command mode
  delay(100);  // Short delay, wait for the Mate to send back CMD
  bluetooth.println("U,9600,N");  // Temporarily Change the baudrate to 9600, no parity
  // 115200 can be too fast at times for NewSoftSerial to relay the data reliably
  bluetooth.begin(9600);  // Start bluetooth serial at 9600
}

void loop()
{
  if(bluetooth.available())  // If the bluetooth sent any characters
  {
    // Send any characters the bluetooth prints to the serial monitor
    Serial.print((char)bluetooth.read());  
  }
  if(Serial.available())  // If stuff was typed in the serial monitor
  {
    // Send any characters the Serial monitor prints to the bluetooth
    bluetooth.print((char)Serial.read());
  }
  // and loop forever and ever!
}
Bran­che­ment de la carte Arduino vers Ordinateur
  1. Dans Arduino IDE, dans le menu Tools, Choi­sir Board → Arduino Uno.
    arduino-config-board
  2. Dans le menu Tools, Port → dev/cu.usbmodemFD1211 (ou un nom lui res­sem­blant).
    arduino-config-port
  3. Relier avec un câble USB A / USB B la carte Arduino à l’ordinateur. Nous avons 60 secondes (pen­dant laquelle la led du BlueS­mirf cli­gnote rapi­de­ment – voir les dif­fé­rents états de la Led du Blues­Mirf), sui­vant les réglages par défaut du module Blues­mirf pour réa­li­ser les étapes sui­vantes. Envoyer le code ci-dessus dans la carte Arduino.
    Une fois que l’upload est ter­miné débran­cher le câble USB.
  4. Acti­ver le blue­tooth de votre ordi­na­teur.
    Et aller dans les préférences.bluetooth-prefs
  5. Rebran­cher le câble USB de l’Arduino
  6. Dans les pré­fé­rences Blue­tooth, attendre que le module Blues­Mirf s’affiche, dans mon cas, il porte le nom Firefly-DB3C.
  7. Cli­quer sur Jume­ler.
    blutooth-pref-01
  8. Attendre la deuxième affi­chage, avec le bou­ton option.
    bluetooth-prefs-03
  9. Ren­trer le mot de passe par défaut, 1234. Vali­der.
    bluetooth-prefs-02
  10. Dans Arduino IDE, aller dans le menu Tools → Port, et sélec­tion­ner main­te­nant, contrai­re­ment à l’étape pré­cé­dente, celle du module Blue­tooth, dans mon cas, dev/cu.Firefly-DB3C-SPP.port-serie-bluesmirf-arduino-ide
  11. Ouvrir le Moni­teur série d’Arduino IDE, et tapez $$$ + Entrée. CMD devrait s’afficher, et la led verte du blues­mirf devrait pas­ser au vert.
    moniteur-port-serie-bluesmirfbluesmirf-green-led-redfast
  12. Chan­ger le mode de retour cha­riot dans le moni­teur série.moniteur-serie-arduino-bluesmirf-02

Com­mande pour confi­gu­rer le Blues­mirf dans le moni­teur série d’Arduino

SN,<name>

Change le nom du module

ST,0

Désac­tive le timer de 60 secondes. Très utile.

D

Affiche les infor­ma­tions et para­mé­trages du module.

Se repor­ter au guide de l’utilisateur, pour d’autres commandes.

Exemple d’utilisation 1 : envoyer les valeurs d’un poten­tio­mètre vers Pro­ces­sing par bluetooth

Démo
Prin­cipe de fonctionnement

Bluesmirf-processing-potentiometer

Schéma du circuit
bluesmirf-sending-arduino-processing-receiving_bbCode Arduino
// plus d'infos : http://lessons.julien-drochon.net/bluesmirf-module-bluetooth-pour-arduino/

#include <SoftwareSerial.h>  

//numero de Pin analogique Arduino
//sur lequel la LDR est branchee
int PinPotentiometre = A0;
//variable stocker les valeurs envoyees par la LDR, iniatliser avec la valeur 0
int valeurPotentiometre = 0;

int bluetoothTx = 2;  // TX-O pin of bluetooth mate, Arduino D2
int bluetoothRx = 3;  // RX-I pin of bluetooth mate, Arduino D3

SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);

void setup()
{
  Serial.begin(9600);  // Begin the serial monitor at 9600bps

  bluetooth.begin(115200);  // The Bluetooth Mate defaults to 115200bps
  bluetooth.print("$");  // Print three times individually
  bluetooth.print("$");
  bluetooth.print("$");  // Enter command mode
  delay(100);  // Short delay, wait for the Mate to send back CMD
  bluetooth.println("U,9600,N");  // Temporarily Change the baudrate to 9600, no parity
  // 115200 can be too fast at times for NewSoftSerial to relay the data reliably
  bluetooth.begin(9600);  // Start bluetooth serial at 9600
}

void loop()
{
   //Lire les valeurs envoyees par la LDR
  //et les attribuer a la variable valeurLDR
  valeurPotentiometre = analogRead(PinPotentiometre);
  //imprimer les valeurs de la LDR dans le Moniteur Serie bluetooth
bluetooth.println(valeurPotentiometre);
}

Code Pro­ces­sing

//importation bibliothèque externe
//pour lire le port serie
import processing.serial.*;

//variable pour extraire les données
//envoyées par l'arduino
int lf = 10;
//declaration de la variable
//permettant de stocker les valeurs de l'arduino
float valeursArduinoTransformees;
//variable pour stocker les vameurs
//envoyées par l'arduino
String lignesInfosArduino = null;
//Déclaration d'un objet port serie
Serial monPortSerie; 

void setup() {
  size(800, 600);
  // Afficher tous les ports série disponibles
  //sur l'ordinateur
  printArray(Serial.list());
  // Utiliser le port serie utilisé par la carte Arduino
  //ne pas oublir de remplacer le port de cet exemple
  //avec celui du port serie bluesmirf
  monPortSerie = new Serial(this, "/dev/cu.FireFly-DB3C-SPP", 9600);
  monPortSerie.clear();
  //initialiser la lecture des données de l'arduino
  lignesInfosArduino = monPortSerie.readStringUntil(lf);
  lignesInfosArduino = null;
}

void draw() {
  //si monPortSerie est disponible…
  while (monPortSerie.available() > 0) {
    //je stocke les données envoyées dans la variable lignesInfosArduino
    lignesInfosArduino = monPortSerie.readStringUntil(lf);
    //si ces données existent…
    if (lignesInfosArduino != null) {
      //pour le debug
      //println(lignesInfosArduino);
      //…je les transforme dans une plage de valeurs qui m'intéresse
      valeursArduinoTransformees = map(float(lignesInfosArduino), 1010, 0, 0, 255 );
    }
  }
  //on associe nos valeurs transformees à notre couleur d'arriere-plan
  background(valeursArduinoTransformees);
  // println(valeursArduinoTransformees);
}

Les dif­fé­rents états de la LED du module

La lumière est verte en continu, tout devrait fonctionner.

La led est rouge et cli­gnote vite (2 fois par seconde). Le module n’est pas en mode confi­gu­ra­tion, mais le comp­teur défi­nis­sant la phase d’initialisation tourne encore.

La Led est rouge et cli­gnote toutes les secondes. Plus de comp­teur, sor­tie du temps de confi­gu­ra­tion. Il ne reste plus qu’à débran­cher et rebran­cher l’alimentation.

La led est rouge et cli­gnote très vite (10 fois poar seconde). Le module est en mode configuration).

Res­sources

Res­source détaillée sur le site de Spark­Fun (en anglais)

sparkfun.com

Autre res­source avec des infor­ma­tions com­plé­men­taires, notam­ment sur la confi­gu­ra­tion du module

www.kobakant.at

Guide de l’utilisateur BluesMirf

Télé­char­ger le PDF

Exemple d’applicatif, trans­for­mer un ancien clav­ler d’ordinateur avec une prose PS2 en cla­vier Bluetooth

www.instructables.com

0