- Czym różni się Bluetooth Low Energy (BLE)?
- Możliwości BLE modułu NRF24L01
- Wymagane składniki
- Począwszy od modułu nRF24L01
- Arduino
- Połączenie nRF24L01 z Arduino w celu komunikacji BLE
Bluetooth Low Energy (BLE) to wersja Bluetooth i jest obecna jako mniejsza, wysoce zoptymalizowana wersja klasycznego Bluetooth. Jest również znany jako Smart Bluetooth. BLE został zaprojektowany z myślą o najniższym możliwym zużyciu energii, szczególnie w przypadku niskich kosztów, niskiej przepustowości, małej mocy i małej złożoności. ESP32 ma wbudowane funkcje BLE, ale w przypadku innych mikrokontrolerów, takich jak Arduino, można użyć nRF24L01. Ten moduł RF może być również używany jako moduł BLE do wysyłania danych do innego urządzenia Bluetooth, takiego jak smartfony, komputer itp.
W tym samouczku pokażemy, jak wysłać dowolne dane przez BLE przy użyciu nRF24L01. Będziemy wysyłać odczyty temperatury z DHT11 do smartphone przy użyciu modułu Arduino i NRF nad BLE.
Czym różni się Bluetooth Low Energy (BLE)?
BLE został przyjęty ze względu na jego cechy zużycia energii, ponieważ był w stanie pracować przez dłuższy czas przy użyciu tylko ogniwa monetowego. W porównaniu z innymi standardami bezprzewodowymi, szybki rozwój BLE posunął się jeszcze szybciej ze względu na fenomenalne zastosowania w smartfonach, tabletach i komputerach przenośnych.
Możliwości BLE modułu NRF24L01
BLE wykorzystuje to samo pasmo ISM 2,4 GHz z szybkością transmisji od 250 Kb / s do 2 Mb / s, które jest dozwolone w wielu krajach i może być stosowane w zastosowaniach przemysłowych i medycznych. Pasmo zaczyna się od 2400 MHz do 2483,5 MHz i jest podzielone na 40 kanałów. Trzy z tych kanałów są znane jako „Reklama” i są używane przez urządzenia do wysyłania pakietów reklamowych z informacjami o nich, aby inne urządzenia BLE mogły się połączyć. Te kanały zostały początkowo wybrane w dolnej górnej części pasma i w środku pasma, aby uniknąć zakłóceń, które mogą potencjalnie zakłócać wiele kanałów. Aby dowiedzieć się więcej o BLE, postępuj zgodnie z tym samouczkiem.
Ten samouczek wyjaśnia, jak używać modułu NRF24L01 jako nadajnika-odbiornika BLE. Samouczek dotyczący NRF24L01 jako modułu RF został już wyjaśniony w łączeniu nRF24L01 z samouczkiem Arduino. Dzisiaj funkcjonalność BLE tego modułu zostanie wyjaśniona poprzez wysyłanie danych z czujnika do smartfona. Tutaj ten moduł nRF24L01 będzie połączony z mikrokontrolerem Arduino, a dane o temperaturze czujnika DHT11 zostaną przesłane do oficjalnej aplikacji Nordic BLE na Androida.
Wymagane składniki
Sprzęt komputerowy:
- Arduino UNO
- Moduł BLE nRF24L01
- Czujnik temperatury i wilgotności DHT11
- Zworki
Oprogramowanie:
- Arduino IDE
- Aplikacja Nordic BLE na Androida (nRF Temp 2.0 dla BLE lub nRF Connect dla telefonów komórkowych)
Począwszy od modułu nRF24L01
Moduły nRF24L01 są modułami nadawczo-odbiorczymi, co oznacza, że każdy moduł może zarówno wysyłać, jak i odbierać dane, ale ponieważ są w trybie półdupleksu, mogą jednocześnie wysyłać lub odbierać dane. Moduł posiada generyczny układ scalony nRF24L01 z nordyckich półprzewodników, który odpowiada za transmisję i odbiór danych. Układ scalony komunikuje się za pomocą protokołu SPI, dzięki czemu można go łatwo połączyć z dowolnym mikrokontrolerem. Z Arduino jest to o wiele łatwiejsze, ponieważ biblioteki są łatwo dostępne. Wykorzystaliśmy już moduł nRF24L01 z Arduino do stworzenia czatu i bezprzewodowego sterowania serwonapędami.
Poniżej pokazano wyprowadzenia standardowego modułu nRF24L01:
Moduł ma napięcie robocze od 1,9 V do 3,6 V (typowo 3,3 V) i pobiera bardzo mniej prądu, tylko 12 mA podczas normalnej pracy, dzięki czemu jest wydajny z baterii, a tym samym może działać nawet na ogniwach pastylkowych. Mimo że napięcie robocze wynosi 3,3 V, większość pinów ma tolerancję 5 V, a zatem można je bezpośrednio łączyć z mikrokontrolerami 5 V, takimi jak Arduino. Kolejną zaletą korzystania z tych modułów jest to, że każdy moduł ma 6 rurociągów. Oznacza to, że każdy moduł może komunikować się z 6 innymi modułami w celu przesyłania lub odbierania danych. Dzięki temu moduł nadaje się do tworzenia sieci typu gwiazda lub mesh w aplikacjach IoT. Mają również szeroki zakres adresów 125 unikalnych identyfikatorów, stąd w zamkniętym obszarze możemy używać 125 takich modułów bez ingerencji w siebie.
Arduino
Połączenie nRF24L01 z Arduino w celu komunikacji BLE
NRF24L01 działa na SPI, więc interfejs będzie używał protokołu SPI. Kompletny kod i wideo zostaną dołączone na końcu tego poradnika. Przewodnik po aplikacji na Androida jest również wyjaśniony w filmie. Tutaj moduł nRF24L01 służy do komunikacji z aplikacją na smartfony firmy Nordic.Najpierw uwzględnij wymagane biblioteki. Biblioteka zawiera RF24 umożliwiający dostęp do poleceń nRF24L01, bibliotekę DHT11 umożliwiającą dostęp do poleceń DHT11 oraz bibliotekę BTLE do korzystania z funkcji BLE.
#zawierać
Zdefiniuj i zainicjalizuj piny i funkcje dla modułu DHT11 i BLE. Typ DHT jest inicjalizowany jako DHT11, ponieważ używamy DHT11. DHT jest podłączony do pinu 4 GPIO, a piny CE i CSN modułu nRF są podłączone odpowiednio do pinu 9 i 10.
# zdefiniować DHTPIN # zdefiniować DHTTYPE DHT11 DHT22 DHT dht (DHTPIN, DHTTYPE); Radio RF24 (9, 10); BTLE btle (& radio);
Uruchom port szeregowy na 9600, możesz wybrać dowolny port. Następnie rozpocznij czujnik DHT, a także rozpocznij BTLE lokalną nazwą Bluetooth z maksymalnie 8 znakami.
Serial.begin (9600); dht.begin (); btle.begin ("CD Temp");
Odczytaj temperaturę z pętli i zapisz ją jako zmienną temp . Dodaj wiersz debugowania, aby wyświetlić komunikat o błędzie, jeśli DHT traci moc lub dzieje się coś nieoczekiwanego.
float temp = dht.readTemperature (); // odczyt danych temperatury if (isnan (h) - isnan (t)) { Serial.println (F ("Nie udało się odczytać z czujnika DHT!")); powrót; }
Zapisz wartość w buforze i przeanalizuj ją w module BLE. Wyślij również wartość temperatury do modułu BLE. Moduł BLE ogłosi dane dotyczące temperatury. Aplikacja na Androida może przeszukiwać moduł BLE i odbierać dane z czujnika.
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 ("Błąd BTLE..!"); }
Gdy skończysz, po prostu przejdź do następnego kanału.
btle.hopChannel ();
Ponieważ dokumentacja czujnika DHT zaleca zachowanie co najmniej 2-sekundowego opóźnienia po jednym odczycie, należy więc dodać 2-sekundowe opóźnienie.
opóźnienie (2000);
Po załadowaniu i sparowaniu smartfona z modułem nRF, zaczniesz pobierać wartości nRF Temp 2.0 dla aplikacji BLE na Androida, jak pokazano poniżej. Pełna procedura parowania i pobierania danych z aplikacji na Androida jest również wyjaśniona na filmie:
To kończy pełny samouczek dotyczący reklamowania danych z czujników w aplikacji Nordic Android za pomocą BLE nRF24L01. Jeśli napotkasz jakiekolwiek trudności, skomentuj poniżej lub napisz na naszym forum. Aby dowiedzieć się więcej o nRF24L02, możesz również spróbować utworzyć prywatny pokój rozmów za pomocą Arduino, nRF24L01 i przetwarzania.