Arduino - Bluetooth

Dans ce tutoriel, nous allons apprendre :

Arduino Bluetooth

La portée de ce tutoriel :

Ce tutoriel concerne l'utilisation du Bluetooth Classique (Bluetooth 2.0). Si vous recherchez un tutoriel sur le Bluetooth Low Energy - BLE (Bluetooth 4.0), consultez ce tutoriel similaire : Arduino - Bluetooth Low Energy

Préparation du matériel

1×Arduino Uno
1×USB 2.0 cable type A/B
1×HC-05 Bluetooth Module
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du module Bluetooth HC-05

HC-05 est un module Bluetooth série. Il fonctionne comme un convertisseur série vers Bluetooth. Il permet de :

  • Recevoir des données depuis la broche RX série et transmettre les données à l'appareil appairé (tel qu'un smartphone) via Bluetooth
  • Recevoir des données via Bluetooth (de l'appareil appairé) et envoyer les données à la broche TX série.

Plus précisément, dans le contexte où un Arduino communique avec une application smartphone (Android/iOS) :

  • Arduino se connecte au module Bluetooth HC-05 via les broches Serial/SoftwareSerial
  • Le module Bluetooth HC-05 est appairé avec une application smartphone
  • Arduino envoie les données à l'application smartphone simplement en envoyant les données à Serial/SoftwareSerial
  • Arduino reçoit les données de l'application smartphone simplement en lisant les données à Serial/SoftwareSerial
  • Aucun code Bluetooth spécifique n'est requis sur Arduino

Brochage

Brochage Bluetooth

Le module Bluetooth HC-05 dispose de 6 broches :

  • Broche d'activation/clé : Cette broche est utilisée pour basculer entre le mode Données (réglé sur BAS) et le mode Commande (réglé sur HAUT). Si elle n'est pas connectée, elle est par défaut en mode Données.
  • Broche VCC : broche d'alimentation, connectez cette broche à +5V de la tension d'alimentation.
  • Broche GND : broche d'alimentation, connectez cette broche au GND de la source d'alimentation.
  • Broche TX : broche de données série, connectez cette broche à la broche RX de l'Arduino. Les données reçues via Bluetooth seront envoyées à cette broche sous forme de données série.
  • Broche RX : broche de données série, connectez cette broche à la broche TX de l'Arduino. Les données reçues de cette broche seront envoyées à Bluetooth.
  • État : La broche d'état est connectée à la LED embarquée, elle peut être utilisée comme retour pour vérifier si le Bluetooth fonctionne correctement.

Cependant, pour les fonctions de base, nous avons juste besoin d'utiliser 4 broches du module Bluetooth HC-05 pour le connecter à l'Arduino.

Le module Bluetooth HC-05 comprend également deux composants intégrés :

  • Une LED : indique le statut du Module
    • Clignotement une fois toutes les 2 secondes : le module est en mode Commande
    • Clignotement répété : en attente de connexion en mode Données
    • Clignotement deux fois par seconde : connexion réussie en mode Données
  • Bouton : peut être utilisé pour contrôler la broche Clé/Activer pour sélectionner le mode de fonctionnement (mode Données ou Commande)

Comment ça marche

Le module Bluetooth HC-05 dispose de deux modes de fonctionnement :

  • Mode données : est utilisé pour échanger des données avec l'appareil appairé.
  • Mode commande : est utilisé pour configurer les paramètres.

Heureusement, le module Bluetooth HC-05 peut fonctionner avec Arduino en utilisant les paramètres par défaut sans configuration.

Paramètres par défaut HC-05

Default Bluetooth Name “HC-05”
Default Password 1234 or 0000
Default Communication Slave
Default Mode Data Mode
Default Data Mode Baud Rate 9600, 8, N, 1
Default Command Mode Baud Rate 38400, 8, N, 1

À propos de l'application Moniteur Série Bluetooth

L'application Bluetooth Serial Monitor est une application mobile dont l'interface utilisateur ressemble au moniteur série de l'IDE Arduino. Elle communique avec Arduino via Bluetooth. Vous pouvez interagir avec Arduino via cette application comme si vous utilisiez le moniteur série sur votre PC, sans ajouter de code spécial pour le module Bluetooth dans votre code Arduino, en effectuant l'étape suivante :

  • Connecter Arduino au module Bluetooth HC-05
  • Installer l'application Bluetooth Serial Monitor sur votre smartphone
  • Ouvrez l'application et associez-la avec le module Bluetooth HC-05

Et maintenant, vous pouvez envoyer/recevoir des données depuis Arduino tout comme le moniteur série de l'IDE Arduino. Vous n'avez pas besoin de modifier le code Arduino existant ni d'ajouter un code Bluetooth au nouveau code Arduino.

Diagramme de câblage

Schéma de câblage Bluetooth Arduino

This image is created using Fritzing. Click to enlarge image

Tableau de câblage

Arduino Pins HC-05 Bluetooth Pins
RX (Pin 0) TX
TX (Pin 1) RX
5V VCC
GND GND
Enable/Key (NOT connected)
State (NOT connected)

※ NOTE THAT:

Vous pouvez utiliser d'autres broches Arduino en changeant l'objet Serial dans le code Arduino pour un autre Serial1, Serial2,... ou SoftwareSerial si disponible.

Comment programmer pour le Bluetooth

Aucun code dédié au Bluetooth n'est requis. Nous devons simplement utiliser le code Serial.

Arduino envoie des données à l'application Bluetooth sur Smartphone.

Pour envoyer des données depuis un Arduino vers une application Bluetooth sur smartphone, nous devons utiliser le code Arduino suivant :

Dans cet exemple, nous enverrons "Arduino ici, donne-moi des ordres !" de l'Arduino à l'application Bluetooth sur le smartphone chaque seconde.

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-bluetooth */ void setup() { Serial.begin(9600); } void loop() { Serial.println("Arduino here, command me!"); delay(1000); }

Étapes rapides

  • Installez l'application Bluetooth Serial Monitor sur votre smartphone
  • Connectez le module Bluetooth HC-05 à l'Arduino selon le schéma de câblage ci-dessus
  • Copiez le code ci-dessus et ouvrez-le avec l'Arduino IDE
  • Cliquez sur le bouton Upload de l'Arduino IDE pour charger le code sur l'Arduino. Il se peut que vous échouiez à téléverser le code sur l'Arduino. Si c'est le cas, déconnectez les broches TX et RX du module Bluetooth, téléversez le code, puis reconnectez la broche RX/TX.
  • Ouvrez le moniteur série sur l'Arduino IDE
  • Ouvrez l'application Bluetooth Serial Monitor sur votre smartphone
  • Sélectionnez le mode Bluetooth classique
Application de moniteur série Bluetooth
  • Associez-le au module Bluetooth HC-05.
Surveillance de l'appairage du moniteur série Bluetooth
  • Voyez le résultat sur l'application Android.
Moniteur série Bluetooth
  • Voyez le résultat sur le moniteur série de l'IDE Arduino.
COM6
Send
Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Vous verrez que les données sur le moniteur série de l'Arduino IDE et sur l'application Android sont identiques.

Envoyer des données à l'Arduino via une application Bluetooth

Le code ci-dessous fait :

  • L'application Bluetooth envoie des données à Arduino
  • Arduino lit les données et renvoie la réponse au Bluetooth
/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-bluetooth */ // NOTE: change the Serial to other Serial/Software Serial if you connects Bluetooth module to other pins void setup() { Serial.begin(9600); } void loop() { Serial.println(F("Arduino here, command me!")); if (Serial.available()) { // if there is data comming String command = Serial.readStringUntil('\n'); // read string until meet newline character if (command == "LED OFF") { Serial.println("LED is turned OFF"); // reports action to smartphone app // TODO: control your LED here } else if (command == "LED ON") { Serial.println("LED is turned ON"); // reports action to smartphone app // TODO: control your LED here } } delay(500); }

Étapes rapides

  • Copiez le code ci-dessus et ouvrez-le avec Arduino IDE
  • Cliquez sur le bouton Upload dans Arduino IDE pour téléverser le code vers Arduino
  • Ouvrez le moniteur série sur Arduino IDE
  • Ouvrez l'application Android et associez-la au module Bluetooth HC-05 (similaire à l'exemple précédent)
  • Après la connexion, tapez "LED ON" ou "LED OFF" dans l'application Android et cliquez sur le bouton "ENVOYER"
