- Чем отличается Bluetooth Low Energy (BLE)?
- Возможность BLE модуля NRF24L01
- Необходимые компоненты
- Начиная с модуля nRF24L01
- Ардуино
- Взаимодействие nRF24L01 с Arduino для связи BLE
Bluetooth Low Energy (BLE) - это версия Bluetooth, которая представлена в виде уменьшенной, оптимизированной версии классического Bluetooth. Он также известен как Smart Bluetooth. BLE был разработан с учетом минимально возможного энергопотребления, особенно для низкой стоимости, низкой пропускной способности, низкого энергопотребления и низкой сложности. ESP32 имеет встроенные возможности BLE, но для других микроконтроллеров, таких как Arduino, можно использовать nRF24L01. Этот радиочастотный модуль также может использоваться как модуль 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 будут отправлены в официальное приложение Nordic BLE для Android.
Необходимые компоненты
Оборудование:
- Arduino UNO
- Модуль nRF24L01 BLE
- Датчик температуры и влажности DHT11
- Джемперы
Программного обеспечения:
- IDE Arduino
- Приложение Nordic BLE для Android (nRF Temp 2.0 для BLE или nRF Connect для мобильных устройств)
Начиная с модуля nRF24L01
Модули nRF24L01 являются модулями приемопередатчиков, что означает, что каждый модуль может как отправлять, так и получать данные, но, поскольку они полудуплексные, они могут либо отправлять, либо получать данные одновременно. В модуле используется универсальная микросхема nRF24L01 от Nordic semi-wirectors, которая отвечает за передачу и прием данных. IC взаимодействует с использованием протокола 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 используется для связи с приложением для смартфонов Nordic.Сначала включите необходимые библиотеки. Библиотека включает RF24 для доступа к командам nRF24L01, библиотеку DHT11 для доступа к командам DHT11 и библиотеку BTLE для использования функций BLE.
#включают
Определите и инициализируйте контакты и функции для модуля DHT11 и BLE. Тип DHT инициализируется как DHT11, поскольку мы используем DHT11. DHT подключается к контакту 4 GPIO, а контакты CE и CSN модуля nRF подключены к контактам 9 и 10 соответственно.
#define DHTPIN #define DHTTYPE DHT11 DHT22 DHT dht (DHTPIN, DHTTYPE); Радиостанция РФ24 (9, 10); BTLE btle (и радио);
Запустите последовательный порт на 9600, вы можете выбрать любой порт. Затем запустите датчик DHT, а также начните BTLE с локального имени Bluetooth длиной не более 8 символов.
Serial.begin (9600); dht.begin (); btle.begin ("Температура компакт-диска");
Считайте температуру по контуру и сохраните ее в переменной temp с плавающей запятой. Добавьте строку отладки для отображения сообщения об ошибке, если DHT теряет свою мощность или происходит что-то неожиданное.
float temp = dht.readTemperature (); // считываем данные о температуре if (isnan (h) - isnan (t)) { Serial.println (F («Не удалось прочитать с датчика DHT!»)); возвращение; }
Сохраните значение в Buffer и проанализируйте его в модуле BLE. Также отправьте значение температуры в модуль BLE. Модуль BLE будет рекламировать данные о температуре. Приложение для Android может выполнять поиск в модуле BLE и получать данные датчика.
nrf_service_data buf; buf.service_uuid = NRF_TEMPERATURE_SERVICE_UUID; buf.value = BTLE:: to_nRF_Float (темп); if (! btle.advertise (0x16, & buf, sizeof (buf))) { Serial.println ("Ошибка BTLE..!"); }
Когда закончите, просто перейдите на следующий канал.
btle.hopChannel ();
Поскольку документация датчика DHT рекомендует сохранять задержку не менее 2 секунд после одного измерения, поэтому добавьте задержку в 2 секунды.
задержка (2000);
После загрузки и сопряжения смартфона с модулем nRF вы начнете получать значения nRF Temp 2.0 для Android-приложения BLE, как показано ниже. Полная процедура сопряжения и получения данных в приложении для Android также объясняется в видео:
На этом завершается полное руководство по рекламе данных датчиков в Android-приложении Nordic с использованием BLE nRF24L01. Если у вас возникнут трудности, оставьте комментарий ниже или напишите на нашем форуме. Чтобы узнать больше о nRF24L02, вы также можете попробовать создать приватную чат-комнату, используя Arduino, nRF24L01 и Processing.