Реклама ⓘ
Главная » Arduino
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

Arduino и 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

Далее напишем простенький скетч для отправки сообщений из 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 модуля использовался самый дешевый китайский 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 пин).

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 устройством:

Прикрепленные файлы:

Теги:

taliban Опубликована: 2012 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (43) | Я собрал (0) | Подписаться

0
Геннадий #
Хотелось-бы подобный обзор по WiFi-RS232 устройствам, т.к. считаю вайфай сейчас более актуальным, чем блютус, ведь он может работать не только как точка-точка
Ответить
0
Юрий #
Bluetooth тоже умеет point-to-multipoint. В этом режиме к мастер-устройству могут подключиться до 7-ми ведомых.
Ответить
0
taliban #
Хорошо, сделаем обзор подключения Wi-Fi модулей к Arduino. Но не забывайте, что модули Wi-Fi значительно дороже Bluetooth модулей.
Ответить
0
Рома #
Задача подключить блютуз модуль к arduino nano v3. На плате установлен FTDI чип. Не будет ли он мешать?
В ардуино закачен скетч для управления светодиодами от программы на ПК. Сейчас команды передаются через USB порт и FTDI.
Ответить
0
Владимир #
Собрал схему. Прошил. С компьютером проблем не возникает. Все прекрасно работает. Нареканий нет.
Когда решил попробовать работать на Android устройстве - модуль просто не находится. Думал, что проблема в самом смартфоне, а нет, с планшета он находится как HC-05. При попытке подключения Connect a device - Secure просит опять авторизоваться. Как обычно ввожу 1234 - история повторяется, опять требует пароль. Интересно еще то, что с одних андроидов он находится, а с других нет. Уже 8 разных телефонов пробовал. Посоветуйте, если знаете.
Ответить
0
Евгений #
Не находится, потому что не реализован стек ВТ для serial (как-то так называется). В моем Asus TF101 именно так. Если запустить TerminalBT или Bluetooth SPP, то устройство в программе увидится
Ответить
0
Артем #
А где взять: SPP UUID сервиса? Первый раз все прошло хорошо, отключил бт, включил заново, уже пишет чтобы я проверил поддержку SPP UUID.
Ответить
0
Виталий #
Работает и с компом и с телефоном, но возникает вопрос, как передавать с телефона на ардуину числа? Вариант в программе переводит принятое число в текстовую форму и сверяет по ней, а хотелось бы передавать числа, большие 10, чтобы например задавать угол сервы
Ответить
0
Кирилл #
По Serial порту можно передавать только символы.
Ответить
0
svolond #
у меня тоже на планшете U30GT все заработало без проблем, а на HTC EVO 3D сразу блютуз не было видно. Программка SENA BTerm Bluetooth Terminal заработала без проблем и ардуинку нашла.
ОГРОМНОЕ спасибо автору за подобные статьи.
Ответить
0
Алексей #
Символы можно привести к цифрам - это стандартная задача по преобразованию строки типа "0123456789" в последовательность цифр, а в дальнейшем к числам. При использовании TCP/IP подключения используется подобная схема. Так что можно поискать исходники, например C++ они весьма распространены по данной проблеме.
Ответить
0
Стальной #
А что мешает перевести строку символов в число?
Ответить
0
kuxer #
А возможно ли использование USB bluetooth адаптера вместо bluetooth модуля?
Ответить
0
Vladimir #
Можно, используя usb-host shield.
Ответить
0
vend0130 #
А как прошить плату?
Ответить
0
talibanich #
Если речь про программатор, то Arduino прошивать в этом плане не нужно, там в МК стоит бутлоадер. Подключаешь по USB к компу и из среды Arduino IDE "закачиваешь" код в плату. Никаких фьюзов ставить также не нужно
Ответить
0
Sudden #
Повезло вам, что достаточно подсоединить BT модуль, и андроид его включает... У меня его нету, подключаешь - нулевая реакция
Ответить
0
nilich #
Соединил модуль BT и freeduino 2013 прошил, но модуль BT не видно ни на одном ноутбуке (3 пробовал) ни на телефоне, поменял модуль BT (их 2 было) тот же результат...
А если просто подать + 3.3В и GND на модуль блютус, он должен обнаружится на другом устройстве?
Ответить
0
konrad25 #
А если просто подать + 3.3В и GND на модуль блютус, он должен обнаружится на другом устройстве?
Да, должен обнаружится. Проверяйте с помощью телефона/смартфона. Как появится, то для проверки прохождения команд, соедините на модуле RX и TX вместе и вводите в терминале символы с клавиатуры - в окне терминала введенные символы должны дублироваться. Это будет значить, что bluetooth модуль исправен.
Ответить
0
sherhan36 #
Может быть частично продублирую предыдущий вопрос, но что если без всяких arduino подать на hc-05 питание, а к одному из свободных выводов подцепить светодиод, можно ли заставить его мигать какой-либо командой с компа или телефона?
Ответить
0
nilich #
Странно, а у меня и так в терминале пишется... Может надо какую нибудь перемычку убрать или поставить, а то получается что у меня Rx и Tx подключены как к блютузу, так и к компу. Может поэтому не видно его?
Ответить
0
nilich #
2 модуля, и не один не видно ни на телефоне, ни на компе. Если подключить 3.3В и gnd, значит оба модуля неисправны?
Ответить
0
sherhan36 #
Подключаю 3,3 В, GND, закорачиваю RX и TX, запускаю НС 05 в режиме передачи на 9600 бод ( т. е. сначала включаю источник питания, а потом ставлю перемычку от 3,3 В до 34 пина (ключ)). При этом модуль видится всеми устройствами, подключается к ним, но при попытке работать с ним через консоль Tera term в момент соединения ( без подачи АТ команд) возвращает:
ERROR; (0)
OK
И дальше не реагирует ни на какие команды. Кто-нибудь может пояснить в чем дело?
Ответить
0
Сергей #
У меня при каждом включении HC-05 он не обнаруживается пока не замкну кратковременно
RESET на корпус. Как это исправить?
Ответить
0
Евгений #
А можно использовать иной модуль а, не HC-03, HC-04, HC-05, HC-06? В моем городе таких просто нет, заказывать - ждать долго + с почтовым отделением связываться неохота.
Ответить
0
talibanich #
Можно использовать любой serial BT модуль
Ответить
0
David #
Я подключил модуль, комп находит, но не подключается - пишет невозможно подключиться. В чем может быть проблема?
Ответить
0
Андрей #
Есть такой модуль, рабочий - проверил как писали выше. Задача задействовать его для консольного доступа к сетевому оборудованию по RS232 - что необходимо сделать для этого?
Ответить
0
Михаил #
Выдает ошибку в Arduino IDE:avrdude: stk500_getaync() : notis sync: resp=0x00
Пробовал изменять порты,не помогло. Что делать?
Ответить
0
Виктор #
Перед заливкой скетча просто выдерните проводок, который питает bluetooth-модуль 3-мя вольтами. Тогда всё зальётся без проблем.
Ответить
0
Сергей #
В чем разница между bluetooth модулями hc-5 hc-6 hc-7 hc-9?
Ответить
0
Сергей #
А у меня HC-06 пришел и все наоборот, не так как тут у большинства...
Соединяется с любыми устройствами четко, а вот ни чего не передает, (скетч в ардуино работает).
У меня правда Леонардо, может в этом разница?
Ответить
0
Serg-Zmuh #
Отвечу сам себе!
Модуль оказался рабочим, на UNO все заработало! А вот для Леонардо скетч который здесь не подойдет...
Ответить
0
Andr #
На леонардо надо указывать
Serial1.print и т.д.
Ответить
0
Марк #
У меня модуль HC-06. Терминал коннектится, все нормально, только в программе пишет : socket failed
Кто подскажет, как исправить?
Ответить
0
Алексей #
Возможно ли один из таких блютуз модулей сконнектить с юсб клавиатурой чтобы она стала беспроводной?
Ответить
0
Артур #
Здравствуйте! Хотелось бы понять такую вещь: Возможно ли связать блютуз модуль с андройд устройством напрямую без arduino или подобных устройств и как это сделать? Выбранный блютуз модуль - http://www.lairdtech.com/products/bt900-series
Ответить
0
Серафим #
Необходимо синхронизировать две ардуины - мега и леонардо по блютуз. На меге стоит gprs shield, который по команде с телефона замыкает реле.
Хочу сделать так, что бы при приеме команды, ардуина с шилдом, не выполняла ее, а пересылала по блютуз на вторую ардуинку, которая и замкнет реле. Но негде в интернете нет информации конкретно по этому вопросу. Если кто знает, прошу помочь с ответом.
Ответить
0
Дмитрий #
Подключил HC-05 через переходник USB-UART к ПК. Данные с ПК отправляю через Terminal - получаю их в свой Андроид. Пробую через программу-терминал на Андроиде отправить цифру/символ/символы - на Terminal ПК ничего не приходит. Получается односторонняя связь какая-то. Что делать, куда копать пожалуйста подскажите, это мой дипломный проект, заказал пока еще Bluetooth модуль, немного другой, жду...
Ответить
0
Никита #
В Terminal включи CR=CR+LF и поставь галочку в +CR.
Прикрепленный файл: Hi.jpg
Ответить
0
Arman #
А есть хороший обзор на заливку скетча на Arduino UNO по Bluetooth? было бы очень полезно...
Ответить
0
Данил #
Купил значит я подобный модуль (F3288-35) получил даташит, но не могу понять с какой стороны подключать питание, в даташите невозможно понять что они считали левой стороной, а что правой. Но с обратной стороны платы стоит буква -А. И собственно как я понимаю прописана модель F3288-35. Парни как понять где что?
Ответить
0
Евгений #
Подскажите пожалуйста, вы показали как передать данные через блютуз в терминал, у меня это получилось. Есть какие то варианты, что бы записать эти данные возможно в текстовый файл или , что то подобное (мне нужно передать данные в java и там отталкиваясь от них рисовать график)
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Модуль измерения тока на ACS712 (30А)
Модуль измерения тока на ACS712 (30А)
Конструктор: DDS генератор сигналов Мультиметр DT9205A
вверх