Как разорвать коннект блютузов?

v7ilnytskyy
Offline
Зарегистрирован: 23.04.2020

блютуз модуль нс-05 на ардуино мега установил коннект с другим блютуз модулем и начал принимать информацию.

в скетче это Serial1. блютуз модуль работает в командном режиме.

информационный поток  интенсивный - около 512х8 символов в секунду.

я пытаюсь программно разорвать коннект командой  Serial1.println("AT+DISC");

команда не отрабатывается из-за того что все ресурсы брошены на обработку входного потока данных.

для разрыва соединения нужно только выключать какое-то устройство.

но нужно все-таки как-то разрывать коннект программно.

программная  перезагрузка скетча не помогает.

есть ли решение этой проблемы?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

v7ilnytskyy пишет:

 

есть ли решение этой проблемы?

Запитать модуль через транзисторный ключ, и рвать ему питание программно. Как вариант.

Feofan
Offline
Зарегистрирован: 28.05.2017

На НС-05 пин EN управляет питанием.

v7ilnytskyy
Offline
Зарегистрирован: 23.04.2020

прошу прощения за назойливость. в гугле ответов не нашел.

можно больше информации о пине EN ?

как именно он управляет питанием и что нужно сделать чтобы питание модуля НС-05 отключить и потом снова включить из ардуиновского скетча?

куда его на ардуине подсоединять и какие команды использовать в скетче для включения и выключения?

нашел такое

Enable / Key

This pin is used to toggle between Data Mode (set low) and AT command mode (set high). By default it is in Data mode

боюсь что EN питанием не управляет.

Feofan
Offline
Зарегистрирован: 28.05.2017

Куда сейчас подключен EN?

Вот схема, сравните со своей 

v7ilnytskyy
Offline
Зарегистрирован: 23.04.2020

еще вчера EN не был никуда подключен и я переводил НС-05 в командный режим нажатием кнопки.

сегодня я соединил EN и digital pin 53 и перевожу НС-05 в командный режим из скетча командой digitalWrite(53,HIGH);

правильно ли я понимаю что если задействовать EN в приведенной выше схеме то функцию перевода модуля в командный режим он уже выполнять не будет?

Feofan
Offline
Зарегистрирован: 28.05.2017
Схемы питания сравнивали, свою с картинкой?
1. Переключение режимов AT/DATA осуществляется через pin34 (PIO11) микросхемы HC05.
2. Управление питанием микросхемы HC05 - через pin CE LDO. Если этот CE у Вашего LDO есть. Сколько у него ног?
Это разныe, никак не связанных между собой, pin'ы.
Если на LDO есть pin CE, то подпаиваться к нему. Если нет, то использовать совет из #1. Вот еще кусок схемы. На своих HC05 менял R5 на 5,6K (для 5v логики).
v7ilnytskyy
Offline
Зарегистрирован: 23.04.2020

эксперимент показал что отключение питания нс-05 коннект не разрывает.

нужно именно ардуино обесточивать.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

v7ilnytskyy пишет:

эксперимент показал что отключение питания нс-05 коннект не разрывает.

нужно именно ардуино обесточивать.

Ага, HC-05, видимо, от тёмной энергии питается, когда его от БП отключаешь. Не иначе. Вы то хоть сами поняли, что сказали? Железка физически выключена - какой нахрен коннект с физически выключенной железкой?

Feofan
Offline
Зарегистрирован: 28.05.2017
Если принимающая Mega не чует обрыва, то смотрите её скетч. Передающая тоже продолжает кидаться данными, не смотря на...?
Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

DIYMan пишет:
видимо, от тёмной энергии питается, когда его от БП отключаешь. Не иначе.
Получает паразитное питание по сигнальным линиям, их нужно в 0 ронять.

2 v7ilnytskyy, AT+RESET, AT+DISC не помогают что ли?

v7ilnytskyy
Offline
Зарегистрирован: 23.04.2020

исходное состояние - миндфлекс гарнитура с блютуз модулем и ардуино мега с блютуз модулем.

светодиоды на обоих модулях часто мигают.

