- Premiers pas avec ESP32 Bluetooth
- Comprendre Bluetooth Low Energy (BLE) et ESP32 Classic Bluetooth
- Préparation de l'IDE Arduino pour ESP32
- Programme Bluetooth série pour ESP32
- Test du Bluetooth série avec ESP32
Les modules Bluetooth tels que HC-05 et HC-06 sont faciles à configurer et rapides à utiliser avec Arduino IDE, mais ils ont leurs propres limitations comme une consommation d'énergie élevée et ils fonctionnent sur l'ancien Bluetooth V2.0. De plus, récemment, je me suis procuré un nouveau kit ESP32 DEV, ces modules ont un ensemble de fonctionnalités telles que le Wi-Fi et le Bluetooth intégrés, de nombreuses broches ADC et DAC, le support audio, le support de la carte SD, le mode de veille profonde, etc. tout pour construire des projets IoT.
Et comme tout amateur l'adorerait, l'ESP32 est désormais officiellement pris en charge par l'IDE Arduino. Auparavant, nous devions faire une énorme solution de contournement avec la bibliothèque Neil Kolbans, mais maintenant, grâce au travail acharné de ce gars, la programmation ESP32 avec Arduino IDE est devenue un jeu d'enfant. Par conséquent, j'ai lancé mon Arduino IDE et j'ai parcouru quelques exemples de programmes BLE, à travers lesquels je n'ai rien compris. Après une longue période de surf et de youtubing, j'ai réalisé qu'il y avait beaucoup plus de choses à comprendre si vous deviez travailler avec Bluetooth Low Energy (BLE) en utilisant ESP32. J'ai décidé de couvrir le BLE dans des articles séparés, nous allons donc utiliser ici le Bluetooth série classique d'ESP32 pour basculer une LED à l'aide d'un téléphone intelligent.. Si vous souhaitez découvrir comment utiliser les fonctionnalités BLE, consultez cet article sur ESP32 BLE Server et ESP32 BLE Client
Premiers pas avec ESP32 Bluetooth
Le premier programme que je voulais essayer était un programme simple avec lequel je peux allumer ou éteindre une LED à partir d'une application de terminal Bluetooth pour téléphone portable, tout comme les bons vieux jours HC-05. Mais il s'avère que Bluetooth Low Energy (BLE) n'est pas en retrait pour cela. J'ai également découvert qu'il existe deux types de Bluetooth dans le module ESP32, l'un est le Bluetooth classique et l'autre est le BLE Bluetooth Low Energy. D'accord, mais pourquoi?…. pourquoi avons-nous deux types de Bluetooth et que dois-je utiliser pour mon projet?
Comprendre Bluetooth Low Energy (BLE) et ESP32 Classic Bluetooth
Le Bluetooth Low Energy, comme son nom l'indique, consomme moins d'énergie que le Bluetooth classique. Il est réalisé en envoyant des données au besoin avec des mises à jour périodiques prédéfinies. Mais contrairement au Bluetooth classique, il n'est pas utilisé pour transférer des fichiers ou de la musique. Vous êtes-vous déjà demandé comment votre téléphone identifie automatiquement que le périphérique Bluetooth que vous venez de coupler est un périphérique audio ou un ordinateur portable ou un téléphone, vous avez peut-être également vu que le niveau de la batterie du lecteur audio sans fil ou de la bande de fitness est automatiquement affiché dans la barre d'état de votre téléphone portable; tout cela est possible avec les caractéristiques des appareils BLE. Un appareil BLE fonctionne avec Bluetooth V4.0 et peut fonctionner avec une faible puissance en tant que serveur ou en tant que clientBLE un choix idéal pour les balises, les montres intelligentes, des bandes de conditionnement physique, etc.
Le Bluetooth classique, quant à lui, n'est que le simple vieux Bluetooth que nous utilisons pour transférer des fichiers et d'autres données. Presque tous les appareils BLE sont associés à la fonctionnalité Bluetooth classique. Le Bluetooth utilisé dans des modules comme HC-05 est une version du Bluetooth classique appelé Bluetooth SSP (Serial Port Protocol), ce qui signifie que le Bluetooth suit le protocole série standard qui facilite l'envoi et la réception de données sans trop de frais généraux. À la fin de ce didacticiel, nous apprendrons à utiliser la fonctionnalité Bluetooth série dans ESP32.
Ici, dans cet article, nous utiliserons la fonction Bluetooth série sur ESP32 pour le coupler avec un smartphone et utiliserons n'importe quelle application de terminal Bluetooth existante du Play Store pour envoyer des commandes à l'ESP32 et basculer le voyant à bord en conséquence.
Dans des articles ultérieurs, nous couvrirons ESP32 BLE en tant que serveur et client. Le serveur BLE est généralement utilisé pour envoyer des données BLE à d'autres appareils Bluetooth et le client BLE est utilisé pour scanner d'autres appareils BLE agissant ainsi comme balise.
Préparation de l'IDE Arduino pour ESP32
Notez que l'IDE Arduino par défaut ne prend pas en charge la carte ESP32; vous devez les télécharger et les installer à l'aide du gestionnaire de tableau. S'il s'agit de votre premier programme avec ESP32, suivez ce tutoriel de démarrage pour ajouter la carte ESP32 à votre Arduino et télécharger un croquis de test.
De plus, vous pouvez faire plus de projets avec ESP32, sans utiliser de microcontrôleur avec lui.
Programme Bluetooth série pour ESP32
Le programme complet pour basculer une LED à l'aide de ESP32 Bluetooth est donné à la fin de cette page. Sous cet en-tête, décomposons le code en petits extraits et essayons de les comprendre. Si vous avez déjà utilisé d'autres modules Bluetooth comme HC-05, vous trouverez que cet exemple de programme ESP32 Bluetooth Classic est très similaire.
L'idée du programme est d' initialiser une connexion Bluetooth série à l'aide de ESP32 et d'écouter les données des appareils couplés. Si les données entrantes sont «1», nous allumons la LED et si elle est «0», nous devons éteindre la LED. Nous commençons notre programme en ajoutant le fichier d'en-tête BluetoothSerial qui fait que l'ESP32 Bluetooth fonctionne comme Bluetoth SSP.
#include "BluetoothSerial.h" // Fichier d'en-tête pour Serial Bluetooth, sera ajouté par défaut dans Arduino
Il y a beaucoup de choses derrière cette bibliothèque, mais nous avons choisi de ne pas y entrer profondément pour garder les choses simples. La prochaine chose dont nous avons besoin est un objet pour nos opérations liées à Bluetooth. Ici, j'ai nommé le mien ESP_BT , mais vous pouvez choisir n'importe quel nom.
BluetoothSerial ESP_BT; // Objet pour Bluetooth
Ensuite, dans la fonction void setup () . Nous commençons la communication série avec le débit en bauds 9600 et initialisons le signal Bluetooth avec un nom. Ici, je l'ai nommé "ESP32_LED_Control ", ce sera le nom qui sera trouvé par notre téléphone lors de la tentative de couplage. Enfin, j'ai déclaré la broche LED intégrée comme broche de sortie puisque nous allons la basculer en fonction du signal Bluetooth.
void setup () { Serial.begin (9600); // Démarrer le moniteur série dans 9600 ESP_BT.begin ("ESP32_LED_Control"); // Nom de votre signal Bluetooth Serial.println ("Bluetooth Device is Ready to Pair"); pinMode (LED_BUILTIN, OUTPUT); // Spécifie que la broche LED est sortie }
À l'intérieur de la fonction de boucle vide infinie, nous vérifions s'il y a des données provenant du module Bluetooth, si oui, les données sont lues et stockées dans la variable entrante . Nous imprimons également cette valeur sur le moniteur série juste pour vérifier ce qui est reçu par l'Arduino.
if (ESP_BT.available ()) // Vérifie si nous recevons quelque chose de Bluetooth { entrant = ESP_BT.read (); // Lire ce que nous recevons Serial.print ("Received:"); Serial.println (entrant);
Maintenant, toutes les données reçues sont stockées dans la variable entrante , nous pouvons donc comparer directement cette variable avec la valeur attendue et effectuer l'action requise. Mais la valeur envoyée par Bluetooth sera en ombles forme et Arduino lira la valeur décimale du charbon qui est envoyé à partir du téléphone. Dans notre cas pour le caractère '0', la valeur décimale sera 48 et pour le caractère '1' la valeur décimale sera 49. Vous pouvez vous référer au graphique ASCII pour comprendre quelle sera la valeur décimale pour chaque caractère.
Ici, nous avons comparé la variable entrante avec 48 et 49 pour vérifier respectivement 0 et 1. S'il s'agit d'un 1, nous éteignons la LED et imprimons également un message d'accusé de réception à Bluetooth indiquant que la LED a été éteinte et vice versa pour 0.
if (entrant == 49) { digitalWrite (LED_BUILTIN, HIGH); ESP_BT.println ("LED allumée"); } if (entrant == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println ("LED éteinte"); }
Test du Bluetooth série avec ESP32
Connectez votre ESP à votre IDE Arduino et sélectionnez la carte et le port appropriés comme indiqué dans le didacticiel de démarrage. Comme il est un 3 e directeur du conseil d'administration du parti, il pourrait prendre un peu plus longtemps pour que le code compilé et téléchargé obtenir. Une fois téléchargé, lancez les moniteurs série (juste pour le débogage) et ouvrez le paramètre Bluetooth sur votre téléphone. Vous devriez trouver un appareil Bluetooth nommé ESP32_LED_Control avec.
Vous pouvez maintenant ouvrir n'importe quelle application de terminal Bluetooth sur votre smartphone, j'utilise celle nommée «Bluetooth Terminal» qui a été téléchargée depuis Google App Store. Connectez l'application Bluetooth à l'appareil que nous venons de coupler et tapez 1 et appuyez sur envoyer.
Le module ESP32 doit le recevoir et allumer la LED selon notre programme et également vous donner un message d'accusé de réception indiquant que la LED est allumée comme la capture d'écran ci-dessus. Vous pouvez également vérifier le moniteur série qui affichera les données reçues par l'ESP32 Bluetooth au format décimal, c'est-à-dire que votre Arduino lira 48 pour 0 et 49 pour 1 comme expliqué précédemment. L'instantané de la fenêtre de mon terminal est illustré ci-dessous.
De même, vous devriez également pouvoir éteindre la LED en envoyant 0 depuis l'application mobile. Le travail complet est montré dans la vidéo ci-dessous. J'espère que vous avez compris le tutoriel et appris quelque chose d'utile. Si vous avez des doutes, n'hésitez pas à les laisser dans la section commentaires ci-dessous ou à utiliser nos forums pour obtenir une aide technique.