1 (edited by Ilya 2017-05-15 21:36:11)

Topic: Решение одной из проблем подключения bluetooth модуля НС-05

Жизнь не стоит на месте, технический прогресс постоянно подгоняет темпы модернизации давно известных устройств, поэтому и самая совершенная инструкция со временем теряет актуальность. Даже всем известное колесо проходит путь технического развития. Конечно, оно не меняет своей круглой формы, но приобретает усовершенствования - например подшипники ступицы, пневматические шины, легкосплавные диски и т.п.
Ну, инструкцию по применению колеса мы переписывать не будем, но внесём некоторые дополнения в техническую документацию по применению модуля HC-05.
Начнём с того, что подключение и проверка модуля в соответствии с рекомендациями по воплощению простейшего проекта "Мигаем светодиодом Arduino при помощи кнопки на смартфоне"  http://remotexy.com/ru/examples/firstproject/ потерпели полную неудачу. Телефон устанавливал BT-соединение с модулем, но интерфейс не загружался. На экране приложения упорно появлялось окошко с диагностическим сообщением "Device not reply. Receive time out error".
Внимательный осмотр устройства HC-05 при помощи увеличительного стекла выявил надпись "LEVEL 3.3V" на обороте модуля, аккурат между выводами RX и TX.
Незамедлительно на макетной плате из резисторов номиналами 2 и 1 кОм были возведены два делителя напряжения - по одному для выводов RX и TX. Увы, ничего не изменилось. Дополнительные испытания подключения при помощи приложения для андроид Bluetoonh terminal выявили странную особенность: символы, передаваемые из ардуино в BT, имели вид нерасшифрованных значков - знаков вопроса, заключённых в ромбики. Это можно трактовать следующим образом: соединение было установлено, но два устройства Bluetooth явно пытались разговаривать на разных языках.
Как оказалось впоследствии, не на разных языках, а на разных скоростях. Просто с первого раза несведущему человеку догадаться об этом невозможно. Поэтому предварительно пришлось прокатиться на пробитом колесе по тернистому пути проб и ошибок.
Между тем, вымученная догадка оказалась правильной. Попавшийся мне модуль HC-05 по умолчанию был настроен на скорость обмена данными 38400 бод. Изменение скорости 9600 на 38400 в строке скетча, формируемого RemoteXY, сразу дало положительный результат.  Вот эта строка: #define REMOTEXY_SERIAL_SPEED 9600  (должно быть #define REMOTEXY_SERIAL_SPEED 38400).
Обращаясь назад, необходимо заметить, что делителей напряжения для сигнальных выводов может быть не два. Достаточно только одного делителя для RX вывода модуля HC-05. Вывод TX подключаем перемычкой к назначенному или аппаратному (как решите) выводу RX ардуино.
Кроме того, дальнейшие испытания показали, что для урока RemoteXY по миганию светодиодом можно вообще обойтись без делителя. Работает по непонятной пока причине.

2

Re: Решение одной из проблем подключения bluetooth модуля НС-05

Иллюстрации к предыдущему посту.


Bluetooth модуль HC-05, вид спереди:

http://s019.radikal.ru/i624/1705/5c/a2c5dbf565a5.jpg

Bluetooth модуль HC-05, вид оборотной стороны:

http://s11.radikal.ru/i183/1705/b2/305839ea8179.jpg

Общий вид конструкции с делителем напряжения, собранным на макетной плате. Тактовая кнопка в углу платы не подключена.

http://i075.radikal.ru/1705/67/721e29feedf5.jpg

3

Re: Решение одной из проблем подключения bluetooth модуля НС-05

Интересный у вас модуль. Если выводы модуля толерантны к 5В, то он должен работать с Arduino и без делителя напряжения. Т.е. если сразу не сгорел - скорее всего будет работать.
Про скорость - тоже видимо особенность этого модуля. Все что встречалось - по умолчанию 9600. Скорость обмена вы можете задать в настройках проекта.

4

Re: Решение одной из проблем подключения bluetooth модуля НС-05

У меня даже два таких модуля. Выписывал у разных продавцов, поступили абсолютно одинаковые, настроенные на одну скорость. Что касается работы без делителя, то я ещё раз всё перепроверю. Мне показалось странным, что с приложением remotexy они работают без делителя, а вот с bluetooth terminal (при использовании отладочного скетча) устанавливать соединение не хотят. Но у меня не было времени экспериментировать подробнее. Вместо этого освоил сегодня рисование схем для ардуино. Вот что у меня получилось, схема подключения HC-05 с делителем:

