Hc 08 bluetooth модуль подключение

Обновлено: 06.07.2024

Сборка квадра пока затормозилась, но доходят всякие ништячки с одного там китайского магазина.
В связи с тем, что надоело отключать/подключать APM кабелем к компу, а также захотелось управлять с телефона (а как вы знаете, что лень - двигатель прогресса) был заказан bluetooth hc-06.
Чиркану инструкцию, чтоб все сразу в одном месте было, вдруг кому понадобится.У меня APM 2.8,windows 8.1 и Mission planner 1.3.36.
Выглядит плата так:

Подключал через плату CP2102, RX-TX,TX-RX.
Затем нужно было проверить работоспособность и настроить. Можно взять любую прогу для работы с com-портами, хоть putty,но во многих примерах подключаются через arduino ide - мониторинг портов,я так и сделал. Соответственно указав com-порт, который определился при подключении. Скорость по дефолту 9600 бод, ее необходимо сменить на 57600. Для начала проверяем командой AT работоспособность платы,в ответ получаем "ОК", потом для красоты задаем имя AT+NAMEname (name - пишем любое, слитно),можно посмотреть версию прошивки командой AT+VERSION,после этого задаем скорость работы с платой блютуза 57600 командой AT+BAUD7. По дефолту пинкод 1234, но его можно сменить командой AT+PIN1234(указав желаемый пинкод,вместо цифр указать свой).
Теперь плата обозвана, настроена на нужную скорость.
Теперь можно сделать сопряжение с нашим блютузом. Дальнейшую часть мануала приведу в видео с ютуба, по которому я делал:

По сути выясняем к какому com-порту привязалось блютуз соединение (в моем случае com4), проверяем, чтоб скорость порта была 57600.

Небольшое лирическое отступление. У меня была версия MP 1.3.37 и через нее ну никак не хотела работать инструкция, которая будет дальше, по этому снес анинсталлером все остатки от МР и поставил версию 1.3.36. По сути она дублирует все проделанное выше, но у меня не получалось это все провернуть, пока я не сменил в терминале скорость самого блютуза на 57600. Может у кого живой МР то и проделывать деинсталяцию не придется.

Я после всех перенастроек на всякий случай прошелся по инструкции:

УРА! Все таки заборол я свой блюпуп! Уже опускались руки, хотел открывать спор на али. Договорился с китайцем, что свяжемся сегодня по скайпу и через тимвивер он настроит мне сам. Но вечером пока менял интерфейс винды на инглиш для китайца и подготавливал FTDI модуль, решил еще раз попробовать сам. Через любые программы типа Термита и ардуину блюпуп на команды АТ не отзывается.
Не давал мне покоя сам мишнпланер с его меню Bluetooth Setup. В итоге именно оно и помогло!
Итак:
1. Подключаем блюпуп к компу через FTDI модуль (TX-RX, RX-TX). Светодиод на блюпупе должен моргать.
2. Смотрим получившийся Com порт FTDI (у меня 7)
Вложение 1365566
3. Запускаем мишнпланнер
4. Заходим в Bluetooth Setup
5. Выставляем там Имя (любое), скорость работы (57600) и пароль (1234)
6. Выставляем в настройках подключения мишнпланера Com порт FTDI ( у меня 7), скорость 57600.
7. И нажимаем кнопочку Save Settings в меню Bluetooth Setup. Модуль FTDI начинает моргать.
8. Появляется окошко Sucessfully programmed. Готово
Вложение 1365567
9. Винда сама сразу же находит новое блютус устройство и предлагает спариться с ним, что и делаем.
Вложение 1365568
10. Отключаем блюпуп от FTDI и подключаем к APM.
11. Теперь выставляем в настройках мишнпланнера Com порт БЛЮТУСА (у меня 10), скорость 57600.
12. Нажимаем CONNECT и успешно соединяемся!
Вложение 1365565

У меня все. Всем спасибо за помощь!

В телефоне через приложение Tower (для андроида) коннект приходится чуть подождать и подождать когда пойдут данные, буквально секунд через 30 все работает.

Надеюсь кому поможет.

П.С. жду когда придет внешний компас.
П.П.С. писал китайцу по своему модулю GPS, в котором не работал компас, он обещался прислать новый модуль
П.П.П.С. Редитускай действительно отправил новый GPS-модуль, даже несмотря на то, что я обратился к нему аж через 2 месяца после получения посылки. Ну и еще добавлю,что модуль успешно пережил переполюсовку

