Металл2024 Реклама
Метобр2024 Реклама

Прошиваем Arduino через Raspberry Pi

Photo-mickey
Идет загрузка
Загрузка
27.06.2017
10095
18
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

20

Доброго времени суток!

Хочу поделиться лайфхаком, как перепрошить ардуино не вставая с рабочего кресла =) Как обычно, лень - двигатель прогресса. Вышла новая версия Marlin, а принтер стоит далеко от компьютера. Ноутбука нет, переставлять принтер неохота, а тянуть через два удлинителя USB не кошерно – помехи ловятся на раз. Тут начался поиск решения. Много чего перепробовал, даже ставил Arduino IDE на Raspberry. Но как-то ничего не шло. А ларчик просто открывался… AVRDUDE!



Статью представляю в виде подробной инструкции. На старте мы имеем Raspberry pi 3 с установленным OctoPrint. К нему подсоединена через USB Arduino Mega 2560. На компьютере установлен Windows, Arduino IDE и SSH клиент. Прошиваем Marlin. Условные обозначения:



>> - вводим в терминал, то что сразу после символов

# - комментарий, вводить не надо

1. Подключаемся к Raspberry через SSH. К примеру, используя Putty.

SSH

>> pi # Водим логин

>> raspberry # Водим пароль

>> mkdir marlin # Создаем папку для дальнейшей работы

>> cd marlin # Заходим в созданную папку

2. Установка FTP сервера на Raspberry. Если у Вас установлен ftp сервер, пропустить.

>> sudo apt-get update # Подготавливаем к обновлению утилит

>> sudo apt-get upgrade # Обновляем утилиты. Полезная процедура, но долгая.

>> sudo apt-get install proftpd # Устанавливаем ftp сервер

выбираем Standalone Mode

>> service proftpd status # Смотрим статус утилиты. Должно быть зеленым написано “active (running)”
Прошиваем Arduino через Raspberry Pi
3. Генерируем и передаем HEX-файл Marlin.ino.hex

Запускаем Arduino IDE на ПК. В настройках выбираем флажок подробного вывода при компиляции. Запускаем проверку скетча. В конце компиляции выдается адрес, куда записан hex-файл. У меня это “C:WindowsTemparduino_build523654Marlin.ino.hex”. Перекладываем hex-файл в отдельную папку.

Открываем блокнот и создаем bat файл для дальнейшей быстрой и удобной передачи hex-файлов в Raspberry Pi.



NOTEPAD

@echo off # Выключаем эхо

color 0A # Делаем терминал зелененьким =)

echo user pi> ftpcmd.dat # Создаем файл ftpcmd.dat и записываем логин

echo raspberry>> ftpcmd.dat # Записываем в файл пароль

echo bin>> ftpcmd.dat # Передача в бинарном виде

echo cd marlin>> ftpcmd.dat # Команда перехода в папку

echo put Marlin.ino.hex>> ftpcmd.dat # Команда передачи hex-файла

echo quit>> ftpcmd.dat # Команда выхода

ftp -n -s:ftpcmd.dat 192.168.1.125 # Запускаем ftp клиент, с выполнением созданного файла. Вводим свой # ip-адрес Вашего OctoPrint

del ftpcmd.dat # Удаляем файл ftpcmd.dat

pause # Оставляем окно открытым, можно удалить эту строчку

Сохраняем файл в папке с hex-файлом. Сохранить как «SendMarlin.bat». Имя файла можно изменить, а вот расширение bat обязательно должно быть. Обязательно выбрать «Тип файла» как «Все файлы». Запускаем «SendMarlin.bat». Внимательно читаем, что выдало окно. Ищем строчку “Transfer complete”. Если все удалось, можно удалить последнюю строчку “pause” в батнике.

Прошиваем Arduino через Raspberry Pi
4. Установка AVRDUDE и прошивка

Заходим обратно в SSH клиент.

SSH

>> ls -la # Смотрим и убеждаемся в наличии переданного файла

>> sudo apt-get install avrdude # Устанавливаем утилиту avrdude

>> avrdude -v # Выводим версию утилиты. Должна быть 6.1 или старше

>> nano FlashMarlin.sh # Создаем в текстовом редакторе nano скрипт FlashMarlin.sh
Прошиваем Arduino через Raspberry Pi
NANO

#!/bin/bash # Запись выполнения скрипта

sudo service octoprint stop # Останавливаем OctoPrint

avrdude -C /etc/avrdude.conf -p atmega2560 -c wiring -P /dev/ttyUSB0 -b 115200 -D -U flash:w:./Marlin.ino.hex:i # Прошиваем hex-файл

sudo service octoprint start # Запускаем OctoPrint

echo “Flash is end!” # Выводим сообщение

Закрываем с помощью Ctrl+X и соглашаемся с сохранением Y. Для понимания, расшифруем главную строчку:

avrdude – вызываем утилиту

-C /etc/avrdude.conf – подгружаем файл конфигурации avrdude

-p atmega2560 – выбираем процессор

-c wiring – выбираем программатор

-P /dev/ttyUSB0 – указываем порт, к которому подключена Arduino (USB)

-b 115200 – указываем скорость передачи данных (115200 бод)

-D – не стираем память перед записью

-U flash:w:./Marlin.ino.hex:I – указываем что делать и с чем, i – тип файла “Intel HEX”

SSH

>> sudo chmod +x FlashMarlin.sh # Разрешаем исполнение скрипта

>> ./FlashMarlin.sh # Прошиваем!

Если все правильно сделано, то должны пробежать три линии загрузки и запись: «avrdude done. Thank you.»
Прошиваем Arduino через Raspberry Pi
Таким образом, мы создали все необходимые инструменты для дистанционной прошивки. При последующих прошивках, делаем следующие действия:

1. Компилируем и получаем HEX-файл

2. Перемещаем HEX-файл в папку с батником SendMarlin.bat

3. Выполняем SendMarlin.bat

4. Выполняем FlashMarlin.sh

Надеюсь будет полезным. Если есть вопросы - с радостью отвечу.

Я в ВК: https://vk.com/photo.mickey

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

20
Комментарии к статье
Кремень КБ Реклама
Кремень КМ Реклама