Table des matières:

Comment utiliser Bluetooth (BLE) avec ESP32 : 3 étapes
Comment utiliser Bluetooth (BLE) avec ESP32 : 3 étapes

Vidéo: Comment utiliser Bluetooth (BLE) avec ESP32 : 3 étapes

Vidéo: Comment utiliser Bluetooth (BLE) avec ESP32 : 3 étapes
Vidéo: ESP32 Bluetooth Low Energy et APP Inventor en Français 2024, Juin
Anonim

#####REMARQUE#####

La méthode illustrée dans ce Instructables est ancienne et obsolète. Regardez cette vidéo pour la dernière méthode.

###############

Alors que l'ESP32 dispose d'une liste de fonctionnalités étendue (Wikipédia), la plus grande fonctionnalité qui attire l'attention est le Bluetooth v4.2 intégré avec prise en charge BLE. Mais cette déclaration peut être trompeuse, alors que le matériel est là, le support logiciel pour l'utilisation de Bluetooth est manquant. (c'est en cours de développement)

Pour ceux qui ne savent pas ce qu'est BLE, il signifie Bluetooth Low Energy. Il s'agit d'un protocole Bluetooth qui augmente considérablement la consommation d'énergie par rapport au Bluetooth "classique".

Dans ce Instructables, je vais vous montrer comment utiliser les ressources (logicielles) limitées à votre disposition pour envoyer des données d'une carte ESP32 à votre téléphone via BLE.

Quelques avis de non-responsabilité…

Quelques points à noter que je devrais mentionner avant de continuer avec ce guide.

Note 1: Quand je dis que le support Bluetooth n'est pas encore disponible, je veux dire dans l'environnement de développement arduino.

Le support peut très bien être disponible dans le SDK officiel ainsi que dans l'IDF mais je n'ai trouvé aucune instruction compétente pour ceux-ci.

Remarque 2: La méthode que j'utilise est une solution de contournement et non la façon dont BLE est idéalement censé fonctionner. La bibliothèque prend en charge la création de services en BLE n'est pas là pour l'environnement arduino.

La seule chose que vous pouvez faire de manière fiable est de créer une balise qui annonce son nom. Un commentaire YouTube le disait très élégamment: "LOL, un hack brutal. Mais qu'est-ce que tu peux faire ?"

Remarque 3: Le seul type de données que vous pouvez envoyer est une chaîne.

Vous pouvez très bien décider de coder et décoder d'autres types de données vers et depuis une chaîne, mais cela dépasse le cadre de ce guide.

Étape 1: L'exemple de construction

Image
Image
L'exemple de construction
L'exemple de construction
L'exemple de construction
L'exemple de construction
L'exemple de construction
L'exemple de construction

Si vous êtes juste ici pour l'explication, vous pouvez sauter cette étape, mais la parcourir pourrait vous donner un peu plus de clarté.

Je vais d'abord créer un exemple de projet, puis j'essaierai d'expliquer comment cela fonctionne et comment vous pouvez répliquer la communication Bluetooth. Nous allons construire un capteur de température portable qui envoie un flux en direct à votre smartphone. La construction peut fonctionner pendant des jours sur un seul li-po et démontre facilement les avantages de BLE.

Vous pouvez utiliser le module comme sous-verre pour isoler vos boissons et recevoir une notification dès que votre boisson atteint la température optimale. Parce que ce serait une parodie si vous deviez siroter un thé à un degré supérieur à 40.

Le seul matériel dont vous avez besoin est une carte ESP32 et un capteur de température numérique. Ma carte prend en charge une batterie externe, j'utilise donc un li-po de 3,7 V que j'ai récupéré d'un ancien appareil pour rendre ce projet portable.

Matériel

Les connexions pour le capteur de température sont simples. Le fil rouge se connecte à 3.3v, le noir se connecte à la terre (gnd), le jaune se connecte à GPIO 2 qui sur ma carte est marqué comme D9. Connectez une résistance de 4,7 k ohms entre les fils rouge et jaune. Je n'utilise pas la résistance, j'utilise plutôt un terminal enfichable à 3 broches fourni avec mon capteur. Il a une résistance de pull up intégrée.

Le li-po devrait vraiment être connecté à l'aide d'un connecteur JST, mais je ne pouvais pas me donner la peine d'en acheter un, alors j'ai juste inséré des câbles de démarrage (femelle à femelle) dans le connecteur et soudé une autre paire aux bornes de la batterie. Cela permet une connexion fiable et un interrupteur d'alimentation de fortune.

Maintenant, en tant qu'enceinte de projet, j'utilise un disque en polystyrène qui a été découpé dans une feuille plus grande. Cela en fait un excellent isolant. Un autre disque beaucoup plus petit est collé sur le dessus mais un peu sur le côté. C'est pour enrouler la longueur supplémentaire de fils afin qu'ils ne pendent pas partout. Après un emploi généreux de votre colle et un petit trou pour la sonde du capteur, vous êtes prêt à passer au logiciel.

Logiciel

Si vous n'avez pas déjà installé l'IDE Arduino, accédez à ce lien pour le télécharger. Le logiciel arduino par défaut n'est pas fourni avec les définitions de carte pour les différentes cartes ESP32. Pour les amener à aller sur ce lien et télécharger les fichiers dans un zip. Vous devez les décompresser à cet emplacement:

C:/Utilisateurs//Documents/Arduino/hardware/espserrif/ESP32

Où est votre nom d'utilisateur sur votre PC. Assurez-vous que les différents fichiers sont disponibles sous le dossier ESP32 et non sous un autre dossier.

Maintenant, si vous démarrez le logiciel arduino et accédez à outils-> cartes, vous devriez voir diverses cartes ESP32 lorsque vous faites défiler vers le bas.

La plupart des capteurs de température numériques utilisent le protocole OneWire pour communiquer avec les microcontrôleurs, nous devons donc obtenir la bibliothèque. Allez dans sketch->include library->gérer les bibliothèques et recherchez onewire et installez la bibliothèque qui compte beaucoup trop d'auteurs. Vous n'avez pas besoin du hub onewire. Ignorez-le.

Vous pouvez maintenant télécharger et ouvrir le code joint à cette étape (temperature-example.ino).

Si vous utilisez un capteur différent du mien, vous devrez modifier le code en conséquence. Remplacez le code sous getTemp(). Il suffit de renvoyer la température finale sous forme de

Revenir;

Où est le flotteur contenant la température.

Branchez la carte, sélectionnez la carte et le port appropriés dans les outils et appuyez sur télécharger.

Si le code refuse de télécharger, déconnectez le capteur et connectez le GPIO 0 à la terre. Restaurez les connexions après le téléchargement.

Votre ESP devrait maintenant crier la température de votre café au monde, mais vous avez besoin de quelqu'un qui peut la comprendre.

L'application Android

Désolé les utilisateurs d'iPhone (…pas vraiment).

Téléchargez l'apk à partir d'ici et installez-le. Lorsque vous démarrez l'application, vous serez accueilli avec une interface très simple.

Si vous obtenez un message d'erreur indiquant « publicité non prise en charge », cliquez sur OK et ignorez-le, mais si vous recevez un message indiquant « BLE n'est pas pris en charge », votre téléphone n'a pas Bluetooth 4.0 ou supérieur et ne pourrait pas fonctionner l'application.

Assurez-vous que Bluetooth sur votre téléphone est activé et cliquez sur « Démarrer la recherche », tant que l'esp est à portée et sous tension, vous devriez recevoir une valeur de température.

Erreurs possibles:

  • -1000:: Cela signifie que votre appareil n'a pas pu trouver l'ESP. assurez-vous que Bluetooth est activé et essayez de redémarrer l'ESP.
  • SNA:: Cela signifie que votre téléphone reçoit des données de l'ESP mais que l'ESP lui-même n'a pas pu trouver de capteur de température sur le GPIO 2. Assurez-vous que les connexions sont sécurisées, vérifiez si vous utilisez une résistance de la bonne valeur. Vérifiez avec les schémas de votre carte que vous êtes connecté au GPIO 2 et non à une broche marquée D2.

Étape 2: L'explication

Comment BLE fonctionne normalement, c'est qu'un appareil annonce son nom comme une balise, ce nom peut être vu par n'importe qui et est utilisé pour identifier l'appareil. Ensuite, l'appareil peut créer divers services qui sont vus par les autres lorsqu'ils s'y connectent. Ces services peuvent avoir différents flux de données.

Pour par ex. Un appareil nommé « Station météorologique » peut avoir été entretenu sous celui-ci comme « Température », « Humidité » et « Vent ». Lorsqu'un autre appareil BLE comme votre smartphone recherche des appareils, il verra la station météo et lorsqu'il s'y connectera, il pourra recevoir les flux de données correspondant aux différents services.

Les librairies (pour l'ESP32) dont nous disposons actuellement nous permettent de créer une balise que d'autres peuvent découvrir mais c'est tout. Nous ne pouvons pas créer de services et aucun appareil ne peut s'y connecter.

Donc, j'envoie des données sans créer de services en utilisant une technique similaire au protocole WiFi appelée Beacon Stuffing. Cela signifie que j'inclus les données à envoyer dans le nom de la balise elle-même. Cela me permet de publier des données sans avoir besoin d'autres appareils pour se connecter à la balise.

ble.begin(baliseMsg); //beaconMsg est le nom annoncé

Nous utilisons la bibliothèque SimpleBLE pour créer une balise avec son nom au format ESP. Où 'ESP' reste toujours inchangé au début du nom et est remplacé par les dernières données renvoyées par la fonction getValue() toutes les 100 millisecondes.

float getValue(){return sensorValue;}

L'application Android recherche les noms d'appareils BLE commençant par « ESP », une fois trouvé, elle divise le nom et n'affiche que les données de la fin.

La communication est à sens unique, l'application ne renvoie rien.

Étape 3: Conclusion

En fin de compte, cette méthode ne remplace pas une bibliothèque BLE correctement implémentée, mais elle peut suffire à faire avancer certains projets jusqu'à ce que la prise en charge complète de BLE arrive à Arduino. Espérons que ce Instructables vous a été utile.

Un GRAND Merci à DFRobot.com pour m'avoir envoyé ces produits:

  • Carte ESP32 FireBeetle
  • Bouclier d'expansion FireBeetle
  • Capteur de température DS18B20

J'ai récemment découvert cette bibliothèque. Le ReadME prétend que vous pouvez vous connecter à d'autres appareils BLE pour recevoir des données (vous ne pouvez pas vous annoncer). Je ne l'ai pas essayé mais vous pouvez le vérifier si cela vous intéresse.

Vous pouvez consulter la vidéo du projet sur: YouTube

Conseillé: