Возможна ли прошивка по воздуху.
- Войдите на сайт для отправки комментариев
Добрый день! Задался вопросом загрузки скетча по воздуху из-за необходимости отладки подвижной модели с множеством датчиков. Есть модуль телеметрии 3DR robotics, который часто используется для квадрокоптеров. Подключается один модуль к модели (TX, RX), второй к USB компьютера. Сейчас без проблем передаю данные серийного порта на компьютер. Но хотелось бы иметь возможность заливать скетч так же через этот модуль. Модуль по умолчанию работает на 57600, нашел программу для конфигурации и поменял на 115200. На Arduino UNO смог добиться того, что заливаю скетч, но нужно после того как Arduino IDE пишет "Загрузка..." сбросить унку. При этом выдает несколько ошибок синхронизации (видимо из-за того, что вручную невозможно сделать сброс вовремя), но новый скетч заливается и успешно работает. Этот же финт почему-то не получилось сделать на Arduino Mega 2560 (подключал к TX0, RX0 как и для UNO, но не моргают светодиоды TX/RX).
Т.е. теоретически загрузить скетч можно, но нужен сброс в определенный момент. Но вроде как используя этот модуль загружают прошивки в полетный контроллер Ardupilot Mega на таком же меговском чипе (к сожалению нет квадрокоптера или полетного контроллера убедиться в этом), но с помощью Mission Planer-а. Как этого добиваются? Может там какойто хитрый загрузчик?
Есть мысли на эту тему? Заранее спасибо за любые наводки!
2 варианта.
1-Вешается еще 1 микросхема которая качает пакет и зашивает вашу микросхему.
2-создается на микросхеме универсальная Ось. И вы уже командуете какие компоненты подключать , а какие освобождать.
Оба варианта требуют глубоких знаний в теории программирования. И еще 1 вариант проще, но требует нормального устойчивого канала.
Насколько я знаю, существует скетч для ардуины, прошивающей другую ардуину по spi (нехардварному), с оснасткой RF24. Поищите, делаете такого два штуки и два трансивера, цеплять одну в программатор, другую в устройство, пользоваться как ArduinoISP.
Минус способа в том что это фактически ещё две промежуточные ардуины. Но за 4 юаня/корпус или 15 юаней/изделие в сборе, кто их считает? Только миллиамперы считать. Ну... с 45 добавится...
UPD. Если у меня безумие, белая горячка или просто бредовая идея, и на самом деле это я хочу чтобы это было а этого нету, то... честна честна: меня ОООЧЕНЬ сильно удивит, если эта вещь ДО СИХ ПОР не была сделана. Оно должно быть, инфа 146%.
UPD2. olegk1974, если у модуля есть UART, то я так понимаю что это является разновидностью HC-05, то есть у него есть конфигурируемые установки (типа команд ATSxxxx) и вывод DTR. Если так, этот вывод соединяется с Reset последовательно через конденсатор 1 мкФ. Пока на нём единица, конденсатор пуст (разряжен), то есть имеет бесконечно низкое сопротивление, то есть проводит ток. Когда появится ноль, ёмкости конденсатора окажется достаточно, чтобы этот ноль проскочил и сбросил дуину. После, так как ноль на DTR сохраняется, а единица во внутренней подтяжке Reset никуда не девается, конденсатор начнёт заряжаться, и в конечном итоге заимеет бесконечно большое сопротивление, то есть перестанет проводить ток. И ноль сохраняющийся на DTR не будет мешать нормальной работе программы. Вот такой приём. Гуглите, есть статья в хабрахабре. Там эта схема с HC-05 и конденсатором, от руки вроде нарисовано.
Спасибо за помощь, буду думать и еще искать. На праздниках попробую заняться вплотную и напишу. А сейчас пока решил разобрать модуль на стороне Ардуино. Может кто подскажет что за контакты CF и EN (сам еще не искал)?