Подключение блютуз модулей к Ардуино. Отличия HC-05 и HC-06

Как правило в заголовках к подобным статьям указывается конкретная модель модуля, например, HC-05 или HC-06. На самом деле все они подключаются одинаково. На что действительно следует обратить внимание, так это на режим работы. Bluetooth модуль может работать в одном из двух режимов: master или slave.

Slave (ведомый) - наиболее часто встречающийся режим работы, в котором устройство ожидает подключения, само при этом не способно подключиться к другому устройству.
Данный режим может использоваться в роботе, bluetooth розетке, метеостанции и любом другом устройстве, к которому планируется подключение, например, со смартфона или компьютера.

В режиме master (ведущий) устройство, напротив, является инициатором соединения и может подключиться к slave модулю. Для создания связи между двумя Ардуино посредством Bluetooth потребуются два модуля, один из которых сконфигурирован на работу в режиме master, другой - slave.

  • HC-03, HC-05 - позволяют изменять режим работы slave/master с помощью AT-команд;
  • HC-04, HC-06 - сконфигурированы заводом-изготовителем для работы в определенном режиме, который в дальнейшем не может быть изменен штатными средствами. Хотя master модули мне не попадались;
  • HC-07- позиционируется как замена HC-06;
  • HC-08 - работает по протоколу Bluetooth v4.0 BLE (Bluetooth Low Energy - Bluetooth с низким энергопотреблением). Позволяет изменять режим работы с помощью AT-команд;
  • HC-09 - позиционируется как замена HC-06 и HC-07, но работает только в slave режиме.

Итак, сегодня речь пойдет о подключении к Ардуино модулей Bluetooth в режиме slave. Причем не "голых", а уже распаянных на интерфейсную плату. Такая плата содержит преобразователь уровней и стабилизатор напряжения, что позволяет подключать ее к Ардуино напрямую и запитывать от 5 вольт. Для общения с модулями используется интерфейс UART (Universal Asynchronus Receiver-Transmitter или универсальный асинхронный приемопередатчик). Все платы Ардуино имеют хотя бы один последовательный порт UART, это означает что для подключения к ним Bluetooth не требуется каких-либо специализированных библиотек или схем. Достаточно соединить контакты Rx, Tx модуля с контактами Tx и Rx Ардуино соответственно. То есть передатчик одного устройства соединяется с приемником другого. Ниже приведена схема подключения Bluetooth модуля к Arduino UNO.

Схема подключения Bluetooth модулей HC-0x к Ардуино

Для обмена данными через последовательный интерфейс в Ардуино используется объект Serial. Попробуем управлять встроенным в Ардуино светодиодом: будем включать его при получении по Bluetooth символа "1" и выключать при получении "0". Для этого загрузим в него приведенный ниже скетч. Обратите внимание: выводы 0 и 1 (RX и TX) используется при программировании Ардуино, поэтому от них необходимо отключить модуль Bluetooth перед загрузкой скетча.

Функцией Serial.begin() устанавливаем скорость передачи данных, на которую сконфигурирован наш модуль. Как правило, заводом-изготовителем модули настраиваются на скорость 9600 бит/с. Загружаем код в Ардуино и подключаем Bluetooth. Для управления будем использовать смартфон и Bluetooth терминал - по этому сочетанию можно найти довольно много приложений в маркете. Я пользуюсь Bluetooth Terminal от Alexander Vozjennikov, на ее примере я буду описывать дальнейшие действия, но можно установить и любой другой терминал, это дело вкуса. Владельцам айфонов, думаю, также не составит труда найти подобное приложение. Итак, запускаем терминал, соглашаемся на предложение включить Bluetooth. Если ранее смартфон не связывался с данным модулем, то ищем новое устройство и пробуем подключиться, на запрос PIN-кода вводим 1234 или 0000.





А что если кроме Bluetooth требуется подключить еще какое-то UART устройство? В случае с Arduino Mega и Mega2560 нам кроме порта Serial доступны еще 3 аппаратных последовательных порта: Serial1 (RX-19 и TX-18), Serial2 (RX-17 и TX-16), Serial3 (RX-15 и TX-14), а значит можно использовать их вместо Serial, соответственно, нам уже не придется отключать модуль перед прошивкой Ардуино. Для других плат можно воспользоваться библиотекой SoftwareSerial. Данная библиотека позволяет реализовать последовательный интерфейс на любых цифровых выводах Ардуино с помощью программных средств, дублирующих функциональность UART (отсюда и название "SoftwareSerial"). Библиотека позволяет программно создавать несколько последовательных портов, работающих на скорости до 115200 бит/с. Давайте немного изменим предыдущий скетч, чтобы использовался не аппаратный, а программный последовательный порт.