Application de surveillance série Bluetooth
  • Arduino reçoit les données et imprime la réponse sur le port série. Ces données seront envoyées à l'application Bluetooth.
  • Voir le résultat sur l'application Android.
Application de moniteur série Bluetooth
  • Voyez le résultat sur le moniteur série de l'IDE Arduino.
COM6
Send
Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me! LED ON LED is turned ON Arduino here, command me! Arduino here, command me! Arduino here, command me! LED OFF LED is turned OFF Arduino here, command me! Arduino here, command me!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Vous verrez que les données sur le moniteur série de l'IDE Arduino et sur l'application Android sont identiques.

Code Arduino - Contrôle d'une LED avec une application smartphone via Bluetooth

Le code d'exemple Arduino ci-dessous accepte deux commandes (« ON » et « OFF ») de l'application Bluetooth Serial Monitor pour allumer/éteindre une LED intégrée.

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-bluetooth */ // NOTE: change the Serial to other Serial/Software Serial if you connects Bluetooth module to other pins #define LED_PIN 8 void setup() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); // set the digital pin as output: } void loop() { if (Serial.available()) { // if there is data comming String command = Serial.readStringUntil('\n'); // read string until meet newline character if (command == "OFF") { digitalWrite(LED_PIN, LOW); // turn off LED Serial.println("LED is turned OFF"); // reports action to smartphone app } else if (command == "ON") { digitalWrite(LED_PIN, HIGH); // turn on LED Serial.println("LED is turned ON"); // reports action to smartphone app } } }

Vous pouvez voir les instructions plus en détail dans le tutoriel Arduino contrôle LED via Bluetooth/BLE.

Code Arduino - Contrôler un moteur servo avec une application smartphone via Bluetooth

Le code Arduino ci-dessous reçoit la valeur de l'angle depuis l'application Bluetooth Serial Monitor pour contrôler l'angle du moteur servo.

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-bluetooth */ // NOTE: change the Serial to other Serial/Software Serial if you connects Bluetooth module to other pins #include <Servo.h> Servo servo; // create servo object to control a servo int pos = 0; // variable to store the servo position void setup() { Serial.begin(9600); servo.attach(11); // attaches the servo on pin 11 to the servo object } void loop() { if (Serial.available()) { // if there is data comming int angle = Serial.parseInt(); if (angle >= 0 && angle <= 180) { servo.write(angle); // rotate servo Serial.print("Rotated servo to angle: ");// reports action to smartphone app Serial.println(angle); } else { Serial.print("Invalid angle: ");// reports invalid value to smartphone app Serial.println(angle); } } }

Vous pouvez voir les instructions en détail dans le tutoriel Arduino contrôle le moteur servo via Bluetooth/BLE.

Si l'application Bluetooth Serial Monitor vous est utile, merci de lui donner une note de 5 étoiles sur Play Store. Merci !

Vidéo

#Références de fonction

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!