Загрузка скетчей по "воздуху" или плата расширения

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

Загрузка скетчей по "воздуху" или плата расширения

Сообщение dimamichev » 24 окт 2020, 11:11

При конструировании мобильных платформ (в моём случае игрушек на Ардуино) как то задумался о дистанционном варианте взаимодействия с платами.Готовых доступных вариантов почему-то не нашёл. Захотелось придумать вариант платы-расширения под про мини или нано. На данный момент задача не решена полностью, но выделены три подзадачи: дистанционное включение-выключение платы, дистанционная загрузка скетчей из IDE, дистанционное управление работой загруженного варианта.
В данной теме предлагаю делиться соображениями по оптимальному решению. Сам пока вразумительно научился заливать скетчи по воздуху, этим умением и поделюсь...
Сначала ознакомился с несколькими вариантами решений из "интернетов"
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
Вложения
рис.6.jpg
настройки — копия.jpg
настройки.jpg
схема заливки скетча.jpg
ВСТАВКА строки.jpg
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

Re: Загрузка скетчей по "воздуху" или плата расширения

Сообщение setar » 25 окт 2020, 22:35

не очень понял что значит не нашли готовых вариантов , они есть во всех примерах arduino IDE, называется Arduino OTA
ну а сама технология пришла вместе с ESP8266
https://radioprog.ru/post/885
ну а когда на связке с ESP8266 находится любая ардуина, то и прошивается спокойно по сериалу
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Загрузка скетчей по "воздуху" или плата расширения

Сообщение dimamichev » 26 окт 2020, 08:08

Имелось в виду с встроенным блютуз модулем, на алиэкспресс, с множеством описаний использования)))
Есть такой вариант:
https://www.arduino.cc/en/Main/ArduinoB ... dBluetooth
, но в широкой продаже не нашёл совсем
Есть ещё такой вариант, дорогой по сравнению с дискретной ардуино и блютуз модулем, но разжёванной информации тоже не нашёл.
https://aliexpress.ru/item/400023634444 ... web201603_
ESP8266 ни разу не использовал, темно для меня это пока. И нужна ли ей ардуина?

Добавлено спустя 10 минут 40 секунд:
ESP-01 пробовал для сравнения связи с HC-05 по смартфону. Связь была капризнее, дистанция устойчивая в связи не многим больше чем с блютуз, платка всегда теплая. Как то не понравилось, валяется в ящике пока. Может конечно смартфон виноват)))
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

Re: Загрузка скетчей по "воздуху" или плата расширения

Сообщение setar » 26 окт 2020, 11:15

ESP-01 это и есть вариант компоновки чипа ESP8266 в модуль.
dimamichev писал(а):И нужна ли ей ардуина?

для маленьких схем - нет, а если требуется много ног с хорошим ЦАП/АЦП или нормальным аппаратным срабатыванием по прерываниям то ардуина логична как модуль расширения.

Я применял такую связку для модулей умного дома.
Если просто датчик температуры/влажности + пара реле то просто модуля на базе ESP8266 достаточно.
А вот для такого варианта ног уже не хватает : датчик движения + температура/влажность + кнопка + датчик дыма + датчик огня + датчик освещения + трехцветный светодиод + пищалка
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Загрузка скетчей по "воздуху" или плата расширения

Сообщение HarryStar » 28 окт 2020, 09:33

Разок попробовав 8266 как самостоятельную ардуину, "выкинул" все свои наны и меги.
Это ОЧЕНЬ удобно
1) Все тоже самое (софт, интерфейс, большинство библиотек)
2) Встроенный вайфай - а это удаленная отладка (терминалка рулит), управление, расширение ф-ла
3) Прошивка по воздуху встроенная в IDE - вообще супер. Я теплицу в саду так постоянно обновляю.
4) МНОГО оперативки. На порядок, про память можно вообще не думать после наны.
5) Можно питать платы напрямую от лития и они долго и нормально работают даже при полном разряде (нана при этом глючит по полной, а часть 5в периферии отрубается в самом начале).

Из минусов setar уже озвучил - мало портов. Но! Для большинства проектов хватает, есть I2C платы расширения, ну и на крайняк наны-меги в качестве расширения.

Рекомендую платы WEMOS - мелкие типа наны, куча дешевых шилдов, возможно изготовление шилдов из дешевых макеток.
На фотке WEMOS с тройником-базой и 5 шилдами (2 экрана, термодатчик, дат.влажности, кнопка)
Вложения
wemos.jpg
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: Загрузка скетчей по "воздуху" или плата расширения

Сообщение Angel71 » 28 окт 2020, 10:57

