Прошивка arduino, подключенного через USB к Raspberry Pi

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Ko/|xo3HUk
Сообщения: 160
Зарегистрирован: Ср окт 07, 2015 9:36 am
Благодарил (а): 51 раз
Поблагодарили: 27 раз

Прошивка arduino, подключенного через USB к Raspberry Pi

Сообщение Ko/|xo3HUk » Чт дек 10, 2015 9:19 pm

Беглый поиск на форуме по способам удалённой прошивки ардуины, подключенной к RPi по USB ничего не дал, поэтому решил выложить здесь свои поиски, чтобы не забыть :)

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

Код: Выделить всё

sudo apt-get install arduino-mk
Но потом понял что мне достаточно было бы установить только 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):

Код: Выделить всё

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
Здесь путь /home/pi/arduino/ACS712-20_v3_WORK_SKETCH_20151210.ino.hex - это куда я файл скомпилированный на RPi положил.
При прошивке 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.
 
Готово! Может понадобится кому ещё :)
За это сообщение автора Ko/|xo3HUk поблагодарил:
kiptim (Чт янв 12, 2017 12:42 pm)
Рейтинг: 1.16%
Текущий сервер: Ноутбук: HP Probook 4515s (без монитора). ОС: Debian GNU/Linux 8.6 (jessie)
Предыдущий сервер: Raspberry Pi 2B. ОС: Raspbian (jessie)
Аватара пользователя
shemnik69
Сообщения: 590
Зарегистрирован: Пн дек 24, 2012 3:01 pm
Откуда: Саратов Saratov
Благодарил (а): 67 раз
Поблагодарили: 63 раза

Re: Прошивка arduino, подключенного через USB к Raspberry Pi

Сообщение shemnik69 » Ср дек 16, 2015 11:23 pm

Есть способ немного похож но проще. Ставите на RP Ser2Net. Arduino если подключить через USB то ничего не нужно. Далее на удаленную машину ставите либо Ser2Net (если Linux) либо Tibbo для винды. Сопрягаем, обе системы на уровне TCP портов, например 1001, теперь, если например, Tibbo займет порт Com5, то на него, настриваем IDE Arduino. таким образом будет образован мост IDE - COM (виртуальный) далее Tibbo -1001 (порт) -LAN-Ser2net (1001) - пор ардуино например /dev/ttyACM0. У меня такая схема работает давно. Тиббо наверное немного удобнее. Подробно сама идея вот тут:http://cyber-place.ru/showthread.php?t=1070
За это сообщение автора shemnik69 поблагодарил:
Ko/|xo3HUk (Чт дек 17, 2015 9:38 am)
Рейтинг: 1.16%
Ko/|xo3HUk
Сообщения: 160
Зарегистрирован: Ср окт 07, 2015 9:36 am
Благодарил (а): 51 раз
Поблагодарили: 27 раз

Re: Прошивка arduino, подключенного через USB к Raspberry Pi

Сообщение Ko/|xo3HUk » Чт дек 17, 2015 9:38 am

Т.е. получится такая связка: Arduino IDE (на стационарном компе) <-> Tibbo (у меня винда) <-> локальная сеть Ethernet <-> Ser2Net (на RPi) <-> Arduino (подключена по USB) ?
Если так то действительно - удобнее. Спасибо, попробую!
За это сообщение автора Ko/|xo3HUk поблагодарил:
kiptim (Чт янв 12, 2017 12:42 pm)
Рейтинг: 1.16%
Текущий сервер: Ноутбук: HP Probook 4515s (без монитора). ОС: Debian GNU/Linux 8.6 (jessie)
Предыдущий сервер: Raspberry Pi 2B. ОС: Raspbian (jessie)
Аватара пользователя
shemnik69
Сообщения: 590
Зарегистрирован: Пн дек 24, 2012 3:01 pm
Откуда: Саратов Saratov
Благодарил (а): 67 раз
Поблагодарили: 63 раза

Re: Прошивка arduino, подключенного через USB к Raspberry Pi

Сообщение shemnik69 » Чт дек 17, 2015 1:51 pm

Должно работать. Пробовал и через роутер (по статье, но он глючит на USB) через RP работает отлично.
Да еще момент. Ser2 Net может перехватывать порт (открыть и держать) и не позволять использовать его другим программам, поэтому там нужно временный интервал ставить не очень большим. Например 2-3 сек либо подобрать опытным путем. Хотя может для USB (через внешний контроллер) это не важно.
За это сообщение автора shemnik69 поблагодарил:
Ko/|xo3HUk (Чт дек 17, 2015 3:40 pm)
Рейтинг: 1.16%
ak666
Сообщения: 2
Зарегистрирован: Вт янв 27, 2015 7:30 pm
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Прошивка arduino, подключенного через USB к Raspberry Pi

Сообщение ak666 » Чт дек 17, 2015 5:53 pm

