Как сделать схему ардуино

Добавил пользователь Дмитрий К.
Обновлено: 20.09.2024

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

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

Что такое Arduino и для чего оно нужно?

Arduino — это электронный конструктор, который позволяет любому человеку создавать разнообразные электро-механические устройства. Ардуино состоит из программной и аппаратной части. Программная часть включает в себя среду разработки (программа для написания и отладки прошивок), множество готовых и удобных библиотек, упрощенный язык программирования. Аппаратная часть включает в себя большую линейку микроконтроллеров и готовых модулей для них. Благодаря этому, работать с Arduino очень просто!

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

проекты на Arduino

проекты на Arduino

Стартовый набор Arduino

Для того что бы начать изучать Arduino необходимо обзавестись самой платой микроконтроллера и дополнительными деталями. Лучше всего приобрести стартовый набор Ардуино, но можно и самостоятельно подобрать все необходимое. Я советую выбрать набор, потому что это проще и зачастую дешевле. Вот ссылки на лучшие наборы и на отдельные детали, которые обязательно пригодятся вам для изучения:

Базовый набор ардуино для начинающих:Купить
Большой набор для обучения и первых проектов:Купить
Набор дополнительных датчиков и модулей:Купить
Ардуино Уно самая базовая и удобная модель из линейки:Купить
Беспаечная макетная плата для удобного обучения и прототипирования:Купить
Набор проводов с удобными коннекторами:Купить
Комплект светодиодов:Купить
Комплект резисторов:Купить
Кнопки:Купить
Потенциометры:Купить

Среда разработки Arduino IDE

Для написания, отладки и загрузки прошивок необходимо скачать и установить Arduino IDE. Это очень простая и удобная программа. На моем сайте я уже описывал процесс загрузки, установки и настройки среды разработки. Поэтому здесь я просто оставлю ссылки на последнюю версию программы и на статью с подробной инструкцией.

Язык программирования Ардуино

Когда у вас есть на руках плата микроконтроллера и на компьютере установлена среда разработки, вы можете приступать к написанию своих первых скетчей (прошивок). Для этого необходимо ознакомиться с языком программирования.

Для программирования Arduino используется упрощенная версия языка C++ с предопределенными функциями. Как и в других Cи-подобных языках программирования есть ряд правил написания кода. Вот самые базовые из них:

  • После каждой инструкции необходимо ставить знак точки с запятой (;)
  • Перед объявлением функции необходимо указать тип данных, возвращаемый функцией или void если функция не возвращает значение.
  • Так же необходимо указывать тип данных перед объявлением переменной.
  • Комментарии обозначаются: // Строчный и /* блочный */

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

Все прошивки для Arduino должны содержать минимум 2 функции. Это setup() и loop().

Функция setup

Функция setup() выполняется в самом начале и только 1 раз сразу после включения или перезагрузки вашего устройства. Обычно в этой функции декларируют режимы пинов, открывают необходимые протоколы связи, устанавливают соединения с дополнительными модулями и настраивают подключенные библиотеки. Если для вашей прошивки ничего подобного делать не нужно, то функция все равно должна быть объявлена. Вот стандартный пример функции setup():

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

Функция loop

Макетная плата Breadbord

Вы можете создавать простые и сложные устройства. Для удобства я советую приобрести макетную плату (Breadbord) и соединительные провода. С их помощью вам не придется паять и перепаивать провода, модули, кнопки и датчики для разных проектов и отладки. С беспаечной макетной платой разработка становится более простой, удобной и быстрой. Как работать с макетной платой я рассказывал в этом уроке. Вот список беспаечных макетных плат:

Макетная плата на 800 точек с 2 шинами питания, платой подачи питания и проводами: Купить
Большая макетная плата на 1600 точек с 4 шинами питания: Купить
Макетная плата на 800 точек с 2 шинами питания: Купить
Макетная плата на 400 точек с 2 шинами питания: Купить
Макетная плата на 170 точек: Купить
Соединительные провода 120 штук: Купить

Первый проект на Arduino

Давайте соберем первое устройство на базе Ардуино. Мы просто подключим тактовую кнопку и светодиод к ардуинке. Схема проекта выглядит так:

Управление яркостью светодиода

Управление яркостью светодиода

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

