Программирование AVR veroduino: самодельный дешевый Arduino Mon, June 26 2017  

Поделиться

нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


veroduino: самодельный дешевый Arduino Печать
Добавил(а) microsin   

Можно сделать клон Arduino на простейшей отладочной плате с отверстиями (stripboard, veroboard), который называется veroduino. Вместе с переходником USB - COM TTL он будет работать точно так же, как и дорогой фирменный Arduino.

Как только проект проходит стадию отладки и опытного образца, то уже не нужно использовать полную версию Arduino. Даже с учетом падающей стоимости Arduino-совместимых плат, таких как Arduino Nano и Arduino Mini, часто бывает излишне дорого использовать заводскую плату Arduino. К счастью, можно очень просто создать собственную схему на микроконтроллере ATmega, которая будет работать как аналог Arduino, и она обойдется очень дешево. В память микроконтроллера ATmega нужно прошить Arduino-загрузчик, и после этого Ваша плата будет работать в среде Arduino IDE точно так же, как и оригинальный Arduino.

veroduino-main-view1 veroduino-main-view2

[Используемые детали для veroduino]

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

Наименование Шт. Цена, руб.
Кусочек stripboard/veroboard 1 ?
Atmel ATmega328P-PU 1 120
Сокет 28 pin DIL 1 17
Кварц 16 MHz, усеченный корпус 1 6
Линейный стабилизатор LM7805 1 6
Электролитический конденсатор 100uF 25V 2 3
Конденсатор 22pF керамический дисковый 2 0.5
Конденсатор 100nF керамический дисковый 1 0.6
Диод 1N4001 (ставить необязательно) 1 0.6
Кнопка (ставить необязательно) 1 0.8
Резистор 10K 0.25W (ставить необязательно) 1 0.2
Коннектор папа 6 pin (ставить необязательно) 1 0.3
Медный одножильный луженый провод ?

Плата stripboard (veroboard) представляет из себя обычно просто кусок односторонне фольгированного текстолита, в котором насверлены отверстия 0.9 мм со стандартным шагом 2.54 мм (100 mil). Фольга стрипбоард разделена на прямолинейные дорожки, из которых путем разрезания полосок и установок перемычек формируется электронная схема. Имеется даже специальное программное обеспечение, которое позволяет разработать конфигурацию монтажа схемы на стрипбоард [6]. Платку стрипбоард можно легко сделать самому с помощью микродрели (дремеля) и самодельного резака из ножовочного полотна, либо купить готовую в магазине или на радиорынке.

stripboard-veroboard1 stripboard-veroboard2

Схему можно слегка упростить/урезать, если кое-что на ней Вам не нужно. Например, если не нужна возможность программирования прямо на плате, то тогда можно выкинуть из схемы соответствующий 6 pin коннектор (JP1 FTDI) и конденсатор на 100 нФ. Если Вам не нужна кнопка сброса и сброс от FTDI, то можно выкинуть также и резистор на 10 кОм. Может быть также не нужен диод 1N4001, который защищает от ошибочной обратной полярности питания. Часто можно выбросить из схемы конденсаторы на 22 пФ, которые подключены к кварцу и на землю - кварцевый генератор микроконтроллера заработает и без них, однако выбрасывать эти конденсаторы в общем случае не рекомендуется.

Частота используемого кварцевого резонатора может отличаться от 16 МГц, однако для того, чтобы правильно работал бутлоадер, он должен быть скомпилирован на нужную частоту кварца. Кроме того, чтобы точно вычислялись интервалы времени в скетчах (программах микроконтроллера) Arduino IDE, нужно правильно выставить частоту кварцевого резонатора в проекте. В качестве микроконтроллера можно использовать либо ATmega168A, ATmega168PA (у него память Flash/EEPROM/SRAM в два раза меньше по размеру, чем у ATmega328P) либо ATmega328P (что предпочтительнее, так как часть FLASH памяти программ будет занята загрузчиком Arduino).

[Сборка veroduino]

