Бюджетный USB Arduino своими руками. Arduino USB сделай сам (DIY) Минимальная arduino своими руками atmega8


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

Шаг 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] .
Вуаля!У вас есть свой Ардуино!
Счастливой работы!

Добрый день. С появлением 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 МГц встроенный генератор

Для работы с микроконтроллером ATmega8 или с Arduino устройством на ATmega8 в среде разработки Arduino программу Arduino необходимо настроить. Нужно добавить в файл hardware/arduino/boards.txt параметры поддерживаемых устройств на микроконтроллере ATmega8.

Возможно, будет необходимо добавить файлы bootloader (загрузчик) в папку hardware/arduino/bootloaders/optiboot.

Микроконтроллер ATmega8 может работать на частоте 0-16МГц при напряжении ~5В, а ATmega8L на частоте 0-8МГц и ATmega8A на частоте 0-16МГц в широких пределах напряжения питания. Это по паспорту, а практически, при напряжении 5В, все микроконтроллеры серии ATmega8 могут работать на частоте 16МГц с внешним кварцевым резонатором и на частотах 8, 4, 2, 1МГц с внутренним генератором.

Существует вариант платы Arduino на микроконтроллере ATmega8, это Arduino NG. Среда разработки Arduino (Arduino IDE) готова к работе с микроконтроллером ATmega8, но только с одним устройством - это плата Arduino NG с микроконтроллером ATmega8 на частоте 16МГц с внешним кварцевым резонатором. Так обстоят дела в Arduino v. 1.0.6. Кроме того, для Arduino NG предлагается не самый оптимальный и главное не удобный bootloader.

Для того, чтобы была возможность программировать микроконтроллеры ATmega8 работающие на разных частотах с кварцевым резонатором и без него необходимо внести изменения в файл hardware/arduino/boards.txt Например, можно добавить в него следующие секции:

# http://optiboot.googlecode.com # http://homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik ############################################################## 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 ##############################################################

Теперь в программе Arduino в меню Сервис / Плата появятся следующие устройства:

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

Первые три устройства на микроконтроллере ATmega8 содержат bootloader, являются Arduino совместимыми и в них непосредственно можно загружать скетчи (программы) из среды разработки Arduino. Четвертое устройство не содержит bootloader, это может быть отдельная микросхема ATmega8. В ATmega8 (no boot 8 MHz int) скетчи из программы Arduino можно загружать через программатор, в том числе и через программатор на базе платы Arduino.

ATmega8 (optiboot 16MHz ext) работает с внешним кварцевым резонатором, остальные устройства с внутренним генератором.

Параметры в файле hardware/arduino/boards.txt определяют fuse биты, путь к файлу загрузчика (bootloader), тип микроконтроллера и его частоту. Fuse биты записываются в микроконтроллер (с загрузчиком или без него) когда вы выбираете пункт меню Сервис / Записать загрузчик . Fuse биты определяют на какой частоте будет работать Ваш микроконтроллер и другие важные параметры, в том числе и такие, от которых зависит его работоспособность, перепрограммируемость и т.д.

Fuse биты НЕ записываются в микроконтроллер когда вы заливаете скетчи. Если в меню Сервис / Плата будет выбрано не подходящая платформа то:

  • При загрузке скетчей
    • Не подходящая частота - приводит к изменению скорости работы программ
    • Не подходящий процессор - приводит к неработоспособности программ
  • При записи загрузчика
    • Не подходящая частота - может привести к неработоспособности микроконтроллера в данной системе
    • Не подходящий процессор (fuses) - к блокировке микроконтроллера

Внимание , Ваши не корректные действия могут вывести из строя микроконтроллер для восстановления которого потребуется программатор.

Bootloader для микроконтроллера ATmega8.

Optiboot bootloaders для различных рабочих частот микроконтроллера можно скачать с сайта Конструктор загрузчика .

Bootloaders Optiboot - это не зависимая свободная разработка загрузчиков, признанная разработчиками Arduino. Optiboot предназначен для использования в разных вариантах Arduino и для множества микроконтроллеров Atmel. Основные отличия загрузчика Optiboot от конкурентов - это до четырех раз уменьшенный размер кода, сокращение бесполезных задержек в работе микроконтроллера, высокая скорость загрузки скетчей с компьютера.

Размещайте файлы bootloaders в программе Arduino в соответствии с тем, что написано в файле hardware/arduino/boards.txt. Например, для устройства ATmega8 (optiboot 16MHz ext) файл загрузчика необходимо поместить в папку hardware/arduino/bootloaders/optiboot50 и имя файла должно быть optiboot_atmega8.hex

Очень давно хотел собрать свою плату Arduino, смотрел на схемы, но так и не решался. Причин было несколько:

  • В моем ноутбуке отсутствует COM порт, потому версия с COM портом мне не подходит
  • USB версия использует очень дорогую микросхему FT232R

Ну вот однажды я наткнулся на статью на Хабре, где использовали конвертер на AVR вместо FT232R (схемы там нет), а так же на Zelectro аналогичную реализацию, но на микроконтроллере Atmega8. Последняя была сделана на базе японского проекта . Именно все это и вдохновило меня сделать собственную реализацию Arduino.

И так, если зайти на сайт AVR-CDC и посмотреть последние изменения (в архиве с прошивкой, на сайте нет информации) то там реализованы линии Rx Tx, а так же DTR, CTS, RTS не только на относительно дорогой ATMega8, но и на дешевой AtTiny2313. Работают последние линии только на кварце в 16 или 20 мгц. Именно на основе данного чипа я решил собрать USB — UART преобразователь.

  • Прошивка AtTiny2313 под кварц 16 мгц —
  • USB драйвер —
  • Fuse bits — HFuse: CD; LFuse: FF

Часть Arduino взята с официального сайта практически без изменений.

Плата питается как от USB так и от внешнего питания. На плате установлен стандартный для программатора AVR910 разьем для прошивки основного чипа. В моем случае это AtMega8, но можно использовать и AtMega168.

Для работы программатора AVR910 в фале конфигурации программатора..\Arduino\arduino-1.0.6\hardware\arduino\programmers.txt необходимо добавить следующие строки:

Avr910.name=avr910 avr910.protocol=avr910 avr910.communication=serial avr910.speed=115200

Выше указанный файл редактируется нормально только редактором Notepad++. В обычном Notepad он выглядит не читабельно.

Ниже привожу фото этого Arduino в сборке от Павла!

Самодельное USB Arduino с программатором

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

Похожие публикации