- Чим відрізняється Bluetooth Low Energy (BLE)?
- Можливість BLE модуля NRF24L01
- Потрібні компоненти
- Починаючи з модуля nRF24L01
- Ардуїно
- Взаємодія 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 ГГц зі швидкістю передачі від 250 Кбіт / с до 2 Мбіт / с, що дозволено в багатьох країнах і може застосовуватися в промислових та медичних цілях. Діапазон починається від 2400 МГц до 2483,5 МГц, і він розділений на 40 каналів. Три з цих каналів відомі як "Реклама" і використовуються пристроями для надсилання рекламних пакетів з інформацією про них, щоб інші пристрої BLE могли підключатися. Спочатку ці канали були обрані в нижній верхній частині діапазону та в середині смуги, щоб уникнути перешкод, які можуть перешкоджати роботі ряду каналів. Щоб дізнатись більше про BLE, дотримуйтесь цього підручника.
Цей підручник пояснить, як використовувати модуль NRF24L01 як трансивер BLE. Підручник з NRF24L01 як RF-модуля вже пояснювався у взаємодії nRF24L01 з підручником Arduino. Сьогодні функціональність BLE цього модуля буде пояснена надсиланням даних сенсора на смарт-телефон. Тут цей модуль nRF24L01 буде з'єднаний з мікроконтролером Arduino, а дані про температуру датчика DHT11 будуть надіслані в офіційний додаток Android для Android Nordic BLE.
Потрібні компоненти
Обладнання:
- Arduino UNO
- Модуль BLE nRF24L01
- DHT11 Датчик температури та вологості
- Перемички
Програмне забезпечення:
- IDE Arduino
- Нордична програма BLE для Android (nRF Temp 2.0 для BLE або nRF Connect для мобільних пристроїв)
Починаючи з модуля nRF24L01
Модулі nRF24L01 - це приймально-передавальні модулі, тобто кожен модуль може одночасно надсилати та отримувати дані, але оскільки вони є напівдуплексними, вони можуть одночасно надсилати або отримувати дані. Модуль має загальну мікросхему nRF24L01 від північних напівпровідників, яка відповідає за передачу та прийом даних. ІЦ взаємодіє з використанням протоколу SPI, і, отже, може бути легко пов'язаний з будь-якими мікроконтролерами. З Arduino стає набагато простіше, оскільки бібліотеки доступні. Ми вже використовували модуль nRF24L01 з Arduino для створення кімнати чату та бездротового управління сервомоторами.
Розпінатури стандартного модуля nRF24L01 показані нижче:
Модуль має робочу напругу від 1,9 В до 3,6 В (зазвичай 3,3 В) і споживає дуже менше струму лише 12 мА під час нормальної роботи, що робить його батареєю ефективним і, отже, може працювати навіть на монетних комірках. Незважаючи на те, що робоча напруга становить 3,3 В, більшість висновків є толерантними до 5 В, і, отже, вони можуть бути безпосередньо пов'язані з мікроконтролерами 5 В, такими як Arduino. Ще однією перевагою використання цих модулів є те, що кожен модуль має 6 трубопроводів. Це означає, що кожен модуль може спілкуватися з 6 іншими модулями для передачі або отримання даних. Це робить модуль придатним для створення мереж зірок або сіток у додатках IoT. Також вони мають широкий діапазон адрес - 125 унікальних ідентифікаторів, отже, у закритій зоні ми можемо використовувати 125 із цих модулів, не втручаючись один в одного.
Ардуїно
Взаємодія nRF24L01 з Arduino для зв'язку BLE
NRF24L01 працює на SPI, тому взаємодія буде використовуватися протоколом SPI. Повний код і відео буде докладено в кінці цього уроку. Посібник програми для Android також пояснюється у відео. Тут модуль nRF24L01 використовується для спілкування з додатком Smartphone Nordic.По-перше, включіть необхідні бібліотеки. Бібліотека включає RF24 для доступу до команд nRF24L01, бібліотеку DHT11 для доступу до команд DHT11 та бібліотеку BTLE для використання функцій BLE.
#включати
Визначте та ініціалізуйте висновки та функції для модуля 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 довжиною до 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 для програми BLE для Android, як показано нижче. Повна процедура створення пари та отримання даних в додатку для Android також пояснюється у відео:
На цьому закінчено повний посібник з реклами даних датчиків у програмі Nordic Android App за допомогою BLE nRF24L01. Якщо у вас виникли труднощі, коментуйте нижче або пишіть на наш форум. Щоб дізнатись більше про nRF24L02, ви також можете спробувати створити приватну кімнату чату за допомогою Arduino, nRF24L01 та Processing.