HC-05 и arduino UNO

Twilkeris
Offline
Зарегистрирован: 05.02.2016

Доброго времени суток, уважаемые форумчане!

Приехал ко мне модуль HC-05, проблем с подключением к UNO не возникло. Проверил через стандартный монитор порта Arduino IDE(в скетче использовал пины 0,1) - светодиодик  на макетной плате мигает. Решил попробовать подключиться с телефона/компьютера по Bluetooth. Подключение происходит(светодоид на HC-05 перестает мигать, постоянно горит), но на входные данные светодиод на макетной плате не реагирует. Использую Termite, пробовал другие терминалы - результат не меняется.

Подскажите пожалуйста, что делать? 

#include "SoftwareSerial.h"
#define rxPin 2
#define txPin 3

char data; 
SoftwareSerial btSerial(rxPin, txPin); // инициализируем Bluetooth

void setup(){
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  btSerial.begin(9600);
  //Serial.begin(9600);
}

void loop(){
  while (btSerial.available() > 0){
    data = btSerial.read();        // Принимаем эти данные и сохраняем в переменной
    if (data == '1')             // Если data равна 1
      digitalWrite(13, HIGH);   // Включаем светодиод
    else if (data == '0')        //  Если data равна 0
      digitalWrite(13, LOW);    // Выключаем светодиод
  }
}

 

Twilkeris
Offline
Зарегистрирован: 05.02.2016

12-ю заккоментированную строчку случайно оставил, она не нужна вообще. Комментарии тоже забыл убрать, когда отправлял сообщение, тем более, они не совсем корректные. И модуль HC-06, а не HC-05. Извиняюсь.

 

 

 

 

 

Разобрался. Очень помогла данная статья: http://entropiya-blog.ru/podklyuchenie-bluetooth-modulya-k-arduino.html

sds
Offline
Зарегистрирован: 29.10.2012

На всякий случай, посмотрите еще сюда: http://robotclass.ru/articles/bluetooth-hc-05-06/

Twilkeris
Offline
Зарегистрирован: 05.02.2016

sds, спасибо. Был я на этом сайте и на многих других. И подключение полностью сверял, и скетчи различные заливал - подключение происходило, а вот информация не передавалась. Помогла именно та статья, которую указал в сообщении выше. Скорее всего, это я где-то косячил, но всё же. 

 

Ещё хотел уточнить, если я передаю по bluetooth данные в int, то:
0 - передается в Arduino как 110010

1 - 110010

2 - 110011

И так далее. Это доп. код какой-то? Дело в том, что когда я вывожу на экран принятое значение в десятичное системе, то, например, введеный 0, который почему-то представляется как 110010 преобразуется, естественно, в 48. В чем может быть проблема? С char всё хорошо.

erav
Offline
Зарегистрирован: 28.12.2016

Брал такую штуку запустить так и не смог.

https://ru.aliexpress.com/item/Free-Shipping-2SK1544-TO3PL-new-and-origi...

При подачи питания появляется BT устройство HC-05 (правда видится только на 1 телефоне возможно проблема из за того что протокол bt4.0 да еще и в режиме энергосбережения)

Далее возникла проблема пин 0000 или 1234 не подошли. продавец отмалчивался в других местах писали что введи стандартный пин, и подобные высказывания что мол на всех пин 0000, некоторые говорили что если 0000 не подходит то 1234 точно подойдет. короче просидев несколько вечеров пин подобрал оказался 123456. Так что можно еще один стандартный пин положить в копилку.

Далее пробовал связаться с этим модулем и с телефона при помощи разных терминальных программ, и с компьютера, и с ардуины через порты tx, rx (И с делителями и без делителей, и с делителем на 1 проводе) вобщем итогов ноль. На сколько я представляю что модуль соединяется с устройством и практически сразу уходит в спячку из за режимов энергосбережения протокола 4.0.

вобщем выбросил этот модуль в коробку жду стандартный HC-6 с протоколом bt3. прийдет попробую как дела с ним будут обстоять.

Twilkeris
Offline
Зарегистрирован: 05.02.2016

erav, я не хотел времени много тратить, поэтому взял свой модуль в Радио-точке. Времени не было долго выбирать товар, взял HC-05 за 500 с чем-то рублей, оказался HC-06.. Обидно. :)) Пишут, что у HC-05 большой процент брака. У меня с HC-06 все хорошо, "1234" подходит. Желаю успехов! 

sds
Offline
Зарегистрирован: 29.10.2012

Где информация может потеряться? Сценарий проверки с использованием BT-модуля обычно выглядит так: Ардуина через USB в компьютере, там первый терминал, подключение к БТ в телефоне/планшете и там второй терминал

В такой ситуации имеем следующие каналы передачи данных:

 1. Между компьютером и ардуиной (встроенный USB-UART адаптер). Обычно с ним никаких проблем нет, проверяется тестовыми скетчами. Можно проверить скорость передачи в терминале и заданную скорость в скетче

 2. Между "HARD UART" (пины RX/TX) и "SOFT UART" (пины как настроить). Здесь могут быть ошибки как в указании в скетче нужных пинов, так и подключении (перепутать soft rx/tx, например). Почти все скетчи на сайтах и показывают транслятор SOFT-HARD UART. Это только программная часть и мелкая опечатка в коде всё испортит

 3. Между SOFT UART и BT модулем. Здесь аппаратно - проверяем подключение и смотрим, не перепутаны ли RX/TX

