- En quoi Bluetooth Low Energy (BLE) est-il différent?
- Capacité BLE du module NRF24L01
- Composants requis
- À partir du module nRF24L01
- Arduino
- Interfaçage du nRF24L01 avec Arduino pour la communication BLE
Bluetooth Low Energy (BLE) est une version de Bluetooth et il est présent comme une version plus petite et hautement optimisée du Bluetooth classique. Il est également connu sous le nom de Smart Bluetooth. Le BLE a été conçu en gardant à l'esprit la consommation d'énergie la plus faible possible, spécifiquement pour un faible coût, une faible bande passante, une faible puissance et une faible complexité. ESP32 a des capacités BLE intégrées, mais pour d'autres microcontrôleurs comme Arduino, nRF24L01 peut être utilisé. Ce module RF peut également être utilisé comme module BLE pour envoyer les données à d'autres appareils Bluetooth tels que des smartphones, un ordinateur, etc.
Ici, dans ce didacticiel, nous montrerons comment envoyer des données via BLE à l'aide de nRF24L01. Nous enverrons les lectures de température du DHT11 au smartphone en utilisant Arduino et le module nRF via BLE.
En quoi Bluetooth Low Energy (BLE) est-il différent?
Le BLE a été adopté en raison de ses caractéristiques de consommation d'énergie, car il était capable de fonctionner pendant une période prolongée en utilisant juste une pile bouton. Par rapport à d'autres normes sans fil, la croissance rapide de BLE est allée plus vite en raison de ses applications phénoménales dans les smartphones, les tablettes et l'informatique mobile.
Capacité BLE du module NRF24L01
BLE utilise la même bande ISM 2,4 GHz avec un débit en bauds de 250 Kbps à 2 Mbps, ce qui est autorisé dans de nombreux pays et peut être appliqué à des applications industrielles et médicales. La bande commence à 2400 MHz à 2483,5 MHz et elle est divisée en 40 canaux. Trois de ces canaux sont connus sous le nom de «Publicité» et sont utilisés par les appareils pour envoyer des paquets publicitaires contenant des informations à leur sujet afin que d'autres appareils BLE puissent se connecter. Ces canaux ont été initialement sélectionnés dans la partie supérieure inférieure de la bande et au milieu de la bande pour éviter les interférences qui peuvent éventuellement interférer avec un certain nombre de canaux. Pour en savoir plus sur BLE, suivez ce didacticiel.
Ce didacticiel explique comment utiliser le module NRF24L01 comme émetteur-récepteur BLE. Le tutoriel sur NRF24L01 en tant que module RF a déjà été expliqué dans le tutoriel d'interfaçage du nRF24L01 avec Arduino. Aujourd'hui, la fonctionnalité BLE de ce module sera expliquée en envoyant des données de capteur à un téléphone intelligent. Ici, ce module nRF24L01 sera interfacé avec le microcontrôleur Arduino et les données de température du capteur DHT11 seront envoyées à l'application Android officielle Nordic BLE.
Composants requis
Matériel:
- Arduino UNO
- Module BLE nRF24L01
- Capteur de température et d'humidité DHT11
- Cavaliers
Logiciel:
- IDE Arduino
- Application Android Nordic BLE (nRF Temp 2.0 pour BLE ou nRF Connect pour mobile)
À partir du module nRF24L01
Les modules nRF24L01 sont des modules émetteurs-récepteurs, ce qui signifie que chaque module peut à la fois envoyer et recevoir des données, mais comme ils sont semi-duplex, ils peuvent envoyer ou recevoir des données à la fois. Le module a le IC générique nRF24L01 de semi-conducteurs nordiques qui est responsable de la transmission et de la réception des données. L'IC communique en utilisant le protocole SPI et peut donc être facilement interfacé avec n'importe quel microcontrôleur. Cela devient beaucoup plus facile avec Arduino car les bibliothèques sont facilement disponibles. Nous avons déjà utilisé le module nRF24L01 avec Arduino pour créer une salle de discussion et contrôler les servomoteurs sans fil.
Le brochage d'un module nRF24L01 standard est illustré ci-dessous:
Le module a une tension de fonctionnement de 1,9 V à 3,6 V (généralement 3,3 V) et consomme très moins de courant de seulement 12 mA en fonctionnement normal, ce qui le rend efficace sur la batterie et peut donc même fonctionner sur des piles bouton. Même si la tension de fonctionnement est de 3,3 V, la plupart des broches sont tolérantes à 5 V et peuvent donc être directement interfacées avec des microcontrôleurs 5 V comme Arduino. Un autre avantage de l'utilisation de ces modules est que chaque module possède 6 pipelines. Cela signifie que chaque module peut communiquer avec 6 autres modules pour transmettre ou recevoir des données. Cela rend le module adapté à la création de réseaux en étoile ou maillés dans les applications IoT. En outre, ils ont une large plage d'adresses de 125 ID uniques, donc dans une zone fermée, nous pouvons utiliser 125 de ces modules sans interférer les uns avec les autres.
Arduino
Interfaçage du nRF24L01 avec Arduino pour la communication BLE
Le nRF24L01 fonctionne sur SPI, donc l'interfaçage utilisera le protocole SPI. Le code complet et la vidéo seront joints à la fin de ce tutoriel. Le guide des applications Android est également expliqué dans la vidéo. Ici, le module nRF24L01 est utilisé pour communiquer avec l' application Smartphone de Nordic.Incluez d'abord les bibliothèques requises. La bibliothèque comprend RF24 pour accéder aux commandes nRF24L01, la bibliothèque DHT11 pour accéder aux commandes DHT11 et la bibliothèque BTLE pour utiliser les fonctions BLE.
#comprendre
Définissez et initialisez les broches et les fonctions du module DHT11 et BLE. Le type DHT est initialisé comme DHT11 puisque nous utilisons DHT11. Le DHT est connecté à la broche GPIO 4 et les broches CE et CSN du module nRF sont respectivement connectées aux broches 9 et 10.
#define DHTPIN #define DHTTYPE DHT11 DHT22 DHT DHT (DHTPIN, DHTTYPE); Radio RF24 (9, 10); BTLE btle (& radio);
Démarrez le port série à 9600, vous pouvez choisir n'importe quel port. Commencez ensuite le capteur DHT et commencez également BTLE avec le nom local Bluetooth avec un maximum de 8 caractères.
Serial.begin (9600); dht.begin (); btle.begin ("CD Temp");
Lisez la température sur la boucle et enregistrez-la sur une température variable à flotteur. Ajoutez une ligne de débogage pour afficher un message d'erreur si DHT perd son alimentation ou si quelque chose d'inattendu se produit.
float temp = dht.readTemperature (); // lire les données de température if (isnan (h) - isnan (t)) { Serial.println (F ("Failed to read from DHT sensor!")); revenir; }
Enregistrez la valeur dans Buffer et analysez-la dans le module BLE. Envoyez également la valeur de température au module BLE. Le module BLE publiera les données de température. L'application Android peut rechercher le module BLE et recevoir les données du capteur.
nrf_service_data buf; buf.service_uuid = NRF_TEMPERATURE_SERVICE_UUID; buf.value = BTLE:: to_nRF_Float (temp); if (! btle.advertise (0x16, & buf, sizeof (buf))) { Serial.println ("BTLE a échoué..!"); }
Une fois terminé, passez à la chaîne suivante.
btle.hopChannel ();
Étant donné que la documentation du capteur DHT recommande de conserver un délai d'au moins 2 secondes après une lecture, ajoutez donc un délai de 2 secondes.
retard (2000);
Après avoir téléchargé et couplé le smartphone avec le module nRF, vous commencerez à obtenir les valeurs sur l'application nRF Temp 2.0 pour BLE Android comme indiqué ci-dessous. La procédure complète de couplage et d'obtention des données sur l'application Android est également expliquée dans la vidéo:
Ceci termine le didacticiel complet sur la publicité des données du capteur sur l'application Android Nordic à l'aide de BLE nRF24L01. Si vous rencontrez des difficultés, commentez ci-dessous ou écrivez sur notre forum. Pour en savoir plus sur nRF24L02, vous pouvez également essayer de créer une salle de conversation privée à l'aide d'Arduino, nRF24L01 et de traitement.