Минимальный клон Arduino за $3 на ATmega8A с модифицированным bootloader'ом. Arduino USB сделай сам (DIY) Самодельный ардуино на atmega8

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

Этот вариант 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 готова к работе.

Микроконтроллеры – отличная основа для большого количества устройств. По сути своей они напоминают компьютер: постоянная память; оперативная память; вычислительное ядро; тактовая частота.

Среди многих семейств и видов МК новички часто выбирают контроллеры AVR Atmega. Однако язык программирования может показаться сложным, поэтому преподаватель из Италии решил разработать простую и удобную плату для обучения.

Родилась Arduino ATmega8, на основе которой можно собрать очень удобное и простое устройство.

С этими платами от Ардуино вы получаете целый ряд преимуществ:

  • готовая разведенная печатная плата со всеми необходимыми компонентами и разъёмами;
  • микроконтроллеры Atmega;
  • возможность программировать без программаторов – через ЮСБ порт;
  • питание от любого источника 5-20 вольт;
  • простой язык программирования и возможность использования чистой C AVR без переделок платы и прошивки.

Характеристики чипа

  • Частота ATmega8: 0-16 МГц
  • Напряжение ATmega8: 5 В
  • Частота ATmega8L: 0-8 МГц
  • Частоат ATmega8A: 0-16 МГц

В реальности почти все микроконтроллеры при рабочем напряжении в 5 вольт работают с частотой 16 мегагерц, если участвует внешний кварцевый резонатор. Если брать внутренний генератор, то частоты составят: 8, 4, 2 и 1 МГц.

Распиновка Arduino ATmega8

Ниже приводим распиновку атмега8, которую можно также найти на официальном сайте производителя:

Добавление устройств АТмега

Есть один нюанс по работе с эти чипом - нам нужно внести некоторые изменений в один файл, чтобы дальше можно было бы программировать микроконтроллеры Arduino ATmega8.

Вносим следующие изменения в файл hardware/arduino/boards.txt :

Atmega8o.name=ATmega8 (optiboot 16MHz ext) atmega8o.upload.protocol=arduino atmega8o.upload.maximum_size=7680 atmega8o.upload.speed=115200 atmega8o.bootloader.low_fuses=0xbf atmega8o.bootloader.high_fuses=0xdc atmega8o.bootloader.path=optiboot50 atmega8o.bootloader.file=optiboot_atmega8.hex atmega8o.bootloader.unlock_bits=0x3F atmega8o.bootloader.lock_bits=0x0F atmega8o.build.mcu=atmega8 atmega8o.build.f_cpu=16000000L atmega8o.build.core=arduino:arduino atmega8o.build.variant=arduino:standard ############################################################## a8_8MHz.name=ATmega8 (optiboot 8 MHz int) 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 ############################################################## a8_1MHz.name=ATmega8 (optiboot 1 MHz int) a8_1MHz.upload.protocol=arduino a8_1MHz.upload.maximum_size=7680 a8_1MHz.upload.speed=9600 a8_1MHz.bootloader.low_fuses=0xa1 a8_1MHz.bootloader.high_fuses=0xdc a8_1MHz.bootloader.path=optiboot a8_1MHz.bootloader.file=a8_1MHz_a1_dc.hex a8_1MHz.build.mcu=atmega8 a8_1MHz.build.f_cpu=1000000L a8_1MHz.build.core=arduino a8_1MHz.build.variant=standard ############################################################## a8noboot_8MHz.name=ATmega8 (no boot 8 MHz int) a8noboot_8MHz.upload.maximum_size=8192 a8noboot_8MHz.bootloader.low_fuses=0xa4 a8noboot_8MHz.bootloader.high_fuses=0xdc a8noboot_8MHz.build.mcu=atmega8 a8noboot_8MHz.build.f_cpu=8000000L a8noboot_8MHz.build.core=arduino a8noboot_8MHz.build.variant=standard

Таким образом, если мы перейдем в меню Сервис → Плата , то увидим устройства:

  • ATmega8 (optiboot 16MHz ext)
  • ATmega8 (optiboot 8 MHz int)
  • ATmega8 (optiboot 1 MHz int)
  • ATmega8 (no boot 8 MHz int)

