Arduino USB сделай сам (DIY). Системный интегратор Добавление устройств АТмега

Держа в руках оригинальную плату Ардуино, в голове зародилась мысль о сборке её клона. Посидев, подумав над проектом, было решено уместить все на односторонней плате, а для связи с компьютером снабдить плату микросхемой FT232RL. Во избежание вывода из строя USB порта компьютера, из-за превышения потребляемого тока, я решил пожертвовать возможностью питания от USB, но более детально об этом ходе чуть позже.

Итак, дорогие читатели, представляю вашему вниманию нашу версию клона Ардуино. Встречайте Paduino FT232RL

Как уже говорилось выше, плата имеет недостаток - лишена возможности питания от юсби порта. Однако, благодаря использованию микросхемы FT232RL, на плате присутствует выход 3.3В. Также к доп. функционалу хочется отнести наличие джампера автоматической загрузки (ENABLE), а также джампера (JP LED13), позволяющего отключить не всегда используемый светодиод подключенный к пину под номером 13.

Также, вдобавок к уже имеющемуся выходу Vin на Arduino, был добавлен выход VTG INPUT . На мой взгляд, стандартный вывод Vin имеет ряд недостатков, хотя с другой стороны плюсов. К недостаткам можно отнести потерю напряжения на диоде (0.6-0.8 вольта), также при запитывании Arduino не от разъема питания, а непосредственно от гребенок мы теряем защиту от переполюсовки т.к. выход Vin на схеме расположен после защитного диода. На выводе VTG INPUT мы же всегда имеем напряжение равное входному без каких либо потерь, а также при запитывании Arduino через гребенки функционал защиты от переполюсовки сохраняется т.к. на схеме выход расположен перед защитным диодом. К достоинствам вывода Vin можно отнести то, что при правильно поданном питании на нем всегда будет плюс, в противном же не будет ничего, в то время как на VTG INPUT либо минус либо плюс.

Смыслом данной модификации является возможность питания самодельных мотр шилдов представленных на этом сайте и нашего клона Arduino от одного источника питания без каких либо потерь питающего напряжения.

Так, как ФТшка в данной сборке использует только землю и сигнальные линии USB порта, то, полистав даташит, повесим на неё обвязку в следующей конфигурации:

В этот раз все этапы изготовления я пропущу. Из процесса изготовления приложу только фото протравленной и залуженной платы до начала монтажа элементов.

Пару слов об FT232RL. Микросхемка довольно таки мелких размеров. Для того чтобы вы смогли оценить свои силы, привожу фото ФТшки на десятикопеечной монетке.

Приставляем Фтшку к плате, отцентровываем, смачиваем ножки флюсом, берем на жало паяльника припой в очень малом количестве, и быстро проходимся по каждой ножке. Если вы в пайке новичок, и еще не научились паять быстро, в одно касание, советую делать интервал в 10-15 секунд после каждой ножки.

Что касается размеров, то Paduino выходит не на много больше оригинальной Arduino.

Все, с изготовлением разобрались. Для работы в среде Arduino в память контроллера осталось лишь залить bootloader .

После заливки бутлоадера, нам уже ничто не мешает приступить непосредственно к программированию.

Для начала необходимо скачать среду Arduino. Скачать последнюю версию можно на сайте производителя .

Подключаем наш клон к компьютеру, при наличии интернета устройство должно определиться автоматически.

Если при подключении драйвер на FT232RL не уcтановился в автоматическом режиме, тогда скачаваем драйвер на свою ОС с сайта производителя FTDI.

В комментариях к статье, человек указал на возможность конфликта новых драйверов на FT232RL с сайта производителя. В связи с этим лучше установить драйвер из среды Arduino IDE (arduino-1.0.5-windows\arduino-1.0.5\drivers\FTDI USB Drivers)

Открываем скачанную идешку и выбираем плату. Плата будет отображаться как Arduino NG or older w/ATmega 8 при использовании контроллера ATmega 8, либо как Arduino NG or older w/ATmega 168 при использовании ATmega168.

Затем выбираем COMport к которому подключена плата. У меня кабель определился под девятым номером.

Для проверки работоспособности зальем в контроллер тестовую программку-мигалку, выполнив следующие действия

После успешной загрузки вы должны увидеть следующее

Если все заработало, то поздравляю вас. Вы собственноручно собрали полноценный клон USB Arduino.

В архиве лежит шаблон под ЛУТ и список деталей.

Открываем изображение => Печать => Во всю страницу

Для облегчения распайки smd компонентов с обратной стороны платы, где нет маркировки, приведу картинку.

Хочется отметить, что на smd конденсаторах нет маркировки номиналов, но для облегчения распайки на картинке я их нанес. 104 - 0,1 мкФ, 22 - 22пФ.

Development board ATMEGA8 анти-ардуино-одурино

Одной из наиболее деструктивно повлиявших на популяризацию любительской радиоэлектроники вещей стало массовое распространение Ардуино (одурино). Это - готовая плата с запаянным микроконтроллером и минимальной обвязкой. Казалось бы, удобная и полезная штука? Не спешите делать такое заключение.

Человек, не знакомый с радиоэлектроникой, получая такую вещь, начинает ей пользоваться. В этом - один из первых и самых главных минусов: человек не постигает азов и даже не учится паять.

Все соединения для ардуины выполняются проводами с наконечниками. Это удобно, но есть есть и существенный недостаток: схемы, с позволения сказать, с использованием ардуино выглядят уродливо - в виде кучи цветных линий. В этом - второй важный минус: человек не учится схемной грамоте.


Под ардуину есть своя среда разработки с примитивным языком, на котором любители написали кучу непрофессиональных, как они их назвали, скетчей - готовых решений для большинства применений. Пользуясь ими, возникает и третий минус: человек не учится программированию, качественно не улучшает знания и не оттачивает мастерство программирования, будучи запертым в тесных рамках примитивной среды разработки.

На самом деле, минусов у ардуины - куда больше, и перечислять их все нет смысла. Речь здесь о том, что же сделать, чтобы получить плюсы.

Всё очень просто. Если ты хочешь заниматься радиоэлектроникой, научись паять: собери свою девелопмент боард с минимальным, но достаточным обвесом. Возьми достоинства ардуины и не бери недостатки. Используй провода с наконечниками для подключения периферии и не используй ардуинную ide.

В итоге ты получишь все базовые преимущества ардуины практически без минусов. Бонусом к этому ты добавишь множество своих плюсов. Если это лирическое вступление тебя убедило, то продолжим.

Итак, наша девелопмент боард содержит:

  • микроконтроллер ATMEGA8
  • разъёмы для графического и символьного дисплеев на популярных контроллерах SED1520 и HD44780 соответственно
  • каждый вывод микроконтроллера продублирован тремя штырьками
  • имеется разъём внутрисхемного программирования для популярного ICSP (ISP) USBASP
  • линии +5 вольт и масса выведены на несколько штырьков в разных местах платы
  • три разноцветных светодиода и одна кнопка, а также кнопка RESET
  • разъём питания 7,5-20 вольт и LDO стабилизатор
  • для графического дисплея имеется формирователь отрицательного напряжения с регулировкой на ICL7660
  • питание цепей АЦП заведено через фильтр
  • есть кварцевый резонатор, но его использование не обязательно
Как видишь, набор более, чем минимальный. Размер платы - 10*10 см. На большой площади удобнее работать. Кстати, ты можешь перекроить под свои нужды всё, что хочешь. Так, как проект ещё не завершён, то он будет развиваться. Поэтому ты можешь высказать свои замечания и предложения по улучшению.

Писать программы можно на любом языке.

Схема v1.0b:


Нажми для увеличения
Кнопка S1 - RESET, предназначена для сброса микроконтроллера. S2, если она нужна, подключается к любому пину. На плате версии 1.0b подключается с нижней стороны платы двумя проводками к линиям VCC и GND. Джампер JP6 CONTR должен быть замкнут, если для символьного дисплея требуется регулировать контрастность переменным резистором R6. Если же контрастность уже установлена на самом дисплее припаянными резисторами, то джампер размыкается. Джампер JP5 PROG должен быть замкнут во время работы. При программировании он размыкается, при этом питание подаётся только на МК и только от разъёма ICSP. Контрастность графического дисплея регулируется переменным резистором R7.

Печатная плата v1.0b.

Сразу признаюсь, что заголовок призван привлекать внимание — конечно, за $3 полноценную Arduino-плату не собрать, но минимальное решение вполне можно.

Платы проекта Arduino идеальны для макетирования и сборки прототипов, а для законченных устройств хотелось найти что-то более дешевое и доступное. В этой заметке будет описана минимальная Arduino-совместимая конструкция.

В качестве отправной точки использовались статьи Minimal Arduino with ATmega8 (внимание : в этой статье есть ошибка, значения fuse-битов неверны) и страница об ArduinoISP из официальной wiki . К сожалению, ни одна из этих статей в своё время не ответила на все мои вопросы, кроме того появилось желание немного «подкрутить» стандартный bootloader, но об этом ниже.

Поддержка новых плат и IDE
(дополнение от 01.05.2012 , файлы исправлены 27.05.2012 )

Действия, описанные в статье, проверялись на Arduino IDE 0023 и клоне Arduino Duemilanove . С момента написания статьи были выпущены новые платы и обновлена среда. Судя по комментариям пользователей к этой записи, всё работало если в качестве платы-программатора использовались Arduino Uno и Arduino Mega 2560 . Для новой версии среды Arduino IDE 1.0.1 я подготовил обновлённый архив (доступен в конце статьи), обновление необходимо из-за незначительных изменений в формате файла boards.txt

Минимальная Arduino-конструкция за $3.5
(дополнение от 02.05.2012)

Этот способ является альтернативным описанному в статье ниже!
В комплекте Arduino IDE 1.0 поставляется новый бутлоадер Optiboot , который занимает всего 512 байт (бутлоадер, описанный в этой статье в два раза больше — 1 Кб) и работает на высоком бодрейте — 115200 (в статье ниже — 38400). Для работы этого бутлоадера дополнительно к описанным в статье компонентам нужен внешний кварц на 16МГц и два конденсатора на 22пФ его обвязки (этим объясняется увеличение стоимости на $0,5:)). В комплекте с Arduino IDE 1.0 есть уже скомпилированная версия для ATmega8, достаточно только добавить в boards.txt следующее и прошить бутлоадер:
############################################################## atmega8optiboot.name=ATmega8 (optiboot, 16Mhz XTAL) atmega8optiboot.upload.protocol=arduino atmega8optiboot.upload.maximum_size=7680 atmega8optiboot.upload.speed=115200 atmega8optiboot.bootloader.low_fuses=0xBF atmega8optiboot.bootloader.high_fuses=0xCC atmega8optiboot.bootloader.path=optiboot atmega8optiboot.bootloader.file=optiboot_atmega8.hex atmega8optiboot.bootloader.unlock_bits=0x3F atmega8optiboot.bootloader.lock_bits=0x0F atmega8optiboot.build.mcu=atmega8 atmega8optiboot.build.f_cpu=16000000L atmega8optiboot.build.core=arduino:arduino atmega8optiboot.build.variant=arduino:standard В версии файлов к статье от 14.07.2012 настройки для этого способа добавлены в состав архива , поэтому править главный boards.txt больше нет необходимости.



