- Composants requis:
- Schéma:
- Microcontrôleur 8051:
- Module Bluetooth HC-05:
- Circuit intégré de pilote de moteur L293D:
- Fonctionnement du robot contrôlé par téléphone Android:
- Explication du code:
Dans ce projet, nous allons construire un robot contrôlé par téléphone Android à l'aide de microcontrôleurs 8051 et d'un module Bluetooth. Le robot est conçu à l'aide de moteurs à courant continu et la direction des moteurs à courant continu sera contrôlée par les commandes reçues de l'application Android. Le statut du robot est renvoyé à l'application Android. Ce projet aidera également à l'interfaçage du module Bluetooth HC-05 avec des microcontrôleurs 8051. Nous avons déjà utilisé le module Bluetooth pour contrôler les appareils ménagers avec 8051.
Composants requis:
- Microcontrôleur 8051 (AT89S52)
- Module Bluetooth HC-05
- Pilote de moteur L293D
- Châssis de robot
- Moteurs DC (2)
- Roues (2)
- Roue à roulettes
- Fils de cavalier
- Application Android pour terminal Bluetooth
Schéma:
Microcontrôleur 8051:
Le microcontrôleur 8051 est un microcontrôleur 8 bits qui a 128 octets de RAM sur puce, 4K octets de ROM sur puce, deux minuteries, un port série et quatre ports 8 bits. Le microcontrôleur 8052 est une extension du microcontrôleur 8051. Dans ce projet, nous utilisons le microcontrôleur AT89S52. Le tableau ci-dessous montre la comparaison de 8051 membres de la famille.
Fonctionnalité |
8051 |
8052 |
ROM (en octets) |
4K |
8K |
RAM (octets) |
128 |
256 |
Minuteries |
2 |
3 |
Broches E / S |
32 |
32 |
Port série |
1 |
1 |
Sources d'interruption |
6 |
8 |
Module Bluetooth HC-05:
HC-05 est un module Bluetooth série. Il peut être configuré à l'aide des commandes AT. Il peut fonctionner dans trois configurations différentes (maître, esclave, boucle arrière). Dans notre projet, nous l'utiliserons comme esclave. Les caractéristiques du module HC-05 comprennent,
- Sensibilité typique de -80 dBm.
- Vitesse de transmission par défaut: 9600bps, 8 bits de données, 1 bit d'arrêt, pas de parité.
- Code PIN de couplage automatique: code PIN par défaut «1234»
- Il a 6 broches.
- Les broches Vcc et Gnd sont utilisées pour alimenter le HC-05.
- Les broches Tx et Rx sont utilisées pour communiquer avec le microcontrôleur.
- Activer la broche pour activer le module HC-05. lorsqu'il est bas, le module est désactivé
- La broche d'état agit comme indicateur d'état. Lorsqu'il n'est jumelé / connecté à aucun autre appareil Bluetooth, le voyant clignote en continu. Lorsqu'il est connecté / couplé avec un autre appareil Bluetooth, le voyant clignote avec un délai constant de 2 secondes.
Circuit intégré de pilote de moteur L293D:
L293D est un circuit intégré de commande de moteur à double pont en H. Cela agit comme un amplificateur de courant, la sortie du L293D entraîne les moteurs à courant continu. Il contient deux circuits de pont en H intégrés. En mode de fonctionnement commun, il peut entraîner deux moteurs à courant continu simultanément dans les deux sens. Le tableau ci-dessous montre la description des broches du CI L293D. Voici quelques projets utilisant le pilote de moteur L293D.
Description des broches
N ° de broche |
Nom |
Fonction |
1 |
Activer 1,2 |
Activer la broche pour le moteur 1 |
2 |
Entrée 1 |
Entrée 1 pour moteur 1 |
3 |
Sortie 1 |
Sortie 1 pour moteur 1 |
4 |
Gnd |
Terre (0V) |
5 |
Gnd |
Terre (0V) |
6 |
Sortie 2 |
Sortie 2 pour moteur 1 |
sept |
Entrée 2 |
Entrée 2 pour moteur 1 |
8 |
Vcc 2 |
Tension d'alimentation des moteurs (5V) |
9 |
Activer 3,4 |
Activer la broche pour le moteur 1 |
dix |
Entrée 3 |
Entrée 1 pour moteur 2 |
11 |
Sortie 4 |
Sortie 1 pour moteur 2 |
12 |
Gnd |
Terre (0V) |
13 |
Gnd |
Terre (0V) |
14 |
Sortie 4 |
Sortie 2 pour moteur 2 |
15 |
Entrée 4 |
Entrée 2 pour moteur 2 |
16 |
Vcc 1 |
Tension d'alimentation (5 V) |
Fonctionnement du robot contrôlé par téléphone Android:
Dans ce robot contrôlé par téléphone intelligent, l'utilisateur de l'application Android envoie les données au microcontrôleur 8051 via le module HC-05. Les données reçues sont comparées dans le microcontrôleur 8051 et la décision est prise en conséquence. Le tableau ci-dessous montre la direction des moteurs et l'état du robot pour les différents caractères reçus.
Caractère reçu |
Moteur 1 |
Moteur 2 |
Statut du robot |
F |
Vers l'avant |
Vers l'avant |
Va de l'avant |
b |
En arrière |
En arrière |
Recule |
r |
Vers l'avant |
En arrière |
Se déplace vers la droite |
l |
En arrière |
Vers l'avant |
Se déplace à gauche |
s |
De |
De |
Arrêté |
L' application de terminal Bluetooth nous permet d'émuler un terminal Bluetooth. Cette application prend en charge la communication bidirectionnelle et cette application est compatible avec la plupart des appareils.
Les étapes ci-dessous montrent comment installer et utiliser cette application.
1. Téléchargez et installez l'application de terminal Bluetooth sur votre téléphone Android. L'application peut être téléchargée à partir du lien ci-dessous.
play.google.com/store/apps/details?id=ptah.apps.bluetoothterminal
2. Après avoir installé l'application, ouvrez l'application et activez Bluetooth.
3. Sélectionnez l'appareil et cliquez sur l'option de connexion. Après une connexion réussie, nous pouvons commencer à envoyer des données au module HC-05.
Vérifiez l'explication du code ci-dessous pour voir comment le caractère est envoyé et reçu par le microcontrôleur 8051 pour faire tourner les moteurs requis.
Explication du code:
Le programme C complet et la vidéo de démonstration de ce projet sont donnés à la fin de ce projet. Le code est divisé en petits morceaux significatifs et expliqué ci-dessous.
Pour l' interfaçage de L293D avec des microcontrôleurs 8051, nous devons définir des broches sur lesquelles L293D est connecté au microcontrôleur 8051. La broche In1 du moteur 1 est connectée à P2.0, la broche In2 du moteur 1 est connectée à P2.1, la broche In1 du moteur 2 est connectée à P2.2, la broche In2 du moteur 2 est connectée à P2.3
sbit m1f = P2 ^ 0; // broche in1 du moteur1 sbit m1b = P2 ^ 1; // in2 broche du moteur1 sbit m2f = P2 ^ 2; // broche in1 du moteur2 sbit m2b = P2 ^ 3; // in2 broche du moteur2
Ensuite, nous devons définir certaines fonctions qui sont utilisées dans le programme. La fonction de retard est utilisée pour créer un délai spécifié. La fonction Txdata est utilisée pour transmettre des données via le port série. La fonction Rxdata est utilisée pour recevoir des données du port série.
délai d'annulation (int non signé); // fonction de création de delay char rxdata (void); // fonction pour recevoir un caractère via le port série de 8051 void txdata (unsigned char); // fonction d'envoi d'un caractère via le port série 8051
Dans cette partie du code, nous allons configurer le microcontrôleur 8051 pour la communication série. Le registre TMOD est chargé avec 0x20 pour le temporisateur 1, mode 2 (rechargement automatique). Le registre SCON est chargé avec 0x50 pour 8 bits de données, 1 bit d'arrêt et la réception est activée. Le registre TH1 est chargé avec 0xfd pour une vitesse de transmission de 9600 bits par seconde. TR1 = 1 est utilisé pour démarrer la minuterie.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1; Dans cette partie du code, le caractère retourné de la fonction rxdata est stocké dans la variable «s» pour une utilisation ultérieure.
s = rxdata (); // recevoir des données série du module bluetooth hc-05
Dans cette partie du code, nous devons comparer le caractère reçu avec des caractères préaffectés pour différentes directions. Si le caractère reçu est «f», alors le robot doit se déplacer vers l'avant. Ceci est accompli en faisant des broches m1f, m2f haut et m1b, broches m2b bas. Une fois que cela est fait, nous devons ensuite envoyer le statut du robot à l'application Android. Cela se fait à l'aide de la fonction txdata . Le même processus est répété pour différents caractères reçus et la décision est prise en conséquence. Le tableau 1 montre différentes valeurs de m1f, m1b, m2f, m2b pour différentes directions de mouvement du robot.
if (s == 'f') // déplace les deux moteurs vers l'avant {m1f = 1; retard (1); m1b = 0; retard (1); m2f = 1; retard (1); m2b = 0; retard (1); for (i = 0; msg1! = '\ 0'; i ++) // envoyer l'état du robot à l'application Android via Bluetooth {txdata (msg1); }}
m1f |
m1b |
m2f |
m2b |
Rotation du moteur 1 |
Rotation du moteur 2 |
Statut du robot |
1 |
0 |
1 |
0 |
vers l'avant |
vers l'avant |
Avancer |
0 |
1 |
0 |
1 |
inverser |
inverser |
Reculer |
1 |
0 |
0 |
1 |
vers l'avant |
inverser |
Aller à droite |
0 |
1 |
1 |
0 |
inverser |
vers l'avant |
Déplacement vers la gauche |
0 |
0 |
0 |
0 |
arrêté |
arrêté |
arrêté |
C'est vous pouvez faire tourner la voiture Robot dans n'importe quelle direction en contrôlant les quatre moteurs à l'aide du microcontrôleur 8051. Ce robot peut également être contrôlé à l'aide de DTMF avec 8051, si vous n'avez pas de téléphone Android.
Consultez également tous les projets de robotique ici.