Здесь для работы с Bluetooth создается программный последовательный порт на выводах 2 и 3. Можно использовать и другие выводы, но необходимо учитывать следующие ограничения: не все выводы Arduino Mega и Mega2560 поддерживают прерывания, возникающие при изменении уровня сигнала, поэтому на данных платах в качестве вывода Rx могут использоваться только следующие выводы: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69). Аналогичное ограничение для платы Leonardo оставляет нам для использования в качестве Rx выводы: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).

Итак, давайте загрузим данный скетч в Ардуино, подключим наш модуль к выводам 2 (Rx) и 3 (Tx) и попробуем управлять светодиодом со смартфона. Всё работает! Как видите, нет ничего сложного в управлении устройством на базе Ардуино по Bluetooth.

Остается только подумать о более удобном интерфейсе для управления конечным устройством. Если для этих целей планируется использовать смартфон, то в маркете можно найти большое количество Bluetooth контроллеров. Я же советую обратить внимание на приложение RemoteXY. Оно позволяет создать свой собственный интерфейс управления, заточенный под конкретный проект. На сайте разработчика можно найти подробную документацию и примеры. В общем, рекомендую!

В следующих публикациях обязательно рассмотрим конфигурирование модулей HC-0x при помощи AT-команд и работу в режиме master. А пока этой информации для быстрого старта, я думаю, достаточно.

В этой статье мы рассмотрим подключение Bluetooth-модуля HC-05 к микроконтроллеру ATmega8 (семейство AVR), а затем установим связь между смартфоном под управлением операционной системы Android и микроконтроллером ATmega8 с помощью Bluetooth-модуля, который будет использовать для связи с микроконтроллером универсальный асинхронный приемопередатчик (UART). Для контроля за успешностью процесса взаимосвязи будем использовать светодиод.

Подключение Bluetooth-модуля HC-05 к микроконтроллеру AVR ATmega8: внешний вид

Необходимые компоненты

Аппаратное обеспечение

  1. Микроконтроллер ATmega8 (купить на AliExpress).
  2. Программатор AVR-ISP (купить на AliExpress), USBASP (купить на AliExpress) или другой подобный.
  3. Bluetooth-модуль HC-05 (купить на AliExpress).
  4. 10-пиновый FRC кабель.
  5. Светодиод (купить на AliExpress).
  6. Макетная плата.
  7. Соединительные провода.
  8. Источник питания с напряжением 5 Вольт.

Программное обеспечение

CodeVisionAVR (или другое подобное, например, Atmel Studio)
SinaProg – для загрузки программы в микроконтроллер ATmega8 с помощью программатора USBASP

Общие принципы работы Bluetooth-модуля HC-05

Bluetooth-модуль может работать в двух режимах:

  1. Режим управления (Command Mode).
  2. Режим функционирования (Operating Mode).

В режиме управления можно конфигурировать свойства Bluetooth-модуля такие как: имя источника сигнала Bluetooth, пароль, бодовая скорость и т.д. В режиме функционирования можно получать и передавать данные между Bluetooth-модулем и микроконтроллером, поэтому в данном проекте мы будем использовать режим функционирования. Для режима управления оставим его настройки по умолчанию. То есть имя устройства будет HC-05 (автор статьи использует HC-06), пароль будет 0000 или 1234, а скорость передачи будет равна 9600 бод/с.

Внешний вид Bluetooth-модуля HC-05

Модуль работает при напряжении питания 5В, а его сигнальные контакты оперируют напряжением 3.3В, поэтому регулятор данного напряжения (3.3В) присутствует в данном модуле. Следовательно, нам не нужно беспокоиться о стабильности этого напряжения. У модуля 6 выходных контактов, но в режиме функционирования используются только 4. Схема соединения контактов модуля приведена в следующей таблице.

Создание проекта для ATmega8 в программной среде CodeVision

Аналогичные операции можно произвести и в других программных средах для программирования микроконтроллеров AVR, например, Atmel Studio.

После установки CodeVision вам необходимо выполнить следующие ниже перечисленные шаги чтобы создать проект и написать программу.

