Ceci est une ancienne révision du document !
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
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
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? +MRAD:98d3:32:302390 at+fsad=98d3,32,302390 OK at+link=98d3,32,302390 OK (réception de ce que le module slave envoit!)
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
Sources
- RSSI (wikipedia.org) (mesure de la qualité du signal)