Что будет нужно:
  • Arduino-совместимая плата (я использовал китайский клон Arduino Duemilanove , на момент написания заметки новая Arduino Uno не поддерживается скетчем ArduinoISP. Обновление : по сообщениям пользователей ArduinoISP из Arduino 023 поддерживает Arduino Uno). Плата будет использоваться в качестве программатора для прошивки bootloader"а и в дальнейшем как USB-TTL конвертер;
  • Arduino IDE версии 0022 (последняя на момент написаний статьи);
  • Микроконтроллер в корпусе DIP-28 ATmega8 или ATmega8A ( , версия с буквой «A» имеет более низкое энергопотребление). Для тактирования будет использоваться внутренний RC-осциллятор с максимальнй для него частотой 8Mhz.
  • Провода для соединения всего этого на время прошивки bootloader"a (я использовал беспаечную макетную плату и набор зачищенных проводов к ней)
Опциональные компоненты:
  • 1 светодиод и токоограничительный резистор на 220-500 Ом (подключается к пину №19 (PB5), это тот же выход Digital pin 13, к которому на большинстве Arduino-совместимых плат подключен светодиод L );
  • 1 резистор на 10 кОм (подключается от RESET"а микроконтроллера к +5V для предотвращения произвольного сброса);
  • 1 конденсатор 100 нФ (подключается между плюсом и минусом питания для фильтрации помех).

Выбор именно ATmega8(A) объясняется очень просто: в местных магазинах радиотоваров не было никаких других контроллеров, поддерживаемых средой Arduino. С одной стороны, это сильно ограничило меня в объёме кода, с другой — именно благодаря тому, что код моего проекта на Arduino не поместился в память контроллера, я был вынужден разобраться с WinAVR и переписать проект под AVR-GCC. Времени на вспоминание C и чтение datasheet"ов ушло довольно много, но код получился раз в пять компактнее и, пожалуй, к программированию в среде Arduino я врядли вернусь:).

Подготовка IDE

Скачайте архив с настройками и bootloader"ом и разархивировать его в папку Sketchbook (путь можно посмотреть в пункте меню File -> Preferences Arduino IDE). После перезапуска Arduino IDE в меню Tools -> Board должен появиться новый пункт .


В архиве находится следующее:
  • Модифицированный bootloader для ATmega8 от проекта Arduino. Оригинальный исходный код можно найти в папке hardware\arduino\bootloaders\atmega8 . Этот bootloader занимает всего 1 Кб (512 слов) в памяти контроллера, в отличие от более нового hardware\arduino\bootloaders\atmega , который используется для плат на основе ATmega168 и ATmega328. Отличия от оригинальной версии заключаются в следующем: уменьшено время ожидания скетча при сбросе микроконтроллера, скорость загрузки поднята до 38400;
  • Файл boards.txt , в котором описана конфигурация нового типа платы (с более высокой скоростью загрузки и fuse-битами для работы от внутреннего RC-осциллятора на частоте 8Mhz).
Превращение Arduino-совместимой платы в программатор

В Arduino нужно загрузить скетч ArduinoISP (File -> Examples -> ArduinoISP ), после этого Arduino может играть роль ISP-программатора практически для любых AVR чипов (я проверял на ATmega8 и ATtiny45).


Подключение «программатора» к контроллеру


Схема продублирована в тексте скетча ArduinoISP:

// this sketch turns the Arduino into a AVRISP // using the following pins: // 10: slave reset // 11: MOSI // 12: MISO // 13: SCK
Обновление от 30.10.2011: Для Arduino Mega назначение выводов другое:

// 50 (MISO) // 51 (MOSI) // 52 (SCK) // 53 (slave reset)
Дополнительно можно подключить светодиоды, которые будут перемигиваться при прошивке (их наличие или отсутствие на функциональность не влияет):

// Put an LED (with resistor) on the following pins: // 9: Heartbeat - shows the programmer is running // 8: Error - Lights up if something goes wrong (use red if that makes sense) // 7: Programming - In communication with the slave
Проверка подключения

Arduino использует для компиляции скетчей avr-gcc , штатной утилитой для прошивки в котором является программа avrdude (расположен в этой папке: \hardware\tools\avr\bin\ ). Прежде чем предпринимать что-либо дальше необходимо проверить, правильно ли мы подключили контроллер с помощью следующей команды:


avrdude -v -patmega8 -cstk500v1 -PCOM10 -b19200
Назначение параметров:
  • -v — выводить больше информации
  • -patmega8 — тип контроллера (для ATmega8A нужно всё равно указывать atmega8)
  • -cstk500v1 — тип программатора (ArduinoISP эмулирует STK500)
  • -PCOM10 — номер COM-порта (можно посмотреть в меню Tools -> Serial Port в Arduino IDE)
  • -b19200 — скорость обмена, скетч ArduinoISP работат на этой скорости
Если всё подключено правильно, контроллер должен радостно ответить примерно следующее:

AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.05s avrdude: Device signature = 0x1e9307 avrdude: safemode: lfuse reads as E1 avrdude: safemode: hfuse reads as D9 avrdude: safemode: lfuse reads as E1 avrdude: safemode: hfuse reads as D9 avrdude: safemode: Fuses OK avrdude done. Thank you.

Важно! Если всё подключено правильно, а всё равно не работает, возможно, проблема в версии avrdude . На одной из моих тестовых плат возникла следующая ситуация: avrdude из ArduinoIDE плату-«программатор» с ArduinoISP не видит, а avrdude из WinAVR работает отлично. Решение этого непонятного бага довольно простое — на время прошивки bootloader"a заменить файл \hardware\tools\avr\bin\avrdude.exe на более новую версию из WinAVR. Bootloader может прошиться не с первого раза, а со второго — жалоб о таком поведении на форумах тоже хватает. После прошивки bootloader"а можно восстановить оригинальную версию avrdude .

Прошивка bootloader"a

Самая простая часть. Нужно запустить Arduino IDE, выбрать в пункте меню Tools -> Board следующую плату: ATmega8(A) (8MHz int. RC osc, short bootloader delay, 38400 baud rate) . Здесь указывается целевая плата, поэтому нужно выбрать именно этот пункт, а не модель Arduino-совместимой-платы, которая работает ISP-программатором.

После этого нужно запустить процесс прошивки bootloader"а командой Tools -> Burn Bootloader -> w/ Arduino as ISP . Процесс прошивки занимает 1–2 минуты.


Что же получилось в итоге

После прошивки bootloader"а и установки fuse-битов новая ATmega8A будет работать от встроенного RC-осциллятора на частоте 8Mhz. Программы в флеш-памяти контроллера ещё нет, поэтому bootloader будет запускаться снова и снова, о чём будет свидетельствовать постоянное помигивание светодиода L.


Bootloader ждет команд по UART около половины секунды после сброса микроконтроллера. Для заливки прошивки в контроллер можно использовать:

  • USB-TTL конвертер (его можно собрать или купить);
  • Arduino-совместимая плата со снятым контроллером.
Зачем нужен bootloader, если есть ArduinoISP?
  • использование bootloader"a обеспечивает совместимость и с Arduino IDE, и с AVR Studio;
  • меньше проводов для подключения (вместо линий ISP только UART). При этом UART часто используется для отладки, поэтому его все равно приходится подключать.
Скачать

Arduino своими руками

Ну вот и настало время освоить платформу для duino самостоятельно. Для начала разберемся, что нам может потребоваться. Для начал было бы не плохо определиться, на базе чего мы будем делать наш экземпляр отладочной платы. Чтобы упростить изначальную задачу, я предлагаю использовать USB-(UART)TTL адаптер для загрузки скетчей. Это упростит нам жизнь в разы. лично я буду использовать дешевенький адаптер, заказанный в ныне несуществующем интернет-магазине, но все также рабочий.

При построении нашей Duino будем стараться использовать минимальное количество элементов. По мере освоения будем добавлять необходимые компоненты.

Для ознакомления найдем схемы различных платформ на официальном сайте:

На мой взгляд схемы хорошие, но неплохо было бы посмотреть уже проверенные реализации "самоделок", мне очень понравились 3 варианта:

Соорудим минимальную обвязку нашему устройству.На первом этапе деталей необходимо минимум:

Собственно сам МК atmega328P (в моем случае, хотя может использоваться и 168 и 8)

Кварц 16 MHz

Конденсатор 22pF x 2шт.

Резистор 10k

Кнопка сброса (любая, кстати не обязательный элемент)

Вот в принципе и все, что минимально необходимо для работы микроконтроллера. Я предлагаю все наши работы иллюстрировать и проектировать в очень не плохой программке Fritzing:

Ну вот, давайте разберемся, зачем нужны данные элементы. Кнопка позволяет перезапустить микроконтроллер, резистор R1 является подтягивающим резистором для кнопки. Кварц, C1 и C2 являются внешним тактовым генератором для контроллера.


Это необходимая и достаточная обвязка, но лично я настоятельно Вам рекомендую установить керамический конденсатор 100nF параллельно основному питанию микросхемы.

Ну вот и готова наша минимальная Duino. Для того, чтобы удобнее было использовать данный отладочный инструмент, я предлагаю наклеивать на корпус подсказку с распиновкой "атмеги". Мой вариант реализован в Corel Draw:

Для начала соберем схему нашей Duino на беспаечной макетной плате, вот что получилось у меня:

Для загрузки скетчей мы будем использовать USB - TTL адаптер, на фото мой уже изрядно потрепавшийся адаптер на базе микросхемы CP2102:

Но перед загрузкой скетчей необходимо залить бутлоадер в МК, иначе, он "не поймет", что мы от него хотим. Есть масса способов, но мы будем использовать простейший. При помощи замечательного программатора USBasp:

Для начала подключим нашу Duino к программатору, это очень просто, достаточно соединить контакты программатора с Duino:

GND - масса (22 нога)

MOSI - MOSI (d11)

5V - питание "+" (7 нога)

Затем Arduino IDE -> Сервис -> "Записать загрузчик":

В процессе записи загрузчика придется подождать около 2 минут. После этого нам могут выпасть разнообразные "warning", типа "can not set SCK period" - не пугаемся и идем дальше.

Ну чтож, вот мы и готовы записать тестовый скетч "Blink" в наш новоиспеченный Duino, но есть один момент, и на нем я хотел бы остановиться. Как мы уже говорили для записи скетчей используется последовательный порт, но в "обычной" жизни МК это цифровые порты 0 и 1. Все очень просто, мы уже залили бутлоадер, он инициализирует запись новой прошивки при включении в течении нескольких секунд, после этого Duino начинает выполнять программу, которая записана у нее в памяти.

Чтобы перевести Duino в режим "приема", необходимо перезагрузить МК, для этого мы сделали специальную кнопку, но нажать ее нужно строго в определенный момент, это совсем не подходит для нас. К счастью на переходниках есть специальный вывод "RST", который достаточно подключить к 1 ноге МК, чтобы автоматически перезагружать Duino перед загрузкой скетча. Подключение очень простое, (переходник - Duino):

GND - масса (22 нога)

RXD - подключить к TXD (3 нога)

TXD - подключить к КXD (2 нога)

5V - питание "+" (7 нога)

Как Вы заметили контакты приема/передачи подключаются перекрестно. И все бы хорошо, но есть одно "но": существует огромное множество переходников, а для автоматической перезагрузки МК необходимо внедрить конденсатор на 100pF в разрыв цепи RST - перезагрузка (1 нога). В некоторых адаптерах он есть, а в некоторых - увы нет. Тут нужно только проверять, в моем экземпляре встроенного конденсатора не оказалось. В итоге схема немного "усложнилась":

Ну что же, теперь можно загрузить скетч в памяти Duino и попробовать провести несколько экспериментов =) (на фото добавлены светодиоды - индикаторы загрузки скетча):

