Прошивка Arduino в Openwrt через USB порт

Apr 10, 2015 13:16

Решил подключить 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 через последовательный порт маршрутизатора. Подробнее читаем здесь

arduino, openwrt, linux

Previous post Next post
Up