L’objectif de ce projet est de réaliser une commande sans fil d’un servomoteur à l’aide d’un Smartphone et de la technologie Bluetooth. Une carte Arduino UNO reçoit les commandes envoyées par l’application mobile et contrôle la position du servomoteur en fonction de l’angle demandé par l’utilisateur.
Ce projet permet de découvrir :
- la communication Bluetooth entre un Smartphone et Arduino UNO ;
- la programmation de la carte Arduino UNO ;
- la commande d’un servomoteur ;
- la création d’une application mobile avec MIT App Inventor ;
- la transmission de données entre une application mobile et un système électronique.
Fonctionnement du projet
L’utilisateur contrôle la position du servomoteur à partir d’une application installée sur son Smartphone. Il peut, par exemple, sélectionner ou régler un angle de rotation.
1. L’utilisateur choisit l’angle souhaité sur l’application mobile.
2. L’application envoie la commande à travers la communication Bluetooth.
3. Le module Bluetooth connecté à l’Arduino UNO reçoit cette commande.
4. La carte Arduino UNO interprète la valeur reçue.
5. Arduino UNO génère le signal de commande approprié pour le servomoteur.
6. Le servomoteur se positionne automatiquement à l’angle demandé.
Ainsi, le projet permet de contrôler un servomoteur à distance, sans connexion filaire entre le Smartphone et le système Arduino.
1- Carte Arduino UNO

La carte Arduino UNO constitue l’unité de commande du projet. Elle reçoit les données envoyées par le Smartphone via le module Bluetooth HC-06, interprète la valeur de l’angle reçue, puis génère le signal de commande nécessaire pour positionner le servomoteur.
2- Servomoteur SG90

Le servomoteur est l’actionneur du système. Il permet de contrôler précisément la position angulaire d’un axe, généralement dans une plage de 0° à 180°, selon le modèle utilisé.
Arduino UNO envoie un signal PWM au servomoteur afin de lui indiquer l’angle à atteindre. Le servomoteur se positionne alors automatiquement à la position demandée.
3- Module Bluetooth HC-06

Le HC-06 est un module Bluetooth utilisé pour assurer la communication sans fil entre le Smartphone et la carte Arduino UNO. Il fonctionne généralement comme un périphérique Bluetooth esclave (Slave).
Le Smartphone envoie une commande contenant, par exemple, l’angle souhaité du servomoteur. Le module HC-06 reçoit cette information et la transmet à l’Arduino UNO par communication série UART à travers les broches RX et TX.
4. Module d’alimentation 5 V / 3,3 V

Le module d’alimentation 5 V / 3,3 V permet de disposer d’une alimentation stable et adaptée aux composants électroniques, tout en évitant d’appliquer une tension incorrecte au module Bluetooth.
5- Câbles de Connexion (Jumper Wires)

Les fils de connexion permettent de relier les différents composants entre eux.
6. Plaque d'essai

La plaque d’essai (breadboard) permet de réaliser des montages électroniques sans soudure.


