цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » Отправка данных с датчика на телефон Android с использованием Arduino и NRF24L01 через Bluetooth (BLE)

Отправка данных с датчика на телефон Android с использованием Arduino и NRF24L01 через Bluetooth (BLE)

Автор: Mike(admin) от 25-09-2019, 03:55

Bluetooth Low Energy (BLE) – это версия Bluetooth, представленная в виде уменьшенной высокооптимизированной версии классического Bluetooth. Он также известен как Smart Bluetooth. BLE был разработан с учетом минимально возможного энергопотребления, особенно для оборудования низкой стоимости, низкой пропускной способности, низкой мощности и низкой сложности. ESP32 имеет встроенные возможности BLE, но для других микроконтроллеров, таких как Arduino, можно использовать nRF24L01. Этот дешевый радиочастотный модуль также можно использовать в качестве модуля BLE для отправки данных на другое устройство Bluetooth, такое как смартфоны, компьютер и т. д.


Отправка данных с датчика на телефон Android с использованием Arduino и NRF24L01 через Bluetooth (BLE)

Сегодня в этом примере мы покажем, как отправлять любые данные через BLE, используя nRF24L01. Мы будем отправлять показания температуры от датчика DHT11 на смартфон с помощью модуля Arduino и nRF через BLE.


BLE был принят из-за его особенностей энергопотребления, поскольку он мог работать в течение длительного периода времени, используя только одну батарейку-таблетку. По сравнению с другими беспроводными стандартами быстрый рост популярности BLE был еще быстрее благодаря феноменальным приложениям для смартфонов, планшетов и мобильных компьютеров.


BLE использует ту же полосу ISM 2,4 ГГц со скоростью передачи от 250 Кбит/с до 2 Мбит/с, которая разрешена во многих странах и может применяться в промышленных и медицинских приложениях. Полоса частот начинается с 2400 МГц до 2483,5 МГц и разделена на 40 каналов. Три из этих каналов известны как «Advertising» и используются устройствами для отправки вещательных пакетов с информацией о них, чтобы другие устройства BLE могли подключаться. Эти каналы были первоначально выбраны в нижней верхней части полосы и в середине полосы, чтобы избежать помех, которые могут создавать наводки для ряда каналов.


NRF24L01

В этом руководстве объясняется, как использовать модуль NRF24L01 в качестве приемопередатчика BLE. Сегодня функциональность BLE этого модуля будет объяснена отправкой данных датчика на смартфон. Здесь этот модуль nRF24L01 будет сопрягаться с микроконтроллером Arduino, а данные о температуре датчика DHT11 будут отправляться официальному приложению Nordic BLE для Android.


Модули nRF24L01 являются приемопередающими модулями, то есть каждый модуль может отправлять и получать данные, но, поскольку они полудуплексные, они могут отправлять или получать данные одновременно. Модуль имеет общую микросхему nRF24L01, которая отвечает за передачу и прием данных. Микросхема обменивается данными с использованием протокола SPI и, следовательно, может легко взаимодействовать с любыми микроконтроллерами. С Arduino становится намного проще, так как библиотеки легко доступны. Распиновка стандартного модуля nRF24L01 показана далее.


NRF24L01

Модуль имеет рабочее напряжение от 1,9 В до 3,6 В (обычно 3,3 В) и потребляет очень мало тока (всего 12 мА) при нормальной работе, что делает его эффективным для питания от батареи и, следовательно, может работать даже на элементах типа «таблетка». Несмотря на то, что рабочее напряжение составляет 3,3 В, большинство выводов допускают 5 В и, следовательно, могут напрямую подключаться к 5 В микроконтроллерам, таким как Arduino. Еще одним преимуществом использования этих модулей является то, что каждый модуль имеет 6 конвейеров. Это означает, что каждый модуль может связываться с 6 другими модулями для передачи или получения данных. Это делает модуль пригодным для создания звездных или ячеистых сетей в приложениях Интернета вещей (IoT). Кроме того, они имеют широкий диапазон адресов 125 уникальных идентификаторов, поэтому в закрытом пространстве мы можем использовать 125 из этих модулей, которые не будут мешать друг другу.


Схема подключения Arduino к модулю nRF24L01 и датчику DHT11 следующая:


Отправка данных с датчика на телефон Android с использованием Arduino и NRF24L01 через Bluetooth (BLE)

Так может внешне выглядеть подключение:


Отправка данных с датчика на телефон Android с использованием Arduino и NRF24L01 через Bluetooth (BLE)

NRF24L01 работает по SPI, поэтому в качестве интерфейса будем использовать протокол SPI. Здесь модуль nRF24L01 используется для связи с приложением для смартфонов Nordic. Полный код с комментариями приведен далее.



#include <SPI.h>
#include <RF24.h>
#include <BTLE.h>
#include <DHT.h> // Библиотека датчика температуры и влажности dht11
#define DHTPIN 4  // к какому цифровому контакту мы подключаем
#define DHTTYPE DHT11 // выберите тип DHT как DHT11 или DHT22
DHT dht(DHTPIN, DHTTYPE);
RF24 radio(9, 10); // CE, CSN
BTLE btle(&radio);
void setup() {
  Serial.begin(9600);
  delay(1000);
  Serial.print("BLE and DHT Starting... ");
  Serial.println("Send Temperature Data over BTLE");
  dht.begin();   // инициализировать датчик DHT11
  btle.begin("CD Temp");    // Максимум 8 символов типа char
  Serial.println("Successfully Started");
}
void loop() {                                              
  float temp = dht.readTemperature();   // считать данные о температуре
  if (isnan(h) || isnan(t)) {   // Проверить, не удалось ли выполнить какое-либо считывание, и завершить работу досрочно (повторить попытку)
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }
  Serial.print(" Temperature: ");  Serial.print(t);  Serial.println("&#194;°C ");
  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 advertisement failed..!");
  }
  btle.hopChannel(); 
  delay(2000);
}

После загрузки кода и сопряжения смартфона с модулем nRF вы начнете получать значения в приложении nRF Temp 2.0 для BLE для Android.


Отправка данных с датчика на телефон Android с использованием Arduino и NRF24L01 через Bluetooth (BLE)



© digitrode.ru


Теги: Arduino, Android, DHT11, NRF24LE1, датчик температуры, Bluetooth



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий