Bonjour à tous
j'ai commandé il y a quelques temps des composants bluetooth HM-10 et je les ai reçus. je voulais jouer un peu avec et quitte à y passer un peu de temps, autant partager quelques infos si ça peut servir.
les HM-10 ont l'avantage d'être "BLE" ou "Bluetooth Low Energy". Il sont principalement destiné aux objets pour lesquels le besoin en débit de transmission de données est faible ou l’autonomie cruciale ainsi qu’aux équipements nomades tels que les smartphones. La portée effective se compte en quelques dizaines de mètres. il sont compatibles aussi avec le BT classique.
bon - si vous lisez les spécifications ils vous monteront qu'il y a des faux en circulation
et... c'est ce que j'ai commandé sans trop faire attention. mais bon, je me suis dit que ça doit quand même pouvoir servir pour de la communication série de base. Je voulais voir comment les utiliser simplement pour faire communiquer entre eux deux arduino, ou un arduino et un ordinateur sans fil et ce sans librairie, juste en paramètrant correctement les 2 composants.
Voici quelques éléments d'information si vous avez acheté les même composants et que vous voulez les faire discuter:
1. il faut d'abord les configurer
pour cela j'ai pris un adaptateur FTDI que j'ai directement connecté à mon module
attention le composant est souvent en 3.3V - les miens cependant s'alimentent en 3.3 ou 5V et bien qu'ils soient déclarés pour du 3.3V pour Tx et Rx, ils supportent sans pb le 5V. j'ai donc connecté tout cela sans adaptation de tension, mais assurez vous de ne pas griller les vôtres.
Pour ce faire vous pouvez utiliser un te291 level shifter par exemple, il en existe à 2, 4, 8 entrées.
par exemple celui ci a 4 entrées
et je l'utilise dans un montage comme cela
Ensuite il suffit de connecter un câble USB sur l'adaptateur FTDI, et utiliser sur votre Mac/PC un programme d'émulation de terminal (j'aime bien CoolTerm) ou simplement la fenêtre de l'IDE de l'arduino, régler la vitesse de connexion pour moi c'était 9600 bauds par défaut.
vous pouvez taper AT
et validez et vous devez recevoir en réponse si tout va bien OK
de la part de votre module (avec un passage à la ligne)
si vous tapez AT+HELP
votre module vous donnera la liste des commandes supportées. Sur les miens j'obtiens
********************************************************************
Command Description
----------------------------------------------------------------
AT Check if the command terminal work normally
AT+RESET Software reboot
AT+VERSION Get firmware, bluetooth, HCI and LMP version
AT+HELP List all the commands
AT+NAME Get/Set local device name
AT+PIN Get/Set pin code for pairing
AT+BAUD Get/Set baud rate
AT+LADDR Get local bluetooth address
AT+ADDR Get local bluetooth address
AT+DEFAULT Restore factory default
AT+RENEW Restore factory default
AT+STATE Get current state
AT+PWRM Get/Set power on mode(low power)
AT+POWE Get/Set RF transmit power
AT+SLEEP Sleep mode
AT+ROLE Get/Set current role.
AT+PARI Get/Set UART parity bit.
AT+STOP Get/Set UART stop bit.
AT+INQ Search slave model
AT+SHOW Show the searched slave model.
AT+CONN Connect the index slave model.
AT+IMME System wait for command when power on.
AT+START System start working.
AT+UUID Get/Set system SERVER_UUID .
AT+CHAR Get/Set system CHAR_UUID .
-----------------------------------------------------------------
Note: (M) = The command support master mode only.
Copyright@2013 www.[color=blue]bolutek[/color].com. All rights reserved.
********************************************************************
c'est un module bolutek et une rapide recherche me donne un lien vers la doc AT
si je fais un AT+VERSION
il me répond +VERSION=Firmware V3.0.6,Bluetooth V4.0 LE
le firmware est donc assez vieux... je n'avais pas envie de jouer à mettre à jour le firmware (on ne sait jamais trop ce que l'on télécharge des sites chinois, mais si les coeur vous en dit vous pouvez lire ce post
voilà donc la base des outils pour connecter sans fil, en émulation de port série 2 "ordinateurs".
imaginons que vous ayez 2 HM-10, que l'on appelle A et B
1/ sur le composant A et B faire un
AT+RENEW
pour les remettre au défaut d'usine.
2/ sur le composant B:
On peut demander son adresse:
AT+ADDR
+ADDR=00:15:83:00:83:C5
je mets le composant B en mode esclave
AT+ROLE0
+ROLE=0
OK
3/ sur le composant A
je mets le composant A en mode maître
AT+ROLE1
+ROLE=1
OK
je lui demande de trouver quels sont les composants esclaves dispo
AT+INQ
+INQS
+INQ:1 0x0015830083C5
+INQE
Devices Found 1
je remarque qu'en position 1 j'ai bien l'adresse de mon composant B.
je lui demande de se connecter au composant B, 1er de la liste:
AT+CONN1 /// connect to device #1
+Connecting 0x0015830083C5
+Connected 0x0015830083C5
et voilà maintenant mes 2 HM-10 sont connectés comme des ports séries distants. Tout ce qui arrive sur le Rx de l'un est envoyé sur le Tx de l'autre et inversement.
maintenant il n'y a rien d'autre à faire, tant que vous ne coupez pas le courant ils resteront connectés.
Sur mon Arduino mega j'ai par exemple écrit ce petit code en connectant un HM-10 sur Serial2 et j'utilise le port Serial standard à travers USB en me connectant à un premier ordinateur.
#define hm10 Serial2 // pour faciliter la lecture.
void setup() {
Serial.begin(115200);
hm10.begin(9600);
}
void loop() {
while (Serial.available()) {
int c = Serial.read();
if (c != -1) hm10.write((byte) c);
}
while (hm10.available()) {
int c = hm10.read();
if (c != -1) Serial.write((byte) c);
}
}
ce code est tout simple, il permet de taper quelque chose dans la console série de l'arduino, configurée à 115200 bauds, et de l'envoyer à l'arduino qui le transmet au HM-10 et tout ce que reçoit le HM-10 est ensuite envoyé à la console série par le port Serial.
de l'autre côté j'ai connecté mon petit montage FTDI + HM10 directement par USB à un autre ordinateur (mais vous pouvez le mettre sur un second port USB du même) et ouvert CoolTerm en me connectant sur le bon port à 9600 bauds.
côté FTDI je tape les commandes pour mettre ce module en mode esclave - cf plus haut.
côté MEGA, je tape les commandes AT pour passer en mode maître puis trouver les esclaves et me connecter à celui trouvé.
et voilà maintenant tout ce que je tape côté MEGA apparaît côté FTDI et tout ce que je tape côté FTDI apparaît côté MEGA.