HC-05 2 Pro mini

lilik
Offline
Зарегистрирован: 19.10.2017

Возникла необходимость дистанционно управлять 2 ардуинками по блютуз. Правильно я мыслю в плане схемы соединения?

rkit
Offline
Зарегистрирован: 23.11.2016

Нет, бред какой-то.

rkit
Offline
Зарегистрирован: 23.11.2016

И не страдай ерундой а возьми плату побольше.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

lilik пишет:

 

озникла необходимость дистанционно управлять 2 ардуинками по блютуз. Правильно я мыслю в плане схемы соединения?

Хрен Вас знает правильно Вы мыслите или нет. Вы же не сказали, что Вы подразумеваете под "управлять".

lilik
Offline
Зарегистрирован: 19.10.2017

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

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

lilik пишет:

на любой из мк

А какого ж, простите мой французский хера Вы им RX  вместе соединили? Так только на оба сразу пересылать можно. Разве что Вы программно протокол распознавания своих и чужих сообщений напишете. Однако, судя по Вашим другим постам в такое трудно поверить :(

Опять же ж диоды специально стоят так, чтобы МК ничего в TX передать не могли :-(

lilik
Offline
Зарегистрирован: 19.10.2017

Евгений, я знаю, что если у меня не получится, вы обязательно бескорыстно поможете :-) с функцией обработки поступивших данных.

Не ясно зачем мк распознавать команды свои-чужие, достаточно выполнять только свои. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

lilik пишет:

Не ясно зачем мк распознавать команды свои-чужие, достаточно выполнять только свои. 

Для того чтобы выполнять свои нужно для начала отличить свои от чужих. Они же одним потоком валятся :-)

lilik
Offline
Зарегистрирован: 19.10.2017

Так зачем? У первого мк реакция, например, на 1,3,5,7,9,11,13...., у второго на 2,4,6,8,10,12...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Это и называется "оличать свои команды от чужих". Вот и посмотрим, как Вы это напишете. Да ещё с коррекцией ошибок. Там ведь иногда и байты теряются :-(

lilik
Offline
Зарегистрирован: 19.10.2017

Можно отсеивать команды с потерянным байтом так как они будут короче или длиннее.

 А как отследить если байт искажён в битах?

lilik
Offline
Зарегистрирован: 19.10.2017

rkit пишет:

И не страдай ерундой а возьми плату побольше.

Не всегда это удобно. Так выдернул одну платку для другого дела, оставшуюся перезалил дистанционно чтоб конструкция всё же работала.

 Да и вообще интересней было бы несколько съёмных модулей-мк на одной плате чем один большой конь. Когда производители начнут так делать?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

lilik пишет:

Можно отсеивать команды с потерянным байтом так как они будут короче или длиннее.

Всё можно, но мне вот как раз хотелось бы посмотреть, как Вы это сделаете :-)

lilik пишет:

 А как отследить если байт искажён в битах?

http://arduino.ru/forum/programmirovanie/peredacha-dannykh-s-korrektsiei-oshibok

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

lilik пишет:

 Так выдернул одну платку для другого дела, оставшуюся перезалил дистанционно чтоб конструкция всё же работала.

Пытливость ума русского человека не знает и не приемлет границ! ;)))))

lilik
Offline
Зарегистрирован: 19.10.2017

ЕвгенийП пишет:

Всё можно, но мне вот как раз хотелось бы посмотреть, как Вы это сделаете :-)

Для заливки одной платы блинком это выглядит так:

//тест "блинк" для дистанционной загрузки скетчей в плату ардуино pro mini (168)
long Y=0;//пременная хранения моментов времени
int t=500;// переменная хранения длительностей пауз между переключениями светодиода
void setup()
{
  Serial.begin(19200);  // скорость 19200 для Arduino pro mini , 
                         // может быть разная для разных моделей плат
 
 ////////////
 pinMode(13,OUTPUT);
 digitalWrite(13,LOW);
 
}

void loop()
{
if(millis()-Y>t){Y=millis();digitalWrite(13,!digitalRead(13));}//мигаем светодиодом как угодно с паузой
t=CheckSerial();//по поступившей команде выставляем паузу
}
 
//
int uploadpin=2;// вывод платы для осуществления аппаратной перезагрузки, соединён с RES

