Самодельный ардуино на atmega8. Бюджетный USB Arduino своими руками. Распиновка Arduino ATmega8

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

Добрый день. С появлением arduino робототехника, автоматика и другие радио изделия стали нам более доступными. Раньше представить было трудно что с такой простотой можно писать прошивки для микроконтроллеров, с появлением arduino заниматься робототехникой могут даже детишки. Простота платформы arduino позволяет забыть о побитовых операциях и регистрах avr которые использовались повсеместно. Но так как платформа универсальная то и микроконтроллер тоже выбран универсальный. Например в arduino uno предусмотрен atmel atmega328p что даволи излишне для простой обработки нажатий на кнопки, а если делать сразу партию устройств то придется заплатить за незадействованную мощь.

Но так как arduino ide свободно распространяемая, любой без труда может написать дополнения и библиотеки, зачастую они могут быть очень полезными. В данной статье пойдет речь о библиотеке плат на основе ATmega8, ATmega48, ATmega88, ATmega168 под названием Mini Core. Данная библиотека позволят писать скетчи arduino под более слабые микроконтроллеры чем atmega328p, а это позволяет удешевить стоимость устройства за счет рационального использования мощности.

Почему именно эти микроконтроллеры:

  1. Данные микроконтроллеры с теми же выводами и архитектурой и имеют минимальные отличия от atmega328p(заменяемые)
  2. Они дешевые и популярные(некоторые дешевле доллара)
  3. Они все имеют DIP и TQFP корпуса

Данная библиотека поддерживает все индексы микросхемы кроме PB (т.е. A, P, PA), например не стоит использовать ATMEGA168PB-AU.

Микросхемы по характеристикам:

Atmeg328 atmega168 atmega88 atmega48 atmega8
Flash 32 кб 16 кб 8 кб 4 кб 8 кб
ОЗУ 2 кб 1 кб 1 кб 512 б 1 кб
ПЗУ 1 кб 512 б 512 б 256 б 512 б
Каналы ШИМ 6 6 6 6 3

Пора от теории перейти к практике установим Mini Core, для установки понадобиться Arduino IDE версии 1.6.4 и выше. Если у вас нет Arduino или она старше качаем ее с оф. Сайта .

1. Для установки делаем следующее:

2. Запускаем Arduino IDE

3. Откройте меню « Файл» ⇒ «Настройки» .

4. После вышеупомянутых операций закрываем настройки и переходим в меню Откройте меню « Инструменты» ⇒ «Плата:"........."» ⇒ « Менеджер плат...».

5. В менеджере плат выбираем нашу библеотеку и нажимем установка:

Примечание . Если вы используете Arduino IDE 1.6.6, вам может потребоваться закрыть диспетчер плат, а затем снова открыть его.

После установки в меню « Инструменты» ⇒ «Плата:"........."» появятся варианты плат с нашими микроконтроллерами.

Самый удобный вариант для использование данных микроконтроллеров это взять arduino uno с микросхемой в корпусе dip и заменить на нужную. Также можно собрать плату с несложной обвязкой:

Для тех кому нужна распиновка микросхем фото ниже:

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

Настройки тактовой частоты:

  • 16 МГц внешний генератор (по умолчанию)
  • 20 МГц внешний генератор
  • 18.432 Mhz внешний генератор *
  • 12 МГц внешний генератор
  • 8 МГц внешний генератор
  • 8 МГц внутренний генератор **
  • 1 МГц встроенный генератор
Arduino. Всем известный и полюбившейся многим девайс стал на столько популярен, что даже маленькие дети не успев родится уже пытаются написать скетч. Зы, вот это стеб... Короче и я не хочу отставать и в данной статье расскажу как превратить плату расширения ATmega8A в arduino. Кто не знает что эта за плата, могут почитать . Да, я понимаю, многие скажут, а где тут самодельность. А самодельность заключается в том, что для Arduino нужно всего несколько вещей. Первое - микроконтроллер. Для дешивизны пойдет ATmega8. Второе - кварц на 16МГц. Третье - два керамических кондера на 22пф. И четвертое - преобразователь USB TTL, любой. Для сборки нужно присоединить кварц к ножкам МК XTAL1 и XTAL2. К этим же ножка прицепить два кондера, а другие ножки кондерев на землю и все.

А теперь переходим к практическим действиям. Превращать в Arduino будем отладочную плату, но все действия спроведливы для простого МК, кварца и пары кондеров. И так, поехали.
На плате расширения по умолчанию установлен кварц на 7,3728МГц. Для Arduino это не пойдет. Значит берем и меняем его на 16МГц.

Далее нам понадобится залить загрузчик в нашу плату. Для этого берем любую плату Arduino. У меня под рукой Arduino UNO. Если у вас еще нет Arduino, то пора ее преобретси. Купить ее можно в магазине Чип Резистор . И так, Arduino UNO у нас есть. кладем перед собой справа на столе Arduino UNO, а слева плату расширения ATmega8A. С правой стороны у этих плат есть разъем ISP с классической Атмеловской распиновкой.

