Самодельный ардуино на atmega8. Минимальный клон Arduino за $3 на ATmega8A с модифицированным bootloader'ом. Добавление устройств АТмега

Держа в руках оригинальную плату Ардуино, в голове зародилась мысль о сборке её клона. Посидев, подумав над проектом, было решено уместить все на односторонней плате, а для связи с компьютером снабдить плату микросхемой 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пФ.


Давайте же приступим!

Шаг 1.Введение.


Вопросы,как и что сделать,а вообще зачем оно мне?

После серфа по тоннам информации об Arduino…от изготовления светодиодного кубика,до создания «Умного дома»,до изготовления летающих дронов…
вы,как и я,лихорадочно начали искать более-менее приемлимую инфу об изготовлении этой всемогущей платы.
«Черт возьми,хочу такую!» или «Я хочу сделать это.Прямо сейчас.»И в голове крутятся все возможные применения этого устройства,
руки сами начинают искать детали для платы,заходите в интернет,а там:
АРДУИНО.Всего за 25$.
И все.
Все комбинации выпали из головы.
Безнадега.
Не знаете,как жить дальше.
И тут вы натыкаетесь на этот сайт!
Вы спасены!
Ведь именно сейчас мы с вами соберем ARDUINO-совместимую плату за 15 минут и всего за примерно 300 рублей!

Шаг 2.Приобретите это немедля!


Вам необходимы эти компоненты:
-Макетная плата
-ATMega 328(примечание переводчика: можно использовать также ATMega 8,168)
-Готовая плата Arduino(*и снова переводчик-вместо ардуины можно использовать любой программатор,хоть «5 проводков»)
-1 резонатор на 16мГц
-3 резистора на 100Ом
-1 резистор на 10кОм
-2 конденсатора на 22pF
-3 светодиода(красный,желтый и зеленый)
-1 батарея типа»Крона»(9 вольт) с ответной частью
-USB-кабель
-1 стабилизатор напряжения «КРЕНка»
-Компьютер,ноутбук с установленной Arduino IDE.
И все.

Шаг 3.Начало сборки.


Возьмите макетку и закрепите микроконтроллер так,чтобы его ножки не были замкнуты(он должен стоять над «канавкой»)

Шаг 4.Подключение КРЕНки.

Поместите КРЕНку на макетку рядом с МК.
Распиновка КРЕНки:
-VCC(питание снаружи)
-GND(Земля.Общий контакт)
-Output(Выход)
Подсоедините черный провод к GND.Соедините его другой конец с шиной «GND» на макетке.
VCC подключите к шине питания+ на макетке.
И Output киньте туда,где будет питание чипа.

Шаг 5.Проводим питание к МК.


Хорошенько изучите распиновку АТМеги.
Соедините Output КРЕНки и GND макетки соответственно с Output(7 и 20 пин) и GND(8 и 22 пин) МК.

Шаг 6.Добавим точности.



Подключите конденсатор на 22pF между GND и 9 пином АТМеги.
И второй конденсатор между 10 пином АТМеги и,опять же,землей.
Добавьте резистор на 10кОм между 5v и RESET(1 пин).

Шаг 7.Добавляем светодиоды.

Воткните провод в любое место платы.
Подключите резистор 100Ом к одному из концов провода(см.картинку)
Длинную ножку диода (+) желтого диода подсоедините к другому концу резистора.
Короткую ножку(-) подключите к земле.
Повторите для красного и зеленого диодов.

Шаг 8.Подключаем все это к ARDUINO.
Далеко зашли мы,однако!

Подключите желтый диод к 9 пину Arduino.
Желтый диод отображает работу программатора.
Подключите красный диод к 8 пину Ардуины.
Он загорается,если что-то пошло не так.
И зеленый диод подключите к 7 пину.
Он показывает статус заливки bootloader’а.
Подсоедините 4 провода(на картинке-3 желтых и зеленый) к пинам АТМеги на макетке(см.рисунок).
А затем эти провода к 10-13 пинам Ардуино.
Не забудьте соединить 5 и GND Ардуины и макетки!

Шаг 9.Программирование.
Фух,добрались и до заливки бутлоадера.
Как,спросите вы?
АК вот так!
1)Запустите Arduino IDE.
2)Выберите Файл-Примеры-Arduino ISP.
3)Скомпилируйте скетч и залейте его в Ардуину.
После заливки скетча Вы увидите,что желтый диод начал мигать.
Теперь добавьте резистор на 100 Ом между землей и Reset Ардуины.

Шаг 10.Собственно заливка загрузчика.


В Arduino IDE выберите:
Tools-Board-Arduino Duemilkanove with AtMega 328(* Если вы используете не АТМегу 328,найдите в списке модель с тем контроллером,который установлен у вас)
Tools-Programmer-Arduino as ISP.
И снова в меню Tools.Зайдите и нажмитье «Burn Bootloader»
Прошивка начнется(займет около минуты)
На экране появится надпеись «Done Burning Bootloader»

Если что-то пойдет не так,загорится красный диод,то не получилось.Обращайтесь в личку или на [email protected] .
Вуаля!У вас есть свой Ардуино!
Счастливой работы!

(P.S. Писал эту же статью на www.nnm.ru, решил, синхронизировать версии).
Как-то (пару месяцев назад) просматривая новости в инете, наткнулся на очень лестные отзывы о мега-популярном проекте Arduino . Писалось, что чуть ли не домохозяйки любят и могут с ним возиться и делать с его помощью всякие интересные вещи. Ну... что же. Почему бы и мне не попробовать, руки и мозги вроде как имею... Однако прикупить готовую плату - ни финансы, ни природная скрягость не позволило. Сами с усами, сделаем. Вот инструкция с оф. сайта: http://arduino.cc/en/Main/ArduinoBoardSerialSingleSided3
Там вы найдете и список деталей и рисунки печатки.... Короче все, что нужно для изготовления. Я сделал две таких платы и остался очень доволен.

Но есть одно но. В официальной версии в качестве преобразователя RS232 выступал блок на транзисторах.... и это приводило к нестабильному обмену информацией.
Но не я первый столкнулся с такой проблемой. Вот вариант на реальном преобразователе MAX232
http://spiffie.org/electronics/archives/microcontrollers/Build%20a%20MaxSerial%20Freeduino.html
Его и стоит делать.
Вот мой процесс реализации этого варианта.
Собираем все до кучи Детали и разъемы - обходятся менее 10 у.е..
Нам понадобиться:
-- кусок одностороннего стеклотекстолита (95х65мм)
— микроконтроллер ATmega8 (или ATmega168)
— микросхема MAX232 (можно интегралловскую ILX232N)
— 7805 (регулятор напряжения 5В)
— 4-ре светодиода (лучше разные цвета)
— кварц 16 Mhz
— кнопка (с четырьмя контактами)
— разъем СОМ-порт (мама) под запайку
— разъем под питание (2.1мм)
— конденсатор 22пФ (маркировка либо 22, либо 220)- 2 шт.
— конденсатор 0.1 мкФ (маркировка 104) — 3 шт.
— резистор 1к (0.125 Ватт) — 5 шт
— резистор 10к (0.125 Ватт) — 1 шт
— диод 1N4004 (или 1N4007) — 1шт.
— элетролит. конденсатор 10мкФ х16В — 5 штук (минимальные по высоте, иначе шилды не становятся)
— элетролит. конденсатор 100мкФ х16В — 2 штук (тоже невысокие)
— колодки под микросхемы (16 ножек-1шт, 28 ножек узкая — 1 шт)
ну и пару полосок штырьков и соответ. им мам.

Самое ответственное — изготовление печатки. ( готовый Word-овский файл для печати и ЛУТ ).

Еще раз повторюсь, от качества изготовления печатки зависит ВСЕ!!!

Готовую (вытравленную) плату необходимо залудить. Хотите красоты — воспользуйтесь сплавом Розе. Думаю, без труда в инете найдете описание этого метода. Ну а можно по старинке флюсом и припоем.

Для красоты и удобства на лицевую сторону можно нанести (тем же лутом) расположение элементов и надписи.

Осталось аккуратно запаять элементы. Начинайте с перемычек, потом пассивные элементы (резисторы, конденсаторы, кварц), далее светодиоды, разъемы, колодки. Все паяем без "соплей" и "коротышей" :)

Вид со стороны пайки.

А от и результат. Мой вариант — далеко не эталон, но вполне работоспособен:)

Итак, 2/3 дела сделано. Осталось "вдохнуть жизнь" — прошить плату загрузчиком. :)

Для этого нужно изготовить небольшой программатор.
Вот схема:

А вот реализация в "железе":

С официального сайта скачиваем софт . Устанавливаем. Запускаем.

Идем по пути: -> ->

Подключаем программатор к Arduino, разъем в LPT, на Arduino подаем питание

Самую простую схему Arduino вы можете собрать на макетной плате своими руками и без паяльника. Для сборки Arduino вам понадобится микроконтроллер ATmega8A-PU, адаптер USB-UART CP2102, резистор на 10k и кнопка.

Собрать схему можно на макетной плате Breadboard Half (BREADBOARD - 456 HOLES) размером 82х59 мм. При чем, на такой макетной плате, после сборки Arduino, еще останется много места для тестирования своих устройств или для программатора микроконтроллеров. Для большей помехо-защищенности Вашего самодельного Arduino могут понадобиться, но не обязательно, по одному конденсатору на 220мкФ, 2мкФ, 22нФ и 2 резистора по 1k.

Секрет такой простоты и функциональности самодельного Arduino 8 mini (назовем его так, от слова минимальный) кроется в том, что мы будем использовать микроконтроллер ATmega8-PU на частоте 8МГц с внутренним генератором.

Микроконтроллер ATmega8-PU для использования на частоте 8МГц необходимо подготовить. Необходимо выставить фьюзы и загрузить подходящий bootloader (загрузчик). Для наших целей мы воспользовались Конструктором загрузчика . и получили файл загрузчика a8_8MHz_a4_dc.hex и следующие настройки Arduino:

############################################################## a8_8MHz.name=ATmega8-mini (8 MHz internal) a8_8MHz.upload.protocol=arduino a8_8MHz.upload.maximum_size=7680 a8_8MHz.upload.speed=115200 a8_8MHz.bootloader.low_fuses=0xa4 a8_8MHz.bootloader.high_fuses=0xdc a8_8MHz.bootloader.path=optiboot a8_8MHz.bootloader.file=a8_8MHz_a4_dc.hex a8_8MHz.build.mcu=atmega8 a8_8MHz.build.f_cpu=8000000L a8_8MHz.build.core=arduino a8_8MHz.build.variant=standard ##############################################################

Эту секцию настроек необходимо добавить в файл hardware/arduino/boards.txt.

После того как схема будет собрана -

  • Загрузите в плату Arduino sketch ArduinoISP из примеров: Файл / Примеры / ArduinoISP
  • Установите в меню Сервис / Программатор / Arduino as ISP .
  • Выполните Сервис / Записать загрузчик

После записи загрузчика (bootloader) в ATmega8-PU кварц больше не понадобится, а схему, собранную для программирования можно разобрать и приступить к сборке схемы Arduino 8 mini.

Принципиальная схема Arduino 8 mini предназначенная для сборки своими руками на макетной плате:

Подключите плату Arduino 8 mini к компьютеру и сделайте настройки в программе Arduino:

  • Установите в меню Сервис / Программатор / AVRISP mkII .
  • Установите в меню Сервис / Плата / ATmega8-mini (8 MHz internal)
  • Выберите Сервис / Последовательный порт

Для загрузки скетчей, одновременно нажимайте кнопку загрузить в программе Arduino и кнопку Reset на плате Arduino 8 mini.

Загрузите в свой самодельный Arduino 8 следующий скетч:

Void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1500); digitalWrite(13, LOW); delay(500); }

Если Вы все сделали правильно, светодиод должен мигать.

Как я уже упоминал, резисторы по 1k в линию RX и TX можно не ставить, конденсатор 2мкФ можно заменить проводником и не ставить конденсаторы 220мкФ и 22нФ, под Вашу ответственность.

Общие сведения

Этот вариант Arduino-контроллера, если уж не самый простой, то уж наверняка самый доступный для самостоятельного изготовления. В основе - уже ставшая классической схема Arduino на контроллере ATMega8.

Всего разработано два варианта:

  • Модульный
  • Одноплатный

Модульный вариант

Этот вариант контроллера состит из трех плат:

Одноплатный вариант

Все тоже самое, только на одной плате:

Плата выполнена из одностороннего фольгированного текстолита и может быть повторена в домашних условиях с использованием, наприрмер, ЛУТ-технологии. Размеры платы: 95x62

Программирование микроконтроллера

После сборки платы - необходимо "прошить" контроллер, загрузить в него "bootloader" - загрузчик. Для этого потребуется программатор. Берем чистый контроллер типа ATMega8, устанавливаем его в программатор, подключаем к компьютеру. Я использовал программатор Программатор AVR ISP mkII c адаптером ATMega8-48-88-168 . Программируем с помощью Arduino IDE, она сама выставит необходимые fuse bits. Последовательность такая:

1. Выбор программатора (Сервис > Программатор > AVRISP mkII). Если этот программатор используется впервые - необходимо установить драйвер AVRISP-MKII-libusb-drv.zip . Если используется не AVRISP mkII, а другой программатор, то из списка нужно выбрать нужный.

2. Выбор платы для микроконтроллера (Сервис > Плата > Arduino NG or older w/ ATmega8). Если используется не ATmega8, а другой микроконтроллер, то и платку нужно выбирать соответствующую ему.

3. Запись bootloader (Сервис > Записать загрузчик).

4. Устанавливаем контроллер на плату, и все, Arduino готова к работе.