Table des matières
Bluetooth 2.0 Module V3 For Arduino
Le Bluetooth 2.0 Module V3 For Arduino est un module bluetooth de chez DFRobot de classe 2 (portée ~10m). J'en ai acheté deux pour établir une communication entre un robot et sa télécommande.
Initialisation
Le wiki de DFRobot indique une partie de la procédure à suivre pour initialiser le module. Il faudra fouiller la datasheet du CSR B C417143, embarqué dans le TEL0026, pour trouver et comprendre les subtilités.
Prérequis pour initialiser un module
- Un USB to TTL Converter (CP210) - J'utilise un clone de celui de DFRobot.
- Un terminal série ( le logiciel arduino, minicom, … )
Procédure
Il faut mettre le module Bluetooth en “AT Mode” (voir cette photo). On peut utiliser le programme Arduino pour communiquer avec le module. Voici les paramètres qu'il faut utiliser :
Commandes AT
Listes des commandes AT
Toutes les commandes se trouvent dans la datasheet du TEL0026, voici un aperçu :
at OK at+init //initialiser le SPP OK at+name? //demander le nom du module +NAME:H-C-2010-06-01 //après une remise aux paramètres par défaut, sinon "+NAME:BluetoothV3" OK at+name=cequonveut //Donner un nom au module OK at+role? //demander le rôle du module +role:0 // 0 = slave , 1 = master OK at+role=0 //donner le rôle "slave" au module OK AT+PSWD? //Demander le mot de passe de "pairing" +PSWD:1234 OK AT+ORGL //Réinitialiser les paramètres par défaut OK AT+UART? //Demander les paramètres de l'UART +UART:38400,0,0 AT+UART=38400,0,0 //Choisir les paramètres de l'UART OK //Param1: baud rate (bits/s) 4800/ 9600/ 19200/ 38400/ 57600/ 115200/ 230400/ 460800/ 912600/ 1382400 //Param2: stop bit , 0- 1 bit/ 1- 2 bits //Param3: parity bit, 0- None/ 1- Odd/ 2- Even AT+RESET //reset du module (équivalent à l'éteindre/rallumer) Return: OK AT+ADDR? //demander l'adresse du module +ADDR:12d5:42:307864 OK AT+INQM=1,9,48 //Inquire mode: RSSI, max number 9, timeout 48) * OK AT+IAC? // +IAC:9e8b33 OK Input: AT+SENM? // +SENM:0,0 OK
Erreurs possibles
La page 16/23 du datasheet du TEL0026 donne la liste des erreurs possibles.
Error_code (hex) | Explanation ------------------------------------------------------------------------ 0 | AT command error 1 | The result is default value 2 | PSKEY write error 3 | Device name is too long (more than 32 bytes) 4 | Device name is 0 byte 5 | Bluetooth address: NAP is too long 6 | Bluetooth address: UAP is too long 7 | Bluetooth address: LAP is too long 8 | PIO port mask length is 0 9 | Invalid PIO port A | Device class is 0 byte B | Device class is too long C | Inquire Access Code length is 0 D | Inquire Access Code is too long E | Invalid Inquire Access Code F | Pairing password is 0 10 | Pairing password is too long (more than 16 bytes) 11 | Role of module is invalid 12 | Baud rate is invalid 13 | Stop bit is invalid 14 | Parity bit is invalid 15 | No device in the pairing list 16 | SPP is not initialized 17 | SPP is repeatedly initialized 18 | Invalid inquiry mode 19 | Inquiry timeout 1A | Address is 0 1B | Invalid security mode 1C | Invalid encryption mode
Configuration de deux modules
Pour faire la configuration de ces deux modules en même temps, j'ai utilisé :
- deux ordinateurs avec le logiciel arduino (mais n'importe quel programme de terminal série peut convenir)
- deux modules bluetooth (deux TEL0026 de DFRobot dans mon cas)
Cosmo (slave)
at OK at+init OK at+state? +STATE:INITIALIZED at+name=cosmo OK at+name? +NAME:cosmo at+role=0 OK at+role? +ROLE:0 at+addr? +ADDR:98d3:32:302390 at+uart=38400,0,0 OK at+uart? +UART:38400,0,0 at+iac? +IAC:9e8b33 at+cmode? +CMOD:0 at+inq OK at+bind? +BIND:0:0:0 //pas d'adresse configurée at+bind=98d3,32,20222e //"bind" avec l'adresse du module master OK at+state? +STATE:PAIRABLE
Commande (master)
at OK at+init OK at+state? +STATE:INITIALIZED at+name=commande OK at+name? +NAME:commande at+role=1 OK at+role? +ROLE:1 at+addr? +ADDR:98d3:32:20222e at+uart=38400,0,0 OK at+uart? +UART:38400,0,0 at+iac? +IAC:9e8b33 at+cmode? +CMOD:0 at+inq +INQ:98D3:32:302390,0,7FFF //le module bluetooth slave!! (adresse, classe, RSSI) at+rname?98d3,32,302390 //demander le nom du module slave +RNAME:cosmo //nom du module bluetooth slave at+bind? +BIND:98d3:31:300e42 //adresse inconnue at+bind=98d3,32,302390 //"bind" avec l'adresse du module slave OK at+bind? +BIND:98d3:31:300e42 //adresse du module slave at+pair=98d3,32,302390,30 //se connecter au module slave (avec timeout de 30s) OK at+state? +STATE:PAIRED //yes! at+mrad? //voir le dernier module connecté +MRAD:98d3:32:302390 //c'est bien le slave at+fsad=98d3,32,302390 //voir si le module slave est dans la liste des modules authentifiés OK //OK = oui at+link=98d3,32,302390 //faire le lien avec le module slave OK (réception de ce que le module slave envoit!)
Programmes Arduino
Maintenant que nous avons configurés deux modules pour qu'ils se connectent ensemble, nous pouvons les utiliser chacun sur une Arduino et faire communiquer les deux Arduino ensemble.
Sources
- RSSI (wikipedia.org) (mesure de la qualité du signal)