Многие радиолюбители, начинали знакомство с микроконтроллерами через Arduino. Большинству пользователей mysku известно про этот электронный конструктор и удобную платформу для быстрой разработки электронных устройств, поэтому особо останавливаться на достоинствах и недостатках самой платформы я не буду.

В обзоре будет описана возможность использования Arduino в качестве программатора далее по тексту Arduino ISP. Кому интересно, прошу под кат.

Наигравшись с различными модулями к Arduino, у меня возникло желание создать полноценное устройство, которое будет полезно в повседневной жизни.
Случайно наткнувшись в интернете на проект , решил попытаться его повторить.

Прочитав описание проекта, были сформулированы основные для меня проблемы или как принято говорить подводные камни:
- Создание печатной платы;
- Прошивка микроконтроллера Atmega8A в корпусе TQFP-32.

До этого я не вытравил ни одной платы и прошивал только встроенный в Arduino микроконтроллер в корпусе DIP.

Atmega8 в корпусе TQFP-32 помимо достоинств, таких как более низкая цена и меньший размер по сравнению с DIP, имеет и недостаток - это неудобство прошивки микроконтроллера и более сложный монтаж на плату.

Устранить первый недостаток можно различными способами:
- Приобрести переходник TQFP32 TO DIP32, который имеет механизм зажима. Стоимость около 1 тыс. рублей;
- Приобрести переходник TQFP32 TO DIP32, который не имеет механизма зажима, рассчитан на припаивание микроконтроллера. Стоимость около 100 рублей за 5 штук;
- Сделать печатную плату-переходник TQFP32 TO DIP32 своими руками;
- Припаять тонкие провода к нужным ножкам и отпаять после прошивки.

Выбрав предпоследний вариант, чтобы не ждать еще месяц доставки, я приступил к созданию печатной платы по методу ЛУТ. Информации и роликов в интернете о данном методе очень много и каждый без труда сможет повторить его дома. Вытравив плату в хлорном железе и припаяв штырьки, получился вот такой переходник:

Исходные файлы для Sprint Layout, можно скачать .

Припаиваем Atmega8 феном или паяльником. Можно «прихватить», только 8 ножек, которые участвуют в прошивке. Не рекомендую использовать различные зажимы или «колхозить» с прищепками.

Подключаем Arduino Uno к компьютеру по USB и загружаем скетч Arduino ISP. Компилируем и прошиваем Arduino Uno. В комментариях, есть подсказка по подключению для прошивки через Arduino ISP, нам потребуются пины MOSI, MISO, RESET, GND, GND, VCC, VCC, SCK.

// pin name: not-mega: mega(1280 and 2560) // slave reset: 10: 53 // MOSI: 11: 51 // MISO: 12: 50 // SCK: 13: 52

Общая схема подключения будет выглядеть следующим образом:

Для прошивки будем использовать консольную утилиту :

Avrdude -p m8 -P USB15 -c arduino -b 19200 -U lfuse:w:0xE4:m -U hfuse:w:0xDA:m -U flash:w:main.hex

Где -p m8 - Прошиваемый микроконтроллер в нашем случаи Atmega8;
-P USB15 - Имя порта, под которым опеределяется программатор Arduino ISP;
-с arduino - Тип программатора;
-b 19200 - Скорость USB порта;
-U flash:w:main.hex - Прошивка;
-U lfuse:w:0xE4:m -U hfuse:w:0xDA:m - Фьюзы.

После успешной прошивки, можно дополнительно сравнить код на flash с исходным hex файлом:

Avrdude -p m8 -P USB15 -c arduino -b 19200 -U flash:v:main.hex

Если у Вас нет в наличии Arduino, то в качестве дешевого программатора, можно использовать . Его стоимость порядка 100 руб.

В заключении, продемонстрирую фотографии устройства, которое я собрал по проекту ClusterM.

Фотографии




Особенности:
- Эмуляция iButton/Cyfral/Metacom;
- Считывание iButton/Cyfral;
- Синхронизация базы ключей с компьютером по USB;
- Компактный размер платы;
- Низкое энергопотребление, автор проекта сообщал, что от одного комплекта батареек устройство работает около года;