http://s014.radikal.ru/i327/1705/c6/3f7005e2a51d.jpg

RX и TX в скетче назначены соответственно 10 и 11 пинам, скорость 38400:

#define REMOTEXY_SERIAL_RX 10
#define REMOTEXY_SERIAL_TX 11
#define REMOTEXY_SERIAL_SPEED 38400

5 (edited by Ilya 2017-05-18 14:17:11)

Re: Решение одной из проблем подключения bluetooth модуля НС-05

Проверил и перепроверил. Модуль выполняет соединение и устойчиво работает без делителя, то есть вывод RX модуля соединяем напрямую с назначенным TX-пином платы ардуино. Проверено как с приложением remotexy, так и с bluetooth terminal в трёх разных вариантах.
Вот отладочный скетч, который я использовал для проверки соединения (bt terminal отображает то, что введено в монитор порта arduino ide и наоборот):

#include <SoftwareSerial.h>

int gRxPin = 10;
int gTxPin = 11;

SoftwareSerial BTSerial(gRxPin, gTxPin);

void setup() {
BTSerial.begin(38400);
Serial.begin(9600);
delay(500);
}

void loop() {
if (BTSerial.available()) {
Serial.write(BTSerial.read());
}

if (Serial.available()) {
BTSerial.write(Serial.read());
}

}

6 (edited by Ilya 2017-05-22 19:48:55)

Re: Решение одной из проблем подключения bluetooth модуля НС-05

remotexy wrote:

Скорость обмена вы можете задать в настройках проекта.

Нет. Это невозможно на сегодняшний день (вечер).

В настройках проекта максимальная скорость, устанавливаемая через выпадающее меню, 19200 бод. Это при использовании программно создаваемого подключения (software serial). А требуется 38400.

При этом для аппаратного порта (hardware serial) доступна полная линейка скоростей.

Необходимо расширить диапазон выбора скоростей для soft подключения.


http://i069.radikal.ru/1705/48/890c42178753.jpg

7

Re: Решение одной из проблем подключения bluetooth модуля НС-05

Скорость программного Serial ограничена специально. Потому что он не работает должным образом на скоростях выше 19200.
Если очень нужно, вы можете изменить скорость в уже сформированном скетче.

#define REMOTEXY_SERIAL_SPEED 38400 

8 (edited by Ilya 2017-05-23 18:44:59)

Re: Решение одной из проблем подключения bluetooth модуля НС-05

Мне так и пришлось поступить. Я уже писал об этом выше: http://forum.remotexy.com/viewtopic.php?pid=651#p651
Вы поправили меня:

Интересный у вас модуль. Если выводы модуля толерантны к 5В, то он должен работать с Arduino и без делителя напряжения. Т.е. если сразу не сгорел - скорее всего будет работать.
Про скорость - тоже видимо особенность этого модуля. Все что встречалось - по умолчанию 9600. Скорость обмена вы можете задать в настройках проекта.

Я попытался следовать Вашей рекомендации, но безуспешно. Сообщил об ошибке. Получил прямо противоположную рекомендацию:

Если очень нужно, вы можете изменить скорость в уже сформированном скетче.

#define REMOTEXY_SERIAL_SPEED 38400 

В общем, тут у нас разворачивается действие сказки про белого бычка. smile

9

Re: Решение одной из проблем подключения bluetooth модуля НС-05

Ilya wrote:

В общем, тут у нас разворачивается действие сказки про белого бычка. smile

Точно, дико извиняюсь)) Быстро прочитал последний пост и так же машинально ответил)))
Оба варианта верные. Но в редакторе скорость 38400 и выше не сделали специально, так как софтсериал на ней не работает стабильно с большинством модулей. Это вызвало бы еще больше вопросов у неопытных пользователей. Опытные могут изменить прямо в коде. Как вы и сделали.

10

Re: Решение одной из проблем подключения bluetooth модуля НС-05

Скажите, пожалуйста, а вот при подключении модуля в режиме настройки, можно же ввести АТ команду:

    AT+UART=<Param1>,<Param2>,<Param3> — установить модуль для последовательного порта.

Параметры:

    <Param1> — скорость обмена (9600,19200,38400,57600,115200);
    <Param2> — стоп-бит:
    0 — нет;
    1 — есть;
    <Param3> — бит паритета:
    0 — нет;
    1 — есть.

Ответ модуля: OK (или FAIL).

И установить скорость 9600.
Или это не та настройка?