"Пропажи" данных в BT-соединении.

Feofan
Offline
Зарегистрирован: 28.05.2017
Доброго всем времени!
Собрал связку Arduino Pro Mini (3.3v, 8MHz) + BT модуль HC-05 (питание 5v, логика 3.3v). На HC-05 использую KEY (режим AT), STAT (состояние соединения), EN (сброс) и TX/RX соответственно. Все это коннектится к адаптерам ELM327 в виде Vgate iCar или ParkCity.
 
Опрашиваю три параметра - напряжение, скорость и обороты. Собственно оно работает. Но при скачке питания, запуск двигателя или передергивание штекера в прикуривателе, "взаимопонимание" нарушается. Грубо говоря, алгоритм таков: после инициализации 3-7 циклов опроса проходят нормально, а затем белиберда - перестают поступать данные от ELM327. Соединение, судя по индикации на HC-05, в это время есть. Но индикация... Наличие соединения определяю по уровню на ноге STATE (высокий) периодически и на момент проверки оно есть.
 
Из этого состояния адаптер EML327 вывести можно двумя способами:
1. Если нет кнопки питания, то передернуть в разъеме. Если кнопка есть, то выкл-вкл.
2. Со смартфона, с помощью Elm327Chat подключиться и отключиться от адаптера. Ни одной команды отправлять не надо, просто connect + disconnect.
 
Манулы читал, но вероятно чего-то пропускаю. Разные варианты переинициализации BT-соединения, при обнаружении "пропаж", успеха не принесли.
 
Вопрос - каким "волшебным" словом(ами) можно попытаться вернуть адаптер к нормальному состоянию?
 
Feofan
Offline
Зарегистрирован: 28.05.2017

"Волшебное" слово:

//	Обязательно:
//	1. наличие в этот момент соединения с адаптером ELM327
//	2. включать AT режим без hardReset'а <- вот и оно!
// 	3. INIT & DISC
digitalWrite(PIN_BT_KEY, BT_KEY_AT_ON);	//  AT On
hc05.initSerialPortProfile();           //  AT+INIT
hc05.disconnect();                      //  AT+DISC