- Как се различава Bluetooth Low Energy (BLE)?
- BLE способност на модул NRF24L01
- Необходими компоненти
- Започвайки с модул nRF24L01
- Arduino
- Взаимодействие nRF24L01 с Arduino за BLE комуникация
Bluetooth Low Energy (BLE) е версия на Bluetooth и присъства като по-малка, силно оптимизирана версия на класическия Bluetooth. Известен е още като Smart Bluetooth. BLE е проектиран, като се има предвид възможно най-ниската консумация на енергия, особено за ниска цена, ниска честотна лента, ниска мощност и ниска сложност. ESP32 има вградени BLE възможности, но за други микроконтролери като Arduino може да се използва nRF24L01. Този RF модул може да се използва и като BLE модул за изпращане на данните към друго Bluetooth устройство като смартфони, компютър и т.н.
Тук в този урок ще демонстрираме как да изпращаме всякакви данни през BLE с помощта на nRF24L01. Ще изпратим показания на температурата от DHT11 към смартфон, използвайки Arduino и nRF модул през BLE.
Как се различава Bluetooth Low Energy (BLE)?
BLE е приет поради характеристиките на консумацията на енергия, тъй като е бил в състояние да работи за продължителен период от време, използвайки само клетка за монети. В сравнение с други безжични стандарти, бързият растеж на BLE отиде още по-бързо поради феноменалните му приложения в смартфони, таблети и мобилни компютри.
BLE способност на модул NRF24L01
BLE използва същата честотна лента ISM от 2,4 GHz със скорост на предаване от 250Kbps до 2Mbps, която е разрешена в много страни и може да се приложи за индустриални и медицински приложения. Обхватът започва от 2400 MHz до 2483,5 MHz и е разделен на 40 канала. Три от тези канали са известни като „Реклама“ и се използват от устройствата за изпращане на рекламни пакети с информация за тях, така че други BLE устройства да могат да се свързват. Тези канали първоначално бяха избрани в долната горна част на лентата и в средата на лентата, за да се избегнат смущения, които евентуално могат да попречат на редица канали. За да научите повече за BLE, следвайте този урок.
Този урок ще обясни как да използвате модула NRF24L01 като BLE приемо-предавател. Урокът за NRF24L01 като RF модул вече е обяснен при взаимодействието на nRF24L01 с урок Arduino. Днес функционалността BLE на този модул ще бъде обяснена чрез изпращане на данни от сензора към смарт телефон. Тук този модул nRF24L01 ще бъде свързан с Arduino Microcontroller и данните за температурата на сензора DHT11 ще бъдат изпратени до официалното приложение за Android на Nordic BLE.
Необходими компоненти
Хардуер:
- Arduino UNO
- nRF24L01 BLE модул
- DHT11 Сензор за температура и влажност
- Джъмпери
Софтуер:
- IDE на Arduino
- Nordic BLE приложение за Android (nRF Temp 2.0 за BLE или nRF Connect за мобилни устройства)
Започвайки с модул nRF24L01
Модулите nRF24L01 са приемо-предавателни модули, което означава, че всеки модул може както да изпраща, така и да получава данни, но тъй като те са полудуплексни, те могат или да изпращат, или да получават данни наведнъж. Модулът има общ nRF24L01 IC от северни полупроводници, който отговаря за предаването и приемането на данни. IC комуникира с помощта на протокола SPI и следователно може лесно да бъде свързан с всякакви микроконтролери. С Arduino става много по-лесно, тъй като библиотеките са лесно достъпни. Вече използвахме модула nRF24L01 с Arduino за създаване на чат стая и за безжично управление на серво мотори.
Пиновете на стандартен модул nRF24L01 са показани по-долу:
Модулът има работно напрежение от 1,9 V до 3,6 V (обикновено 3,3 V) и консумира много по-малко ток от само 12 mA по време на нормална работа, което го прави ефективен от батерията и следователно дори може да работи на клетки с монети. Въпреки че работното напрежение е 3.3V, повечето щифтове са 5V толерантни и следователно могат да бъдат директно свързани с 5V микроконтролери като Arduino. Друго предимство на използването на тези модули е, че всеки модул има 6 тръбопровода. Значение, всеки модул може да комуникира с 6 други модула за предаване или получаване на данни. Това прави модула подходящ за създаване на звездни или мрежести мрежи в IoT приложения. Също така те имат широк адресен диапазон от 125 уникални идентификатора, следователно в затворена зона можем да използваме 125 от тези модули, без да се намесваме помежду си.
Arduino
Взаимодействие nRF24L01 с Arduino за BLE комуникация
NRF24L01 работи върху SPI, така че взаимодействието ще използва SPI протокол. Най- пълен код и видеото ще бъде приложен в края на този урок. Ръководството за приложение за Android също е обяснено във видеото. Тук модулът nRF24L01 се използва за комуникация със Smartphone App на Nordic.Първо включете необходимите библиотеки. Библиотеката включва RF24 за достъп до команди nRF24L01, библиотека DHT11 за достъп до команди DHT11 и библиотека BTLE за използване на BLE функции.
#include
Дефинирайте и инициализирайте щифтовете и функциите за DHT11 и BLE модула. Типът DHT се инициализира като DHT11, тъй като използваме DHT11. DHT е свързан към GPIO Pin 4, а щифтовете CE и CSN на модула nRF са свързани съответно към Pin 9 и 10.
#define DHTPIN #define DHTTYPE DHT11 DHT22 DHT dht (DHTPIN, DHTTYPE); Радио RF24 (9, 10); BTLE btle (& радио);
Стартирайте серийния порт на 9600, можете да изберете всеки порт. След това започнете DHT сензора и също така започнете BTLE с Bluetooth Local Name с максимум 8 знака.
Serial.begin (9600); dht.begin (); btle.begin ("CD Temp");
Прочетете температурата над контура и я запазете в плаваща променлива temp . Добавете линия за отстраняване на грешки за показване на съобщение за грешка, ако DHT загуби мощността си или се случи нещо неочаквано.
float temp = dht.readTemperature (); // четем данните за температурата, ако (isnan (h) - isnan (t)) { Serial.println (F ("Неуспешно четене от DHT сензор!")); връщане; }
Запазете стойността в буфер и я анализирайте в модула BLE. Също така изпратете стойността на температурата на BLE модула. Модулът BLE ще рекламира данните за температурата. Приложението за Android може да търси модула BLE и да получава данни от сензора.
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 не успя..!"); }
Когато сте готови, просто преминете към следващия канал.
btle.hopChannel ();
Тъй като документацията на DHT сензора препоръчва да се запази забавяне от минимум 2 секунди след едно четене, така че добавете забавяне от 2 секунди.
забавяне (2000);
След като качите и сдвоите смартфона с nRF модул, ще започнете да получавате стойностите на nRF Temp 2.0 за приложение за Android BLE, както е показано по-долу. Пълната процедура за сдвояване и получаване на данни в приложението за Android също е обяснена във видеото:
Това завършва пълния урок за рекламиране на данните от сензора в Nordic Android App с помощта на BLE nRF24L01. Ако откриете някакви затруднения, коментирайте по-долу или пишете на нашия форум. За да проучите повече за nRF24L02, можете също да опитате да създадете частна стая за чат, използвайки Arduino, nRF24L01 и Processing.