Платы Arduino

Ардуино продаётся во множестве вариантов; главное, что объединяет платы, – это концепция готового изделия. Вам не нужно травить плату и паять все её компоненты, вы получаете готовое к работе изделие. Можно собирать любые устройства, не используя паяльник. Все соединения в базовом варианте выполняются с помощью макетной платы и перемычек.

Сердце платы – микроконтроллер семейства AVR. Изначально был применён микроконтроллер atmega8, но его возможности не безграничны, и плата подвергалась модернизации и изменениям. Стандартная плата, которая наиболее распространена у любителей – это плата версии UNO, существует много её вариаций, а её размеры сравнимы с кредитной карточкой.

Плата – полный аналог большего собрата, но в гораздо меньших размерах, версия arduino atmega168 была самой популярной и недорогой, но её сменила другая модель – arduino atmega328, стоимость которой аналогична, а возможности больше.

Следующей важной деталью является печатная плата. Разведена и запаяна на заводе, позволяет избежать проблем с её созданием, травлением и пайкой. Качество платы зависит от производителя конкретного экземпляра, но, в основном, оно на высоком уровне. Питание платы осуществляется с помощью пары линейных стабилизаторов, типа L7805 , или других LDO стабилизаторов напряжения.

Клеммная колодка – отличный способ сделать надёжное разъёмное соединение и быстро выполнить изменения в схеме прототипов ваших устройств. Для тех, кому не хватает стандартных разъёмов, есть более крупные и мощные платы, например, на atmega2560, у которой доступно полсотни портов для работы с периферией.

На фото изображена плата . На её основе можно собрать довольно сложного робота, систему умного дома или 3d-принтер на ардуино.

Не стоит думать, что младшие версии слабы, например, микроконтроллер atmega328, на котором построены модели Uno, nano, mini и другие, имеет вдвое больше памяти по сравнению с 168 моделью – 2 кб ОЗУ и 32 кб Flash памяти. Это позволяет записывать более сложные программы в память микроконтроллера.

Проекты на основе Arduino ATmega

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

Пример 1

Можно сделать тестер с 11 функциями на микроконтроллере atmega32.

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

  1. Прозвонка цепи с возможностью измерять падение напряжения на переходе диода.
  2. Омметр.
  3. Измеритель ёмкости.
  4. Измерение активного сопротивления конденсатора или ESR.
  5. Определение индуктивности.
  6. Возможность счёта импульсов.
  7. Измерение частоты – пригодится в диагностике, например, для проверки ШИМ источника питания.
  8. Генератор импульсов – тоже полезен в ремонте.
  9. Логический анализатор позволит просмотреть содержимое пачек цифровых сигналов.
  10. Тестер стабилитронов.

Пример 2

Для радиолюбителей будет полезно иметь качественное оборудование, но станция стоит дорого. Есть возможность собрать паяльную станцию своими руками, для этого нужна плата Arduino, имеющая в своем составе микроконтроллер atmega328.

Пример 3

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

Для этого вам понадобится:

  1. Arduino uno или atmega
  2. Tft дисплей 5 дюйма.
  3. Небольшой набор обвязки.

Или его упрощенный аналог на плате Nano и дисплее от nokia 5110.

Такой осциллографический пробник станет полезным для автоэлектрика и мастера по ремонту радиоэлектронной аппаратуры.

Пример 4

Бывает, что управляемые модули удалены друг от друга или возможностей одной ардуино не хватает – тогда можно собрать целую микроконтроллерную систему. Чтобы обеспечить связь двух микроконтроллеров стоит использовать стандарт RS 485.

На фото приведен пример реализации такой системы и ввода данных с клавиатуры.

Цветомузыка на микроконтроллере Arduino ATmega8

Для школьной дискотеки можно собрать ЦМУ на 6 каналов.

Транзисторы VT1-VT6 нужно подобрать с учетом мощности ваших светодиодов. Это силовые компоненты – они нужны, потому что мощности микроконтроллера не хватит, чтобы запустить мощные лампы или светодиоды.

