Прошивка скетча по воздуху

Прошивка скетча при использовании модуля Bluetooth и литиевой батареи имеет некоторые особенности.

  • При использовании Arduino Pro Micro прошивка производится, как и в проводном варианте, через USB разъём и не представляет сложности.

  • При использовании Arduino Nano прошивка производится через USB разъём, но необходимо перед этим отключить модуль Bluetooth на время прошивки, так как он подключен параллельно микросхеме CH340 и одновременно они не могут работать.

  • При использовании Arduino Pro Mini прошивка производится через переходник USB-UART(TTL), который для прошивки скетча подключается вместо модуля Bluetooth.

Как видим, при использовании Arduino Nano или Arduino Pro Mini процесс прошивки скетча затруднён или неудобен.

Для Arduino Nano или Arduino Pro Mini можно использовать прошивку "по воздуху", то есть через канал Bluetooth.

Для этого модуль Bluetooth должен быть настроен на скорость 57600 бод, так как загрузчик в Arduino Nano и Arduino Pro Mini работает на этой скорости. Кроме того, обмен по Bluetooth в скетче тоже должен быть настроен на скорость 57600 бод.


Может показаться, что снижение скорости обмена ухудшит качество работы трекера, но это не так.

Максимальная длина пакета, используемая в трекере, равна 72 байт, в режимах калибровки сенсоров и в режиме [Test row]. В секунду передаётся 50 пакетов или 72 x 50 = 3600 байт. Каждый байт передаётся, как стартовый бит, затем восемь информационных бит, и завершающий стоп-бит, всего для передачи одного байта нужно передать 10 бит.

Тогда минимально необходимая скорость передачи равна: 72 x 50 x 10 = 36000 бод.

Поэтому скорости 57600 бод достаточно для работы трекера с большим запасом.

Кроме того, при снижении скорости обмена теоретически должно немного уменьшиться энергопотребление трекера и немного увеличиться помехозащищённость канала обмена. Но это не проверено.


Прошивка "по воздуху" должна проводится при предварительно заряженной батарее.

Прошивка "по воздуху" производится так:

    • Включаем собранный трекер с модулем Bluetooth, настроенным на скорость 57600 бод, и с заряженной батареей. Светодиод на модуле Bluetooth должен часто заморгать, 3 раза в секунду.

    • Запускаем Arduino IDE со скетчем, который собираемся загрузить "по воздуху". В скетче должна быть задана скорость обмена 57600 бод.

    • В меню [Инструменты] выбираем тип платы, в моём случае это Arduino Pro Mini с процессором ATmega328P и кварцем на 16MHz.

    • Выбираем номер исходящего COM порта, назначенного для Bluetooth модуля.

    • Запускаем загрузку скетча кнопкой [Загрузить] или [Ctrl+U].

    • Внимательно смотрим на светодиод на модуле Bluetooth. Когда скетч скомпилируется и Arduino IDE подключится к COM порту, светодиод на модуле Bluetooth перестанет моргать.

    • В этот момент нужно нажать кнопку [Reset] на плате Arduino и тут же отпустить кнопку.

    • При этом запустится загрузчик в Arduino, и начнётся процесс загрузки скетча в Arduino, что можно наблюдать на экране.

На этом загрузка скетча "по воздуху" завершена.

Теперь можно закрыть Arduino IDE.

Программами калибровки и Opentrack можно пользоваться, как и раньше, только скорость обмена в них нужно задать 57600 бод.

Для программ калибровки это делается в файле Connect.ini.


Razor AHRS 5DOF [20190111]: Самодельный инерционный 5DOF трекер