Смело берем проводки и соеденяем эти разъемы один к одному за исключением 5 пина.


Теперь берем проводок и одним концом вставляем в 5-й пин на плате расширения ATmega8A, а второй конец на вывод Arduino UNO Digital 10. Должно получится вот так.

В итоге после всех манипуляций, у нас должен быть вот такой вид.

Если все отлично, то подключаемся к USB компьютера. При правильном подключении должны загорется светодиоды на Arduino UNO и красный светодиод на плате расширения ATmega8A. (К сожелению на фото провода загородили светодиод, но поверьте он горит)

Переходим к программным процедурам. А вот тут всех любителей МК ATmega8 ждет большая подстава от производителей Arduino. На текущий момент версия IDE 1.6.3 не поддерживает эти МК. Точнее конфигурационные файлы и загрузчик есть, но залить его нельзя. Дело в том что Arduino перешли на минимальный МК ATmega328P, а эта зараза имеет Extended Byte Fuse. А порстая восьмерка нет. Из-за этой дряни загрузчик не заливается, а ругается на отсутствия этих битов. Поэтому нужно загрузчик заливать старой версией IDE. У кого ее нет, можете скачать у меня . Это версия 1.0.3 и ее не надо устанавливать. Просто разархивируйте куда-нибудь и все. Далее просто запустите программу из этой папки. А теперь давайте настроим программу для заливки нашего МК. Для начала выбераем из примеров программатор ArduinoISP и заливаем его в Arduino UNO или какую вы сейчас используете.

После заливки, нужно заменить плату Arduino UNO или какая у вас на Arduino NG or older w/ATmega8 .

Все. Можно заливать. Нажимаем Сервис -> Записать загрузчик и ждем окончания записи.

Готово. Arduino родилась. Отключаем все провода, а плату расширения вешаем на отладочную плату GSMBOARD 1.1. Далее берем плату расширения USB-TTL и соединяем проводами GND - GND, RXD - TXD, TXD - RXD и подаем питание. Должен загореться зеленый светодиод.

Если все заработало, выключаем старую прогу и запускаем самцю последнюю версию. На сегодня это 1.6.3 и пишем вот такой код. void setup() { pinMode(2, OUTPUT); } void loop() { digitalWrite(2, HIGH); delay(2000); digitalWrite(2, LOW); while(1); } Собственно что тут происходит. Сначала инициализируем пин 2 на выход. Затем выводим на него единицу, ждем две секунды и прижимаем к нулю. Затем вваливаемся в бесконечный цикл. Дабы было понятно, вот картинка во что превратилась отладочная плата.

Как видно второй пин как раз отвечает за включение и выключение модуля. Теперь самое время залить наш скетч в свежеиспеченную Arduino. Для этого перенастроим IDE выбрав пункты как на картинке ниже. И не забудьте поменять порт на USB-TTL.

Все настроили. Жмем залить скетч. Все бы хорошо да ошибка вылезла. Эх. Вот тут что за грабля заволялась. На Arduino используется виртуальный COM порт для загрузки программ. Работает это так. Сначала IDE компилит проект, затем дергает ножку ресета МК, а так как сначала запускается загрузчик, то IDE увидев его начинает лить программу во флеш. А если после компиляции не дернуть ресет МК, то IDE загрузчика не дождется и вывалит ошибку. Для дерганья ресета на всех Arduino заведена ножка COM порта DTR. На плате расширения USB-TTL этой ноги нет, поэтому когда IDE скомпилит проект и напишет Вгружаем .

Судорожно нажимаем и отпускаем кнопку сброса на плате расширения ATmega8A. IDE подцепит загрузчик и зальет программу во флеш. Все, прога потупит немного и включит GSM модуль. Если все сделали правильно, то должно быть как на картинке.

Для счастливых обладателей переходников USB-RS232 можно вывести ножку DTR из порта (естественно через микросхему MAX3232) на ресет МК. Это пин 5 на разъеме ISP через конденсатор 100нф. То есть DTR - конденсатор - RES. И тогда IDE будет сама дергать ресет. В любом случае должна получится вот такая картина. Программа отработала и включила модуль.

Теперь можно ковыряться с GSM модулем. Если возникнут вопросы, пишите. Попробуем разобраться. 

АНОНИМ 02.02.16 22:32

Спасибо за статью. Теперь в своей ардуино уно я могу использовать и мегу 8.

niko19 25.12.16 23:03

Нахрена проделывать все это с платой расширения и получить Ардуину, если на столе уже готовая Ардуина лежит? Вопрос стоит, как сделать самодельную Ардуину, скажем так на макетной плате, из завалявшейся Мега8 и кварца.Что нужно залить в Мегу, буквально по пунктам, а еще лучше готовый файл прошивки, У меня например имеется параллельный программатор, впрочем и последовательный тоже есть, а готовой Ардуины нет...

Алексей 25.12.16 23:40

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

(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. Большинству пользователей 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;
- Компактный размер платы;
- Низкое энергопотребление, автор проекта сообщал, что от одного комплекта батареек устройство работает около года;

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то