1- Connexion du capteur HC-SR04 à la carte Arduino UNO
| Module HC-06 | Arduino UNO |
|---|---|
| VCC | 5V du module d'alimentaion |
| GND | GND |
| TXD | D2 |
| RXD | D3 |
2- Connexion du servomoteur à la carte Arduino UNO
| Servomoteur | Arduino UNO |
|---|---|
| Fil rouge (+) | 5V |
| Fil Marron (-) | GND |
| Fil jaune (S) | D4 |
Ce programme permet de commander à distance la position d’un servomoteur à l’aide d’un Smartphone via une communication Bluetooth.
L’Arduino UNO reçoit, par l’intermédiaire du module HC-06, une valeur correspondant à l’angle souhaité du servomoteur. Le programme récupère cette valeur, la convertit en nombre entier, puis positionne le servomoteur à l’angle correspondant.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 |
// ========================================================== // Commande Bluetooth d'un servomoteur // Arduino UNO + Module Bluetooth HC-06 // ========================================================== // ========================================================== // Inclusion des bibliothèques // ========================================================== // Bibliothèque permettant de créer une communication série // sur des broches numériques de l'Arduino UNO #include <SoftwareSerial.h> // Bibliothèque permettant de commander un servomoteur #include <Servo.h> // ========================================================== // Configuration de la communication Bluetooth // ========================================================== // Définition de la communication série avec le module HC-06 // // Arduino UNO -> HC-06 // Broche 2 -> TX du HC-06 (RX Arduino) // Broche 3 -> RX du HC-06 (TX Arduino) // // SoftwareSerial(RX, TX) SoftwareSerial BT(2, 3); // ========================================================== // Création de l'objet servomoteur // ========================================================== // Création d'un objet nommé "myservo" // permettant de contrôler le servomoteur Servo myservo; // ========================================================== // Déclaration des variables // ========================================================== // Cette variable permet de stocker progressivement // le message reçu par Bluetooth String message = ""; // ========================================================== // Fonction setup() // ========================================================== // Cette fonction est exécutée une seule fois // au démarrage de la carte Arduino UNO void setup() { // -------------------------------------------------------- // Initialisation de la communication série avec l'ordinateur // -------------------------------------------------------- // Vitesse de communication : 9600 bauds // Cette communication permet d'afficher des informations // dans le Moniteur Série de l'Arduino IDE Serial.begin(9600); // -------------------------------------------------------- // Initialisation de la communication Bluetooth // -------------------------------------------------------- // Le module HC-06 communique avec Arduino // à une vitesse de 9600 bauds BT.begin(9600); // -------------------------------------------------------- // Connexion du servomoteur // -------------------------------------------------------- // Le fil de commande du servomoteur // est connecté à la broche numérique D4 myservo.attach(4); // -------------------------------------------------------- // Position initiale du servomoteur // -------------------------------------------------------- // Positionner le servomoteur à l'angle 0° // au démarrage du programme myservo.write(0); // Afficher un message dans le Moniteur Série // pour indiquer que le système est prêt Serial.println("Waiting for a Bluetooth message..."); } // ========================================================== // Fonction loop() // ========================================================== // Cette fonction est exécutée continuellement void loop() { // -------------------------------------------------------- // Vérification de la réception de données Bluetooth // -------------------------------------------------------- // Vérifier si des données sont disponibles // dans la mémoire tampon du module Bluetooth while (BT.available()) { // Lire un caractère reçu par Bluetooth char c = BT.read(); // -------------------------------------------------------- // Construction du message reçu // -------------------------------------------------------- // Le caractère '#' est utilisé comme séparateur // et indique la fin du message // // Exemple : // L'application envoie : 90# // // Le message reçu est alors : "90" if (c == '#') { // ------------------------------------------------------ // Affichage du message reçu // ------------------------------------------------------ // Afficher un texte dans le Moniteur Série Serial.print("Received message: "); // Afficher le contenu complet du message Serial.println(message); // ------------------------------------------------------ // Conversion du message en angle // ------------------------------------------------------ // Copier le message reçu dans une deuxième variable String message2 = message; // Convertir le message texte en nombre entier // // Exemple : // "90" devient 90 // "45" devient 45 int angle = message2.toInt(); // ------------------------------------------------------ // Commande du servomoteur // ------------------------------------------------------ // Positionner le servomoteur à l'angle reçu myservo.write(angle); // ------------------------------------------------------ // Réinitialisation du message // ------------------------------------------------------ // Effacer le contenu du message // afin de préparer la prochaine réception message = ""; } else { // ------------------------------------------------------ // Ajout du caractère au message // ------------------------------------------------------ // Ajouter le caractère reçu à la fin du message // // Exemple : // Réception de 9 puis de 0 // // message = "9" // puis // message = "90" message += c; } } } |

Cette application mobile, développée avec MIT App Inventor, sert d’interface de commande pour contrôler à distance la position d’un servomoteur connecté à une carte Arduino UNO via le module Bluetooth HC-06.
L’utilisateur peut :
- sélectionner le module Bluetooth HC-06 à partir du bouton « Choose HC-06 » ;
- établir la communication Bluetooth avec l’Arduino UNO ;
- régler l’angle du servomoteur à l’aide d’un curseur (Slider) ;
- visualiser l’angle sélectionné, par exemple « Angle : 0° ».
Lorsque l’utilisateur déplace le curseur, l’application envoie la valeur de l’angle sélectionné à l’Arduino UNO par Bluetooth. L’Arduino reçoit cette commande et positionne le servomoteur à l’angle correspondant.
La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
Site robotique réalisé par Mohamed Ali Haj Salah - Prof Info