Для того что бы все работало, нам надо написать скетч. Давайте сделаем так, что бы светодиод загорался после нажатия на кнопку, а после следующего нажатия гас. Вот наш первый скетч:

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

ШИМ Arduino

Широтно-импульсная модуляция (ШИМ) — это процесс управления напряжением за счет скважности сигнала. То есть используя ШИМ мы можем плавно управлять нагрузкой. Например можно плавно изменять яркость светодиода, но это изменение яркости получается не за счет уменьшения напряжения, а за счет увеличения интервалов низкого сигнала. Принцип действия ШИМ показан на этой схеме:

Когда мы подаем ШИМ на светодиод, то он начинает быстро зажигаться и гаснуть. Человеческий глаз не способен увидеть это, так как частота слишком высока. Но при съемке на видео вы скорее всего увидите моменты когда светодиод не горит. Это случится при условии что частота кадров камеры не будет кратна частоте ШИМ.

В Arduino есть встроенный широтно-импульсный модулятор. Использовать ШИМ можно только на тех пинах, которые поддерживаются микроконтроллером. Например Arduino Uno и Nano имеют по 6 ШИМ выводов: это пины D3, D5, D6, D9, D10 и D11. В других платах пины могут отличаться. Вы можете найти описание интересующей вас платы в этом разделе.

Для использования ШИМ в Arduino есть функция analogWrite(). Она принимает в качестве аргументов номер пина и значение ШИМ от 0 до 255. 0 — это 0% заполнения высоким сигналом, а 255 это 100%. Давайте для примера напишем простой скетч. Сделаем так, что бы светодиод плавно загорался, ждал одну секунду и так же плавно угасал и так до бесконечности. Вот пример использования этой функции:

Аналоговые входы Arduino

Как мы уже знаем, цифровые пины могут быть как входом так и выходом и принимать/отдавать только 2 значения: HIGH и LOW. Аналоговые пины могут только принимать сигнал. И в отличии от цифровых входов аналоговые измеряют напряжение поступающего сигнала. В большинстве плат ардуино стоит 10 битный аналогово-цифровой преобразователь. Это значит что 0 считывается как 0 а 5 В считываются как значение 1023. То есть аналоговые входы измеряют, подаваемое на них напряжение, с точностью до 0,005 вольт. Благодаря этому мы можем подключать разнообразные датчики и резисторы (терморезисторы, фоторезисторы) и считывать аналоговый сигнал с них.

Для этих целей в Ардуино есть функция analogRead(). Для примера подключим фоторезистор к ардуино и напишем простейший скетч, в котором мы будем считывать показания и отправлять их в монитор порта. Вот так выглядит наше устройство:

Подключение фоторезистора к Ардуино

Подключение фоторезистора к Ардуино

В схеме присутствует стягивающий резистор на 10 КОм. Он нужен для того что бы избежать наводок и помех. Теперь посмотрим на скетч:

Вот так из двух простейших элементов и четырех строк кода мы сделали датчик освещенности. На базе этого устройства мы можем сделать умный светильник или ночник. Очень простое и полезное устройство.

Вот мы и рассмотрели основы работы с Arduino. Теперь вы можете сделать простейшие проекты. Что бы продолжить обучение и освоить все тонкости, я советую прочитать книги по ардуино и пройти бесплатный обучающий курс. После этого вы сможете делать самые сложные проекты, которые только сможете придумать.

19 комментариев

дело в том, что легче написать новую прошивку, чем разбираться в прошивке, а для этого надо понимать, как работает ваше устройство! т.е. надо работать вместе программист, и пользователь!
иначе никак!
илли 2 способ- изучите программирование, и пишите сами что вам надо!
поверьте- это не так сложно!

Хороший сайт. Спасибо.

Благодарен автору за полезное дело.
Помогать учиться, это самое лучшее занятие для человека.

Скачал файлы схем оригинальных версий контроллера Arduino, даташит на микросхему FT232R, распечатал статью "Ардуино хоум мэйд" (ссылка выше) и думал как это все соединить, чтобы получилось то, что я хотел найти. И получилась вот такая схема:

Схема Arduino с USB

Используемые в схеме детали:
Резисторы я использовал SMD типоразмером 0805:
- R1, R2, R4, R7 – от 300 Ом до 1 кОм (какие найдете);
- R3 – 10 кОм;
- R5, R6 – 1 кОм.

