- Wie unterscheidet sich Bluetooth Low Energy (BLE)?
- BLE-Fähigkeit des NRF24L01-Moduls
- Erforderliche Komponenten
- Beginnend mit dem nRF24L01-Modul
- Arduino
- Schnittstelle von nRF24L01 mit Arduino für die BLE-Kommunikation
Bluetooth Low Energy (BLE) ist eine Version von Bluetooth und wird als kleinere, hochoptimierte Version des klassischen Bluetooth angeboten. Es ist auch als Smart Bluetooth bekannt. Die BLE wurde unter Berücksichtigung des geringstmöglichen Stromverbrauchs speziell für niedrige Kosten, geringe Bandbreite, geringen Stromverbrauch und geringe Komplexität entwickelt. ESP32 verfügt über integrierte BLE-Funktionen, aber für andere Mikrocontroller wie Arduino kann nRF24L01 verwendet werden. Dieses RF-Modul kann auch als BLE-Modul verwendet werden, um die Daten an andere Bluetooth-Geräte wie Smartphones, Computer usw. zu senden.
Hier in diesem Tutorial zeigen wir Ihnen, wie Sie mit nRF24L01 Daten über BLE senden. Wir werden Temperaturmesswerte von DHT11 mit Arduino und nRF-Modul über BLE an das Smartphone senden.
Wie unterscheidet sich Bluetooth Low Energy (BLE)?
Die BLE wurde aufgrund ihrer Stromverbrauchsfunktionen eingeführt, da sie über einen längeren Zeitraum nur mit einer Knopfzelle betrieben werden konnte. Im Vergleich zu anderen drahtlosen Standards ist das schnelle Wachstum von BLE aufgrund seiner phänomenalen Anwendungen in Smartphones, Tablets und Mobile Computing weiter beschleunigt worden.
BLE-Fähigkeit des NRF24L01-Moduls
BLE verwendet dasselbe 2,4-GHz-ISM-Band mit einer Baudrate von 250 Kbit / s bis 2 Mbit / s, das in vielen Ländern zulässig ist und für industrielle und medizinische Anwendungen verwendet werden kann. Das Band beginnt bei 2400 MHz bis 2483,5 MHz und ist in 40 Kanäle unterteilt. Drei dieser Kanäle werden als "Werbung" bezeichnet und von Geräten verwendet, um Werbepakete mit Informationen darüber zu senden, damit andere BLE-Geräte eine Verbindung herstellen können. Diese Kanäle wurden ursprünglich am unteren oberen Rand des Bandes und in der Mitte des Bandes ausgewählt, um Interferenzen zu vermeiden, die möglicherweise eine Anzahl von Kanälen stören können. Um mehr über BLE zu erfahren, folgen Sie diesem Tutorial.
In diesem Tutorial wird die Verwendung des NRF24L01-Moduls als BLE-Transceiver erläutert. Das Tutorial zu NRF24L01 als RF-Modul wurde bereits in der Schnittstelle von nRF24L01 mit dem Arduino-Tutorial erläutert. Heute wird die BLE-Funktionalität dieses Moduls durch das Senden von Sensordaten an ein Smartphone erklärt. Hier wird dieses nRF24L01-Modul mit dem Arduino Microcontroller verbunden und die Temperaturdaten des DHT11-Sensors werden an die offizielle nordische BLE-Android-Anwendung gesendet.
Erforderliche Komponenten
Hardware:
- Arduino UNO
- nRF24L01 BLE-Modul
- DHT11 Temperatur- und Feuchtigkeitssensor
- Jumper
Software:
- Arduino IDE
- Nordische BLE-Android-Anwendung (nRF Temp 2.0 für BLE oder nRF Connect für Mobilgeräte)
Beginnend mit dem nRF24L01-Modul
Die nRF24L01-Module sind Transceiver-Module, dh jedes Modul kann Daten senden und empfangen. Da es sich jedoch um Halbduplex-Module handelt, können sie Daten gleichzeitig senden oder empfangen. Das Modul verfügt über den generischen IC nRF24L01 von nordischen Halbleitern, der für das Senden und Empfangen von Daten verantwortlich ist. Der IC kommuniziert über das SPI-Protokoll und kann daher problemlos mit beliebigen Mikrocontrollern verbunden werden. Mit Arduino wird es viel einfacher, da die Bibliotheken leicht verfügbar sind. Wir haben bereits das nRF24L01-Modul mit Arduino verwendet, um einen Chatraum zu erstellen und Servomotoren drahtlos zu steuern.
Die Pinbelegung eines Standardmoduls nRF24L01 ist unten dargestellt:
Das Modul hat eine Betriebsspannung von 1,9 V bis 3,6 V (normalerweise 3,3 V) und verbraucht im Normalbetrieb nur 12 mA weniger Strom, wodurch es batterieeffizient ist und daher sogar mit Knopfzellen betrieben werden kann. Obwohl die Betriebsspannung 3,3 V beträgt, sind die meisten Pins 5 V tolerant und können daher direkt mit 5 V-Mikrocontrollern wie Arduino verbunden werden. Ein weiterer Vorteil der Verwendung dieser Module besteht darin, dass jedes Modul über 6 Pipelines verfügt. Das heißt, jedes Modul kann mit 6 anderen Modulen kommunizieren, um Daten zu senden oder zu empfangen. Dadurch eignet sich das Modul zum Erstellen von Stern- oder Maschennetzwerken in IoT-Anwendungen. Außerdem haben sie einen weiten Adressbereich von 125 eindeutigen IDs, daher können wir in einem geschlossenen Bereich 125 dieser Module verwenden, ohne sich gegenseitig zu stören.
Arduino
Schnittstelle von nRF24L01 mit Arduino für die BLE-Kommunikation
Der nRF24L01 arbeitet mit SPI, daher verwendet die Schnittstelle das SPI-Protokoll. Der vollständige Code und das Video werden am Ende dieses Tutorials angehängt. Der Android App Guide wird auch im Video erklärt. Hier wird das Modul nRF24L01 zur Kommunikation mit der Smartphone App von Nordic verwendet.Fügen Sie zunächst die erforderlichen Bibliotheken hinzu. Die Bibliothek enthält RF24 für den Zugriff auf nRF24L01-Befehle, die DHT11-Bibliothek für den Zugriff auf DHT11-Befehle und die BTLE-Bibliothek für die Verwendung von BLE-Funktionen.
#einschließen
Definieren und initialisieren Sie die Pins und Funktionen für das DHT11- und BLE-Modul. Der DHT-Typ wird als DHT11 initialisiert, da wir DHT11 verwenden. Das DHT ist mit dem GPIO-Pin 4 verbunden, und die CE- und CSN-Pins des nRF-Moduls sind mit Pin 9 bzw. 10 verbunden.
# DHTPIN definieren # DHTTYPE definierenDHT11 DHT22 DHT dht (DHTPIN, DHTTYPE); RF24-Radio (9, 10); BTLE btle (& Radio);
Starten Sie die serielle Schnittstelle bei 9600. Sie können eine beliebige Schnittstelle auswählen. Starten Sie dann den DHT-Sensor und BTLE mit dem lokalen Bluetooth-Namen mit maximal 8 Zeichen.
Serial.begin (9600); dht.begin (); btle.begin ("CD Temp");
Lesen Sie die Temperatur über die Schleife und speichern Sie es auf einem Float - Variable Temp . Fügen Sie eine Debug-Zeile hinzu, um eine Fehlermeldung anzuzeigen, wenn DHT seine Stromversorgung verliert oder etwas Unerwartetes passiert.
float temp = dht.readTemperature (); // Temperaturdaten lesen if (isnan (h) - isnan (t)) { Serial.println (F ("Fehler beim Lesen vom DHT-Sensor!")); Rückkehr; }}
Speichern Sie den Wert in Buffer und analysieren Sie ihn im BLE-Modul. Senden Sie auch den Temperaturwert an das BLE-Modul. Das BLE-Modul gibt die Temperaturdaten bekannt. Die Android App kann das BLE-Modul durchsuchen und die Sensordaten empfangen.
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 failed..!"); }}
Wenn Sie fertig sind, springen Sie einfach zum nächsten Kanal.
btle.hopChannel ();
Da in der Dokumentation zum DHT-Sensor empfohlen wird, nach einem Messwert eine Verzögerung von mindestens 2 Sekunden einzuhalten, sollten Sie eine Verzögerung von 2 Sekunden hinzufügen.
Verzögerung (2000);
Nachdem Sie das Smartphone hochgeladen und mit dem nRF-Modul gekoppelt haben, erhalten Sie die Werte für nRF Temp 2.0 für die BLE-Android-Anwendung wie unten gezeigt. Das vollständige Verfahren zum Pairing und Abrufen der Daten in der Android App wird auch im Video erläutert:
Damit ist das vollständige Tutorial zum Werben der Sensordaten für die Nordic Android App mit BLE nRF24L01 abgeschlossen. Wenn Sie Schwierigkeiten haben, kommentieren Sie unten oder schreiben Sie in unser Forum. Um mehr über nRF24L02 zu erfahren, können Sie auch versuchen, einen privaten Chatraum mit Arduino, nRF24L01 und Processing zu erstellen.