На рис. 2 показано размещение на stripboard деталей нашего Arduino, и нужные соединения. Для монтажа Вам понадобится стрипбоард 20 X 19 отверстий (20 отверстий на каждой из 19 полосок фольги). Если не нужна кнопка для сброса и коннектор FTDI для программирования через среду Arduino IDE, то можно обойтись платой stripboard меньшего размера, 14 X 19 отверстий (14 отверстий на каждой из 19 полосок фольги).

veroduino-sch

Рис. 1 - принципиальная схема veroduino

veroduino-stripboard-layout

Рис. 2 - монтажная схема veroduino

Красными крестиками помечены места, где нужно разрезать полоски фольги на стрипбоард. Черными перемычками показана шина земли (GND), а красными перемычками шина питания VCC (+5V). Разрежьте монтажным ножом дорожки на стрипбоард в местах, помеченных красными крестиками, и сделайте монтаж в соответствии с рис. 2. Если Вы не дружите с паяльником, и не знаете, как делать монтаж на стрипбоард, то почитайте [6]. Убедитесь, что установленный сокет для микроконтроллера ориентирован правильно, его выемка, соответствующая 1 выводу, должна быть сверху, напротив стабилизатора LM7805. Правильно установите диод - его конец, помеченный полоской (катод) должен быть сверху (ориентирован к краю платы). Соблюдайте также полярность электролитических конденсаторов 100 мкФ. Положительный вывод конденсатора 100 мкФ (на рис. 2 помечен символом +) обычно не имеет метки на бочонке конденсатора, а отрицательный вывод помечен белой полоской. Кнопку сброса установите так, чтобы при нажатии она замыкала верхнюю и нижнюю полоски фольги. Другие детали можно устанавливать в любой полярности и ориентации.

[Подключение питания к veroduino]

Вы можете подключить плюс источника постоянного напряжения 7..9V к точке VIN, а отрицательный к точке GND (см. рис. 2). Можно использовать либо стабилизированный, либо нестабилизированный источник питания. В качестве нестабилизированного источника питания может служить трансформатор, диодный мост и конденсатор на 1000..2200 мкФ 16 вольт. Можно также использовать напряжение выше 9V (например, 12V), но тогда для стабилизатора LM7805 может понадобиться охлаждающий радиатор. Можно также подать питание через переходник FTDI USB-TTL RS232 (от шины 5V USB), но тогда нужно убедиться, что Вы отключили от VIN другой источник питания. Если хотите иметь подключенными одновременно и внешнее питание на VIN, и переходник FTDI, то нужно убрать синюю перемычку возле коннектора FTDI (см. рис. 2).

[Подключение к портам I/O микроконтроллера]

Цифровые и аналоговые линии показаны на рис. 2, это сигналы D0..D13 и A0..A5 соответственно. Имейте в виду, что расположение физическое расположение коннекторов и разводка сигналов отличается от оригинального Arduino, однако их все равно можно использовать в скетчах Arduino IDE. В списке деталей эти коннекторы не указаны, так как в готовом проекте Вы можете захотеть напрямую подключиться (припаять нужные провода) прямо к ножкам микроконтроллера (или к соответствующим полоскам фольги stripboard).

[Arduino bootloader, FTDI connector]

Чтобы платка veroduino полноценно работала в среде Arduino IDE как оригинальная плата Arduino, (т. е. чтобы загружались в платку программы-скетчи, можно было видеть отладочный вывод через последовательный порт), Вам понадобятся две вещи:

1. Прошить в память микроконтроллера бутлоадер Arduino (загрузчик Arduino) [5].
2. Подключить к 6-pin коннектору FTDI переходник, который преобразовывает TTL сигналы (с уровнями 5 вольт) RXD и TXD последовательного порта микроконтроллера в виртуальный COM-порт на компьютере (через подключение по USB, класс USB CDC).