Конденсаторы:
- С2, С3, С5, С13, С8, С10, С11 – SMD (0805) номиналом 0,1 мкф;
- электролиты С1, С4, С9, С12 – я использовал по 22 мкф*50 В, мне они подошли по высоте. Номинал не особо важен, не ниже 10 мкф на напряжение не ниже 10 В, кроме С9, его напряжение должно быть больше не 20 % напряжения питания внешнего источника;
- С6, С7 – керамика по 22 пф.

Светодиоды любые (форма, габариты, цвет) на ток 15-20 мА. Диод D5 – 1N4007 тоже в SMD корпусе.
Кварц – 16 МГц.

Микросхемы:
- DA1 – L7805 в корпусе ТО220;
- DD1 – FT232RL (хорошая микра, но в большем корпусе не выпускают);
- DD2 – сам наш микроконтроллер, я использовал ATmega168, можно ATmega8, думаю, что и ATmega328 тоже подойдет, главное загрузить соответствующий загрузчик (bootloader).

С печатной платой (ПП) были некоторые проблемы, но мне помогла картинка ПП в статье. Все распиновки и расстояния разъемов совпадают с оригинальной платой ардуино, можно будет подсоединять различные arduino-совместимые платы расширения.

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

Фото готового контроллера:

Плата Arduino

Плата Arduino

Расположение некоторых деталей на фото платы не совпадает с файлом ПП, по причине совершенствования на момент создания статьи. Файл ПП в программе Sprint-Layout 5.0 прилагается.

Правильно собранный и прошитый контроллер начинает работать сразу. Отмечу – что после первой (и возможно последующей) загрузки бутлоадера, начинает моргать с небольшой частотой светодиод D3.

Прошить бутлоадер готового устройства несложно. Самая сложность заключается в наличие программатора. Поскольку я имел опыт программировать микроконтроллеры, то у меня уже был собран программатор Prottoss AVR910. Лошадка рабочая, автору 5 из 5! Далее подключаем программатор к плате ардуино, открываем программу для программирования микроконтроллеров AVR (я использовал CodeVisionAVR), открываем окно прошивки микроконтроллера, нажимаем load flash, находим наш (для ATmega168) файл прошивки в скаченном дистрибутиве «…arduino-1.0.1\hardware\arduino\bootloaders\atmega\ ATmegaBOOT_168_diecimila.hex. Далее необходимо выставить lock и fuse биты так, как показано на рисунке:

Фьюз биты

Если же у Вас присутствует проблема "яйца и курицы", то я посоветую собрать вот этот программатор (сам его не собирал, но думаю вешь хорошая). Или погуглить интернет на тему AVRISP-mkII. Еще вложу архив с информацией по этому программатору с файлами и описанием.

Все возникшие вопросы присылайте в личку.
Плату контроллера разработал и успешно использует ростовский радиолюбитель Ананьев Валерий. Логин на сайте: kaznachej


В сегодняшней статье, поговорим о том, как изготовить самодельную плату Arduino своими руками. На МозгоЧинах уже выкладывалась похожая статья, кто заинтересовался прошу сюда. С практической точки зрения – проще купить готовую плату и не заморачиваться, но навыки, полученные при изготовлении данной поделки, в дальнейшем могут пригодиться.



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


Радиодетали:

  • ATmega328;
  • 2 электролитических конденсатора ёмкостью 10 uf (микрофарад);
  • 2 конденсатора в круглом керамическом корпусе ёмкостью 22 pf (пикофарада);
  • регулятор напряжения L7805;
  • кварцевый резонатор 16 MГц;
  • тактовая кнопка;
  • светодиоды;
  • панелька для микросхемы;
  • регулятор напряжения LM1117T-3.3 (по желанию);
  • 2 танталовых конденсатора ёмкостью 10 uf (микрофарад) (по желанию).

Инструменты:


Загрузчик необходим для загрузки кода с Arduino IDE в микросхему.


Для этого шага будет нужна плата Arduino UNO. Следуя схеме, припаяем радиодетали на монтажную плату. На данной этапе, нет необходимости включать в схему регуляторы напряжения, так как Arduino обеспечит необходимое напряжение.