Шаг 1. Создайте новый проект в CodeVision, выбрав пункт меню File -> New -> Project. В появившемся диалогом окне нажмите Yes.

Создание нового проекта в CodeVision

Шаг 2. Откроется CodeWizard. Кликните в ней на первой опции, то есть AT90, затем нажмите OK.

Выбор первой опции в CodeVision

Шаг 3. Выберите свой микроконтроллер, в нашем случае им будет Atmega8.

Выбор модели микроконтроллера в CodeVision

Шаг 4. Кликните на Ports (порты). В нашем проекте мы будем использовать Port C4 и C5 для управления светодиодом. Таким образом, необходимо сконфигурировать биты 4 и 5 как выходные кликнув на них, как показано на рисунке:

Выбор портов в CodeVision

Шаг 5. Мы будем использовать универсальный асинхронный последовательный приемопередатчик (USART) для Rx и Tx (приема и передачи данных). Поэтому необходимо выбрать настройки USART, в них кликнуть на настройки приема и оставить их по умолчанию.

Выбор параметров последовательного порта в CodeVision

Шаг 6. Выберите Program -> Generate, Save and Exit. Теперь более половины вашей работы по программированию микроконтроллера Atmega8 можно считать выполненной.

Выбор опций сохранения в CodeVision

Шаг 7. Создайте новую папку на рабочем столе чтобы записывать туда наши файлы.

Выбор директория для сохранения проекта

У нас будет 3 диалоговых окна (будут появляться последовательно одно за другим) для сохранения наших файлов.

Сделайте то же самое (что и на представленном рисунке) с двумя другими диалоговыми окнами – то есть сохраните предлагаемые ими файлы.

После этого рабочая область программы будет выглядеть следующим образом:

Фрагмент кода программы в CodeVision

Теперь большая часть работы по программированию микроконтроллера Atmega8 нами выполнена с использованием такой удобной программной среды как CodeVision. Но ели вы не хотите использовать данную программную среду, то вы можете запрограммировать работу с последовательным портом микроконтроллера вручную по аналогии с последовательностью действий в таких статьях на нашем сайте как:

Работа схемы

Схема подключения Bluetooth-модуля HC-05 к микроконтроллеру AVR ATmega8 приведена на следующем рисунке.

Схема подключения Bluetooth-модуля HC-05 к микроконтроллеру AVR ATmega8

Подключите одну сторону FRC кабеля к программатору USBASP, а другую к контактам SPI микроконтроллера.

Назначение контактов FRC кабеля

Необходимо сделать следующие соединения:
1. Pin1 of FRC female connector -> Pin 17 ,MOSI of Atmega8
2. Pin 2 connected to Vcc of atmega8 i.e. Pin 7
3. Pin 5 connected to Reset of atmega8 i.e. Pin 1
4. Pin 7 connected to SCK of atmega8 i.e. Pin 19
5. Pin 9 connected to MISO of atmega8 i.e. Pin 18
6. Pin 8 connected to GND of atmega8 i.e. Pin 8

Соедините остальные компоненты на макетной плате в соответствии с представленной выше схемой.

Пояснение части кода программы

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

В настоящее время в зарубежных и отечественных магазинах можно найти большое количество различных Bluetooth Serial модулей для DIY-устройств. Цена на них не сильно высока: 5-10$ за модуль (с учетом бесплатной доставки в любую страну). Их легко можно найти на широко известной площадке AliExpress введя в поисковую строку одно из словосочетаний: Bluetooth RS232, Bluetooth Serial, HC-03, HC-04, HC-05, HC-06 или нажать на эту ссылку.

Bluetooth модули

В большинстве модулей используется чип BC417, плюс Flash-память. Чип поддерживает спецификацию Bluetooth v2.0 + EDR, AT-команды, может работать в режиме Master или Slave (модули HC-03/HC-5, может устанавливаться AT-командой), поддерживает скорость обмена от 2400 до 1382400.
Напряжение питание модуля составляет 3.3В, ток потребления

50мА.
Модули HC-03/HC-05 более функциональные, чем HC-04/HC-06.

Схема подключения Bluetooth модуля HC-06 (BMX-02A)

Основные выводы модулей 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.

Плата Bluetooth модулей

Итак, соберем простую схему для подключения Bluetooth модуля HC-06 к плате Arduino Nano V3.