У меня RPi подключен через USB к Arduino которая управляет релюшками. За основу брал этот матреоиал http://blog.oscarliang.net/connect-rasp ... usb-cable/
Ko/|xo3HUk
Сообщения: 160
Зарегистрирован: Ср окт 07, 2015 9:36 am
Благодарил (а): 51 раз
Поблагодарили: 27 раз

Re: Прошивка arduino, подключенного через USB к Raspberry Pi

Сообщение Ko/|xo3HUk » Чт дек 17, 2015 6:59 pm

ak666 писал(а):У меня RPi подключен через USB к Arduino которая управляет релюшками. За основу брал этот матреоиал http://blog.oscarliang.net/connect-rasp ... usb-cable/
Мне кажется это немного не то. Я говорил о самом процессе прошивки Ардуино, а не о том как организовать управление/приём данных с Ардуины. У меня Ардуина хорошо общается с RPi по Ethernet - собираю данные с 13 датчиков тока. Мне интересны способы удалённой прошивки Ардуины, чтобы не лезть в щиток, отключать все датчики, питалово, нести Ардуину к компу и т.п.
Текущий сервер: Ноутбук: HP Probook 4515s (без монитора). ОС: Debian GNU/Linux 8.6 (jessie)
Предыдущий сервер: Raspberry Pi 2B. ОС: Raspbian (jessie)
Ko/|xo3HUk
Сообщения: 160
Зарегистрирован: Ср окт 07, 2015 9:36 am
Благодарил (а): 51 раз
Поблагодарили: 27 раз

Re: Прошивка arduino, подключенного через USB к Raspberry Pi

Сообщение Ko/|xo3HUk » Чт дек 17, 2015 8:25 pm

shemnik69, спасибо, всё получилось!
shemnik69 писал(а):...Ser2 Net может перехватывать порт (открыть и держать) и не позволять использовать его другим программам...
Так и есть - держит порт открытым и не даёт другим подключаться. Но у меня обмен данными Arduino --> RPi идёт через Ethernet, поэтому для меня данный факт не имеет значения - пусть ардуина постоянно ждёт новой прошивки с COM-порта :)
Текущий сервер: Ноутбук: HP Probook 4515s (без монитора). ОС: Debian GNU/Linux 8.6 (jessie)
Предыдущий сервер: Raspberry Pi 2B. ОС: Raspbian (jessie)
Аватара пользователя
blackangel
Сообщения: 148
Зарегистрирован: Пт окт 21, 2016 2:00 pm
Благодарил (а): 31 раз
Поблагодарили: 13 раз

Re: Прошивка arduino, подключенного через USB к Raspberry Pi

Сообщение blackangel » Пн янв 02, 2017 3:53 am

Привет! уже битый час не могу настроить ser2net на raspberry pi3 для коннекта к arduino.

подскажите плиз по порядку что да как. P.S. поставил ser2net ver.3.3

arduino определяется как ttyACM0

в конфигурационном файле указал так:
3002:raw:0:/dev/ttyACM0:9600 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS

и нема(((

порт создал прогой "тибо"
Ko/|xo3HUk
Сообщения: 160
Зарегистрирован: Ср окт 07, 2015 9:36 am
Благодарил (а): 51 раз
Поблагодарили: 27 раз

Re: Прошивка arduino, подключенного через USB к Raspberry Pi

Сообщение Ko/|xo3HUk » Пн янв 02, 2017 10:19 am

Я уже полгода как переехал с RPi на ноутбук, да и ардуина больше не используется, поэтому живого примера у меня нет, не на чем поэкспериментировать. Но вот посмотрел бэкапы с RPi - там в /etc/ser2net.conf у меня была такая настройка:

Код: Выделить всё

1001:raw:30:/dev/ttyACM0:115200 NONE 1STOPBIT 8DATABITS -XONXOFF -LOCAL -RTSCTS HANGUP_WHEN_DONE
Текущий сервер: Ноутбук: HP Probook 4515s (без монитора). ОС: Debian GNU/Linux 8.6 (jessie)
Предыдущий сервер: Raspberry Pi 2B. ОС: Raspbian (jessie)
Аватара пользователя
blackangel
Сообщения: 148
Зарегистрирован: Пт окт 21, 2016 2:00 pm
Благодарил (а): 31 раз
Поблагодарили: 13 раз

Re: Прошивка arduino, подключенного через USB к Raspberry Pi

Сообщение blackangel » Пн янв 02, 2017 9:29 pm

Ko/|xo3HUk писал(а):Я уже полгода как переехал с RPi на ноутбук, да и ардуина больше не используется, поэтому живого примера у меня нет, не на чем поэкспериментировать. Но вот посмотрел бэкапы с RPi - там в /etc/ser2net.conf у меня была такая настройка:

Код: Выделить всё

1001:raw:30:/dev/ttyACM0:115200 NONE 1STOPBIT 8DATABITS -XONXOFF -LOCAL -RTSCTS HANGUP_WHEN_DONE

попробовал.... нифига arduino IDE не хочет отправлять прошивку.... пишет ошибка: avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x25
Ответить