4. Между телефоном (терминалом на телефоне) и ВТ модулем. Здесь два момента: 1. Скорость передачи данных. ВТ может работать на разных скоростях. По умолчанию 9600 должен быть, но можно и включить случайно 38к. Тогда все сломается. 2. Окончание строк надо завершать "\r\n". В зависимости от используемого ПО терминала, эти символы могут быть разными. Кто-то понимает "\r\n", кому-то надо указывать "#013#010" и т.п.

 

>> 0 - передается в Arduino как 110010

Скорей всего дело в рассогласовании скорости передачи данных.

А вобще лучше думать не "передаю int", а "передаю набор байтов". Int при передаче _программой_ должен "развернуться" сначала в 4 байта, потом они должны уйти получателю, а на той стороне тем же алгоритмом собраться назад в int

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Символ 0 имеет код 48 в таблице кодировки (информация для размышления).

Twilkeris
Offline
Зарегистрирован: 05.02.2016

sds, большое спасибо! Проверю.

Я пишу приложение под Android для управления устроством через Bluetooh. Подскажите пожалуйста, каким образом можно, и возможно ли вообще, реализовать автоматическое различных телефонов с установленным приложением к устройству через HC-06? Может быть устанавливать пароль(пин) на HC-06 в виде определенной несложной хеш-функции, на телефоне генерировать хеш и сравнивать их суммы? Если сумма верная, то проводить подключение.

Twilkeris
Offline
Зарегистрирован: 05.02.2016

Yarik.Yar, точно. Спасибо большое! Тогда для меня char - самое то. 

sds
Offline
Зарегистрирован: 29.10.2012

С помощью АТ команд можно заставить ВТ модуль автоматически подключаться к определенному устройству. Если в обратную сторону и нет особых вопросов с безопасностью, то каждому BT устройству можно дать уникальное имя (через те же АТ команды), а в приложении ждать, пока нужное устройство появится в зоне действия. Должны быть и API получения уровня сигнала, например. Тем самым можно контролировать расстояние до модуля, например

Twilkeris
Offline
Зарегистрирован: 05.02.2016

sds, есть устройство с HC-06 на борту, задача заключается в том, чтобы, установив приложение на любой современный смартфон, можно было подключиться к этому устройству в автоматическом режиме. Желательно, чтобы имелся хотя бы какой-то минимальный уровень безопасности. Поэтому и возникла мысль про хеш-функции.. 

sds
Offline
Зарегистрирован: 29.10.2012

Так и используйте парольный доступ к ВТ. По безопасности я больше имел ввиду, следует ли показывать окружающему эфиру все ваши БТ устройства. От этого зависит, каким им имена давать: 1. "Вход", "Кухня", "Комната" 2. "Погодная станция" 3. "test device"

В варианте 1, кому-нибудь стороннему обязательно захочется попробовать подключиться к ним, что даже при наличии паролЯ (скорей всего, не будете ставить уникальный пароль на каждое из устройств), можно будет взломать уже целую сеть и снять протокол. Хоть и ради развлечения

Второй вариант уже менее интересен. "Ну погода и погода. И хрен с ней". А реально устройство выполняет совсем другие функции и, может быть, при обнаружении "знакомого" смартфона, начинает побудку еще пары десятков БТ модулей (дом просыпается с приходом хозяина). Пропал из эфира знакомый смартфон - "всем спать!" (нога EN на модуле)

Третий вариант - продолжение вариаций на задание неинтересных имен для шляющихся рядом пионеров

А пароли - обязательно. И их, кстати, можно нагенерить как хэш от имени устройства (имея алгоритм генерации)

"Подключаться автоматически" - я вижу только в регулярном сканировании окружающего эфира в поиске "знакомых" названий модулей БТ. Нашли знакомый модуль на входе в дом - вычислили пароль, подключились, включили эл.чайник, подали звуковой сигнал через минуту, выключили чайник

Модная нынче тема - IOT. И "Windows для чайников" начинает звучать уже в новом свете :)

 

PS: Между "о, у меня получилось!" и "промышленное устройство" огромная разница. Потому силовой нагрузкой надо или вовсе не управлять или управлять крайне аккуратно. Взломает кто-нибудь ваше устройство по управлению чайником или тупо из-за опечатки в коде пожар можно сделать. Или включит кто-нибудь за стенкой перфоратор и ардуине мозги сплющит. Что она там дальше будет делать с этим чайником - неизвестно

Twilkeris
Offline
Зарегистрирован: 05.02.2016

sds, спасибо большое! Очень сильно помогаете. Натолкнули на правильные мысли.

Буду думать, делать! Надеюсь, что процесс будет проходить именно в том порядке, в котором написал, а не наоборот. :))

 

 

 

Возник вопрос по входу в режим AT-команд. На моем HC-06 нога KEY не разведена, но есть информация, откуда она растёт: 

Пробовал прикладывать 3.3V к месту и в это время в Termite вводить "AT" - не отзывается. Наверняка ведь кто-то сталкивался с даннной проблемой, подскажите пожалуйста, как решили? Пишут, что нужно подключать только через USART, а мне по по беспроводной связи всё это править..

erav
Offline
Зарегистрирован: 28.12.2016

если микросхемка такая то кей в другом месте

sds
Offline
Зарегистрирован: 29.10.2012

Переход в режим АТ команд идет при нажатии и удержании кнопки. Не удобно, но так

Припаивал и просто проводок к контакту, но, действительно, надо смотреть, где именно KEY. Еще надо обращать внимание на то, когда подается туда 3.3в: до или после подачи основного питания. Тем самым можно сменить скорость BT UART. Это уже надо смотреть документацию конкретного модуля

kasper007
Offline
Зарегистрирован: 23.05.2016

-