Решил подключить Arduino Pro Mini к маршрутизатору с прошивкой Openwrt по такой схеме. Данная схема подключения позволяет не только управлять контроллером, но и при необходимости производить его перепрошивку. Кроме того автоматически решается вопрос с питанием, т.к. девайс начинает питаться прямо от USB порта.
В качестве преобразователя использую широко распространенный FTDI FT232RL
Стоит заметить что есть и более дешевые варианты преобразователей на чипе CH340, кроме того на aliexpress широко представлены Arduino Nano с начинкой в виде Atmega328 + CH340. Цена начинается от 2.53 $
Подробнее о работе с данными платами можно почитать в статье
Arduino Nano v.3.0 Увы, как позже выяснил, у данных плат возникают проблемы с прошивкой. Поэтому рассмотрю классическое решение с FTDI FT232RL
Для того что бы устройство FTDI определилось в системе скачиваем необходимые пакеты:
opkg update
opkg install libftdi
Следующие пакеты удалось установить только с ключем -nodeps, иначе вылетала ошибка
opkg -nodeps install kmod-usb-serial
opkg -nodeps install kmod-usb-serial-ftdi
после этого перезагружаем роутер и смотрим как система увидела преобразователь FTDI:
ls /dev/tty*
Если в списке появился ttyUSB0, то продолжаем работу
Сразу можно сконфигурировать порт следующей командой. В данном случае конфигурирую на скорость 9600.
stty -F /dev/ttyUSB0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
Данную строку можно поместить в автозапуск
При конфигурировании необходимо обратить особое внимание что бы в строке отсутствовал ключ "-hupcl", иначе прошивальщик работать не будет. С другой стороны, если ключ "-hupcl" не прописать, то Arduino будет перезагружаться (по линии DTR) при обращении к USB-порту со стороны маршрутизатора. Таким образом, в нормальном режиме ключ "-hupcl" должен быть прописан, а при перепрошивке, нужно снова переконфигурировать порт с ключом "hupcl"
Скачиваем прошивальщик avrdude
opkg install avrdude
Далее необходимо загрузить в маршрутизатор hex файл прошивки. Среда Arduino IDE при компиляции создает эти файлы в самых неожиданных местах. Например в Windows XP нужно искать в Documents and Settings\<Имя пользователя>\Local settings\Temp\<Папка.tmp>
В Ubuntu/Linux Mint ищем в директории /tmp/build*.tmp
Осталось загрузить данный файл в маршрутизатор. Для таких дел обычно использую небольшой локальный FTP-сервер, очень удобно. Хотя в принципе ничего не мешает использовать scp. Скачиваем файл прошивки
wget ftp://"IP адрес FTP-сервера"/<Файл.hex>
Пример:
wget ftp://192.168.10.104/base.cpp.hex
Прошиваем микроконтроллер командой
avrdude -p m328p -P /dev/ttyUSB0 -c stk500v1 -b 57600 -C /etc/avrdude.conf -U flash:w:/<Файл.hex>
Пример:
avrdude -p m328p -P /dev/ttyUSB0 -c stk500v1 -b 57600 -C /etc/avrdude.conf -U flash:w:/tmp/base.cpp.hex
Как альтернатива, придумал способ прямой перепрошивки Arduino через последовательный порт маршрутизатора. Подробнее читаем
здесь