String inputString;// строки данных
int n=t;//переменная хранения команды-числа

 
/////////////////////////////////////////////////////////////////////////////////////////////////
//ФУНКЦИИ ПРИЁМА И ОБРАБОТКИ КОМАНД-ДАННЫХ
int CheckSerial()
{
  //////////////////////////////////////////////////////////////////////////////
  while (Serial.available())//считываем строку данных пока они поступают
  {
    char inChar = (char)Serial.read();
    if (inChar == '\n'||inChar == ' ')     //если окончание строки или запрос на загрузку
    {
      MakeCmd();//обрабатываем её данной функцией
      break;
    }
    else inputString += inChar;// иначе удлиняем строку на один символ
  }
 return n;// возвращаем значение переменной как значение всей функции 
}
/////////////////////////////////////////////////////////////////////////////////
void MakeCmd()
{
  int y = inputString.length(); // присваиваем переменной у число символов в строке
  if (y < 1 || y > 4){inputString = "";return;} //если их меньше 1 или больше 4, выходим из функции
  String cmd = inputString; // передаём строку другой переменной
  inputString = "";//"обнуляем переменную"
  //////
    if (cmd == "0") {                 //если получили ноль
    Serial.write(0x14);               // ответить avrdude.exe
    Serial.write(0x10);               //  для синхронизации 
    delay(10); 
    pinMode(uploadpin,OUTPUT);        //ЭТО ВЫЗОВЕТ аппаратный РЕСЕТ
  }
  if (cmd != "0"){ n=cmd.toInt();}   // преобразуем строку в номер команды-число 
  //////
}

///////////////////////////////////////////////////////////////////////////////////////////////////////

 

 Функцию мне когда то персонально написали , я чуть её подправил и теперь десятки вариаций использую, сохраняя суть.

rkit
Offline
Зарегистрирован: 23.11.2016

lilik пишет:

Так выдернул одну платку для другого дела, оставшуюся перезалил дистанционно чтоб конструкция всё же работала.

То есть две платы вообще не нужны.

b707
Offline
Зарегистрирован: 26.05.2017

lilik пишет:

ЕвгенийП пишет:

Всё можно, но мне вот как раз хотелось бы посмотреть, как Вы это сделаете :-)

Для заливки одной платы блинком это выглядит так:

 Функцию мне когда то персонально написали , я чуть её подправил и теперь десятки вариаций использую, сохраняя суть.


да? А где тут, собственно, заливка?
Мне кажется, над вами просто подшутили

lilik
Offline
Зарегистрирован: 19.10.2017

Часть функции про заливку я сам писал 33-37 и добавка условия строки 16. Какие шутки-в десятках скетчей работает.

b707
Offline
Зарегистрирован: 26.05.2017

мы может под заливкой разное понимаем? Заливка кода - это клгда программа  принимает на вход скомпилированный скетч в машинных кодах и записывает его во флешпамять МК

Где у вас тут в коде работа с флешем?

lilik
Offline
Зарегистрирован: 19.10.2017

В макете всё работает, схема исходная верная. На неё натолкнула картинка:

и Брокли, он тут спорил много лет назад про ненужность диодов в подобной схеме. Они конечно не нужны, но бережёного...

Ну, и в скетчи платок пришлось вводить дополнительную переменную-флаг на два значения. А протокол такой: посылаем A - работаем с первой платкой,  B - со второй, 100 - значит постоянная свечения/гашения светодиода 100 миллисекунд, 0-перезагрузка выбранной платы. Ежели закрываем монитор порта и жмём в ИДЕ стрелку то загружается скетч в соответсвующую плату.

lilik
Offline
Зарегистрирован: 19.10.2017

b707 пишет:

мы может под заливкой разное понимаем? Заливка кода - это клгда программа  принимает на вход скомпилированный скетч в машинных кодах и записывает его во флешпамять МК

Где у вас тут в коде работа с флешем?

Конечно по разному. Для меня это когда нажимаем кнопку "загрузка" в IDE и пошла она (заливка?) на платку через блютуз.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

lilik пишет:

 

В макете всё работает, схема исходная верная. 

А нахрена тогда было топик создавать?

lilik
Offline
Зарегистрирован: 19.10.2017

На момент создания не было макета. В схеме тоже всё до конца не понятно. Сколько можно платок вешать в параллель? Заработает ли схема от 3,7 В если выбросить резистор в 10 к (блютуз-модуль попался с включением от 4,5 В)? Как синхронизировать, если надо, работу независимых скетчей?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вот, попробуйте всё это и нам расскажите.

lilik
Offline
Зарегистрирован: 19.10.2017

Хорошо, как только придёт толковый модуль.

lilik
Offline
Зарегистрирован: 19.10.2017

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

Табло для счёта с выводом из приложения смартфона! Такие индикаторы с высотой больше 20 см явно экономичнее светодиодных.

ПС Опенскад забавная таки штука.

lilik
Offline
Зарегистрирован: 19.10.2017

lilik пишет:

Хорошо, как только придёт толковый модуль.

Модуль пришёл - jdy-31. Работает от 3,7 В схема (забыл убрать резистор на 10 к - всё равно работает!). Наконец то дошло как ему поменять скорость.