Если вы хотите коммутировать сетевое напряжение и собрать цветомузыку на лампах накаливания, вместо них нужно установить симисторы и драйвер. Дополнить каждый канал ЦМУ вот такой конструкцией:

Ардуино своими руками

Atmega2560 – хоть и мощный и продвинутый контроллер, но проще и быстрее собрать первую плату на atmega8 или 168.

Левая часть схемы – это модуль связи по USB, иначе говоря, USB-UART/TTL конвертер. Его, вместе с обвязкой, можно выбросить из схемы, для экономии места, собрать на отдельной плате и подключать только для прошивки. Он нужен для преобразования уровней сигнала.

DA1 – это стабилизатор напряжения L7805. В качестве основы можно использовать целый ряд avr микросхем, которые вы найдете, например, серии, arduino atmega32 или собрать arduino atmega16. Для этого нужно использовать разные загрузчики, но для каждого из МК нужно найти свой.

Можно поступить еще проще, и собрать всё на беспаечной макетной плате, как это показано здесь, на примере 328-й атмеги.

Микроконтроллеры – это просто и весело – вы можете сделать кучу приятный и интересных вещей или даже стать выдающимся изобретателем, не имея при этом ни образования, ни знаний о низкоуровневых языках. Ардуино – шаг в электронику с нуля, который позволяет перейти к серьезным проектам и изучению сложных языков, типа C avr и других.

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.

EGYDuino – это клон Arduino, который можно изготовить самостоятельно, на односторонней печатной плате. Это простое и дешевое решение, которое можно изготовить в домашних условиях, причем на 100% совместимое с Arduino.

Описание

Микроконтроллер ATmega8 отвечает за последовательное подключение по USB. Он может быть запрограммирован с помощью . AVR-CDC создает виртуальный СОМ-порт на ПК после подключения устройства и устанавливает соответствующий драйвер. Микроконтроллер ATmega 8,168 следует запрограммировать с помощью загрузчика ArduinoNG boatloader . Данную операцию можно выполнить с использованием еще одной платы Arduino (выберите ISP программатор) и среды разработки Arduino IDE, или отдельного программатора (USB, последовательного или параллельного), например, USBasp с надлежащим программным обеспечением. Также вы можете использовать загрузчик Arduino Duemilanove для ATmega 168 или 328.

Плата имеет следующие характеристики:

Использует микроконтроллер ATmega8 как интерфейсную ИС
- USB-соединение с ПК
- Стандартная кнопка RESET
- 100% совместимость по выводам с Arduino
- Регулятор 5В
- Выход 3.3В
- Совместимый размер и конструкция
- Все компоненты вставляются в сквозные монтажные отверстия на плате
- USB или DC выключатель питания
- Светодиод для вывода PIN13 с перемычкой
- Светодиод питания
- ICSP-разъем
- Легко изготовляемая
- Микроконтроллеры ATmega8,168,328 с использованием загрузчика arduinoNG
- Стандартное гнездо DC питания

Плата EGYDuino может запитываться через USB-коннектор, или стабилизатор напряжения внешнего адаптера.

Схема

Полная схема устройства показана ниже

Печатная плата

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
IC1 Микроконтроллер ATmega8-P 1 В блокнот
IC2 МК AVR 8-бит

ATmega328

1 В блокнот
IC3 Линейный регулятор

LM7805

1 В блокнот
D1 Выпрямительный диод

1N4001

1 В блокнот
D2, D3 Стабилитрон 3.6 В 2 В блокнот
С1, С2, С5, С6 Конденсатор 22 пФ 4 В блокнот
С3 Конденсатор 1000 пФ 1 В блокнот
С4, С7, С10 Конденсатор 0.1 мкФ 3 В блокнот
С8, С9 Электролитический конденсатор 100 мкФ 2 В блокнот
R1, R2 Резистор

68 Ом

2 В блокнот
R3 Резистор

1.5 кОм

1 В блокнот
R4, R6 Резистор

10 кОм

2 В блокнот
R5 Резистор

1 кОм

1 В блокнот
R7 Резистор

470 Ом

1 В блокнот
Q1, Q2 Кварцевый резонатор 16 МГц 2 В блокнот
LED1 Светодиод Красный 1

(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 подаем питание