Как подключить Bluetooth модуль к Arduino. Какие модули лучше использовать. Как настроить связь между Arduino и смартфоном по Bluetooth. Какие преимущества дает беспроводное соединение. На что обратить внимание при работе с Bluetooth и Arduino.
Выбор Bluetooth модуля для Arduino
Для подключения Arduino к смартфону или компьютеру по Bluetooth чаще всего используются следующие модули:
- HC-05 — самый популярный и универсальный модуль. Работает в режимах master и slave.
- HC-06 — более простой модуль, работает только в режиме slave.
- HM-10 — модуль с поддержкой Bluetooth Low Energy (BLE).
- JDY-31 — аналог HC-05 с улучшенными характеристиками.
Для начинающих рекомендуется использовать HC-05 или HC-06, так как для них доступно больше всего готовых примеров и инструкций. Модуль HM-10 подойдет, если нужна поддержка BLE для работы с современными смартфонами.
Подключение Bluetooth модуля к Arduino
Схема подключения HC-05/HC-06 к Arduino:
- VCC модуля ->
- GND модуля -> GND Arduino
- TXD модуля -> RX Arduino (pin 2 или 3)
- RXD модуля -> TX Arduino (pin 3 или 2) через делитель напряжения
Делитель напряжения нужен, так как логические уровни модуля 3.3В, а Arduino 5В. Можно использовать два резистора: 1 кОм и 2 кОм.
Для HM-10 схема аналогичная, но питание подается 3.3В вместо 5В.
Настройка Bluetooth модуля
Перед использованием Bluetooth модуль нужно настроить с помощью AT-команд:
- Подключите модуль к Arduino по схеме выше
- Загрузите в Arduino скетч для отправки AT-команд
- Откройте монитор порта в Arduino IDE
- Отправьте команду AT для проверки связи
- Настройте имя модуля: AT+NAME=ArduinoBT
- Установите PIN-код: AT+PSWD=1234
- Настройте скорость обмена данными: AT+UART=9600,0,0
После настройки модуль готов к использованию. Теперь его можно обнаружить при поиске Bluetooth устройств на смартфоне.
Программирование Arduino для работы с Bluetooth
Пример простого скетча для управления светодиодом через Bluetooth:
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(2, 3); // RX, TX
const int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
BTSerial.begin(9600);
}
void loop() {
if (BTSerial.available()) {
char c = BTSerial.read();
if (c == '1') {
digitalWrite(ledPin, HIGH);
}
else if (c == '0') {
digitalWrite(ledPin, LOW);
}
}
}
Этот скетч позволяет включать и выключать встроенный светодиод Arduino, отправляя команды ‘1’ и ‘0’ через Bluetooth.
Разработка Android-приложения для управления Arduino
Чтобы создать приложение для управления Arduino по Bluetooth, потребуются следующие шаги:
- Создайте новый проект в Android Studio
- Добавьте необходимые разрешения в AndroidManifest.xml:
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
- Создайте пользовательский интерфейс с кнопками управления
- Напишите код для инициализации Bluetooth-адаптера:
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (bluetoothAdapter == null) {
// Устройство не поддерживает Bluetooth
}
- Реализуйте поиск и подключение к Bluetooth-модулю Arduino
- Напишите код для отправки команд на Arduino при нажатии кнопок
Полный пример Android-приложения для управления Arduino по Bluetooth можно найти в репозиториях на GitHub.
Преимущества использования Bluetooth с Arduino
Подключение Arduino к смартфону или компьютеру по Bluetooth дает ряд преимуществ:
- Беспроводное управление проектами Arduino на расстоянии до 10 метров
- Возможность создания мобильных приложений для управления
- Простота интеграции Arduino в системы «умного дома»
- Удобство отладки и мониторинга показаний датчиков
- Гальваническая развязка управляющей и исполнительной частей
- Возможность менять прошивку Arduino без проводного подключения
Bluetooth-модуль позволяет сделать проекты на Arduino более мобильными и удобными в использовании.
Применение Bluetooth и Arduino в проектах
Сочетание Arduino и Bluetooth-модуля открывает широкие возможности для создания различных проектов:
- Системы дистанционного управления роботами и моделями
- Беспроводные метеостанции и системы мониторинга
- Умные замки и системы контроля доступа
- Управление освещением и бытовой техникой
- Беспроводные геймпады и контроллеры
- Системы автоматизации теплиц и умного полива
- Фитнес-трекеры и носимая электроника
Bluetooth позволяет легко интегрировать Arduino-проекты в мобильные приложения и системы IoT.
Советы по работе с Bluetooth и Arduino
Несколько полезных рекомендаций при разработке проектов с Bluetooth:
- Используйте стабильный источник питания для Bluetooth-модуля
- Экранируйте соединительные провода для уменьшения помех
- Располагайте антенну модуля подальше от металлических предметов
- Учитывайте, что стены и преграды уменьшают дальность связи
- Используйте уникальные имена устройств при работе с несколькими модулями
- Добавьте светодиод для индикации статуса Bluetooth-соединения
- Реализуйте проверку контрольной суммы при передаче данных
Соблюдение этих рекомендаций поможет повысить надежность и дальность работы Bluetooth-соединения.
Ограничения и альтернативы Bluetooth
При всех преимуществах у Bluetooth есть ряд ограничений:
- Небольшая дальность действия (до 10-30 метров)
- Относительно низкая скорость передачи данных
- Возможны помехи от других устройств
- Энергопотребление выше, чем у некоторых аналогов
В зависимости от задач, альтернативами Bluetooth могут быть:
- Wi-Fi — большая дальность, высокая скорость
- LoRa — сверхбольшая дальность при низком энергопотреблении
- nRF24L01 — дешевые модули для ближней связи
- GSM — для связи через сотовые сети
Выбор технологии зависит от конкретных требований проекта — дальности связи, скорости передачи данных, энергопотребления и стоимости.
Отладка Bluetooth-соединения
При возникновении проблем с Bluetooth-соединением рекомендуется выполнить следующие шаги:
- Проверьте правильность подключения модуля к Arduino
- Убедитесь, что на модуль подается нужное напряжение питания
- Проверьте настройки модуля с помощью AT-команд
- Попробуйте уменьшить скорость передачи данных
- Измерьте уровень сигнала с помощью специальных приложений
- Проверьте работу на другом устройстве (смартфоне, ПК)
- Добавьте отладочный вывод в скетч Arduino
Пошаговая проверка всех элементов системы поможет локализовать и устранить возможные проблемы с Bluetooth-соединением.
Перспективы развития Bluetooth-технологий
Технология Bluetooth продолжает активно развиваться. Основные тенденции:
- Увеличение скорости передачи данных (до 2 Мбит/с в Bluetooth 5.0)
- Повышение дальности действия (до 200 м на открытом пространстве)
- Снижение энергопотребления для IoT-устройств
- Улучшение защищенности соединения
- Поддержка сетчатой топологии (mesh-сетей)
- Интеграция с другими беспроводными технологиями
Новые версии Bluetooth открывают дополнительные возможности для создания сложных беспроводных систем на базе Arduino и других микроконтроллеров.
Заключение
Интеграция Bluetooth-модулей с платформой Arduino значительно расширяет возможности для создания беспроводных проектов. Несмотря на некоторые ограничения, простота использования и широкая распространенность делают Bluetooth отличным выбором для многих любительских и профессиональных разработок. Постоянное развитие технологии обеспечивает её актуальность и в будущем.
Освоение работы с Bluetooth на Arduino открывает широкие перспективы для творчества и создания полезных устройств — от простых систем управления до сложных сетей IoT. Комбинирование возможностей Arduino и Bluetooth позволяет воплощать в жизнь самые смелые идеи.
Arduino UNO + модуль Bluetooth HC-05
Эта пошаговая инструкция поможет вам запустить графический интерфейс RemoteXY на контроллере Arduino UNO используя модуль связи Bluetooth HC-05 или HC-06. Инструкция так же может быть использована для контроллеров Arduino Nano, Arduino Mini и совместимых.
Примечание. Устройства iOS не поддерживают модули с классическим Bluetooth HC-05(06). Вместо них вы можете использовать модуль BLE HM-10.
Шаг 1. Создайте графический интерфейс
Войдите в редактор RemoteXY. Найдите на левой панели инструментов элемент Кнопка, и переместите его в поле телефона. Выделите кнопку в поле телефона, что бы вокруг нее отобразилась рамка. Когда кнопка выделена, в правой панели свойств разверните вкладку Элемент. В свойстве элемента Привязать к выводу установите значение 13(LED).
Примечание. Редактор позволяет указать вывод контроллера для некоторых элементов, которые могут однозначно определить состояние вывода, например «Включен «или «Отключен». Однако лучшим решением будет написание собственного кода управления выводами контроллера.
Шаг 2. Настройте конфигурацию
Разверните вкладку Конфигурация на правой панели свойств. Кликните в любой элемент списка, откроется окно выбора конфигурации. Настройка конфигурации позволяет указать параметры вашей схемы. Выберите следующие параметры и нажмите кнопку Применить:
- Соединение: Bluetooth
- Контроллер: Arduino UNO
- Модуль: HC-05 Bluetooth module
- Среда: Arduino IDE
Вкладка Конфигурация должна выглядеть как на рисунке:
Разверните вкладку Подключение модуля и установите следующие значения настроек:
- Интерфейс подключения: Software Serial
- Контакт RX: 2
- Контакт TX: 3
- Скорость обмена: 9600
Настройки определяют, что модуль HC-05(06) подключается к Arduino через программный последовательный порт SoftwareSerial на скорости 9600 и используются контакты микроконтроллера 2 и 3 .
Примечание. Скорость 9600 является скоростью обмена по умолчанию для модулей Bluetooth HC-05 и HC-06. Не выбирайте другую скорость.
Шаг 3. Сформируйте скетч для Arduino
Нажмите кнопку Получить исходный код.
На открывшейся странице кликните ссылку Загрузить код и загрузите архив скетча. Распакуйте архив. В архиве размещен файл project.ino
, откройте его в Arduino IDE.
Для компиляции скетча в среду Arduino IDE необходимо добавить библиотеку RemoteXY. Пройдите по ссылке загрузки библиотеки и следуйте инструкциям по ее установке.
В среде разработки выберите плату Arduino UNO и попробуйте скомпилировать скетч. Если вы все сделали правильно, скетч должен компилироваться без ошибок.
Шаг 4. Подключите HC-05 к Arduino Uno
Подключите модуль Bluetooth HC-05 или HC-06 к Arduino Uno по схеме приведенной на рисунке. Обратите внимание, что контакт 2 платы Arduino выбранный как RX соединяется с контактом TX модуля Bluetooth, а контакт 3 платы Arduino выбранный как TX с контактом RX модуля Bluetooth.
Шаг 5. Загрузите скетч в Arduino.
Загрузите скетч в контроллер стандартным способом. Подсоедините контроллер Arduino UNO к компьютеру, выберите COM порт к которому подключилась плата и нажмите кнопку загрузки.
Шаг 6. Подключитесь с мобильного приложения.
Установите мобильное приложение RemoteXY на ваш телефон.
Запустите приложение и нажмите кнопку + (Плюс) на верхней панели справа. В открывшемся окне выберите подключение Bluetooth.
Если на вашем телефоне отключен Bluetooth, то включите его. Нажмите кнопку обновления списка доступных устройств в правом верхнем углу. Модуль Bluetooth HC-05 (HC-06) может иметь одно из следующих имен: «HC-05», «HC-06», «INVOR». Выберите его. Откроется окно для ввода пароля спаривания Bluetooth устройств. Пароль по умолчанию для HC-05 (HC-06) может быть 1234 или 0000. Введите пароль.
После ввода пароля начнется подключение. Если вы все сделали правильно ту у вас должен отобразиться графический интерфейс с кнопкой, точно такой же как вы его разработали. Попробуйте нажимать кнопку. При удерживании кнопки нажатой должен загораться светодиод LED на плате Arduino UNO.
Примечание: В приложении для iOS необходимо включить Bluetooth используя системные настройки.
Если не подключается…
Если подключение не удалось, проверьте себя по списку ниже. Это поможет вам найти ошибку.
Модуль не отображается в списке устройств приложения
Если вы не видите вашего модуля в списке доступных устройств, попробуйте повторно нажать на кнопку обновления списка устройств спустя несколько секунд. Если модуль так и не появился, возможны следующие причины:
- Вы не включили Bluetooth на вашем телефоне.
- На модуль Bluetooth не подается питание. Возможно питание подключено не верно.
- Модуль Bluetooth неисправен.
Bluetooth устройство не найдено
Если вы видите ошибку Bluetooth device not found
Bluetooth device connection error
это означает что телефон не смог обнаружить модуль Bluetooth или не смог с ним соединиться. Возможны следующие причины:- При подключении в приложении выбрано не то Bluetooth устройство. Например вы выбрали наушники или телефон вашего друга у которого включен Bluetooth.
- При подключении в приложении был введен не верный пароль для спаривания устройств.
Попробуйте разорвать пару используя системные настройки если Bluetooth устройство уже было спарено до этого.
Устройство не отвечает
Если вы видите ошибку Board not reply
это означает что приложение подключилось к модулю Bluetooth но не может производить обмен данными с контроллером. Возможны следующие причины:
- Контакты RX и TX модуля Bluetooth подключены не верно, возможно они перепутаны местами. Проверьте по схеме на шаге 4.
- Контакты RX и TX модуля Bluetooth или один из них не подключены к контроллеру, плохой контакт;
- Не верно указаны настройки конфигурации или настройки подключения перед формированием исходного кода. Проверьте на шаге 2.
- Скорость передачи данных Bluetooth модуля не соответствует выбранной в настройке конфигурации. Проверьте на шаге 2.
- Вы внесли недопустимые изменения в скетч, например откорректировали структуру
RemoteXY
или массивRemoteXY_CONF
, удалили вызовы функцийRemoteXY_Init()
илиRemoteXY_Handler()
. Сформируйте исходный код заново и загрузите его в контроллер без каких либо изменений. - Использована старая версия библиотеки RemoteXY. Обновите версию библиотеки до последней.
- В Arduino не был загружен скетч, или был загружен другой скетч. Проверьте что вы загрузили именно нужный скетч.
- Контроллер Arduino не включен или неисправен.
сфера и способы применения, рекомендации
Автор Савельев Николай На чтение 6 мин Просмотров 161 Опубликовано Обновлено
Применение Bluetoolth интерфейса совместно с микроконтроллерами ардуино, позволяет создать беспроводной канал связи между различными устройствами. Какой модуль bluetooth arduino выбрать, как его подключить и на что стоит обратить внимание?
Протокол передачи данных разработанный в девяностых годах, актуален и получает дальнейшее развитие. За время его существования дальность связи была увеличена с 10 метров до 100. Диапазон используемых каналов отличается в разных странах.
Содержание
- Популярные сферы применения Bluetooth и arduino
- Как использовать блютуз модуль
- Подготовка bluetooth модуля для работы с ардуино
- Полезные советы
- Преимущества применения интерфейса bluetooth arduino и его недостатки
Популярные сферы применения Bluetooth и arduino
- Разработка систем дистанционного управления для технологических процессов.
- Беспроводные системы охранно-пожарной сигнализации, системы контроля доступа. Очень актуально для систем «Умный дом», «Умная теплица».
- Творческое моделирование. Не очень подходит для авиационных моделей так как возможет вылет за пределы зоны уверенного приёма.
- Получение данных с удалённых устройств телеметрии.
- Обучение созданию простого беспроводного интерфейса в среде ардуино.
- Управление компьютерной гарнитурой, принтерами и другим интерфейсом.
- Передача данных в химически агрессивной среде, в зоне экстремальных температур.
- Корректировка параметров системы без необходимости рестарта микроконтроллера.
- Решение в случаях когда прокладка проводного интерфейса физически затруднено.
Bluetooth стандартизирована в большинстве стран мира. Это обеспечивает совместимость различных устройств. Использование выделенного диапазона частот, комбинаций каналов связи, автоматическое переключение на свободный канал, позволяет исключить помехи и сбои в работе.
Как использовать блютуз модуль
Для подключения используется готовый блютуз модуль для ардуино. Наиболее распространены модули HC-05 и HC-06. Так же можно применять их аналоги SPP-C, JDY-31 и другие. При использовании аналогов, может понадобиться подключение сторонних библиотек. Все эти модули обеспечивают связь на стороне платы Arduino.
Для подключения к компьютеру обычно используют самые простые Bluetooth адаптеры подключаемые к USB порту. Устройства на базе андроида, чаще всего имеют встроенный модуль BT (BlueTooth). Если такой модуль отсутствует, то подключают через тот же адаптер, что и компьютер.
Читайте также: 18650 аккумулятор — как заряжать и при этом ничего не испортить?
HC-05 считается более продвинутым, по сравнению с HC-06. Основное их отличие в том, что HC-05 изначально может работать в двух режимах Master и Slave. HC-06 только Slave. Режимы Master и Slave обозначают способ установления связи, активный или пассивный.
Можно расширить функционал модуля HC-06 изменив ему прошивку с помощью TTL программатора. Прошивки есть в свободном доступе, на форумах есть информация как обойтись без программатора. После такой модификации, плата будет работать со всеми возможностями HC-05.
За подключение модулей к ПК или ардуино, отвечает проводной интерфейс UART. Все вышеперечисленные модули выпускаются в различных исполнениях. Стандартно они имеют шесть выводов. Шина обмена данными подключается к контактам RX, TX. Питающее напряжение 3,3 вольта, можно взять с платы ардуино. Встречаются модули с питающим напряжением до 5В. Обозначается обычно -GND и +VCC. Контакт STATE отвечает за режим работы модуля (используется для настройки), а EN обеспечивает подключение светодиода. Светодиод сигнализирует о состоянии связи. В зависимости от производителя, последние два контакта могут отсутствовать.
По умолчанию плата ардуино использует напряжение +5В как логическую единицу. Модуль BlueTooth работает от 3,3В. Кроме стандартной схемы подключения напрямую, встречаются варианты с делителем напряжения на базе двух резисторов. Делитель позволяет снизить уровень сигнала в адресной шине. Так же встречаются модули Bluetooth с напряжением питания 3,6-5В.
Из наиболее важных характеристик модуля Bluetooth для ардуино является дальность связи и потребление тока. Для HC-05 это 10 метров и 30-50мА соответственно.
Подготовка bluetooth модуля для работы с ардуино
Чтобы запрограммировать модуль, необходимо использовать команды АТ через интерфейс последовательного порта. Для этого на контакт STATE кратковременно подаётся +3,3В. Модуль переходит в режим, в котором он будет принимать АТ команды.
Для начала работы необходимо настроить номер порта и скорость передачи данных.
Формат команды должен быть таким: АТ + команда + параметр, если надо.
Чтобы проверить работоспособность платы и переход в нужный режим, необходимо отправить команду AT. Система должна ответить ОК.
Полный список команд и их ответов есть в интернете в свободном доступе. При прямом подключении по UART интерфейсу дополнительные библиотеки не нужны. Скетч для ПК и устройств на базе андроида одинаковый.
Bluetooth arduino модуль запоминает последнюю скорость передачи данных. По умолчанию в нём часто выставлена скорость 38400 бит в секунду. Это может понадобиться при первом подключении.
Савельев Николай
Инженер по телевизионному оборудованию Электрика и электроника, это не только моё хобби, но и работа
Задать вопрос
Во время загрузки скетча на плату ардуино, необходимо отключить bluetooth модуль. Если его не отключить, загрузчик будет выдавать ошибку.
Полезные советы
- Если это Ваш первый проект, берите за основу связку наиболее распространённых компонентов. Например: HC-05 и Arduino Uno. По таким связкам bluetooth arduino много уроков, есть информация на форумах, подсказки как решить те или иные задачи и проблемы.
- При разработке проектов, необходимо учитывать среды для электромагнитных волн. По стандарту, между приёмником и передатчиком не требуется идеальная прямая видимость, но толстые стены могут стать преградой.
- Использование собственного программного интерфейса с графической оболочкой, многократно расширит Ваши возможности по сравнению с обычным терминалом.
- Беспроводной модуль связи предоставляет прекрасную возможность гальванической развязки. Нет необходимости учитывать от каких источников питания запитаны управляющая часть и исполнительная.
Преимущества применения интерфейса bluetooth arduino и его недостатки
Из недостатков можно отметить ограничение по расстоянию, как правило до 10м, но бывают модули до 30м.
Из положительных моментов: ориентировочная стоимость модуля связи в Китае около 2-3 долларов. Система помехоустойчива. Лёгкое программирование и наличие множества информации, делает разработку данных проектов доступным всем желающим.
Создание Android-приложения Bluetooth для управления платой Arduino | Блог Droiduino | Запуск
В этом руководстве рассказывается о создании пользовательского приложения для Android для подключения к плате Arduino с помощью Bluetooth. Следовательно, для выполнения этого руководства требуются некоторые базовые предварительные знания в области программирования для Android.
Но не волнуйтесь, если у вас нет базовых знаний по программированию для Android, но вы все же хотите создать собственное приложение Bluetooth, тогда вы можете пройти базовое программирование для Android для производителей Arduino, которое доступно в Udemy. Вы узнаете, как создать приложение Bluetooth, которое может взаимодействовать с вашей платой Arduino, с нуля и без предварительных знаний в области программирования для Android.
Коды, представленные в этом руководстве, являются минимальными кодами, которые позволяют телефону Android и плате Arduino отправлять и получать сообщения (которые могут быть преобразованы в команды) друг с другом через Bluetooth.
Чтобы оправдать некоторые ожидания на случай, если приложение не будет работать должным образом, вот среда, которую я использую для разработки этого приложения:
- Samsung Galaxy S8 с Android версии 9.
- Android Studio версии 3.6. 3 с совместимой версией Gradle.
- Минимальная версия SDK: 19 (необходимо выбрать это при создании нового проекта с помощью Android Studio).
- Mac OS 10.15.4 (машины с Windows также отлично работают)
Это приложение создаст Bluetooth-соединение с ближайшей платой Arduino, к которой подключен Bluetooth-модуль HC05. Он создан для совместимости с платой Arduino из этого руководства. Однако коды легко изменить, чтобы их можно было использовать вместе с платами Arduino с различными конфигурациями.
Простое приложение BluetoothЧтобы проверить функциональность соединения Bluetooth, вы можете нажать кнопку в этом приложении, чтобы управлять встроенным светодиодом на плате Arduino. Как только предопределенное командное сообщение будет получено от Android, Arduino отправит обратное сообщение на Android в качестве сообщения о состоянии.
Прежде чем мы углубимся в кодирование, я хотел бы описать пошаговый процесс создания соединения Bluetooth на Android. Это краткое изложение более подробной документации от Google.
- Инициализируйте адаптер (устройство) Bluetooth по умолчанию на вашем телефоне Android.
- Получите MAC-адрес удаленного устройства, к которому вы подключаетесь. В этом случае MAC-адрес Bluetooth-модуля HC05, подключенного к плате Arduino.
- Создайте отдельный поток в своем коде, чтобы инициировать соединение с использованием ранее полученного MAC-адреса. Этот поток будет управлять тем, что произойдет, если соединение будет успешно установлено или не будет установлено. Это также обрабатывает, если мы хотим закрыть соединение Bluetooth.
- Как только соединение будет успешно установлено, поток выполнит обратный вызов для кодов, которые управляют обменом данными (передача и прием между двумя устройствами). Для этого нам нужно создать еще один поток.
- Этот поток будет считывать входящие передаваемые данные и при необходимости анализировать их (или вы можете проанализировать их в другом месте кода) и передавать сообщение или команду, сгенерированные приложением Android.
Теперь приведенный выше поток необходимо преобразовать в коды.
Создайте новый проект с пустым шаблоном активности и выберите подходящее имя для своего приложения. Для этого приложения мы создадим 2 действия и 2 класса Java:
- MainActivity. Он создается автоматически при создании нового проекта. Именно здесь происходит большинство взаимодействий.
- Активитиселектдевице. Пользовательский интерфейс, в котором вы выбираете устройство Bluetooth, которое хотите подключить.
- Адаптер списка устройств. Класс для отображения списка сопряженных Bluetooth-устройств, к которым вы можете подключиться. Список будет отображаться в SelectDeviceActivity.
- Инфомодель устройства. Класс, который выступает в качестве заполнителя для информации об удаленном устройстве.
После того, как вы создали все описанные выше действия и классы, ваш файл AndroidManifest.xml будет выглядеть примерно так:
Обратите внимание, что вы должны добавить разрешение Bluetooth, чтобы иметь доступ к Bluetooth-устройству вашего телефона.
MainActivity — это основной пользовательский интерфейс, в котором вы можете взаимодействовать с интерфейсами, которые будут подключать вас к удаленному устройству Bluetooth и управлять им.
Макет главного экранаКод XML для приведенного выше макета выглядит следующим образом:
Это действие отобразит список удаленных устройств Bluetooth, которые уже сопряжены с вашим телефоном. Он отображается при нажатии кнопки «Подключиться» на MainActivity. XML-код макета для этого действия выглядит следующим образом:
Теперь мы продолжим работу с кодом. Код в MainActivity — это тот, который создает соединение Bluetooth с удаленным устройством. Вы можете просто скопировать и вставить приведенный ниже код в свой проект. В код добавлены комментарии, чтобы вы могли лучше его понять.
Я внес небольшие изменения стиля в цветовые ресурсы.
Это действие работает с классом DeviceListAdapter и классом DeviceInfoModel для отображения списка сопряженных устройств.
SelectDeviceActivity.java
DeviceListAdapter.java
DeviceInfoModel.java
Весь проект Android также доступен на Github.
После того, как вы создадите весь проект, вам необходимо установить приложение на ваше реальное устройство, чтобы иметь возможность использовать функцию Bluetooth.
Примечание. Из-за периодического обновления приложения версия Github может немного отличаться от кода в этом посте. Но основная функция остается прежней.
Нам нужно внести небольшие изменения в код Arduino из этого руководства. Вы можете создать новый скетч Arduino и скопировать и вставить приведенный ниже код.
Не забудьте скомпилировать и загрузить код на плату Arduino. Вы также можете перейти на Github, чтобы получить этот код.
Выполните следующие действия, чтобы подключить телефон к плате Arduino
- Подключите модуль HC05 к плате Arduino, как описано в предыдущем посте, затем подключите его к источнику питания. Светодиод на модуле HC05 должен быстро мигать.
- Активируйте Bluetooth на своем телефоне и выполните сопряжение HC05 с телефоном. Искомое устройство называется «HC-05». Вам пока не нужно ваше приложение для сопряжения с HC05.
- Теперь откройте приложение и нажмите кнопку «Подключиться». На экране отобразится список сопряженных устройств. Если вы измените имя устройства при сопряжении с HC05, вы фактически измените только псевдоним. Ваше приложение показывает только имя устройства, поэтому выберите «HC-05».
- После подключения HC05 на панели инструментов появится статус, а светодиодная кнопка станет активной. Вы узнаете, когда HC05 подключен, когда светодиод на HC05 медленно мигает.
Теперь вы можете нажать кнопку светодиода и посмотреть, как встроенный светодиод на Arduino включается и выключается. Визуально вы также можете увидеть, как изображение лампочки на вашем телефоне меняет цвет, указывая на состояние светодиода. Цвет меняется, когда ваш телефон получает сообщение о состоянии от Arduino, поэтому вы можете заметить некоторую задержку между изменением светодиода на Arduino и изображением лампочки на вашем телефоне.
Теперь вы поняли один из способов подключения телефона Android к плате Arduino. Захватывающие новые возможности теперь доступны для вас. Например, вы можете:
- Улучшить приложение, чтобы оно показывало предупреждение, когда функция Bluetooth на вашем телефоне еще не активирована.
- Добавьте больше кодов на Arduino, чтобы теперь ваше приложение могло управлять двумя светодиодами
- Подключите простой датчик на Arduino, например датчик приближения и прочитать значения на вашем телефоне.
- И многое другое. Если вы можете это представить, вы можете это создать.
Если вы считаете, что это руководство слишком сложно для понимания или у вас нет предварительных знаний в области программирования Android, вы всегда можете пройти курс «Основное программирование Android для производителей Arduino» в Udemy, который поможет вам создать свой собственный Bluetooth. приложение с нуля.
Bluetooth с Arduino и Linux
Работа продолжается. Я работаю над получением Bluetooth модули, работающие с Arduino и Raspberry Pi, и я тестирую на линукс компьютер. Многие люди тестируют Bluetooth модули используют Андроид устройства или iPhone, или подключаются Bluetooth устройств нравиться мыши и клавиатуры для систем Linux. То, что я пытаюсь сделать, кажется относительно редко.
Classic Bluetooth и Bluetooth Smart, также известный как Bluetooth ЛЭ (низкий Energy)
(Примечание: «Классический» Bluetooth относится к версиям ниже 4.0; BLE относится к версии 4.0 и выше.) Я не буду вдаваться в различия между ними, кроме как отметить что если вы используете устройства с низким энергопотреблением (BLE), то оба конца подключение должно быть в состоянии справиться с этим. У меня есть старый USB-ключ, который не поддерживает BLE, а более новый поддерживает. Если я подключаюсь к Модули BLE, мне нужен ключ с поддержкой BLE.
Модуль Bluetooth LE
Я купил модуль Bluetooth на eBay, и там много подобных. Некоторые идентифицируют себя как HM-10 . Мой выглядел как
этот:
Сзади выглядит так:
ZS-040 является общим для многих из них. Устройство
указывает, что V CC может быть от 3,6 до 6 В, однако РСД и ТСД линии работают на логических уровнях 3,3 В, независимо от V CC .
При ближайшем рассмотрении выясняется, что используется чипсет от Texas Instruments,
в частности CC2541.
Соединения Arduino
EN и контактов STATE остались неподключенными.
Поскольку Arduino Uno представляет собой устройство на 5 В, делитель напряжения на RXD был использован во избежание перенапряжения на выв.
Эскиз Arduino
Скетч Arduino, который я использовал, был очень простым:
Тестирование Linux
Сначала проверьте, можете ли вы найти ключ Bluetooth на компьютере:
bash-4. 3# разработчик hcitool Устройства: hci0 00:11:22:33:44:55
Теперь вы можете проверить состояние устройства:
bash-4.3# hciconfig -a hci0: Тип: BR/EDR Шина: USB Адрес BD: 00:11:22:33:44:55 ACL MTU: 339:8 SCO MTU: 128:2 ВНИЗ . . .
Последняя строка выше указывает, что интерфейс не работает. Чтобы изменить это:
bash-4.3# hciconfig hci0 выше bash-4.3# hciconfig -a hci0: Тип: BR/EDR Шина: USB Адрес BD: 00:11:22:33:44:55 ACL MTU: 339:8 SCO MTU: 128:2 РАБОТАЕТ Байты RX: 930 acl: 0 sco: 0 события: 35 ошибки: 0 Байты TX: 131 acl: 0 sco: 0 команды: 35 ошибки: 0 Особенности: 0xff 0x3e 0x85 0x30 0x18 0x18 0x00 0x00 Тип пакета: DM1 DM3 DM5 Dh2 Dh4 DH5 HV1 HV2 HV3 Политика ссылки: RSWITCH HOLD SNIFF Режим связи: ПОДЧИНЕННЫЙ ПРИНЯТЬ . . .
Обратите внимание, что ключ изначально настроен как ведомый. Если мы хотим изменить его на мастер:
bash-4. 3# hciconfig -мастер hci0 lm bash-4.3# hciconfig -a hci0: Тип: BR/EDR Шина: USB Адрес BD: 00:11:22:33:44:55 ACL MTU: 339:8 SCO MTU: 128:2 РАБОТАЕТ Байты RX: 1496 acl: 0 sco: 0 события: 43 ошибки: 0 Байты TX: 187 acl: 0 sco: 0 команды: 43 ошибки: 0 Особенности: 0xff 0x3e 0x85 0x30 0x18 0x18 0x00 0x00 Тип пакета: DM1 DM3 DM5 Dh2 Dh4 DH5 HV1 HV2 HV3 Политика ссылки: RSWITCH HOLD SNIFF Режим связи: МАСТЕР Имя: '' Класс: 0x000104 Классы обслуживания: не указано Класс устройства: компьютер, настольная рабочая станция Версия гиперконвергентной инфраструктуры: 2.0 (0x3) Версия: 0xc5c Версия LMP: 2.0 (0x3) Подверсия: 0xc5c Производитель: Cambridge Silicon Radio (10)
Обратите внимание, что теперь он настроен как мастер. Есть много
предоставлена информация, включая производителя.
Теперь, когда устройство работает, мы можем искать BLE-устройства в
окрестности:
bash-4.3# hcitool lescan ЛЭ Скан... CC:FF:11:11:66:22 (неизвестно) CC:FF:11:11:66:22 (неизвестно) CC:FF:11:11:66:22 MLT-BT05 . . .
Появляется одно устройство. Он идентифицирует себя как MLT-BT05 . Подробнее об устройстве мы можем узнать:
bash-4.3# hcitool leinfo CC:FF:11:11:66:22 Запрос информации... Дескриптор: 71 (0x0047) Версия LMP: 4.0 (0x6) Подверсия LMP: 0x132 Производитель: Texas Instruments Inc. (13) Особенности: 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00
(Как упоминалось выше, производитель чипсета указан как Техас.
Инструменты.)
Поддерживает ли ключ BLE?
bash-4.3# команды hciconfig hci0 hci0: Тип: BR/EDR Шина: USB Адрес BD: 00:11:22:33:44:55 ACL MTU: 339:8 SCO MTU: 128:2 Команды: октет 0 = 0xff (бит 0 1 2 3 4 5 6 7) Октет 1 = 0xff (бит 0 1 2 3 4 5 6 7) Октет 2 = 0xff (бит 0 1 2 3 4 5 6 7) Октет 3 = 0x03 (бит 0 1) Октет 4 = 0xce (бит 1 2 3 6 7) Октет 5 = 0xff (бит 0 1 2 3 4 5 6 7) Октет 6 = 0xff (бит 0 1 2 3 4 5 6 7) Октет 7 = 0xff (бит 0 1 2 3 4 5 6 7) Октет 8 = 0xff (бит 0 1 2 3 4 5 6 7) Октет 9= 0xff (Бит 0 1 2 3 4 5 6 7) Октет 10 = 0xff (бит 0 1 2 3 4 5 6 7) Октет 11 = 0xff (бит 0 1 2 3 4 5 6 7) Октет 12 = 0x33 (бит 0 1 4 5) Октет 13 = 0x0f (бит 0 1 2 3) Октет 14 = 0xe8 (бит 3 5 6 7) Октет 15 = 0xff (бит 0 1 2 3 4 5 6 7) Октет 16 = 0x3f (бит 0 1 2 3 4 5) «Запрос» «Отмена запроса» «Режим периодического запроса» «Выйти из режима периодического опроса» «Создать соединение» «Отключить» «Добавить соединение SCO» «Отменить создание соединения» «Принять запрос на подключение» «Отклонить запрос на подключение» «Ответ на запрос ключа ссылки» «Отрицательный ответ на запрос ключа ссылки» «Ответ на запрос PIN-кода» «Отрицательный ответ на запрос PIN-кода» «Изменить тип пакета подключения» «Запрошена аутентификация» «Установить шифрование соединения» «Изменить ключ ссылки соединения» «Главный ключ связи» «Запрос удаленного имени» «Отмена запроса удаленного имени» «Читать удаленные поддерживаемые функции» «Читать удаленные расширенные функции» «Чтение информации об удаленной версии» «Чтение смещения часов» «Чтение дескриптора LMP» «Режим удержания» «Режим анализа» «Выход из режима анализа» «Настройка QoS» «Обнаружение ролей» «Переключить роль» «Чтение настроек политики ссылок» «Запись настроек политики ссылок» «Чтение настроек политики ссылок по умолчанию» «Запись параметров политики ссылок по умолчанию» «Спецификация потока» «Установить маску события» «Сбросить» «Установить фильтр событий» «Сбросить» «Читать тип PIN» «Запись типа PIN-кода» «Создание нового ключа устройства» «Чтение сохраненного ключа ссылки» «Записать сохраненный ключ ссылки» «Удалить сохраненный ключ ссылки» «Записать локальное имя» «Чтение локального имени» «Чтение тайм-аута принятия соединения» «Тайм-аут подтверждения подключения для записи» «Тайм-аут чтения страницы» «Тайм-аут записи страницы» «Включено сканирование чтения» «Включено сканирование записи» «Активность чтения страницы» «Активность записи страницы сканирования» «Чтение активности сканирования запроса» «Запись активности сканирования запроса» «Аутентификация чтения включена» «Аутентификация записи включена» «Чтение режима шифрования» «Запись режима шифрования» «Чтение класса устройства» «Запись класса устройства» «Чтение голосовых настроек» «Запись голосовых настроек» «Чтение тайм-аута автоматического сброса» «Запись тайм-аута автоматического сброса» «Читать число повторных трансляций» «Запись Num широковещательных повторных передач» «Активность в режиме ожидания чтения» «Активность режима удержания записи» «Чтение уровня мощности передачи» «Чтение включения синхронного управления потоком» «Запись включения синхронного управления потоком» «Установить хост-контроллер для управления потоком хоста» «Размер буфера хоста» «Количество хостов завершенных пакетов» «Тайм-аут контроля чтения ссылки» «Тайм-аут контроля над каналом записи» «Чтение числа поддерживаемых IAC» «Чтение текущего LAP IAC» «Запись текущего LAP IAC» «Режим периода сканирования страницы чтения» «Режим периода сканирования страницы записи» «Режим сканирования страницы чтения» «Режим сканирования страницы записи» «Установить классификацию каналов AFH» «Тип сканирования запроса на чтение» «Тип сканирования запроса записи» «Тип сканирования страницы чтения» «Тип сканирования страницы записи» «Чтение режима оценки канала AFH» «Запись режима оценки канала AFH» «Читать информацию о локальной версии» «Читать локальные поддерживаемые функции» «Читать локальные расширенные функции» «Читать размер буфера» «Читать код страны» «Чтение BD ADDR» «Чтение счетчика неудачных контактов» «Сбросить счетчик неудачных контактов» «Получить качество связи» «Читать RSSI» 'Чтение карты каналов AFH' 'Чтение часов BD' 'Чтение режима обратной связи' «Режим обратной петли» «Включить тестовый режим устройства» «Настройка синхронного подключения» «Принять синхронное подключение» «Отклонить синхронное соединение» Баш-4. 3#
Вышеупомянутый не . Следующий делает :
bash-4.3# команды hciconfig hci0 hci0: Тип: BR/EDR Шина: USB Адрес BD: 00:11:22:33:44:55 ACL MTU: 339:8 SCO MTU: 128:2 Команды: октет 0 = 0xff (бит 0 1 2 3 4 5 6 7) Октет 1 = 0xff (бит 0 1 2 3 4 5 6 7) Октет 2 = 0xff (бит 0 1 2 3 4 5 6 7) Октет 3 = 0x03 (бит 0 1) . . . «Отправить уведомление о нажатии клавиши» «Отрицательный ответ на запрос возможности ввода-вывода» «Чтение размера ключа шифрования» «Чтение расширенного уровня мощности передачи» «Чтение поддержки хоста LE» «Запись поддержки хоста LE» «Установка маски события LE» 'LE Read Buffer Size' 'LE Read Local Supported Features' 'LE Установить случайный адрес' 'LE Установить параметры рекламы' 'LE Читать мощность передачи рекламного канала' 'LE Set Advertising Data' 'LE Set Scan Response Data' 'LE Set Advertise Enable Enable' 'LE Задать параметры сканирования' 'LE Задать разрешение сканирования' 'LE Создать соединение' 'LE Create Connection Cancel' 'LE Read White List Size' 'LE Очистить белый список' 'LE Добавить устройство в белый список' «Удалить устройство LE из белого списка» «Обновление подключения LE» 'LE Установить классификацию каналов хоста' 'LE Чтение карты каналов' 'LE Read Remote Used Features' 'LE Encrypt' 'LE Rand' 'LE Start Encryption' 'LE Long Term Key Request Reply' «Отрицательный ответ на запрос долгосрочного ключа LE» «Поддерживаемые состояния чтения LE» 'Тест приемника LE' 'Тест передатчика LE' 'Завершение теста LE' Баш-4. 3#
Все команды LE в конце указывают, что этот ключ поддерживает БЛЕ.
Есть несколько команд, которые hcitool имеет специально для устройств BLE.
bash-4.3# hcitool hcitool — Инструмент гиперконвергентной инфраструктуры версии 5.40 Использование: hcitool [опции] <команда> [параметры команды] Параметры: --help Показать справку -i dev HCI-устройство Команды: dev Показать локальные устройства . . . clock Чтение локальных или удаленных часов lescan Начать сканирование LE leinfo Получить удаленную информацию LE lewladd Добавить устройство в белый список LE lewlrm Удалить устройство из белого списка LE lewlsz Чтение размера белого списка LE lewlclr Очистить белый список LE lerladd Добавить устройство в список разрешения LE lerlrm Удалить устройство из списка разрешения LE lerlclr Очистить список разрешения LE lerlsz Чтение размера разрешающего списка LE lerlon Включить разрешение адреса LE lerloff Отключить разрешение адреса LE lecc Создать соединение LE ledc Отключить соединение LE Обновление соединения lecup LE Для получения дополнительной информации об использовании каждой команды используйте: hcitool <команда> --help баш-4. 3$
Чтобы подключиться к устройству:
bash-4.3# hcitool lecc CC:FF:11:11:66:22 Соединительная ручка 71 Баш-4.3#
Вы должны увидеть, что ранее мигающий светодиод на модуле теперь остается горит, указывая на наличие соединения.
Чтобы отключиться от устройства:
bash-4.3# hcitool ledc 71 Баш-4.3#
Для мониторинга трафика с удаленного устройства:
bash-4.3# hcidump --raw hci0 Сниффер HCI - анализатор пакетов Bluetooth версии 5.40 устройство: hci0 snap_len: 1500 фильтр: 0xffffffff > 02 47 20 0D 00 0900 04 00 1В 25 00 74 65 73 74 0Д 0А
Строка 74 65 73 74 переводится в ASCII как тест (за которым следует возврат каретки (0D) перевод строки (0A)), который был отправлен с Arduino вместе с модулем.
Тестирование Linux с использованием bluetoothctl
bluetoothctl — альтернативный инструмент Linux для тестирования Bluetooth.
bash-4.3# bluetoothctl [Bluetooth]#
Обратите внимание, что он работает в интерактивном режиме.
Найти локальный контроллер:
[Bluetooth] # список Контроллер 00:11:22:33:44:55 BlueZ 5.40 [по умолчанию] [Bluetooth]#
Найдите удаленные устройства:
[Bluetooth]# сканирование включено Открытие началось [CHG] Контроллер 00:1A:7D:DA:71:0A Обнаружение: да [CHG] Устройство CC:FF:11:11:66:22 RSSI: -58 [НОВОЕ] Устройство 57:3F:C6:DD:3B:63 57-3F-C6-DD-3B-63 [Bluetooth]#
Подключиться к удаленному устройству:
[Bluetooth]# подключение CC:FF:11:11:66:22 Попытка подключения к CC:FF:11:11:66:22 [CHG] Устройство CC:FF:11:11:66:22 Подключено: да Подключение успешно [MLT-BT05]#
Подсказка изменилась на имя подключенного устройства.
Отключение аналогично:
[MLT-BT05]# отключение Попытка отключиться от CC:FF:11:11:66:22 Успешное отключение [CHG] Устройство CC:FF:11:11:66:22 Подключено: нет [Bluetooth]#
Подсказка вернулась в неспецифическое состояние.
Если устройство уже подключено при запуске программы,
подсказка будет отражать, что:
bash-4.3# bluetoothctl [НОВОЕ] Контроллер 00:11:22:33:44:55 BlueZ 5.40 [по умолчанию] [НОВОЕ] Устройство CC:FF:11:11:66:22 MLT-BT05 [MLT-BT05]#
Есть много команд:
[MLT-BT05]# справка Доступные команды: list Список доступных контроллеров показать [ctrl] информацию о контроллере selectВыбрать контроллер по умолчанию устройства Список доступных устройств Paired-devices Список сопряженных устройств power Установка питания контроллера Pairable Установить режим сопряжения контроллера обнаруживаемый <вкл./выкл.> Установить режим обнаружения контроллера агент Включить/отключить агент с заданной возможностью default-agent Установить агент по умолчанию set-scan-filter-uuids [uuid1 uuid2 ...] Установить uuids фильтра сканирования set-scan-filter-rssi [rssi] Установить фильтр сканирования rssi и очистить путь set-scan-filter-pathloss [pathloss] Устанавливает фильтр сканирования и очищает rssi set-scan-filter-transport [транспорт] Установить транспорт фильтра сканирования set-scan-filter-clear Очищает фильтр обнаружения.