- Bluetooth в Arduino проектах
- Описание проекта
- Сопряжение с Android
- Подключаемся к bluetooth-модулю по bluetooth с компьютера
- Характеристики модулей HC-05 и HC-06
- Схема подключения модуля HC-05 к Arduino
- Подключение
- Распиновка и подключение
- Как работает nRF8001
- Взаимодействие HC-06 с компьютером
- Пример Echo
- Описание модуля Bluetooth HC 06
- Библиотеки
- LED скетч для Arduino и HC-06
- AT-команды
- Скетч для Arduinoдля работы по bluetooth
- SoftwareSerial
- Echo скетч для Arduino и HC-06
- Настройка JDY-31, AT команды
- Схема соединения
- HC-06 – bluetooth модуль (slave)
Bluetooth в Arduino проектах
Проекты часто требуют удаленного управления или передачи данных с телефона или другого устройства. Один из самых популярных и удобных способов — обмен данными через Bluetooth. Интерфейс UART (последовательный) используется для соединения платы Arduino и компьютера. Поскольку любая плата Arduino имеет как минимум 1 последовательный порт UART, для подключения модуля Bluetooth не требуются специальные библиотеки и схемы.
Самыми популярными модулями являются устройства на базе микросхемы BC417. Эта серия называется HC. Модули HC-03 и HC-05 могут быть как сервером подключения, так и клиентом, они имеют широкий набор AT-команд.
Для подключения к ПК вам понадобится модуль Bluetooth, плата Arduino, соединительные кабели и компьютер. Скетч для управления платой Arduino через смартфон и компьютер будет одинаковым, поскольку в обоих случаях данные будут отправляться на микроконтроллер по протоколу UART. Схема подключения модуля Bluetooth к плате представлена на рисунке. Вывод RX на Arduino подключается к TDX, TX к RDX, GND к GND, 5V к VCC.
При загрузке скетча нужно отключить модуль Bluetooth, иначе при доступе к Arduino будет отображаться ошибка. Также необходимо установить приложение для отправки данных в форму на смартфоне или планшете, поддерживающем операционную систему Android. После установки приложения вам необходимо скачать скетч и подключить модуль к плате Arduino. Пример кода мигания светодиода:
Теперь вам нужно настроить соединение между телефоном и модулем. Чтобы установить соединение, вам нужно зайти в настройки телефона и включить Bluetooth. Как только устройство будет найдено, необходимо ввести пароль, обычно «1234» или «0000». Далее вам необходимо авторизоваться в приложении, нажать на кнопку «Подключить Bluetooth» и выбрать желаемое устройство. Если сопряжение выполнено успешно, светодиод на модуле начнет мигать медленнее, примерно 1 раз в 2 секунды.
В скетче светодиод включается и выключается при получении чисел «1» и «0». Помимо цифр, вы также можете использовать буквы латинского алфавита с учетом регистра.
Точно так же вы можете подключиться к модулю с помощью компьютера. Для этого существуют различные программы, которые подключаются к COM-порту. При запуске программа запрашивает номер порта, скорость и тип подключения. В случае успешного подключения на экране появится поле терминала, в котором необходимо ввести цифры / буквы с клавиатуры, при которой загорится светодиод.
Описание проекта
Мы подключим Arduino Uno к модулю nRF8001 для отправки и получения данных от него, как если бы это был последовательный порт.
Другими словами, мы будем использовать встроенную возможность действовать как UART. Мы добавим красный, зеленый и синий светодиоды и, отправив «r», «b» или «g», заставим этот светодиод пульсировать в течение нескольких мс.
Мы также введем строки в последовательную консоль и отправим их обратно на мобильный телефон.
Примечание. Все протестировано только на телефоне Android (Samsung Galaxy J3)
Сопряжение с Android
Чтобы подключить модули к устройствам под управлением Android, выполните следующие действия:
- Включите подключенные устройства и включите bluetooth.
- В открывшемся окне выберите микросхемы с названиями HC-05 или HC-06 и выберите опцию «Подключить». При выполнении первого сопряжения необходимо ввести пароль для модулей (по умолчанию «1234» или «0000». При повторном подключении этот процесс произойдет автоматически.
- Установите и откройте приложение Bluetooth Terminal, предназначенное для организации управления контроллерами Arduino через Bluetooth.
- В открывшемся меню нажмите кнопку «Подключить устройство — Защитить”.
Если ассоциация верна, светодиод на микроконтроллере загорится на несколько секунд.
Подключаемся к bluetooth-модулю по bluetooth с компьютера
Для подключения к модулю bluetooth можно использовать различные программы, которые можно подключить к COM-порту. Например, такие как HyperTerminal, PuTTY, Tera Term, Termite и другие. Все они бесплатны и бесплатно распространяются в Интернете.
Удобство TeraTerm заключается в том, что он автоматически перечисляет COM-порты, назначенные модулю bluetooth вашего компьютера. Запустите программу, выберите последовательное соединение, выберите соответствующий COM-порт Bluetooth из списка, нажмите OK.
Подключение к модулю Bluetooth с помощью программы TeraTerm
Когда PuTTY запускается, он также запрашивает номер порта (COM4, у вас будет свой), скорость соединения (9600), тип соединения (Serial). Затем нажмите кнопку «Подключить.
Подключение к модулю bluetooth с помощью PuTTY
В случае ошибки при подключении программа выдаст соответствующее уведомление. Если соединение вашего компьютера с модулем bluetooth прошло успешно, вы увидите перед собой поле терминала. Введите цифру 1 с клавиатуры в это поле — и светодиод на выводе 13 Arduino включится, введите 0 — он погаснет.
Характеристики модулей HC-05 и HC-06
Есть 2 основных модуля для Arduino Bluetooth: HC-06 и HC-05. Это несколько распаянных плат с микросхемами, выводами GPIO и регуляторами напряжения. Эти модули имеют следующие отличия:
- HC 06 не может работать в 2-х режимах.
- Чип HC 06 стоит на 0,5 доллара дороже.
- Скорость передачи по умолчанию для AT-команд составляет 9600 для HC-06 и 38400 для HC-05.
Модули совместимы с платами Arduino Nano, Uno и Mega. Подключение переходников происходит при наличии разделителя. Чипы адаптированы для адаптивного подключения.
Они поддерживают технологию SPP, которая имитирует последовательные порты персонального компьютера с использованием протокола RFCOMM.
Максимальная скорость передачи составляет 115 300 бод. Модули работают на расстоянии до 20 м при отсутствии огромных препятствий и помех. Они работают при температуре до + 85 ° C и напряжении 3,3 В.
Схема подключения модуля HC-05 к Arduino
Ниже представлена схема подключения модуля к плате. Как видно из схемы, вывод RX модуля подключен к выводу TX Arduino, а вывод TX модуля подключен к RX Arduino. Подавать напряжение необходимо на вывод VCC и GND, можно прямо с платы Arduino или от другого источника.
Вот как все это выглядит на макетной плате
Подключение
Модуль подключается к блоку питания и к цифровым выводам МК:
- JDY-31> Arduino
- GND> GND
- VCC> 5 В
- RX> Последовательная передача
- TX> Последовательный RX
- При желании EN можно подключить к любому цифровому выводу для контроля состояния подключения.
На схеме слева я напрямую подключил JDY-31 к аппаратным выводам UART, справа через делитель напряжения, состоящий из трех резисторов 10 кОм (доступен в GyverKIT). Такой делитель 2: 1 будет подавать примерно 3,1 В на вход RX модуля. Правильная схема предпочтительнее, но от прямого подключения модуль, насколько я знаю, пока ни у кого не вышел из строя.
По этой ссылке:
- Модуль будет мешать загрузке прошивки (загружается через RX TX), во время загрузки необходимо отключить провода от выводов RX и TX Arduino
- Вы можете общаться с модулем, используя стандарт Serial, фактически он будет дублировать монитор COM-порта
На следующих двух схемах я подключил модуль к любым двум цифровым контактам Arduino:
При таком подключении модуль ничему не мешает, но для работы с ним потребуется использовать стандартную программную последовательную библиотеку — SoftwareSerial.
Распиновка и подключение
Модули HC-05 и HC-06 имеют следующую распиновку:
- IT — пин для активации и деактивации чипов;
- VCC — контакт для питания + 5В;
- GND — земля или непрограммируемый порт, необходимый для обеспечения стабильного напряжения;
- TXD и RXD — шина для обмена информацией с микроконтроллером, входящая в интерфейс UART;
- STATUS — индикатор состояния модуля;
- KEY — пин для активации командного режима AT.
Расстояние между кабелями, расположенными на поверхности модулей, составляет 1,5 мм. По этой причине к ним необходимо припаять 5 проводов, чтобы надежно соединить микросхемы и пины контроллера Arduino.
При подключении модуля bluetooth к Arduino рекомендуется использовать штекерные разъемы.
Чипы необходимо подключать в следующем порядке:
- Вывод VCC на порт 5 В.
- Вывод TX на шину RXD.
- Вывод RX на шину TXD.
Паттерны микросхем и плат Arduino связаны между собой. При правильном подключении загорится светодиод, расположенный на микроконтроллере.
После подключения технического оборудования необходимо настроить работу микросхем по интерфейсу USART-Bluetooth.
Как работает nRF8001
Одной из интересных особенностей nRF8001 является то, что его пользовательский интерфейс представляет собой UART.
Другими словами, те же старые серийные Tx и Rx, что делает его очень простым в использовании. Первые три контакта на плате — это интерфейс SPI, SCK — это просто часы, MISO — это Master In Slave Out, а MOSI — Master Out Slave In.
Эти четыре контакта идут к Arduino, как показано на схеме, и не подлежат обсуждению. REQ сигнализирует nRF, что Arduino что-то означает, а RDY сообщает Arduino, что nRF что-то означает и должен перейти на один из контактов запроса прерывания Arduino, который равен 2 или 3.
RST — это вывод сброса, который восстанавливает nRF при загрузке. REQ используется аналогично SS, с которым вы могли столкнуться в других приложениях SPI. Более подробную информацию о своем nRF8001 у Адафрута можно найти по этой ссылке.
Взаимодействие HC-06 с компьютером
На видео ниже показано, как подключить HC-06 к персональному компьютеру или другому устройству Bluetooth.
Примечание. Загруженное видео, которое программа, которую вы используете в качестве монитора последовательного порта (в данном случае Teraterm), подключает к COM-порту ВХОДЯЩИЙ (входящий). Это не верно. Должен использоваться порт COM OUTPUT.
После подключения HC-06 откройте Teraterm или другой подходящий терминал. Выберите последовательный порт, отвечающий за связь с HC-06 (подробности смотрите в видео).
После правильного подключения HC-06 можно отправлять данные на Arduino и обратно. Если вы загрузили второй эскиз, вы можете включить / выключить светодиод, отправив символы «n» и «f» соответственно.
Пример Echo
Описание модуля Bluetooth HC 06
Все существующие типы модулей Bluetooth имеют свои особенности, но схожи по функциям и работе. Один из видов модулей — Bluetooth HC 06. Со стороны Arduino модуль выглядит как обычный последовательный интерфейс, поэтому вы можете сразу наладить взаимодействие с устройством на компьютере.
Основные возможности модуля:
- Электропитание 3.3В — 6В;
- Максимальное входное напряжение 5 В;
- Максимальный ток 45 мА;
- Скорость передачи данных 1200-1382400 бод;
- Рабочие частоты 2,40 ГГц — 2,48 ГГц;
- Поддержка спецификации Bluetooth версии 2.1;
- Низкое энергопотребление;
- Высокий уровень защиты данных;
- Дальность связи 30 м;
- Для подключения к смартфону используются следующие данные: пароль «1234», скорость передачи 9600, название модуля HC-06.
Модуль имеет следующие контакты:
- VCC, GND — плюс и минус питания;
- RX и TX — приемник и передатчик;
- MCU-INT — отображает статус;
- Clear (Сброс) — сбрасывает и перезапускает модуль. Последние два пина обычно в работу не вовлекаются, поэтому сейчас выпускают модули без этих контактов.
Модуль HC-06 используется только в режиме slave, т.е он не может самостоятельно подключаться к другим устройствам Bluetooth. Все настройки для подключения «пароль, скорость передачи» можно изменить с помощью AT-команд.
В модуль не входят соединительные кабели.
Библиотеки
требуется только одна библиотека: библиотека SPI, которая автоматически устанавливается вместе с Arduino IDE. Но если у вас его нет, вы можете скачать его отсюда.
Вам также потребуется загрузить и установить приложение Nordic Android nRF UART 2.0 из Play Store на свой телефон Android. У меня нет iPhone для тестирования, но он должен работать и на устройствах Apple.
LED скетч для Arduino и HC-06
Эта программа дает возможность включать / выключать светодиод, отправляя команды на Arduino через Bluetooth.
AT-команды
Используя AT-команды, вы можете изменить настройки по умолчанию. Обратите внимание, что в 2018 году модули начали поставляться с разными прошивками, и некоторая информация, ранее описанная в Интернете, устарела. Я описываю настоящие команды на 2019 год.
После подключения светодиод на модуле будет мигать два раза в секунду. В этом режиме вы можете вводить команды. Но сначала загрузим скетч.
В Serial Monitor введите AT-команду. В ответ мы получаем ОК.
Чтобы изменить имя модуля, введите команду AT + NAME = CAT-06, где CAT-06 — новое имя. Имя не должно превышать 20 символов.
Откройте для себя версию модуля: AT + VERSION. Ответ: ВЕРСИЯ: 3.0-20170609.
Смена пароля: AT + PSWD: «0000», где 0000 — ваш новый пароль.
Также есть команды для изменения скорости, но здесь нужно быть осторожным. После изменения скорости старые скетчи работать не будут, нужно внести в них изменения, чтобы они соответствовали новым настройкам. Не уверен, стоит ли этим увлекаться.
Скетч для Arduinoдля работы по bluetooth
Напишем этот скетч и загрузим его в память Arduino:
Включаем схему, собранную с Arduino и подключенный к ней модуль bluetooth. Правильно подключенный модуль немедленно переходит в режим ожидания подключения, о чем будет сигнализировать ритмично мигающий светодиодный индикатор состояния.
SoftwareSerial
Например, мы подключаем модуль по второй схеме (на выводах D2 и D3) и загружаем простую программу, которая будет отправлять данные из последовательного программного обеспечения (на выводах D2 и D3, Bluetooth) на оборудование (что мы видим через дверной монитор в Arduino IDE):
Мы открываем терминал и порт монитора, и мы можем общаться с компьютером, Arduino действует как посредник и передает данные с Bluetooth на USB и наоборот:
Аналогичным образом SoftwareSerial можно использовать для программ и приложений, если оборудование UART на Arduino необходимо для других целей.
Echo скетч для Arduino и HC-06
Этот скетч дает вам возможность отправить строку в Arduino через Bluetooth и получить ответ, который отображается на последовательном мониторе.
Примечание. Если вы используете Arduino Mega, измените строку кода while (Serial.available ()); из while (Serial.available ()> 0) ;. Иначе скетч не получится.
Настройка JDY-31, AT команды
Также мы рассматриваем конфигурацию самого JDY-31, это делается с помощью AT-команд:
- Чтобы модуль отвечал на команды, он должен находиться в режиме ожидания подключения (светодиод мигает)
- Загрузите пустую программу в Arduino (File / New). Или любой другой, не связанный с Serial. Или подключаем вывод RST к GND, чтобы микроконтроллер не запускался и нам не мешал
- Подключаем JDY-31 к RX TX Arduino (аппаратный последовательный) наоборот: TX> TX, RX> RX
- Откройте монитор порта, установите текущую скорость модуля (по умолчанию 9600 бод), конец строки NL и CR
Отправляем команду AT + VERSION. Если все сделано правильно, модуль ответит + VERSION = JDY-31-V1.35, Bluetooth V3.0
Командование | Описание | Отвечать |
В + ВЕРСИЯ | Информация о версии | + ВЕРСИЯ = JDY-31-V1.35, Bluetooth V3.0 |
ПРИ + СБРОС | Перезагрузить | + ОК |
AT + ДИСК | Отключить | + ОК |
AT + LADDR | Требуется MAC-адрес | + LADDR = 5C7B00006378 |
AT + BAUD | Запросить скорость текущего порта. Код:
|
+ BAUD = 4 |
AT + BAUDx | Установите скорость порта, где x — код (см. Выше). Пример настройки скорости 115200: AT + BAUD8
Примечание: после перезагрузки модуль будет работать с AT-командами на новой скорости! |
+ ОК |
AT + PIN | Текущий запрос PIN-кода | + PIN = 1234 |
AT + PINx | Установка булавки. Пример: AT + PIN1234 | + ОК |
AT + NAME | Запрос имени текущего модуля | + НАЗВАНИЕ = JDY-31-SPP |
AT + NOMEx | Настройка имени формы. Пример: AT + MYBTNAME | + ОК |
ПРИ + ПО УМОЛЧАНИЮ | Сброс настроек | + ОК |
Схема соединения
Все детали соединяем по следующей схеме:
Собранный проект выглядел так:
HC-06 – bluetooth модуль (slave)
Читайте также: Передача данных через Arduino на частоте 433 МГц