Подключение Bluetooth модуля HC-06 к Arduino

Обратите внимание, что выводы TX и RX в плате Arduino Nano поменяны местами в отличии от Ardunio UNO и др. Поэтому внимательно смотрите распиновку своей Arduino платы.

Шаг между выводами в модуле составляет всего 1.5мм, поэтому придется взяться за паяльник и припаять провода к модулю. Всего необходимо припаять 5 проводов, однако светодиод подключать необязательно, он служит для индикации состояния.

Итак припаиваем провода и подключаем Bluetooth модуль следующим образом:
вывод Arduino 3.3В - к 12 пину модуля
вывод Arduino GND - к 13 пину модуля
вывод Arduino TX - к 2 пину модуля RX
вывод Arduino RX - к 1 пину модуля TX

Передача данных из Arduino по Bluetooth

Как видите скетч довольно простой и хорошо прокомментирован. В цикле, раз в секунду происходит увеличение переменной cnt, которая затем с текстовой надписью выводится в последовательный порт на Bluetooth модуль. Обратите внимание, что скорость порта установлена в значение 9600. При покупке модуля, спрашивайте на какое значение установлена скорость обмена по последовательному интерфейсу. Но в большинстве случаев это 9600. При необходимости, скорость обмена можно изменить АТ-командами.

Откройте данный скетч в Arduino IDE, скомпилируйте и прошейте ваш Arduino. Если вы подключали светодиод в Bluetooth модулю, то он должен мигать, показывая тем самым, что модуль ожидает соединение.

Внимание! Если при прошивке платы Arduino ругается прошивальщик, то отключите питание 3.3В с Bluetooth модуля.

Bluetooth флэшка

На компьютере, в качестве Bluetooth модуля использовался самый дешевый китайский Bluetooth USB адаптер, стоимостью около 200 руб. После того, как адаптер подключается к компьютеру, установите необходимые драйвера (в Windows 7 x64 у меня все драйвера поставились автоматом).
Затем щелкаем в трее по иконке Bluetooth модуля и выбираем "Добавить устройство":

Добавление нового Bluetooth устройства

Имя моего модуля BOLUTEK, у вас оно скорее всего будет другим. Нажимаем "Далее" и переходим к окну, где необходимо ввести пароль для устройства:

Код образования пары для Bluetooth устройства

Выбираем второй пункт: "Введите код образования пары устройства". С завода, код установлен 1234. Его и вводим. Программа настроит и пропишет в системе виртуальные COM-порты (у меня прописало 2 шт, но может быть и один):

Виртуальные COM-порты

В дальнейшем, можно посмотреть на какой COM-порт назначилось и его параметры. Для этого щелкаем правой кнопкой мыши по устройству и выбираем "Свойства" и вкладку "Оборудование". Там можно посмотреть и изменить параметры виртуального COM-порта:

Параметры COM-порта

Теперь, для приема и передачи данных на виртуальный COM порт можно использовать любую терминал программу. Я использовал бесплатную Tera Term. При каждом запуске программы предлагается выбор соединения, переключаем флажок на Serial и выбираем COM порт вашего Bluetooth модуля. У меня это COM4.

Tera Term

В терминале мы видим данные счетчика с платы Arduino:

Данные с Arduino

Как видим, данные успешно передаются по Bluetooth соединению. Ниже в статье вы можете посмотреть видео.

Двунаправленный обмен данными по Bluetooth

Следующим шагом будет написание простенькой программы двунаправленного обмена данными между Arduino и компьютером. В схему я добавил светодиод, подключив его к 12 пину Arduino, через токоограничительный резистор. Но можно использовать и встроенный LED (обычно 13 пин).

Обмен данными

Подключаем к Android

Для платформы Android также существуют программы-терминалы. Но необходима специальная программа для работы в терминальном режиме по Bluetooth. Я установил вот эту: Bluetooth Terminal. Достаточно простая программа, ничего лишнего.

В моем Android устройстве нет Bluetooth модуля, но он прекрасно работает и с внешним USB-адаптером, который мы использовали для подсоединения к ПК. Подключаем адаптер по USB, включаем на андроиде bluetooth, находим и вводим пароль для нашего Bluetooth устройства на Arduino и наконец запускаем программу терминал. Нажимаем "Connect a device - Secure" и выбираем наше устройство BOLUTEK. Теперь вы можете отправлять и принимать данные с Bluetooth устройства при помощи терминала.

Читайте также: