### Projet 17 : Contrôle du Tank par Bluetooth
#### **(1) Description :**
Nous avons appris les connaissances de base du Bluetooth dans le projet précédent. Dans cette leçon, nous allons utiliser le Bluetooth pour contrôler la voiture intelligente. Puisque cela implique le Bluetooth, un émetteur et un récepteur sont nécessaires. Dans le projet, nous utilisons le téléphone mobile comme émetteur (maître), et la voiture intelligente connectée au module Bluetooth HM-10 (esclave) comme récepteur.
Nous avons appris précédemment qu'envoyer un bit peut contrôler des LEDs. Le principe de contrôle de ce robot roulant est le même.
Afin de mieux contrôler le robot tank intelligent, nous avons spécialement créé une APP. Dans cette leçon, nous allons lire toutes les valeurs des touches de cette APP via le code, puis présenter l'APP exclusive de notre robot tank.
#### **(2) Fonctions des Touches de l'APP :**
Le tableau suivant illustre les fonctions des touches correspondantes :
| Touches | | Fonctions |
| :---------------------------------------------: | :--------------------------------------------: | :----------------------------------------------------------: |
|  | | Associer et connecter le module Bluetooth HM-10 ; cliquer à nouveau pour déconnecter |
|  | | Sélectionner le robot à utiliser |
|  | | Contrôler les mouvements du robot par boutons |
|  | | Contrôler les mouvements du robot par joystick |
|  | | Contrôler les mouvements du robot par gravité |
|  | Envoie "F" quand appuyé et "S" quand relâché | La voiture avance quand appuyé et s'arrête quand relâché |
|  | Envoie "L" quand appuyé et "S" quand relâché | La voiture tourne à gauche quand appuyé et s'arrête quand relâché |
|  | Envoie "R" quand appuyé et "S" quand relâché | La voiture tourne à droite quand appuyé et s'arrête quand relâché |
|  | Envoie "B" quand appuyé et "S" quand relâché | La voiture recule quand appuyé et s'arrête quand relâché |
|  | Envoie "u"+chiffre+"\#" quand glissé | Glisser pour changer la vitesse du moteur gauche |
|  | Envoie "v"+chiffre+"\#" quand glissé | Glisser pour changer la vitesse du moteur droit |
|  | Sélectionner pour accéder à la page Fonction | |
|  | Envoie "G" quand appuyé et "S" quand appuyé à nouveau | Entrer en mode évitement d'obstacles quand appuyé et quitter quand appuyé à nouveau |
|  | Envoie "h" quand appuyé et "S" quand appuyé à nouveau | Entrer en mode suivi quand appuyé et quitter quand appuyé à nouveau |
|  | Envoie "e" quand appuyé et "S" quand appuyé à nouveau | Entrer en mode suivi de ligne quand appuyé et quitter quand appuyé à nouveau |
|  | Envoie "f" quand appuyé et "S" quand appuyé à nouveau | Entrer en mode déplacement dans un espace confiné quand appuyé et quitter quand appuyé à nouveau |
|  | Envoie "i" quand appuyé et "S" quand appuyé à nouveau | Entrer en mode suivi de lumière quand appuyé et quitter quand appuyé à nouveau |
|  | Envoie "j" quand appuyé et "S" quand appuyé à nouveau | Entrer en mode extinction d'incendie quand appuyé et quitter quand appuyé à nouveau |
|  | Sélectionner pour entrer en mode affichage d'expressions faciales | |
|  | Envoie "k" quand appuyé et "z" quand appuyé à nouveau | Affiche un motif souriant quand cliqué et efface l'expression quand cliqué à nouveau |
|  | Envoie "l" quand appuyé et "z" quand appuyé à nouveau | Affiche un motif dégoûté quand cliqué et efface l'expression quand cliqué à nouveau |
|  | Envoie "m" quand appuyé et "z" quand appuyé à nouveau | Affiche un visage heureux quand cliqué et efface l'expression quand cliqué à nouveau |
|  | Envoie "n" quand appuyé et "z" quand appuyé à nouveau | Affiche un motif triste quand cliqué et efface l'expression quand cliqué à nouveau |
|  | Envoie "o" quand appuyé et "z" quand appuyé à nouveau | Affiche un motif méprisant quand cliqué et efface l'expression quand cliqué à nouveau |
|  | Envoie "p" quand appuyé et "z" quand appuyé à nouveau | Affiche un motif en forme de cœur quand cliqué et efface l'expression quand cliqué à nouveau |
|  | | Choisir d'entrer dans l'interface de fonctions personnalisées ; il y a six touches 1, 2, 3, 4, 5, 6 ; avec ces touches, vous pouvez étendre certaines fonctions par vous-même |
|  | Cliquer pour envoyer "w" | Cliquer pour afficher la valeur analogique détectée par la photorésistance gauche |
|  | Cliquer pour envoyer "y" | Cliquer pour afficher la valeur analogique détectée par la photorésistance droite |
|  | Cliquer pour envoyer "x" | Cliquer pour afficher la distance détectée par le capteur à ultrasons (unité : cm) |
|  | Cliquer pour envoyer "c"
Cliquer à nouveau pour envoyer "d" | Appuyer pour allumer le ventilateur et appuyer à nouveau pour l'éteindre |
#### **(3) Organigramme :**

#### **(4) Schéma de Connexion :**

Remarque :
GND, VCC, SDA et SCL du panneau LED 8x16 sont connectés à G(GND), V(5V), A4 et A5 de la carte d'extension. STATE et BRK n'ont pas besoin d'être connectés. Le module BT est inséré dans la carte d'extension.
#### **(5) Code de Test :**
Vous pouvez faire glisser des blocs pour éditer votre code
(1)
(2)
(3) 
(4)
(5)
(6) 
(7)
(8)
(9)
**Code de Test Complet**
(**Remarque :** Ne pas connecter le module Bluetooth avant de téléverser le code, car le téléversement utilise également la communication série, ce qui peut provoquer des conflits avec la communication série Bluetooth et entraîner l'échec du téléversement.)

#### **(6) Résultat du Test :**
Après avoir téléversé le code, connectez le robot au module Bluetooth et associez l'APP Bluetooth. Allumez l'interrupteur d'alimentation du shield de commande des moteurs. Placez le robot sur le sol, vous pouvez utiliser ces boutons de l'APP Bluetooth pour contrôler le robot.

1. Les flèches haut, bas, gauche et droite contrôlent respectivement le robot pour avancer, reculer, tourner à gauche et tourner à droite.

2. Cliquez sur le bouton joystick et faites glisser la direction du point noir dans le cercle blanc pour contrôler la direction de déplacement du robot.

3. Cliquez sur le bouton Gravité et inclinez le téléphone dans les directions avant, arrière, gauche et droite, et le robot se déplacera dans la direction dans laquelle le téléphone est incliné.
