Кремень КД Реклама
Кремень КМ Реклама

Перепрошивка принтера wanhao i3 (плата melzi) через ISP с помощью програматора на основе LPT

rPman
Идет загрузка
Загрузка
27.09.2016
8092
32
Техничка

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

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

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

9
Статья относится к принтерам:
WANHAO Duplicator i3
Буду краток.

Если вы, например, воспользовались инструкциями тут и получили ошибку типа:

avrdude: stk500_recv(): .....

то вам вам почти наверняка останется вариант прошивки через isp на плате, продолжая эту инструкцию (я не буду повторять все сказанное там), воспользоваться самым простым устройством для прошивки, на базе LPT порта обычной материнки (и не нужно говорить что таких сейчас не производят, например самые дешевые компьютеры для офиса и для дома, тем кому не нужно играть в ААА игры, - это mITX со встроенным процессором, почти в каждой есть LPT, как минимум на плате разъем).

Инструкций по созданию самого программатора в интернете море, я воспользовался этим (или этим), и рекомендую именно такой выбор пинов для соединения, так как это совместимый с stk200 вариант, поддерживаемый практически всеми программами для прошивки, в т.ч. avrdude, идущей в поставке с arduino ide.
Перепрошивка принтера wanhao i3 (плата melzi) через ISP с помощью програматора на основе LPT
(так же рекомендуется соединить GND с корпусом LPT разъема через 1kOm резистор, для защиты от различий напряжений между устройствами, но надежнее вообще отключить принтер от сети и все операции проводить, питая его через USB (или сам LPT, соединив с выводом 1 LPT вход ISP VCC или пишут 5V но это не обязательно).

На плате принтера порт ISP 6-пиновый (снизу справа от разъема дисплея):
Перепрошивка принтера wanhao i3 (плата melzi) через ISP с помощью програматора на основе LPT
Попытка прошить из среды arduino ide не у меня не срабатывала (выбор типа программатора Parallel Programmer), потому что необходимо выбрать тип stk200 в командной строке avrdude.

Чтобы не читать документацию и не подбирать параметры, рискуя ошибиться (особенно когда это делаешь впервые в жизни, существует страх убить материнку принтера), можно включить подробный вывод в настройках arduino ide (файл preferences.txt, его путь указан в настройках arduino ide, изменить строчку upload.verbose = true) и при следующей попытки прошить принтер, получить в окне сообщений строчку запуска avrdude.

У меня linux и моя строчка для прошивки (измененная) выглядела так:

sudo ~/.arduino15/packages/arduino/tools/avrdude/6.0.1-arduino5/bin/avrdude -C~/.arduino15/packages/arduino/tools/avrdude/6.0.1-arduino5/etc/avrdude.conf -patmega1284p -c stk200 -P /dev/parport0 -D -Uflash:w:~/Repetier_929/Repetier/Repetier.ino.with_bootloader.sanguino.hex:i -v -v -e

По неизвестной мне причине, avrdude был скопирован в папку с настройками, если что, в т.ч. и в windows версии он находится в каталоге hardware oolsavrin среды arduino ide.

На что необходимо обратить внимание:
  • Ключ -c stk200 показывает что у нас LPT программатор, подключенный к ISP на плате принтера как указано выше на картинке (если что в файле avrdude.conf можно это изменить)
  • Ключ -P /dev/parport0 указывает на порт, через который подключен программатор (arduino ide позволяет выбрать только /dev/ttyS0, и у меня это не работало), по умолчанию у пользователя нет к нему доступа поэтому запуск через sudo, на windows это может быть lpt1... или пропустить ключ вообще
  • Ключ -Uflash:w:~/Repetier_929/Repetier/Repetier.ino.with_bootloader.sanguino.hex:i указывает файл прошивки (arduino ide генерирует свой в каталог /tmp но можно собрать свои бинарные файлы, выбрав в меню Скетч -> Экспорт бинарного файла или нажав ctrl+alt+S и получить два файла в каталоге исходников прошивки), :i - в конце опции указывает на тип файла
  • Ключ -e необходим для очистки памяти на чипе, если у вас после записи не проходит проверка (в логе будет verify error), лучше включить
  • Ключи -v -v не обязательны, включают дополнительную информацию о ходе прошивки, полезно знать что происходит, особенно если возникают проблемы

Если по какой то причине у вас во время прошивки возникнут какие-то проблемы и процесс прошивки приостановится и будет предлагать заменить биты fuses, не делайте этого и отмените прошивку клавишами ctrl+c (иначе можно убить плату, правда это маловероятно). Вполне возможно что будет достаточно укоротить провод (у меня был 20см без экрана и чередования с GND, как ни странно этого хватило) и повторить прошивку, очистив память чипа ключом -e.

После однократной прошивки через ISP все последующие у меня успешно проходили уже через USB провод, и мне не приходилось вскрывать корпус и даже не понадобилось отключать принтер от сети (я немного правил код прошивки, поэтому у меня было несколько экспериментов).

На последок, комманда:

sudo ~/.arduino15/packages/arduino/tools/avrdude/6.0.1-arduino5/bin/avrdude -C~/.arduino15/packages/arduino/tools/avrdude/6.0.1-arduino5/etc/avrdude.conf -patmega1284p -c stk200 -P /dev/parport0 -n -v -v

позволит опросить чип без какой либо записи в него и определить, корректно ли проходит соединение.

p.s. не забудьте вернуть перемычку на плате принтера в состояние 'питание от сети' после успешной прошивки.

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

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

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

9
Комментарии к статье