Настроим плату Аrduino UNO, как ISP. Это нужно сделать для того, чтобы плата прошила микроконтроллер ATmega, а не саму себя. Не подключайте ATmega, пока идёт загрузка кода.


  • Подключим Arduino к ПК;
  • Откроем Arduino IDE;
  • Откроем > Примеры > Arduino ISP;
  • Загрузим прошивку.


После того, как все элементы схемы соединены воедино, открываем IDE.

  • Выбираем Arduino328 из Tools > Board
  • Выбираем Arduino, как ISP из Tools > Programmer
  • Выбираем Burn Bootloader


После прошивки загрузчика, завершим изготовлении платы. Регулятор напряжения L7805 – это важная деталь схемы. Распиновка следующая (смотрим на лицевую сторону): крайняя левая нога – вход, центральная нога – земля, а крайняя правая нога – выход.


Следуя схеме присоединим регулятор напряжения к arduino.



Данный шаг выполняется по желанию. Регулятор используется только для питания внешних шилдов/модулей, которым нужно 3.3В.



Как только завершим сбоку, пришло время загрузить первый код. Для прошивки удалим родной микроконтроллер ATmega 328 с платы UNO и заменим его новой микрухой. Как только загрузим код, поменяем микросхемы местами.

ОНЛАЙН ЭМУЛЯТОР СХЕМ НА ARDUINO

ОНЛАЙН ЭМУЛЯТОР СХЕМ НА ARDUINO

ОНЛАЙН ЭМУЛЯТОР СХЕМ НА ARDUINO

Те, кто знаком с Arduino, сразу узнают, что по умолчанию представлен программный код учебной программы Blink. Данная программа входит в число стандартных примеров прилагаемых к среде разработки Arduino IDE (examples\01.Basics\Blink ).

Естественно в специализированной среде разработки Arduino IDE этот код записан на языке программирования Wiring, созданном на основе языка C++. Среду разработки Arduino IDE можно свободно скачать с сайте разработчиков аппаратной платформы Arduino [5]. В данном эмуляторе используется блочное программирование, впрочем, при знании основ программирования разобраться с данным форматом записи сравнительно несложно.

Сейчас программа Blink управляет 13 цифровым портом Arduino. На 1000 мс на этот порт подается высокий логический уровень, а затем на то же самое время низкий логический уровень. К 13 цифровому порту подключен светодиод L встроенный в плату Arduino. Запустив моделирование работы платы Arduino с данной программой можно наблюдать, как с периодом в 2 с мигает светодиод L.

ОНЛАЙН ЭМУЛЯТОР СХЕМ НА ARDUINO

Подключим светодиод к порту 12 платы Arduino. На плате все порты пронумерованы. Добавочное сопротивление резистора следует установить в диапазоне 220 Ом – 510 Ом.

ОНЛАЙН ЭМУЛЯТОР СХЕМ НА ARDUINO

ОНЛАЙН ЭМУЛЯТОР СХЕМ НА ARDUINO

Аналогично дописываем часть программы, которая на 1 с гасит светодиод.

ОНЛАЙН ЭМУЛЯТОР СХЕМ НА ARDUINO

Написанный код буде повторяться в бесконечном цикле. Здесь это не очень хорошо визуализировано, но на самом деле, на языке Wiring, мы сейчас написали основную функция loop. Она представляет собой тело программы – это бесконечный цикл, который выполняется раз за разом, в нем опрашиваются внешние датчики, отдаются команды исполнительным устройствам, производятся вычисления, вызываются другие функции и т. д.

Серьезным достоинством данного эмулятора является возможность экспортировать полученный код. Для этого надо просто нажать на соответствующую кнопку со стрелкой.

ОНЛАЙН ЭМУЛЯТОР СХЕМ НА ARDUINO

Если затем, открыть код в Arduino IDE, мы увидим программу готовую к загрузке на реальную плату.

ОНЛАЙН ЭМУЛЯТОР СХЕМ НА ARDUINO

Мы видим функции setup в, которой всего одна строчка, которая означает, что при первоначальной загрузке программы цифровой порт 12 устанавливается в режим вывода информации. За ней располагается основное тело программы в функции loop.

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

Литература и ссылки

Обзор подготовлен специально для сайта Электрические схемы. Автор материала – Denev.

Читайте также: