Прошивка arduino, подключенного через USB к Raspberry Pi
Добавлено: Чт дек 10, 2015 9:19 pm
Беглый поиск на форуме по способам удалённой прошивки ардуины, подключенной к RPi по USB ничего не дал, поэтому решил выложить здесь свои поиски, чтобы не забыть 
Имеется у меня Arduino Mega2560 к которой подключены датчики тока и эта ардуина отсылает данные на Raspberry Pi 2B по Ethernet (на ардуине висит шилд W5100). Для изменения прошивки не очень удобно каждый раз отключать все датчики, тащить ардуину к компу, или с ноутом в щиток лезть. Ардуина же стоит рядом с RPi. Подключил её USB-шнурком к RPi (были ещё сомнения - можно ли подключать так, ведь ардуина и RPi питаются от разных источников питания - но почитав форумы - подключил и пока ничего не сгорело
).
Установил пакет arduino-mk (все операции производил со стационарного компа по SSH через putty):
Но потом понял что мне достаточно было бы установить только avrdude (который устанавливается вместе с arduino-mk), т.к. писать скетчи в консоли мне не интересно. Скетч пишется на стационарном компе в родной среде Arduino IDE, компилируется и в консоли Arduino IDE (нужно предварительно включить подробный вывод: "Файл -> Настройки -> Показать подробный вывод -> поставить галки на [Компиляция] и [Загрузка]") в конце ищем ссылку на файл "C:\........\ИМЯ_СКЕТЧА.ino.hex". Копируем этот файл на RPi (можно по ФТП, у меня же самба поднята). Кому интересно как писать скетчи в консоли RPi - http://habrahabr.ru/post/173157/.
При подключении ардуины по USB - она определилась как устройство на порту /dev/ttyACM0. Определяется это просто: перед подключением пишем в консоли команду "dmesg", смотрим какие последние строки были. Подключаем ардуину и снова пишем "dmesg" - там будет указано на какой /dev/ прицепилась ардуина. Дальше всё просто - пишем в консоли следующее (подсмотрел параметры опять же в Arduino IDE):
Здесь путь /home/pi/arduino/ACS712-20_v3_WORK_SKETCH_20151210.ino.hex - это куда я файл скомпилированный на RPi положил.
При прошивке avrdude пишет следующее:
Готово! Может понадобится кому ещё 

Имеется у меня Arduino Mega2560 к которой подключены датчики тока и эта ардуина отсылает данные на Raspberry Pi 2B по Ethernet (на ардуине висит шилд W5100). Для изменения прошивки не очень удобно каждый раз отключать все датчики, тащить ардуину к компу, или с ноутом в щиток лезть. Ардуина же стоит рядом с RPi. Подключил её USB-шнурком к RPi (были ещё сомнения - можно ли подключать так, ведь ардуина и RPi питаются от разных источников питания - но почитав форумы - подключил и пока ничего не сгорело

Установил пакет arduino-mk (все операции производил со стационарного компа по SSH через putty):
Код: Выделить всё
sudo apt-get install arduino-mk
При подключении ардуины по USB - она определилась как устройство на порту /dev/ttyACM0. Определяется это просто: перед подключением пишем в консоли команду "dmesg", смотрим какие последние строки были. Подключаем ардуину и снова пишем "dmesg" - там будет указано на какой /dev/ прицепилась ардуина. Дальше всё просто - пишем в консоли следующее (подсмотрел параметры опять же в Arduino IDE):
Код: Выделить всё
sudo avrdude -p atmega2560 -P /dev/ttyACM0 -c wiring -b 115200 -C /etc/avrdude.conf -D -U flash:w:/home/pi/arduino/ACS712-20_v3_WORK_SKETCH_20151210.ino.hex
При прошивке avrdude пишет следующее:
СпойлерПоказать
Код: Выделить всё
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e9801
avrdude: reading input file "/home/pi/arduino/ACS712-20_v3_WORK_SKETCH_20151210.ino.hex"
avrdude: input file /home/pi/arduino/ACS712-20_v3_WORK_SKETCH_20151210.ino.hex auto detected as Intel Hex
avrdude: writing flash (22488 bytes):
Writing | ################################################## | 100% 3.99s
avrdude: 22488 bytes of flash written
avrdude: verifying flash memory against /home/pi/arduino/ACS712-20_v3_WORK_SKETCH_20151210.ino.hex:
avrdude: load data flash data from input file /home/pi/arduino/ACS712-20_v3_WORK_SKETCH_20151210.ino.hex:
avrdude: input file /home/pi/arduino/ACS712-20_v3_WORK_SKETCH_20151210.ino.hex auto detected as Intel Hex
avrdude: input file /home/pi/arduino/ACS712-20_v3_WORK_SKETCH_20151210.ino.hex contains 22488 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 2.94s
avrdude: verifying ...
avrdude: 22488 bytes of flash verified
avrdude: safemode: Fuses OK (E:00, H:00, L:00)
avrdude done. Thank you.