модуль ардуины инициирует и устанавливает коннект с модулем гарнитуры и начинает принимать данные от гарнитуры. оба светодиода мигают так - две коротких вспышки и примерно пару секунд пауза.

отключаю модуль при ардуино. модуль при гарнитуре начинает часто мигать как в свободном не связанном ни с кем состоянии.

подключаю модуль к ардуино - характер мигания светодиода такой - длительный период свечения и длительная пауза. частого мигания как при свободном не связанном состоянии нет. скетч вроде как перегрузился но экран белый. работать все начинает только после переподачи питания на ардуино.

а если отключить гарнитуру то диод при ардуине начинает мигать часто. т.е коннект потерян и модуль свободен и перезагрузка программы проходит нормально.

void Reset1() {
  tft.fillScreen(BLACK);
  tft.setCursor(1,1);
  tft.println("Wait for reseting...");
  while(true) {
    if (Serial1.available()) {
      byte bbb = Serial1.read();
    } else {
      digitalWrite(53,HIGH); // на всякий случай еще раз перевод Serial1 в командный режим
      Serial1.println("AT+RESET");
      Serial1.println("AT+DISC");
      Serial1.flush();
      break;
    }
  }
  delay(5000);
  asm("JMP 0");
}
 
не срабатывает AT+DISC
 
Feofan
Offline
Зарегистрирован: 28.05.2017
Попробовал - Mega 2560 5v + HC05. При подаче Low на EN, схема из #4, модуль выключается. Но! RX HC05 подключен через делитель,  4.7к или 5.6к и 10к. EN без дополнений.
По отправке AT-команд - HC05 надо время на переварить их. Где-то читал о 5 ms.  Попробуйте delay(10) перед AT+DISC.
P.S.
Код надо вставлять правильно.
DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Andy пишет:

Получает паразитное питание по сигнальным линиям, их нужно в 0 ронять.

Ну только если так. Хотя что-то я сомневаюсь, что той паразитки - там хватит.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

v7ilnytskyy пишет:

отключаю модуль при ардуино. модуль при гарнитуре начинает часто мигать как в свободном не связанном ни с кем состоянии.

Ну вот - какое нафиг паразитное питание, если умная гарнитура определила, что модуль - отвалился от связи?

Feofan
Offline
Зарегистрирован: 28.05.2017

C просторов, по задержке после RESET.

Цитата:
AT+RESET - Перезагрузить модуль. Не раньше чем через пол секунды после перезагрузки (командой AT+RESET) нужно кратковременно нажать на кнопку или подать кратковременный высокий уровень на вход K модуля, иначе он не будет воспринимать новые AT-команды.

 
Feofan
Offline
Зарегистрирован: 28.05.2017
HC05 настроен как ведущий или ведомый?
 
В том полу-AT-режиме, что используете, работают не все AT-команды. По этой причине от него и отказался. Какие именно - не помню.
 
Для включения полу-AT-режима надо кратковременно подать High на pin34 (PIO11) после включения питания. У Вас, судя по коду, подаётся постоянно. В каком состоянии находится модуль в этом случае - невестимо.
 
После AT+DISC отключенное устройство имеет право переподключиться. На сколько быстро это может произойти/происходит...
v7ilnytskyy
Offline
Зарегистрирован: 23.04.2020

прошу прощения за длительное отсутствие. причина была уважительная.

может я ошибаюсь но за прошедшее время проблема вырисовалась в таком виде:

включаем ардуино с блютуз модулем. переводим блютуз модуль в командный режим нажатием кнопки на модуле (нс-05) или подачей HIGH уровня на EN. устанавливаем коннект с блютуз модулем гарнитуры миндфлекс и начинаем принимать данные. я думаю что после установки соединения модуль выходит из командного режима иначе вся принимаемая информация воспринималась бы им как неверные команды. и теперь модуль не реагирует на AT+DISC просто потому что он не в командном режиме.

вопрос - как программным путем перевести модуль нс-05 из режима обработки данных в режим обработки команд? 

подача высокого уровня на EN ни к чему не приводит. наверное это работает только при подаче питания на модуль.