В данной теме предлагаю делиться соображениями по оптимальному решению. Сам пока вразумительно научился заливать скетчи по воздуху, этим умением и поделюсь...
Сначала ознакомился с несколькими вариантами решений из "интернетов"
https://www.drive2.ru/c/2749401/
https://www.pvsm.ru/arduino/69006
http://robocraft.ru/blog/3089.html
https://yandex.ru/video/preview?text=загрузка%20скетчей%20по%20блютуз&path=wizard&parent-reqid=1603514788456649-147199760590468659800107-production-app-host-man-web-yp-353&wiz_type=v4thumbs&filmId=4660038959776800802
Все они используют модуль HC-05 и требуют его перенастройки с использованием АТ команд. Поэтому вначале, следуя рекомендациям
https://kolotushkin.com/article.php?id=30
научился менять скорость обмена данными...
Добавлено спустя 1 час 33 минуты 24 секунды:
Далее действовал по алгоритму:
1. Добавил строчку в файл Arduino IDE чтоб HC-05 не сбрасывал соединение при перезагрузке
2. Загрузил проводным способом тест-скетч блинка
3. Собрал схему
4. Подключил модуль связи на ПК
5. Настроил порт, плату и монитор для связи
6. Стал передавать данные- паузы между вспышками светодиода
7. Залил по воздуху этот же скетч в плату
8. Послал "0"- перезагрузил плату
далее повторял пункты 6-8 несколько раз.
- Код: Выделить всё • Развернуть
- //тест "блинк" для дистанционной загрузки скетчей в плату ардуино уно
 long Y=0;//пременная хранения моментов времени
 int t=1000;// переменная хранения длительностей пауз между переключениями светодиода
 void setup()
 {
 Serial.begin(115200); // скорость 115200 для Arduino UNO,
 // может быть разная для разных моделей плат
 
 ////////////
 pinMode(13,OUTPUT);
 digitalWrite(13,LOW);
 
 }
 void loop()
 {
 if(millis()-Y>t){Y=millis();digitalWrite(13,!digitalRead(13));}//мигаем светодиодом как угодно с паузой
 t=CheckSerial();//по поступившей команде выставляем паузу
 }
 
основной и добавочный ino. в папку основного
- Код: Выделить всё • Развернуть
- //
 int uploadpin=7;// вывод платы для осуществления аппаратной перезагрузки, соединён с RES
 String inputString;// строки данных
 int n=1000;//переменная хранения команды-числа
 
 /////////////////////////////////////////////////////////////////////////////////////////////////
 //ФУНКЦИИ ПРИЁМА И ОБРАБОТКИ КОМАНД-ДАННЫХ
 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();} // преобразуем строку в номер команды-число
 //////
 }
 ///////////////////////////////////////////////////////////////////////////////////////////////////////
Добавлено спустя 3 минуты 7 секунд:
Для связи с пк использую модуль такой: Bluetooth 4.0 адаптер DEXP AT-BT401






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