Давайте немного отвлечемся от создания нашего робота и поговорим о том, как мы будем записывать прошивку в Arduino.
Нас, прежде всего, интересуют три платы Arduino:
— Arduino Uno – как самый распространенный вариант
— Arduino Nano – компактный вариант, удобный для применения в небольших конструкциях
— Arduino Pro Mini – дешевый компактный вариант без встроенного USB-UART преобразователя (для работы с ним понадобится внешний USB-UART преобразователь), но удобный в случае применения сети устройств.
Во всех вышеописанных платах используется микроконтроллер ATmega328 (в более старых версиях ATmega168).
Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet.pdf (11153 Загрузки)Одной из главных причин выбора платы Arduino для проекта робота была возможность записывать прошивку устройства в МК не применяя программатора и каких либо дополнительных устройств. Все что нужно для прошивки микроконтроллера Arduino – это стандартный USB шнур (который входит в комплект Arduino).
Это значит, если Вы имеете Ардуину – Вы имеете любое устройство ZiChip!
Запись программы в МК через USB происходит через специальный загрузчик (Bootloader), который записан в МК при изготовлении платы. Вообще, загрузчик предназначен для работы со своим специальным программным обеспечением Arduino IDE, но в случае, когда необходимо прошить в Ардуину что-то постороннее (свой Hex-файл), есть программки позволяющее это реализовать.
Начнем, конечно, с моей программы загрузчика
GC-Uploader
Программа интересна тем, что выбранный HEX-файл будет заливаться в Ардуину автоматически после каждого его изменения. Это удобно, так как при разработке проекта каждая компиляция (обновление хекса) будет инициировать прошивку Ардуины — Вам ничего не придется делать самому! Кроме того в программе есть и ручной режим прошивки.
Следующая — маленькая и удобная
XLoader (Arduino HEX uploader)
Программка имеет аскетичный интерфейс и работать с ней предельно просто:
— подключаем Arduino в USB-порт (отдельного питания не нужно)
— выбираем Hex файл
— выбираем тип Вашего Arduino
— выбираем COM порт, который создался при подключении Arduino к USB (скорость порта автоматически подставится при выборе типа Arduino)
— жмем Upload
Это все! Ничего сложного. Прошивка через несколько секунд будет записана в МК и автоматически запустится. Один минус – программа никак не сообщает о том, что прошивка уже записана, но это можно увидеть по прекращению мерцания светодиодов RXD и TXD на Ардуине.
XLoader использует для записи прошивки AVR Dude и в качестве протокола программирования используется STK500. Но, похоже, в настройках AVR Dude, произведена коррекция, так как использование стандартного AVR Dude с такими же настройками не дает результатов.
Автоматизация XLoader.
При разработке ПО для микроконтроллера производится очень много прошивок и всегда нужно стремиться автоматизировать этот процесс после сборки проекта — это экономит время и нервы. В данном случае автоматизация усложнена, так как программа не показывает командную строку для AVR Dude (разве что подбирать опытным путем), но некоторое упрощение процесса возможно. Делается это следующим способом – после первой прошивки не закрываем окно программы (COM порт после прошивки программа отпускает) и после следующей сборки проекта просто жмем кнопку «Upload». Конечно, сборка должна осуществляться в один и тот же Hex-файл.
Еще одна программка
ARP Uploader (Arduino Hex Uploader and Programmer)
Как и предыдущая, программка имеет простой интерфейс.
Процесс прошивки тот же:
— подключаем Arduino в USB-порт (отдельного питания не нужно)
— выбираем Hex файл
— выбираем тип Вашего Arduino
— выбираем COM порт
— жмем Upload
Программа при записи открывает дополнительные окна и визуально отображает свои действия, что позволяет следить за процессом записи.
При попытке прошить Arduino Nano программа отказывалась видеть МК. Причиной стала неправильная установка скорости COM порта. По умолчанию скорость стоит 19200, а нужно 57600. Скорость порта в программе не задается явно, она прописывается в строчке «AVR Dude Params» — поменяйте в ней значение 19200 на 57600.
Автоматизация ARP Uploader.
ARP Uploader как и XLoader работает через AVR Dude, но, в отличие от XLoader, показывает командную строку. Это дает возможность использовать AVR Dude напрямую в Make или Bat файле.
Дополнительные материалы.
Драйвера Arduino.
Считаю не лишним напомнить, что для связи Arduino с компьютером в последнем должны присутствовать драйвера. Оставляю здесь архив с драйверами для Arduino (включая и старые драйвера в Old_Arduino_Drivers.zip и драйвера для FTDI-чипа в папке «FTDI USB Drivers»
Arduino_drivers.zip (14760 Загрузок)Стали появляться недорогие китайские Ардуины с драйвером CH340G
Driver-CH340G.zip (11240 Загрузок)
Загрузчики Arduino
Если Вы решите собрать свою плату Arduino (а сложного там ничего нет, фактически, это голый ATmega328 или ATmega168), Вам понадобится загрузчик Bootloader который должен содержать МК для работы со средой (или программками для заливки Hex-файлов). Конечно, Вам для записи Hex-файлов в чистый МК понадобится программатор и придется выставить фьюзы.
ATmegaBOOT_168_atmega328.zip (13915 Загрузок)
Для правильной работы нужно установить фьюзы следующим образом Low: FF High: DA Ext: 05
ATmegaBOOT_168_diecimila.zip (7227 Загрузок)
Фьюзы Low: FF High: DD Ext: 00
Схемы Arduino
Cхемы вышеописанных Ардуин.
Arduino_Uno_Rev3-schematic.pdf (11692 Загрузки)
ArduinoNano30Schematic.pdf (11160 Загрузок)
Arduino-Pro-Mini-schematic.pdf (9790 Загрузок)
Фьюзы установленные по умолчанию в Arduino (только с ATmega328)
Arduino Uno
Low Fuse 0xFF
High Fuse 0xDE
Extended Fuse 0x05
Arduino Duemilanove or Nano w/ ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05
Arduino BT w/ ATmega328
Low Fuse 0xFF
High Fuse 0xD8
Extended Fuse 0x05
LilyPad Arduino w/ ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05
Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05
Лок-биты на ардуине не активны. Их трогать вообще не нужно. В ардуиновкую МК можно заливать все что угодно обычным способом через SPI-интерфейс.
Возможно Вам попалась партия бракованных ардуин?
Я их скачал, но они обе не работают. Даже прилагаемые драйверы установил. (адаптер на базе PL2303HX обнаруживается и работает). На компьютере Windows 7.
Xloader пишет, что загрузка началась, но зависает и не выходит из этого состояния. На TXD редко подмигивает индикатор. Никаких ошибок не выдает. Закрывается этот Икслоадер только с помощью диспетчера.
Uploader открывает командное окно. Ждет секунд 5. Потом пишет: avrdude: нет синхронизации.
Что еще нужно?
Прошивка через загрузчик может и удобная штука, но мне привычнее традиционным способом — через AB, CVAVR или ponyprog. Можно ли как-то вообще очистить кристалл от этого ардуиновского загрузчика?
Я покупал эти платы Arduino pro mini, как обычные контроллеры с минимальной обвязкой. Для своих применений.
А они не стираются!
AB, CVAVR сказали, что кристалл не доступен уже на стадии стирания. Другие ж доступны… значит аппаратная часть программаторов исправна.
В Pony начались приключения. Стираю кристалл. Читаю фьюзы. Lock биты не стерлись.
Убираю lock биты, чтобы открыть доступ. Перезаписываю фьюзы, включаю внутренний генератор, вместо кварцевого. Т.к. mega168V до 10 Мгц, а кварц стоит на 16МГц. Получилось. Сигнал на кварце исчез. Светодиод на плате перестал мигать. Т.е. первоначальная программа уже не работает. Кристалл читается. Но со второй попытки «Retri». Однако, чтение показывает, что полного стирания не произошло (FF только в первых двух строчках, а дальше какая-то информация), после чтения кристалла все lock биты почему-то восстановились. И снова заблокировали чтение памяти. Повторение описанных операций ничего не меняет. По команде стирания должен же стереться и загрузчик и lock биты. Не масочный же он там.
Я разобрался в чём дело. Скорее всего нужна поддержка .NETFramework выше чем 4
Странно, у меня при попытке запустить Arduino Uploader выдаёт окно с ошибкой приложения — Ошибка инициализации приложения (0х0000135)! На компе Windows XP sp3/
Такая-же хрень и с XLoader…….
Да, именно так.
Спасибо. Я так понял скомпилированный скетч прошиваемый Arduino IDE, это что то типа HEX прошитый XLoaderom (или аналогом)? Шьется в те же области.
Ардуина не потеряется для IDE. В нее все также можно будет заливать скетчи.
Прошивка HEX файлов для ардуино для меня новенькое. Подскажите если прошить ардуино каким то hex файлом (например для 3D printera), то потом уже ардуинку нельзя будет просто использовать с Arduino IDE, а придется сначала перепрошить мк?
Посмотри цепи сброса в ардуине. Возможно что-то с ними. Процесс прошивки при помощи бутлоадера начинается после сброса МК. При этом сброс можно сделать вручную (так делалось в старых ардуинах) либо среда программирования сама сбрасывает МК при помощи встроенного преобразователя USB-UART.
Все делал пошагово, как в описании
Добрый день. У меня проблема, я записывал в ардуино уно хекс файл с помощью xloader, записало, но не заработало, потом решил записать скетч с ардуино, мне показало такую ошибку http://vk.com/photo17892530_427106272, что может быть? подскажите. Нашел подобную ошибку в нете, пишут, переустановить драйвера, удалил с компа старые, с помощью драйвера парка загрузил новые для ардуино, то же самое. При заливки скетча уже в ардуино иде, мигает рх светодиод 1 раз примерно в две секунды и потом выдает ошибку, выше показаную. Описываю все действия, что делал позже:
1. Менял платы на старые версии в программе ардуино, та самая ошибка.
2. Проверял мегу 328 в юсб асп программаторе считать, работает, думал может залочилась.
3. Пробовал эту же мегу отдельно, вне платы ардуино, программировать с помощью ардуино иде через юсб асп программатор, прошивается, работает, заливал скетч мигания светодиодом, мигает.
3. Когда подключаю ардуино к ноуту, плата в ардуино иде опрелеляется как ардуино уно и пишет рядом выделенный под нее порт, когда отключаю, пропадает, подключаю, опять появляется, то есть с драйверами я так понял все хорошо. Только на кнопку ресет нет никакой реакции.
4. Когда заливаю скетч в плату ардуино, соответственно выбираю плату ардуино уно и порт, тот который выделен под ардуино.
Вроде все с драйверами и мегой 328 впорядке, но не работает, выдает выше указанную ошибку. До этого все работало нормально.
Бутлоадер для работы скетча не нужен — можно залить просто НЕХ и все будет работать.
подскажите. если скетч написанный в ардуиновской среде разработки, там же откомпилирован и залит в конотроллер. и полученный HEX залить программатором в микроконтроллер. будет ли работать прошивка или надо обязательно заливать бутлоадер?
Если они захотят — могу и их представить.
Да, есть оригиналы, но дороговато, на официальном сайте ардуино в Украине http://arduino-ua.com/ дешевле, может этот сайт лучше представить? )
Например, http://diylab.com.ua/p60689321-arduino-nano-v30.html
http://diylab.com.ua/p78302673-dccduino-nano-atmega328.html
вторая видно что копия, но и первая не оригинал
Я так понимаю, в магазине http://diylab.com.ua/, который здесь на сайте представлен, продаются не оригинальные ардуинки? Цена слишком низкая от оригиналов
Приветствую! Очень интересная и полезная статья.
В конце статьи есть архив «112-Arduffector.zip — Файлы по сборке Эффектора»
Вот ссылка на этот архив http://www.getchip.net/wp-content/plugins/download-monitor/download.php?id=304
В архиве есть файл main.hex — это и есть прошивка.
Для эффектора, который собирается за 5 минут, я не нашёл архива readme.txt файла,где написана прошивка.Убедительная просьба дайте, пожалуйста, прошивку для этого устройства. Заранее спасибо.
В каждой статье есть архив с материалами для сборки устройства. В архиве я обычно оставляю readme.txt файл, в нем написано где прошивка.
Пожалуйста подскажите как же мне поиметь hex файл, чтобы задействовать эффектор.Дайте ссылку, где можно изучить материал на эту тему. Заранее благодарю,с Новым Годом Вас!!!
Если ты решил прошить ардуину HEX-файлом, подразумевается, что этот файл у тебя где-то хранится на винте — вот в этом месте и нужно выбирать файл.
Среды ардуино вообще не нужно. ArduinoUploader, HEX-файд и Arduino — больше ничего не нужно!
Пожалуйста,поясните следующее. По части записи программой ArduinoUploader Hex файла. Пункт выбираем Hex файл, вопрос: 1)откуда ВЫБИРАЕМ необходимый для прошивки Hex файл,2)как настроить среду ардуино прежде чем нажать кнопку Upload.Заранее благодарю.
Извиняюсь, увидел XD
@GetChiper
я пробовал,не получается. Придется все же шить((, а где фьюзы посмотреть для AT mega 328p (Arduino uno)
При помощи скетча не получится, если поврежден сам загрузчик (нужен программатор).
Если вернуть исходную программу мигания индикаторным светодиодом, то она есть в стандартных примерах оболочки.
желательно пример скетча, а не с помощью программатора
А кто подскажет ка скинуть arduino uno на 328 меге к заводским настройкам?
Упустил, поставте свой номер COM порта.
В окне AVR Dude Params программы ArduinoUploader подправляем параметры:
-F -v -pm328p -cstk500v1 -P\\.\COM4 -b57600 -D -Ueeprom:w:»D:\ARDUINO\ArduinoUploader\EE_Test.hex»:i
для записи файла D:\ARDUINO\ArduinoUploader\EE_Test.hex в EEPROM ATmega328. Я пользуюсь 3-х вольтовой, 8-ми мегагерцовой ARDUINO Pro Mini, подключение «стандартное» через переходник на CP2102. Для чтения меняем параметр :w на :r и указываем имя файла в который будем писать. Ну и на всякий случай:
параметры:
-F: Игнорировать проверку соединения с МК.
-v: так называемый подробный вывод — для контроля и отладки.
-p : Тип МК для программирования. Указываем нашу атмегу -pm328P.
-c : Тип программатора. Пишем -cstk500v1.
-P : Коммуникационный порт, пишем -P\\.\COM3.
-b : Скорость для работы с последовательным портом, пишем -b19200.
-D: Отключаем очистку МК перед прошивкой.
-U :r|w|v:[:format]: Самая важная команда — выполнение прошивки.
— тип памяти МК — flash или eeprom (или hfuse, lfuse, efuse для конфигурации фьюзов МК, фьюзы читаются как 0).
r|w|v — флаги определяют, что мы хотим сделать:
r (read — считать)
w (write — записать)
v (verify — проверить).
файл для записи или чтения.
[:format] флаг формата данных. Здесь всегда используется формат , поэтому стоит i
Не подскажете, как?
Дело в том, что все это уже опробовано. EEPROM и пишется и читается. Вот фьюзы прочитать не возможно, т. к. закрыты команды LPM STM для области загрузчика. Кстати и FLASH тоже можно прочитать.
Согласен про программатор, но ардиина-то прошивает сама себя через BOOTLOADER — программатор тут не причем. А вот поддерживает-ли BOOTLOADER ардуины запись в EEPROM?
BOOTLOADER и программатор две разные вещи…. С помощью ArduinoUploader можно (и нужно 🙂 ) «заливать EEPROM». Укажите в парамтрах, что пишете в EEPROM (-Ueeprom) и «будет Вам счастье»…
Да, EEPROM, по ходу, не зальет — подозреваю что сам загрузчик ардуины не представляет такой возможности (хотя я в этом не совсем уверен — как то с ардуинами мало знаком)
Программка конечно интересная. Но… Кто-то пробовал при помощи её влить в UNO файл EEPROM? Льет, но в виде прикладной программы 😉
Нет, не потрется, он находится в конце Flash памяти и не стирается при перезаписи. Конечно размер прошивки не должен заполнять всю флеш, оставляя место для загрузчика (но и в этом случае загрузчик просто не зальет такую прошивку).
Подскажите пожалуйста, если я создам свой ..hex, например в avr studio, и залью его в ардуину с помощью этих программ загрузчик самой ардуины не потрется?
@GetChiper на ATmega48 можно собрать Arduino.
Порядок действий:
1) откройте файл arduino-0018/hardware/arduino/boards.txt и добавьте в его конец что-то вроде этого:
######################################################
atmega48.name=ATMega48
atmega48.upload.using=avrisp
atmega48.upload.maximum_size=4094
atmega48.upload.speed=38400
atmega48.bootloader.low_fuses=0xE2
atmega48.bootloader.high_fuses=0xDF
atmega48.bootloader.extended_fuses=0xFF
atmega48.bootloader.path=atmega
atmega48.bootloader.file=atmega48.hex
atmega48.bootloader.unlock_bits=0x3F
atmega48.bootloader.lock_bits=0x0F
atmega48.build.mcu=atmega48
atmega48.build.f_cpu=8000000L
atmega48.build.core=arduino
2) Подсоедините AVCC микроконтроллера к плюсу питания (используется для analogRead как analog reference)
3) Поставьте конденсатор примерно в 0,1мкФ между AREF и землёй
4) enjoy!
А теперь о плохом %)
доступно тока 4кб памяти, что накладывает сильные ограничения на размер скетча (при использовании bootloader-а — всего 2кб), так что, скорей всего, грузить скетчи на плату вам придётся с помощью программатора
аналогичным способом программируются и другие контроллеры, нужно гуглить
ATmega48 никогда в ардуине не стояла, соответственно и не поддерживается, поэтому никакая прошивка не станет с ней работать.
на MEGA48 можно собрать Arduino? Под неё подойдет какая — нибудь прошивка?
Рад, что вы думаете также. Тоже использую просто как отладочную плату Arduino Uno и самодельную Arduino Pro Mini сделанную из платы переходник между DIP и SMD корпусами для микроконтроллеров продают. Много интересного нашел для себя в том числе обязательно воспользуюсь Bootloader для ATmega328 что то он мне ранее не попадался. Мне нравится что не нужно пользоваться языком для arduino просто можно загрузить хекс у меня как раз были проблемы с адаптацией. Спасибо очень полезная статья!
🙂
Сори,не думал что всё так просто
Подскажите плиз,где найти строчку «AVR Dude Params»
Эффектор на ардуино это здорово, буду ждать.
По Эффектору я имел ввиду на данный момент только программу, там раньше у нас был небольшой список пожеланий и поправок, таких как запоминание ползунков к режимам цветомузыки «полный» и «зеркало», добавление режима «не-зеркало» (каналы 1-6, 1-6), может регулировка скорости затухания, может запуск эффектов в паузах без музыки и.т.п. А железо неплохое и такое как есть. Без наворотов, но своё делает.
В любом случае — спасибо за сделанное и успехов вперёд!
С эффектором до Нового года вряд-ли чего получится сделать, но в планах есть его доработка (и похоже новый эффектор можно будет заливать в ардуину).
Есть желание немного обновить эффекты в супергирлянде — надеюсь хоть это успею.
Спасибо, полезная информация. Я тут держу при себе горстку Nano и Pro Mini, на разные случаи жизни 🙂
Немного о другом, вопрос к уважаемому Aвтору, может есть к праздникам какая доработанная версия управляющей программы к устройству «Эффектор-12»? Устройством и предыдущей версией программы пользуюсь регулярно (режим цветомузыки), раньше тут и на форуме накапливались идеи и замечания для доработки программы, вот я подумал, может к этому Новому Году назревает какой подарочек всем? 😉 Спасибо!