32я чуть лучше иногда - 2+1 ядра, памяти приятно и двухрежимный блютуз иногда очень полезная штука. но есп82/32, стм32, авр,... к сожалению не идеальные для всего. так что даже если в основном на есп или ещё чём делать, завалявшаяся ардуинка на авр периодически тоже может быть полезна (с 5в дружит, для быстрой проверки новых модуле/деталек иногда самое то).
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: Загрузка скетчей по "воздуху" или плата расширения

Сообщение setar » 28 окт 2020, 12:22

у ESP8266 есть еще одна проблема - нестабильный ШИМ и негарантированная задержка в обработке прерываний.
Высокоскоростная передача данных и обработка затруднена.
ESP32 лишена этих недостатков, ее основная проблема - высокая (надеюсь пока) стоимость.
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Загрузка скетчей по "воздуху" или плата расширения

Сообщение dimamichev » 28 окт 2020, 14:16

Ну вот с практической точки зрения для меня:
https://aliexpress.ru/item/32822012864. ... web201603_
такой вариант безпроводной заливки скетчей? По цене доступнее чем ардуино и блютуз модуль почти в 2 раза. Но!, 3.3 Вольта - что делать?, гексапода, квадропода так просто не перенести с одной платы на другую, светодиодный куб на умных пикселях тоже. Мелкие ходуны - 2-4 сервы легко ходят от 1 аккумулятора на 3,7 В.
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

Re: Загрузка скетчей по "воздуху" или плата расширения

Сообщение Angel71 » 28 окт 2020, 14:42

esp32 ни на одном из пинов с 5в не дружит. если сравнивать с 8266, периферия получше. а если с стм32, переферия уже немного печатльно выглядит. :pardon: кто как, а себе взял немного разных платок с авр/есп8266/есп32/стм32 и в зависимости от того, что сделать нужно, использую более подходящую.
uno подобные платки немного громоздкие. если подходит, кроме esp8266 есть и с eps32 (к примеру такой, есть и другие). есть очень удобная lolin32 light (из плюшек это зарядка лития). много других ещё есть, спешить покупать первую попавшуюся не стоит.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: Загрузка скетчей по "воздуху" или плата расширения

Сообщение dimamichev » 28 окт 2020, 15:29

Платы громоздкие, но я для самообучения хочу взять. Просто на уно с горкой проводов создаю скетч, а в конструкцию идёт про мини 168 чаще всего, если уно жалко. Esp32 в плане программирования аналогична 8266? Управляющие импульсы на сервы можно и 3,3 Вольта, а питать 5 (правда я не проверял ни разу).
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

Re: Загрузка скетчей по "воздуху" или плата расширения

Сообщение Angel71 » 28 окт 2020, 16:23

у всех ардуино совместимых плат есть свои небольшие нюансы, но в общем в плане программирования разницы не особо. если цена примерно одинаковая, имхо лучше взять есп32.
есп от 5в поплохеет или сразу или со временем, так что поакуратней и не подавай на vin 5в или больше. на самом модуле ldo/dc-dc обычно нет, а на платах очень даже часто. и про не толерантность к 5в не забывай. что-то на прямую можно подключать, но иногда резистор, конвертер уровней,... или приветствуется или обязательно.
п.с. чуть не забыл. обращай внимание на то, какой юсб разъём запаян. в есп32 нет юсб/юсб-уарта, так что если на плате есть, это сильно приятней.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: Загрузка скетчей по "воздуху" или плата расширения

Сообщение dimamichev » 28 окт 2020, 18:12

Заказать решил такую, по идее, должна через юсб от 5 вольт работать, на выходах 3,3 давать. В настройках переключаться в ОТА режим. Примеров с сервами и без не нашёл, только блинк промелькнул на одном из сайтов.
Вложения
WeMos-D1-R32-ESP32-CH340G---ESP-32-Arduino-Uno-WiFi-IoT-Board-(2).jpg
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

Re: Загрузка скетчей по "воздуху" или плата расширения

Сообщение Angel71 » 28 окт 2020, 18:54

и про сервы и про многое другое, мягко говоря всего валом. :pardon: как можно не найти, когда и яндекс и гугля (всё более и более невменяемая) даже по запросу "esp32 servo" сходу кучу всего выдают...
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: Загрузка скетчей по "воздуху" или плата расширения

Сообщение dimamichev » 28 окт 2020, 19:00

Точно, не то запрашивал, надо брать плату.
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

Re: Загрузка скетчей по "воздуху" или плата расширения

Сообщение dimamichev » 30 окт 2020, 19:56

Купил плату, ради интереса глянул как реализуется ОТА.
http://digitrode.ru/computing-devices/m ... e-air.html
Совсем не проще, скетч добавочный огромен ))) Через блютуз надо будет пробовать.
(финал статьи) - Вот как ESP32 может быть запрограммирован по воздуху методом OTA без использования последовательной проводной связи.
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

След.

Вернуться в Arduino и другие Xduino

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9