Странные помехи при выключенном Bluetooth модуле
- Войдите на сайт для отправки комментариев
Всем привет!
У меня есть модуль "HC-05" и Arduino Leonardo.
Когда делал включение и выключение модуля с помощью транзистора, случайно заметил, что в выключенном состояние, если к модулю поднести руку, то он что-то посылает (а точнее посылает пустой символ или пробел). Если руку убрать подальше от модуля, то это прекратится. В включенном состояние все нормально, ничего не посылается.
Пробовал убирать транзистор и вместо этого отключать провод от ножки питания Bluetooth модуля, но проблема осталась. Думал может пока экспериментировал с вкл/выкл сжег порт Arduino, попробовал подключить к другим портам - проблема не пропала.
Имеется вот такой код, чтобы через COM-порт общаться с модулем.
void setup() { Serial.begin(9600); Serial1.begin(38400); } void loop() { if (Serial1.available()) { Serial.write(Serial1.read()); } if (Serial.available()) { Serial1.write(Serial.read()); } }
Подскажите, пожалуйста, в чем может быть проблема?
А Вы уверены что модуль действительно выключен? У него на RX нет логической единицы?
Когда делал включение и выключение модуля с помощью транзистора, случайно заметил, что в выключенном состояние, если к модулю поднести руку, то он что-то посылает (а точнее посылает пустой символ или пробел).
Я имел ввиду, что если открыть "Монитор порта" и поднести руку к модулю, то в мониторе порта будет постоянно увеличивающаяся пустая строка.
А Вы уверены что модуль действительно выключен? У него на RX нет логической единицы?
Ну лампочки на нем не горят, да и провод питания отсоединен. А он может питаться от TX и RX контактов?
А Вы уверены что модуль действительно выключен? У него на RX нет логической единицы?
Вывел значение 0-ого пина:
Если руку не подносить, то значение постоянно равняется 0-лю. А вот когда подносишь руку к модулю, то значение начинает меняться то на 1, то на 0.
В чем может быть проблема?
Разобрался: надо было использовать подтягивающий резистор у 0-ого пина (RX).
Разобрался: надо было использовать подтягивающий резистор у 0-ого пина (RX).
Вы бы схему вместе с вопросом размещали.
Буду знать.
На самом деле у меня возник еще один вопрос, с которым я никак не могу разобраться: я хочу посылать AT команды через код, а не монитор порта, но почему-то ничего не работает. Тут дело скорее всего не в подключение, так как обмен данными с телефоном и монитором порта происходит без проблем. В чем может быть проблема?
Модуль находится в режиме AT команд. В мониторе порта пусто, то есть ничего не приходит(
отвечает Nick Gammon:
On the Leonardo you have to wait for Serial to become active:
отвечает Nick Gammon:
On the Leonardo you have to wait for Serial to become active:
Добавил, но все равно вмониторе порта пусто. Также пробовал "While (!Serial) {}" в "Setup" запихнуть, тоже ничего.
Также пробовал "While (!Serial) {}" в "Setup" запихнуть, тоже ничего.
именно в Сетап и надо, в луп незачем
Также пробовал "While (!Serial) {}" в "Setup" запихнуть, тоже ничего.
именно в Сетап и надо, в луп незачем
Вообщем вся проблема была в том, что отправлять AT команду надо было со специальными символами "\r\n". Можно даже "while (!Serial) {}" убрать. Но это очень странно, потому что я до этого пробовал этот вариант, но ничего не работало.
Спасибо за помощь.
Раз тут уже несколько проблем, связанных с Bluetooth, описаны, хотелось бы рассказать еще об одной, с которой я столкнулся и в процессе решил ее. (Вдруг кому-нибудь эта информация понадобится)
Проблема:
Если программно перевести модуль в режим AT команд (то есть выключить->подать на ногу "K" питание->включить) и сразу же отправить AT команду, то ответ не придет.
Решение:
Перед тем как отправлять AT команду, надо сделать небольшую паузу (например, так "delay(1000)"). Причем пробовал ставить 500 и при такой задержки ответ все равно не приходил.
Код, чтобы понимать о чем идет речь (Вкл и Выкл модуля организовано с помощью транзистора):