Главная » Arduino
Призовой фонд
на февраль 2021 г.
1. 1500 руб
Сайт Паяльник
2. Мультиметр ANENG M118A
Сайт Паяльник
3. 350 руб.
От пользователей


Частотники VFD до 5кВт. Одна входная фаза, три выходных

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

Arduino UNO
Arduino UNO
Радиореле 220В DC-DC регулируемый преобразователь 1.5-37В 2А с индикатором
вверх