- Exigences:
- Programmation du microcontrôleur PIC pour la communication Bluetooth:
- Schéma de circuit et configuration matérielle:
- Contrôle de la LED à l'aide de l'application mobile Bluetooth:
Dans ce tutoriel, nous allons apprendre à faire des projets PIC sans fil en interfaçant un module Bluetooth (HC-06). Dans notre tutoriel précédent, nous avons déjà appris comment utiliser le module USART dans notre microcontrôleur PIC et établir la communication entre PIC et ordinateur. Si vous êtes un débutant absolu, consultez ici tous nos tutoriels PIC, où nous avons commencé à partir de zéro, comme apprendre MPLAB et XC8, interfacer LED, LCD, utiliser des minuteries, ADC, PWM, etc.
Ici, nous avons utilisé le module Bluetooth populaire HC-06. Grâce à ce module, nous pouvons recevoir et envoyer des informations sans fil depuis notre MCU PIC vers une application mobile ou un ordinateur. La communication entre PIC et HC-06 est établie à l'aide du module USART présent dans le microcontrôleur PIC. Vous pouvez également utiliser le HC-05. Nous opérons à nouveau sur le même mode Asynchrone 8 bits, mais cette fois nous allons modifier un peu notre code pour qu'il fonctionne avec le module Bluetooth. Par conséquent, l'apprentissage préalable du tutoriel UART est un avantage supplémentaire pour ce projet.
Dans ce tutoriel, nous allons activer ou désactiver une LED en envoyant une commande d'activation ou de désactivation depuis notre téléphone intelligent. Nous utiliserons une application Android appelée Bluetooth Terminal qui peut envoyer et recevoir des données via Bluetooth. Si nous envoyons un caractère «1» à partir de l'application, la lumière sera allumée dans la carte PIC et nous recevrons un accusé de réception au téléphone indiquant que la lumière a été allumée. De même, nous pouvons envoyer «0» à partir du téléphone pour l'éteindre. De cette façon, nous pouvons contrôler la lumière LED sur notre carte PIC, similaire au tutoriel UART mais maintenant sans fil. Le programme complet et la vidéo détaillée sont donnés à la fin de ce tutoriel.
Le schéma fonctionnel de base de la configuration est illustré ci-dessous.
Exigences:
Matériel:
- Carte de performance PIC16F877A
- Module Bluetooth HC-05 ou HC-06
- Ordinateur (pour la programmation)
- Téléphone portable
- Programmeur PICkit 3
Logiciel:
- MPLABX
- Terminal Bluetooth (application mobile)
Module Bluetooth HC-06:
Bluetooth peut fonctionner dans les deux modes suivants:
- Mode de commande
- Mode de fonctionnement
En mode de commande, nous pourrons configurer les propriétés Bluetooth comme le nom du signal Bluetooth, son mot de passe, le débit en bauds de fonctionnement, etc. Le mode de fonctionnement est celui dans lequel nous pourrons envoyer et recevoir des données entre le microcontrôleur PIC et le module Bluetooth. Par conséquent, dans ce tutoriel, nous ne jouerons qu'avec le mode de fonctionnement. Le mode de commande sera laissé aux paramètres par défaut. Le nom de l'appareil sera HC-05 (j'utilise HC-06) et le mot de passe sera 0000 ou 1234 et surtout le débit en bauds par défaut pour tous les modules Bluetooth sera 9600.
Le module fonctionne sur une alimentation 5 V et les broches de signal fonctionnent sur 3,3 V, par conséquent un régulateur de 3,3 V est présent dans le module lui-même. Par conséquent, nous n'avons pas à nous en préoccuper. Sur les six broches, seulement quatre seront utilisées en mode de fonctionnement. Le tableau de connexion des broches est illustré ci-dessous
S. Non |
Épinglé sur HC-05 / HC-06 |
Nom de l'épingle sur MCU |
Numéro de broche en PIC |
1 |
Vcc |
Vdd |
31 e broche |
2 |
Vcc |
Gnd |
32 ème broche |
3 |
Tx |
RC6 / Tx / CK |
25 ème broche |
4 |
Rx |
RC7 / Rx / DT |
26 ème broche |
5 |
Etat |
NC |
NC |
6 |
EN (Activer) |
NC |
NC |
Consultez nos autres projets pour en savoir plus sur le module Bluetooth HC-05 avec d'autres microcontrôleurs:
- Voiture jouet contrôlée par Bluetooth utilisant Arduino
- Système domotique contrôlé par Bluetooth utilisant 8051
- Lumières à commande vocale à l'aide de Raspberry Pi
- Radio FM contrôlée par téléphone intelligent utilisant Arduino et traitement
- Voiture robot contrôlée par téléphone portable utilisant G-Sensor et Arduino
Programmation du microcontrôleur PIC pour la communication Bluetooth:
Comme tous les modules (ADC, Timer, PWM), nous devons également initialiser notre module Bluetooth. L'initialisation sera similaire à l'initialisation UART mais nous devons apporter quelques modifications pour que le Bluetooth fonctionne parfaitement avec notre MCU PIC16F877A. Définissons les bits de configuration et commençons par la fonction d'initialisation Bluetooth.
Initialisation de Bluetooth:
Presque tous les modules Bluetooth du marché fonctionnent à une vitesse de transmission de 9600, il est très important de définir votre vitesse de transmission de la même manière que celle des modules Bluetooth fonctionnant en bauds, ici nous définissons SPBRG = 129 car nous fonctionnons à une fréquence d'horloge de 20Mhz avec 9600 comme vitesse de transmission. Par conséquent, l'initialisation ci-dessus ne fonctionnera que pour les modules Bluetooth fonctionnant à un débit de 9600 bauds. Il est également obligatoire d'activer le bit de vitesse de transmission rapide BRGH. Cela aidera à définir un débit en bauds précis.
// ****** Initialiser Bluetooth avec USART ******** // void Initialize_Bluetooth () {// Définir les broches de RX et TX // TRISC6 = 1; TRISC7 = 1; // Définit le débit en bauds en utilisant la table de consultation dans la fiche technique (pg114) // BRGH = 1; // Utilisez toujours un débit en bauds haute vitesse avec Bluetooth sinon cela ne fonctionnera pas SPBRG = 129; // Activez Asyc. Port série // SYNC = 0; SPEN = 1; // Définit la réception et la transmission 8 bits RX9 = 0; TX9 = 0; // Activer la transmission et la réception // TXEN = 1; CREN = 1; // Activer global et ph. interrompt // GIE = 1; PEIE = 1; // Activer les interruptions pour Tx. et Rx.// RCIE = 1; TXIE = 1; } // ___________ BT initialisé _____________ //
Si vous avez un module BT qui fonctionne à une vitesse de transmission différente, vous pouvez vous référer au tableau ci-dessous pour connaître votre valeur pour le SPBRG.
Chargement des données dans Bluetooth:
Une fois la fonction initialisée, nous avons trois fonctions dans notre programme pour envoyer et recevoir des données depuis Bluetooth. Contrairement à UART, nous avons peu de choses à considérer ici avant de pouvoir transmettre ou recevoir des données. Le module Bluetooth a un tampon de transmission et de réception à l'intérieur, les données qui lui sont envoyées seront stockées dans le tampon Tx. Ces données ne seront pas diffusées (envoyées à l'antenne) sauf si un retour chariot est envoyé au module. Par conséquent, pour transmettre des données, nous devons charger le tampon Rx de BT, puis le diffuser en utilisant le retour chariot.
Le travail ci-dessus peut être facilement réalisé en utilisant les fonctions suivantes. La fonction ci-dessous peut être utilisée lorsque nous devons charger un seul caractère dans le tampon Rx. Nous chargeons les données dans le registre TXREG et attendons qu'elles soient traitées par contrôle sur le drapeau TXIF et TRMT en utilisant des boucles while.
// Fonction pour charger le Bluetooth Rx. tampon avec un caractère // void BT_load_char (char byte) {TXREG = byte; tandis que (! TXIF); tandis que (! TRMT); } // Fin de la fonction //
La fonction ci-dessous est utilisée pour charger une chaîne dans le tampon Rx du module Bluetooth. La chaîne est divisée en caractères et chaque caractère est envoyé à la fonction BT_load_char () .
// Fonction pour charger Bluetooth Rx. tampon avec chaîne // void BT_load_string (char * string) {while (* string) BT_load_char (* string ++); } // Fin de la fonction /
Diffusion de données via Bluetooth:
Jusqu'à présent, nous venons de transmettre des informations dans le tampon Rx du module HC-05. Nous devons maintenant lui demander de diffuser les données en direct en utilisant cette fonction.
// Fonction de diffusion des données depuis RX. tampon // void broadcast_BT () {TXREG = 13; __delay_ms (500); } // Fin de la fonction //
Dans cette fonction, nous envoyons une valeur 13 dans le registre TXREG. Cette valeur 13 n'est rien d'autre que l'équivalent décimal du chariot (reportez-vous au graphique ASCII). Ensuite, un petit délai est créé pour que le diffuseur démarre.
Lecture des données depuis Bluetooth:
Similaire à UART, la fonction ci-dessous est utilisée pour lire les données du Bluetooth
// Fonction pour obtenir un caractère de Rx.buffer de BT // char BT_get_char (void) {if (OERR) // vérifier l'erreur de sur-exécution {CREN = 0; CREN = 1; // Réinitialiser CREN} if (RCIF == 1) // si l'utilisateur a envoyé un char renvoie le char (valeur ASCII) {while (! RCIF); return RCREG; } else // si l'utilisateur n'a envoyé aucun message return 0 return 0; } // Fin de la fonction /
Si l'utilisateur a envoyé une donnée, cette fonction renverra ces données particulières qui peuvent être enregistrées dans une variable et traitées. Si l'utilisateur n'a rien envoyé, la fonction renvoie zéro.
Fonction principale:
Nous avons utilisé toutes les fonctions expliquées ci-dessus à l'intérieur de la fonction principale. Nous envoyons un message d'introduction, puis attendons que l'utilisateur envoie des valeurs sur la base desquelles nous basculons le voyant LED ROUGE connecté à la broche RB3 sur notre carte Perf.
void main (void) {// Déclarations de variables de portée // int get_value; // Fin de la déclaration de variable // // Déclarations d'E / S // TRISB3 = 0; // Déclaration de fin d'E / S // Initialize_Bluetooth (); // préparons notre Bluetooth pour l'action // Affiche un message d'introduction une fois à la mise sous tension // BT_load_string ("Bluetooth Initialized and Ready"); broadcast_BT (); BT_load_string ("Appuyez sur 1 pour allumer la LED"); broadcast_BT (); BT_load_string ("Appuyez sur 0 pour éteindre la LED"); broadcast_BT (); // Fin du message // while (1) // Le lop infini {get_value = BT_get_char (); // Lire le char. reçu via BT // Si nous recevons un '0' // if (get_value == '0') {RB3 = 0; BT_load_string ("LED éteinte"); broadcast_BT (); } // Si nous recevons un '1' // if (get_value == '1') {RB3 = 1; BT_load_string ("LED allumée"); broadcast_BT ();}}}
Vérifiez le programme complet dans la section Code ci-dessous.
Schéma de circuit et configuration matérielle:
Les connexions de circuit pour ce projet sont très simples, nous devons simplement mettre sous tension le module Bluetooth et connecter le Tx à la 26 ème broche de PIC et Rx à la 25 ème broche de PIC comme indiqué dans le schéma ci-dessous:
Passons maintenant au matériel. Une fois la connexion établie, cela devrait ressembler à ceci.
Contrôle de la LED à l'aide de l'application mobile Bluetooth:
Maintenant, préparons notre application Android. Téléchargez l'application appelée Bluetooth Terminal depuis l'App Store ou utilisez ce lien. Une fois l'application téléchargée et installée, allumez votre carte PIC perf que nous utilisons depuis le début. Le petit voyant LED de votre module Bluetooth doit clignoter pour indiquer qu'il est sous tension et qu'il recherche activement un téléphone pour établir une connexion.
Accédez maintenant aux paramètres Bluetooth de votre téléphone et recherchez un nouveau périphérique Bluetooth.Vous devriez pouvoir voir le nom HC-05 ou HC-06 en fonction de votre module. J'utilise HC-06 et mon téléphone affiche donc l'écran suivant. Ensuite, essayez de le comparer et il vous demandera un mot de passe. Entrez le mot de passe 1234 (pour certains, il peut être 0000) et cliquez sur OK comme indiqué ci-dessous.
Une fois le couplage réussi, ouvrez l'application Bluetooth Terminal que nous venons d'installer. Accédez à l'option des paramètres et sélectionnez «Connecter un appareil - Sécurisé» comme indiqué ci-dessous. Cela ouvrira une boîte de dialogue dans laquelle tous nos appareils couplés seront répertoriés comme indiqué ci-dessous. Sélectionnez le module HC-05 ou HC-06.
Une fois la connexion établie, le voyant du module Bluetooth qui clignotait jusqu'à présent doit être devenu constant pour indiquer qu'il s'est connecté avec succès à votre mobile. Et nous devrions recevoir le message d'introduction de notre programme comme indiqué ci-dessous.
Maintenant, appuyez sur «1» pour allumer la lumière LED et appuyez sur «0» pour éteindre la lumière. Le travail complet sera montré dans la vidéo. L'écran de votre mobile ressemblera à ceci ci-dessous.
Alors voilà les gars, nous avons appris comment interfacer le module Bluetooth avec notre microcontrôleur PIC, maintenant avec l'aide de cela, nous pouvons essayer des projets sans fil. Il y a beaucoup de projets qui utilisent Bluetooth, vous pouvez les essayer ou trouver votre propre idée et les partager dans la section des commentaires. Consultez également notre projet précédent avec l'application de terminal Bluetooth et HC-05 comme la domotique contrôlée par téléphone intelligent utilisant Arduino et le verrouillage à code numérique contrôlé par téléphone intelligent utilisant Arduino.
J'espère que ce tutoriel vous a aidé! Si vous êtes coincé quelque part, veuillez utiliser la section commentaires.