- Bluetooth Düşük Enerji'nin (BLE) farkı nedir?
- NRF24L01 Modülünün BLE Yeteneği
- Gerekli Bileşenler
- NRF24L01 Modülünden itibaren
- Arduino
- BLE iletişimi için nRF24L01'in Arduino ile arayüzlenmesi
Bluetooth Low Energy (BLE), Bluetooth'un bir sürümüdür ve klasik Bluetooth'un daha küçük, oldukça optimize edilmiş bir sürümü olarak mevcuttur. Akıllı Bluetooth olarak da bilinir. BLE, özellikle düşük maliyet, düşük bant genişliği, düşük güç ve düşük karmaşıklık için mümkün olan en düşük güç tüketimi göz önünde bulundurularak tasarlanmıştır. ESP32'nin dahili BLE yetenekleri vardır, ancak Arduino gibi diğer mikro denetleyiciler için nRF24L01 kullanılabilir. Bu RF modülü, verileri akıllı telefonlar, bilgisayar vb. Gibi diğer Bluetooth cihazlarına göndermek için BLE modülü olarak da kullanılabilir.
Bu eğitimde, nRF24L01 kullanarak BLE üzerinden herhangi bir verinin nasıl gönderileceğini göstereceğiz. Biz olacaktır BLE üzerinde Arduino ve NRF modülü kullanarak akıllı telefon için DHT11 gelen sıcaklık değerlerini gönderin.
Bluetooth Düşük Enerji'nin (BLE) farkı nedir?
BLE, yalnızca bir madeni para pili kullanarak uzun bir süre çalışabildiği için güç tüketimi özellikleri nedeniyle benimsenmiştir. Diğer kablosuz standartlarla karşılaştırıldığında, BLE'nin hızlı büyümesi, akıllı telefonlar, tabletler ve mobil bilgi işlemdeki olağanüstü uygulamaları nedeniyle daha da hızlı gitti.
NRF24L01 Modülünün BLE Yeteneği
BLE, birçok ülkede izin verilen ve endüstriyel ve tıbbi uygulamalara uygulanabilen 250Kbps'den 2Mbps'ye kadar olan baud hızına sahip aynı 2.4 GHz ISM bandını kullanır. Bant 2400 MHz ila 2483,5 MHz'de başlar ve 40 kanala bölünmüştür. Bu kanallardan üçü 'Reklamcılık' olarak bilinir ve cihazlar tarafından, diğer BLE cihazlarının bağlanabilmesi için kendileriyle ilgili bilgiler içeren reklam paketleri göndermek için kullanılır. Bu kanallar, muhtemelen birkaç kanala müdahale edebilecek paraziti önlemek için bandın alt üst kısmında ve bandın ortasında seçilmiştir. BLE hakkında daha fazla bilgi edinmek için bu öğreticiyi izleyin.
Bu eğitimde NRF24L01 modülünün BLE alıcı-verici olarak nasıl kullanılacağı açıklanacaktır. RF modülü olarak NRF24L01 ile ilgili eğitim, nRF24L01 ile Arduino öğreticisi arasında arayüz oluşturmada zaten açıklanmıştır. Bugün bu modülün BLE işlevselliği, sensör verilerini bir akıllı telefona göndererek açıklanacaktır. Burada bu nRF24L01 modülü, Arduino Microcontroller ile arayüzlenecek ve DHT11 sensör sıcaklık verileri resmi Nordic BLE android uygulamasına gönderilecektir.
Gerekli Bileşenler
Donanım:
- Arduino UNO
- nRF24L01 BLE Modülü
- DHT11 Sıcaklık ve Nem Sensörü
- Süveter
Yazılım:
- Arduino IDE
- Nordic BLE Android Uygulaması (BLE için nRF Temp 2.0 veya Mobil için nRF Connect)
NRF24L01 Modülünden itibaren
NRF24L01 modülleri alıcı-verici modülleridir, yani her modül veri gönderip alabilir, ancak yarı çift yönlü olduklarından bir seferde veri gönderebilir veya alabilir. Modül, verilerin iletilmesinden ve alınmasından sorumlu olan Nordic yarı iletkenlerinden jenerik nRF24L01 IC'ye sahiptir. IC, SPI protokolünü kullanarak iletişim kurar ve bu nedenle herhangi bir mikro denetleyici ile kolayca arayüzlenebilir. Kitaplıklar hazır olduğundan Arduino ile çok daha kolay hale geliyor. Bir sohbet odası oluşturmak ve servo motorları kablosuz olarak kontrol etmek için zaten Arduino ile nRF24L01 modülünü kullandık.
Standart bir nRF24L01 modülünün pin çıkışı aşağıda gösterilmiştir:
Modül, 1.9V ila 3.6V (tipik olarak 3.3V) arasında çalışma voltajına sahiptir ve normal çalışma sırasında yalnızca 12mA gibi çok daha az akım tüketir, bu da pilin verimli olmasını sağlar ve böylece madeni para pillerinde bile çalışabilir. Çalışma voltajı 3,3V olsa da pinlerin çoğu 5V toleranslıdır ve bu nedenle Arduino gibi 5V mikrodenetleyicilerle doğrudan arayüzlenebilir. Bu modülleri kullanmanın bir diğer avantajı, her modülün 6 Pipeline sahip olmasıdır. Yani, her modül veri iletmek veya almak için diğer 6 modülle iletişim kurabilir. Bu, modülü IoT uygulamalarında yıldız veya örgü ağlar oluşturmak için uygun hale getirir. Ayrıca 125 benzersiz ID'den oluşan geniş bir adres aralığına sahiptirler, bu nedenle kapalı bir alanda bu modüllerden 125'ini birbirine karışmadan kullanabiliriz.
Arduino
BLE iletişimi için nRF24L01'in Arduino ile arayüzlenmesi
NRF24L01 SPI üzerinde çalışır, bu nedenle arayüz SPI Protokolünü kullanacaktır. Tam kod ve video bu eğiticinin sonundaki eklenecektir. Videoda Android uygulama kılavuzu da açıklanmıştır. Burada nRF24L01 modülü Nordic Smartphone Uygulaması ile iletişim kurmak için kullanılır .Öncelikle gerekli kitaplıkları ekleyin. Kitaplık, nRF24L01 komutlarına erişmek için RF24'ü, DHT11 komutlarına erişmek için DHT11 kitaplığını ve BLE işlevlerini kullanmak için BTLE kitaplığını içerir.
#Dahil etmek
DHT11 ve BLE modülü için pinleri ve fonksiyonları tanımlayın ve başlatın. DHT11 kullandığımız için DHT türü DHT11 olarak başlatılır. DHT, GPIO Pin 4'e bağlanır ve nRF modülünün CE ve CSN pinleri sırasıyla Pin 9 ve 10'a bağlanır.
# tanımla DHTPIN # DHTTYPE DHT11 DHT22 DHT dht (DHTPIN, DHTTYPE) tanımlar; RF24 radyo (9, 10); BTLE btle (& radyo);
Seri bağlantı noktasını 9600'de başlatın, herhangi bir bağlantı noktasını seçebilirsiniz. Ardından DHT sensörünü başlatın ve BTLE'yi maksimum 8 karakter uzunluğunda Bluetooth Yerel Adı ile başlatın.
Serial.begin (9600); dht.begin (); btle.begin ("CD Sıcaklığı");
Döngünün üzerindeki sıcaklığı okuyun ve değişken bir değişken sıcaklığa kaydedin. DHT gücünü kaybederse veya beklenmedik bir şey olursa bir hata mesajı göstermek için bir hata ayıklama satırı ekleyin.
float temp = dht.readTemperature (); // sıcaklık verilerini oku if (isnan (h) - isnan (t)) { Serial.println (F ("DHT sensöründen okunamadı!")); dönüş; }
Değeri Buffer'a kaydedin ve BLE modülüne ayrıştırın. Ayrıca Sıcaklık değerini BLE Modülüne gönderin. BLE modülü Sıcaklık verilerinin reklamını yapacaktır. Android uygulaması BLE modülünü arayabilir ve sensör verilerini alabilir.
nrf_service_data buf; buf.service_uuid = NRF_TEMPERATURE_SERVICE_UUID; buf.value = BTLE:: to_nRF_Float (temp); eğer (! btle.advertise (0x16, & buf, sizeof (buf))) { Serial.println ("BTLE başarısız oldu..!"); }
İşiniz bittiğinde, bir sonraki kanala atlayın.
btle.hopChannel ();
DHT sensörü belgeleri, bir okumadan sonra en az 2 saniyelik bir gecikme bırakılmasını önerdiğinden, 2 saniyelik bir gecikme ekleyin.
gecikme (2000);
Akıllı telefonu nRF modülü ile yükledikten ve eşleştirdikten sonra, aşağıda gösterildiği gibi BLE android uygulaması için nRF Temp 2.0'daki değerleri almaya başlayacaksınız. Android uygulamasında verileri eşleştirme ve alma prosedürünün tamamı videoda açıklanmıştır:
Bu, sensör verilerinin BLE nRF24L01 kullanarak Nordic Android Uygulamasına reklamı ile ilgili eğitimin tamamını tamamlar. Herhangi bir zorluk bulursanız, aşağıya yorum yapın veya forumumuza yazın. NRF24L02 hakkında daha fazlasını keşfetmek için ayrıca Arduino, nRF24L01 ve Processing kullanarak Özel Sohbet Odası Oluşturmayı deneyebilirsiniz.