Для того, чтобы прошить бутлоадер в память Вашего микроконтроллера ATmega328P (или ATmega168), понадобится программатор AVR [4]. В качестве программатора может также работать готовая платка Arduino с соответствующим шилдом. Готовые прошивки бутлоадера на разные микроконтроллеры можно взять в архиве [5] (см. в архиве папку Arduino-bootloader, файлы с расширением HEX). Имейте в виду, что кроме бутлоадера, в память микроконтроллера нужно прошить также правильные значения фьюзов, так как необходимо обеспечить запуск кода бутлоадера при сбросе микроконтроллера, а также нужна работа тактового генератора от кварцевого резонатора. Фьюзы также прописываются с помощью программатора, нужные значения фьюзов можно посмотреть в файле readme.txt архива. Если у Вас нет программатора, и Вам его лень делать самому, можно попросить запрограммировать микроконтроллер на радиорынке.

Переходник USB TTL COM-port (он подключается с одной стороны к 6-pin коннектору FTDI, а с другой стороны к компьютеру по USB) лучше купить готовый. Обычно такой переходник сделан по простейшей схеме на основе чипа FT232 (компания FTDI) или CP210x (компания Silicon Labs). Драйвер для переходника можно скачать с сайта соответствующей компании или взять в архиве [5]. Кроме того, в качестве такого переходника можно использовать макетную плату AVR-USB162 или AVR-USB162MU [3]. Хорошие переходники USB to TTL Serial Cable FTDI (или на чипе CP210x) можно купить на eBay, dealextreme или aliexpress [7], есть даже предложения с бесплатной доставкой. При покупке выбирайте 5V версию (иногда бывают версии на 3.3V). Самый лучший вариант – когда можно выбрать перемычкой рабочие уровни порта TTL RS-232 (3.3V или 5V). Если уровни сигналов на переходнике USB to TTL и на veroduino не совпадают, то понадобятся последовательно включенные резисторы номиналом около 1…2 кОм.

USB 2 0 To Ttl Uart 5pin CP2102 Module Serial Converter USB 2 0 To Ttl Uart 6pin CP2102 Module Serial Converter USB2.0-TTL-UART-6PIN-CP2102 usb-to-uart-cp2102-rs232-ttl-6pin

[Программирование veroduino в среде разработки Arduino IDE]

Запустите Arduino IDE, подключите платку veroduino к компьютеру через переходник FTDI, проверьте, что Вы правильно подали питание на veroduino. Нажмите кнопку сброса veroduino, и загрузите скетч в память микроконтроллера стандартным образом (для загрузки скетча используется бутлоадер Arduino, заранее прописанный в память микроконтроллера).

[Ссылки]

1. Veroduino site:nathan.chantrell.net - материал на английском языке, который взят за основу статьи.
3. AVR: отладочный вывод через UART (RS232 debug).
4. Программаторы для AVR.
5. Arduino bootloader source code (исходный код различных бутлоадеров Arduino), готовые прошивки бутлоадеров Arduino, драйверы для переходников FTDI (VCP, Virtual COM Port на основе чипов FT232 и CP210x).
6. Что такое макетная плата stripboard, как её использовать.
7. USB to TTL 5V Serial Cable site:ebay.co.uk (FTDI-FT232 for Arduino UNO mini duemilanove Mega), USB 2.0 to TTL UART 6PIN CP2102 Module Serial Connector Converter Adaptor Cable site:ebay.co.uk, CP2102 USB to TTL Converter Module - Red site:dx.com, 1Mbps USB To TTL/COM Converter Module buildin-in CP2102-10000066 site:aliexpress.com.

 

Комментарии  

 
0 #7 dizzel 16.07.2016 19:09
Извините за нубский вопрос. Я сделал плату как у вас, и не понимаю, что мне подключить к выводам FTDI, чтобы залить бутлоадер. Есть USB-2-TTL с распиновкой 3V3, TXD, RXD, GND, 5V. И есть USBASP-программатор с пинами VCC, MOSI, NC, RST, SCK, MISO, GND. Что из этого подключать и как не могу понять? Помогите разобраться, я новичок.

microsin: загрузчик (bootloader) в память микроконтроллер а AVR можно залить только с помощью ISP-программатора, иначе никак. Переходник USB-2-TTL-UART тут ничем не поможет. Подключите программатор USBasp к интерфейсу ISP микроконтроллер а (провода VCC, MOSI, RST, SCK, MISO, GND), и запишите загрузчик.
Цитировать
 
 
0 #6 OKF 03.01.2016 05:20
Цитирую Александр:
Цитирую Александр:
Хм-м, но разве по стандартам Arduino автосброс не должен осуществляться другим сигналом, а именно "DTR"?!

Случайно выяснилось, что я прав только отчасти. Авторы программы "Arduino-IDE" по неизвестной науке причине в самом деле выбрали для осуществления рестарта сигнал "DTR", а не "RST", как это принято во всем цивилизованном мире. Однако, по многочисленным просьбам потребителей (а если точнее, то осыпаемые их нецензурной бранью :-) ), они предположительн о с Arduino ver.018 параллельно генерируют на разъеме COM-порта и тот, и другой сигналы. Разумное решение, теперь с их средой разработки способны работать как фирменные платы, так и самодельные сборки на дешевых китайских переходниках USB/FTDI - но вот почему так не было сделано с самого начала?!

Какой ещё RST! RTS - request to send!
Цитировать
 
 
0 #5 Олег 22.10.2015 20:03
Цитирую Олег:
microsin: верно и там, и там =). Дело в том, что в общем случае (когда нет каких-то специфических требований к фильтрации помех и пульсаций) совершенно не имеет значения, какие номиналы конденсаторов ставить в этом месте. Можно даже и 1 мкф поставить, и 500 мкф - все равно все будет отлично работать. Так что не забивайте себе голову, ставьте ЛЮБЫЕ имеющиеся конденсаторы.

Спасибо за исчерпывающий ответ, интересный сайт у Вас.
Цитировать
 
 
+1 #4 Олег 19.10.2015 21:35
Не могу понять, на принципиальной схеме между 7805 нарисован номинал конденсатора 10 мкф, в описании номиналов на сборку и на рисунке идут номиналы 100 мкф 25В... Поясните, где верно?

microsin: верно и там, и там =). Дело в том, что в общем случае (когда нет каких-то специфических требований к фильтрации помех и пульсаций) совершенно не имеет значения, какие номиналы конденсаторов ставить в этом месте. Можно даже и 1 мкф поставить, и 500 мкф - все равно все будет отлично работать. Так что не забивайте себе голову, ставьте ЛЮБЫЕ имеющиеся конденсаторы.
Цитировать
 
 
0 #3 Мадияр 04.02.2014 12:59
Класс
Цитировать
 
 
0 #2 Александр 16.05.2013 09:41
Цитирую Александр:
Хм-м, но разве по стандартам Arduino автосброс не должен осуществляться другим сигналом, а именно "DTR"?!

Случайно выяснилось, что я прав только отчасти. Авторы программы "Arduino-IDE" по неизвестной науке причине в самом деле выбрали для осуществления рестарта сигнал "DTR", а не "RST", как это принято во всем цивилизованном мире. Однако, по многочисленным просьбам потребителей (а если точнее, то осыпаемые их нецензурной бранью :-) ), они предположительн о с Arduino ver.018 параллельно генерируют на разъеме COM-порта и тот, и другой сигналы. Разумное решение, теперь с их средой разработки способны работать как фирменные платы, так и самодельные сборки на дешевых китайских переходниках USB/FTDI - но вот почему так не было сделано с самого начала?!
Цитировать
 
 
0 #1 Александр 16.04.2013 14:01
На рис.1 (схема "Veroduino") на конт. 6 разъема "JP1 FTDI" подан сигнал RST, который далее через С5 идет на вход RESET процессорной микросхемы. Хм-м, но разве по стандартам Arduino автосброс не должен осуществляться другим сигналом, а именно DTR ?! Кстати, на подобных мини-платах адапторов "USB-FTDI" иногда даже стоит перемычка, позволяющая выбирать, какой сигнал - RST или DTR - будет подан на шестой контакт его выходного разъема.
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Top of Page