- Arduino и Bluetooth
- Передача данных из Arduino по Bluetooth
- Двунаправленный обмен данными по Bluetooth
- Подключаем к Android
- Прикрепленные файлы:
- Передача данных на смартфон с помощью Arduino, модуля NRF24L01 и Bluetooth (BLE)
- Почему технология Bluetooth Low Energy (BLE) стала популярной?
- Возможности BLE в модуле NRF24L01
- Необходимые компоненты
- Аппаратное обеспечение
- Программное обеспечение
- Принципы работы модуля nRF24L01
- Схема проекта
- Объяснение программы Arduino для использования технологии BLE
Arduino и Bluetooth
В настоящее время в зарубежных и отечественных магазинах можно найти большое количество различных Bluetooth Serial модулей для DIY-устройств. Цена на них не сильно высока: 5-10$ за модуль (с учетом бесплатной доставки в любую страну). Их легко можно найти на широко известной площадке AliExpress введя в поисковую строку одно из словосочетаний: Bluetooth RS232, Bluetooth Serial, HC-03, HC-04, HC-05, HC-06 или нажать на эту ссылку.
Напряжение питание модуля составляет 3.3В, ток потребления ~50мА.
Модули HC-03/HC-05 более функциональные, чем HC-04/HC-06.
UART_TX (pin 1), UART_RX (pin 2), UART_CTS (pin 3), UART_RTS (pin 4) — пины UART.
3,3V (pin 12) — питание 3.3В.
GND (pin 13) — общий.
PIO1 (pin 24) — индикатор рабочего режима. Если соединение не установлено — то светодиод мигает, если установлено, то постоянно горит. Для модулей HC-03/HC-05 есть некоторые отличия. Линии UART и питания те же самые, но:
PIO8 (pin 31) — индикатор рабочего режима.
PIO9 (pin 32) — статус соединения, если соединение установлено, то на выходе будет высокий уровень.
PIO11 (pin 34) — вход включения режима AT-команд (необходимо подать лог. 1). За более подробной документацией обращайтесь к PDF.
вывод Arduino 3.3В — к 12 пину модуля
вывод Arduino GND — к 13 пину модуля
вывод Arduino TX — к 2 пину модуля RX
вывод Arduino RX — к 1 пину модуля TX
Передача данных из Arduino по Bluetooth
int cnt = 0; // счетчик void setup() < Serial.begin(9600); // инициализация порта >void loop() < cnt++; Serial.print("Hello BB from Arduino! Counter:"); // выводим надпись Serial.println(cnt); // выводим значение счетчика и переводим на новую строку delay(1000); // ждем 1 секунду > Как видите скетч довольно простой и хорошо прокомментирован. В цикле, раз в секунду происходит увеличение переменной cnt, которая затем с текстовой надписью выводится в последовательный порт на Bluetooth модуль. Обратите внимание, что скорость порта установлена в значение 9600. При покупке модуля, спрашивайте на какое значение установлена скорость обмена по последовательному интерфейсу. Но в большинстве случаев это 9600. При необходимости, скорость обмена можно изменить АТ-командами. Откройте данный скетч в Arduino IDE, скомпилируйте и прошейте ваш Arduino. Если вы подключали светодиод в Bluetooth модулю, то он должен мигать, показывая тем самым, что модуль ожидает соединение. Внимание! Если при прошивке платы Arduino ругается прошивальщик, то отключите питание 3.3В с Bluetooth модуля.
Затем щелкаем в трее по иконке Bluetooth модуля и выбираем «Добавить устройство»:
Двунаправленный обмен данными по Bluetooth
Следующим шагом будет написание простенькой программы двунаправленного обмена данными между Arduino и компьютером. В схему я добавил светодиод, подключив его к 12 пину Arduino, через токоограничительный резистор. Но можно использовать и встроенный LED (обычно 13 пин).
char incomingByte; // входящие данные int LED = 12; // LED подключен к 12 пину void setup() < Serial.begin(9600); // инициализация порта pinMode(LED, OUTPUT); Serial.println("Press 1 to LED ON or 0 to LED OFF. "); >void loop() < if (Serial.available() >0) < //если пришли данные incomingByte = Serial.read(); // считываем байт if(incomingByte == '0') < digitalWrite(LED, LOW); // если 1, то выключаем LED Serial.println("LED OFF. Press 1 to LED ON!"); // и выводим обратно сообщение >if(incomingByte == '1') < digitalWrite(LED, HIGH); // если 0, то включаем LED Serial.println("LED ON. Press 0 to LED OFF!"); >> > Программа работает очень просто. После запуска или сброса устройства, в последовательный порт выводится сообщение с предложением нажать 1 или 0. В зависимости от нажатой цифры светодиод будет загораться или гаснуть. А также, от Arduino будет выводиться сообщение загорелся светодиод, или погас. Видео работы:
Подключаем к Android
Для платформы Android также существуют программы-терминалы. Но необходима специальная программа для работы в терминальном режиме по Bluetooth. Я установил вот эту: Bluetooth Terminal. Достаточно простая программа, ничего лишнего. В моем Android устройстве нет Bluetooth модуля, но он прекрасно работает и с внешним USB-адаптером, который мы использовали для подсоединения к ПК. Подключаем адаптер по USB, включаем на андроиде bluetooth, находим и вводим пароль для нашего Bluetooth устройства на Arduino и наконец запускаем программу терминал. Нажимаем «Connect a device — Secure» и выбираем наше устройство BOLUTEK. Теперь вы можете отправлять и принимать данные с Bluetooth устройства при помощи терминала. Видео соединения с Android устройством:
Прикрепленные файлы:
Передача данных на смартфон с помощью Arduino, модуля NRF24L01 и Bluetooth (BLE)
Bluetooth Low Energy (BLE) – это версия технологии Bluetooth, причем значительно более оптимизированная чем классический Bluetooth. Ее часто называют «умной» Bluetooth (Smart Bluetooth). Первоначально технология BLE разрабатывалась для обеспечения минимально возможного энергопотребления при низкой стоимости, маленькой ширины полосы частот и низкой сложности оборудования. Некоторые современные микроконтроллеры, например, ESP32, имеют встроенную технологию BLE, а в других микроконтроллерах, в том числе и в Arduino, для использования технологии BLE можно применить модуль nRF24L01. Этот радиочастотный модуль можно также использовать для передачи данных другим устройствам, поддерживающим технологию Bluetooth, например, смартфонам, ноутбукам и т.д.
В данной статье мы рассмотрим процесс передачи данных по технологии BLE с помощью радиочастотных модулей nRF24L01. Мы будем считывать значения температуры с датчика DHT11 и передавать их на смартфон с помощью платы Arduino и модуля nRF24L01, используя технологию BLE.
Почему технология Bluetooth Low Energy (BLE) стала популярной?
Возрастающая с каждым годом популярность технологии BLE обусловлена, в первую очередь, ее крайне низким энергопотреблением, что позволяет устройствам на ее основе работать длительное время от обычной батарейки. Также ее феноменальный успех в последние годы объясняется легкостью ее интегрирования (встраивания) в смартфоны, планшеты в другие мобильные устройства.
Возможности BLE в модуле NRF24L01
Технология BLE работает в диапазоне ISM (2,4 ГГц), который во многих странах разрешен для безлицензионного использования (то есть не нужно получать никаких разрешений в радиочастотных органах) в промышленности, науке и медицине. ISM диапазон занимает полосу частот от 2400 МГц до 2483.5 МГц и разделен на 40 каналов. Три из этих 40 каналов имеют статус «информационных», они используются устройствами для передачи специальных приветственных пакетов с информацией о своем состоянии – это позволяет другим устройствам BLE устанавливать с ними связь.
В этой статье мы рассмотрим как использовать модуль NRF24L01 в качестве BLE трансивера (приёмопередатчика). BLE функциональность данного модуля будет продемонстрирована на примере передачи данных температуры в смартфон. Данные температуры будут считываться с датчика DHT11, а управлять всем процессом передачи данных будет плата Arduino. На смартфоне для приема этих данных можно использовать, например, приложение для android под названием Nordic BLE.
Необходимые компоненты
Аппаратное обеспечение
- Плата Arduino Uno (купить на AliExpress).
- nRF24L01 BLE Module (BLE модуль nRF24L01)(купить на AliExpress).
- Датчик температуры и влажности DHT11 (купить на AliExpress).
- Соединительные провода.
Программное обеспечение
Принципы работы модуля nRF24L01
Модули nRF24L01 являются приемопередающими модулями, то есть каждый модуль может как передавать, так и принимать информацию. Но они могут работать только в режиме полудуплекса – то есть в конкретный момент времени модуль может либо передавать, либо принимать информацию. Основой модуля является универсальная микросхема nRF24L01 от компании Nordic semi-conductors, которая осуществляет прием и передачу данных в модуле. Эта микросхема взаимодействует с другими устройствами по интерфейсу SPI, поэтому ее легко подключить к большинству современных микроконтроллеров, в том числе и к плате Arduino, для которой разработаны специальные библиотеки для работы с подобными модулями. Ранее мы использовали модули nRF24L01 для создания приватной комнаты чата на основе плат Arduino.
Назначение контактов (распиновка) модуля nRF24L01 приведена на следующем рисунке.
Модуль может работать с напряжениями от 1.9V до 3.6V (обычно используется 3.3V) и потребляет во время своей работы сравнительно небольшой ток – всего 12mA, что позволяет его использовать в устройствах с низким потреблением энергии, работающих от маленьких батареек типа «таблетка» (coin cells). Несмотря на то, что стандартное рабочее напряжение модуля составляет 3.3V, большинство его контактов устойчивы и к напряжению 5V, что позволяет непосредственно его подключать к контактам платы Arduino.
Другим достоинством модуля nRF24L01 является наличие у него возможности работать по 6 каналам связи. Это значит, что он может взаимодействовать с другими 6 подобными модулями и передавать им или принимать от них информацию. Данная особенность модуля позволяет строить на его основе сети связи с топологией типа «звезда» или Mesh сети (самоорганизующиеся сети связи, в которых каждое устройство может выполнять роль ретранслятора/маршрутизатора), поэтому данные модули очень удобны для реализации различных проектов в сфере интернета вещей (IoT – Internet of Things). Также модули nRF24L01 поддерживают до 125 уникальных идентификаторов (ID), то есть в ограниченной области мы можем использовать до 125 таких модулей чтобы они не мешали при работе друг другу.
Схема проекта
Схема подключения модуля nRF24L01 к плате Arduino для передачи данных с помощью технологии BLE представлена на следующем рисунке.
Внешний вид конструкции проекта в сборе показан на следующем рисунке.
Объяснение программы Arduino для использования технологии BLE
Полный код программы и видео с демонстрацией работы проекта приведены в конце статьи, здесь же мы кратко рассмотрим основные фрагменты кода. В видео также объяснено и использование Android приложения (App of Nordic ) для работы по BLE.
Первым делом в программе подключим используемые библиотеки: RF24 – для использования команд модуля nRF24L01, DHT11 – для работы с датчиком DHT11, BTLE library – для использования функций технологии BLE.