Arduino uno: распиновка, схема подключения и программирование

Моделирование событий

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

Arduino uno: распиновка, схема подключения и программирование

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

Еще одно большое преимущество симуляторов Ардуино заключается в том, что он поддерживает построчную отладку, поэтому пользователь точно знает, где и в какой строке он или она сделал что-то не так. Симуляторы существуют в различных формах и разработаны для совместимости с основными операционными системами — Windows, Linux и Mac OS. Поэтому, чтобы упростить поиск отличного симулятора Arduino, созданного для экосистемы вашего компьютера мы составили список самых популярных программ.

Объяснение скетча для мастера

Основная часть кода как для ведущего, так и для ведомых устройств — это то, что я называю логическим кодом мигания. Чтобы мигнуть светодиодом 13 на Ардуино, мы должны сделать следующее:

  • Добавим глобальные переменные , , и в верхней части нашего скетча
  • Инициализируйте значения глобальных переменных внутри функции
  • Инициализируйте контакт 13 Arduino как выходной контакт внутри с помощью
  • Добавим код логики мигания внутри функции

Библиотека Wire

Для использования встроенного интерфейса I2C Arduino мы будем использовать библиотеку Wire.

Эта библиотека поставляется в стандартной комплектации с Arduino IDE. Как и в других библиотеках Arduino, библиотека Wire имеет готовые I2C функции, чтобы сделать кодирование проще для нас.

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

После включения библиотеки мы можем использовать встроенные функции библиотеки.

Первое, что нужно сделать, это подключить устройство к шине I2C. Синтаксис для этого — . Адрес является необязательным для мастер-устройств. Итак, для эскиза мастера Arduino, мы просто добавляем код внутри .

Теперь мы переходим к циклу . Наш код заставит Arduino прочитать значение потенциометра, подключенного к контакту A0, и сохранить его в переменной .

Отправка данных

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

Wire.beginTransmission()

Мы инициируем команду отправки, сначала информируя устройства на шине о том, что мы будем отправлять данные.

Для этого мы вызываем функцию . Адрес — это I2C-адрес ведомого прибора, который будет принимать данные. Эта функция делает две вещи:

  1. Она информирует шину о том, что мы будем посылать данные.
  2. Он информирует предполагаемого получателя о том, что данные готовы к получению.

Wire.endTransmission()

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

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

Wire.requestFrom()

Полным синтаксисом запроса данных от ведомого устройства является Wire.requestFrom(адрес, количество).

Адрес — это I2C-адрес ведомого устройства, от которого мы должны получить данные, а количество — это количество байтов, которое нам нужно. Для нашего проекта, адрес ведомого устройства 0x08 и нам нужен один байт.

Внутри мы используем для запроса одного байта данных от ведомого устройства 0x08.

После выдачи команды , за ней должна следовать команда чтения для получения ответа от шины I2C.

Write.available()

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

Wire.read();

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

Подключение вашей платы Arduino к компьютеру

После того как вы установили Arduino IDE на свой компьютер следующим логичным шагом будет подключение платы Arduino UNO к компьютеру. Чтобы сделать это просто используйте кабель для программирования (синего цвета) и соедините его с платой Arduino и USB портом вашего компьютера.

Синий кабель для программирования может выполнять следующие три функции:

  1. Он запитывает плату Arduino UNO, то есть чтобы обеспечить выполнение программ на ней необходимо просто запитать ее с помощью USB кабеля.
  2. Через него программируется микроконтроллер ATmega328, находящийся на плате Arduino UNO. То есть код программы пересылается из компьютера в микроконтроллер именно по этому кабелю.
  3. Он может функционировать в качестве кабеля для последовательной связи, то есть с его помощью можно передавать данные с Arduino UNO в компьютер – это полезно для целей отладки программы.

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

Поскольку вы подключаете плату Arduino в первый раз к компьютеру необходимо некоторое время чтобы драйвера для нее успешно установились. Чтобы проверить правильно ли все установилось и определилось откройте «Диспетчер устройств (Device manager)» на вашем компьютере.

В диспетчере устройств откройте опцию «Порты» “Ports (COM & LPT)”, кликните на ней и посмотрите правильно ли отображается там ваша плата.

При этом стоит отметить, что не стоит обращать внимание на то, какой номер порта отобразился у вашей платы Arduino – он может, к примеру, выглядеть как CCH450 или что то подобное. Этот номер порта просто определяется производителем платы и больше ни на что не влияет

Если вы не можете в диспетчере устройств найти опцию “Ports (COM & LPT)”, то это означает, что ваша плата не корректно определилась компьютером. В большинстве случает это означает проблему с драйверами – по какой то причине они автоматически не установились для вашей платы. В этом случае вы должны будете вручную установить необходимые драйверы.

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

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

Почему analogRead() возвращает значение от 0 до 1023?

Это связано с разрешением АЦП. Разрешение (в рамках этой статьи) — это степень, в которой что-то может быть представлено численно. Чем выше разрешение, тем выше точность, с которой что-то можно представить. Мы измеряем разрешение в терминах количества бит разрешения.

Arduino uno: распиновка, схема подключения и программирование

Например, 1-битное разрешение позволит использовать только два (два в степени одного) значения — ноль и единицу. 2-битное разрешение позволило бы получить четыре (два в степени двух) значения — ноль, один, два и три. Если мы попытаемся измерить диапазон в пять вольт с двухбитным разрешением, а измеренное напряжение будет равно четырем вольтам, наш АЦП вернет числовое значение 3 — при падении четырех вольт между 3,75 и 5В. Проще представить это с изображением выше.

Таким образом, в нашем примере АЦП с 2-битным разрешением может представлять напряжение только с четырьмя возможными результирующими значениями. Если входное напряжение падает между 0 и 1,25, АЦП возвращает цифру 0; если напряжение падает между 1,25 и 2,5, АЦП возвращает числовое значение 1. И так далее. С диапазоном АЦП нашего Arduino от 0 до 1023 — у нас есть 1024 возможных значения — или от 2 до 10, поэтому у наших Arduino есть АЦП с 10-битным разрешением.

Аппаратная часть Arduino

Существует множество версий этого микроконтроллера. Они отличаются друг от друга размерами, фирмой производителем, частотой процессора, количеством встроенной памяти, количеством контактов вывода/ввода. Так например есть самая популярная ардуинка — Arduino UNO.

Она подходит практически для всех целей, в том числе и для освоения микроконтроллеров. Есть более мощная версия Arduino MEGA, обладающая большей тактовой частотой процессора, увеличенной памятью, бОльшим количеством контактов и более внушительным размером.

Есть и более маленькие версии такие как Arduino Mini и Arduino Pro.

Описание самых популярных плат вы найдете на странице «Платы»

Что можно подключить к Arduino

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

Переферийные устройства

  • Кнопки, переключатели, сенсорные панели
  • Светодиоды
  • Динамики и микрофоны
  • Коллекторные, безколлекторные и шаговые электродвигатели
  • Сервоприводы
  • ЖК и LCD дисплеи.
  • Устройства считывающие радиометки RFID и NFC
  • Ультразвуковые и лазерные датчики расстояния
  • Модули Ethernet, WiFi и Bluetooth
  • Кардридеры SD
  • Модули GSM для совершения звонков и приема/отправки SMS
  • GPS для получения точных координат местоположения

Датчики

  • Освещенности
  • Магнитного поля
  • Температуры
  • Влажности воздуха и почвы
  • Уровня шума
  • Вибрации
  • Огня и дыма
  • Электронные компасы, гироскопы и акселерометры для определения положения в пространстве.

Датчики для Arduino

О плате

Ардуино Нано — это аналог Arduino Uno, которая также работает на чипе ATmega328P, но отличается формфактором платы, которая в 2-2,5 раза меньше, чем Уно (53 х 69 мм). Размеры подобны пачке сигарет, и позволяют легко собирать сложные схемы навесным монтажом, но после стадии создания макета идёт сборка действующих экземпляров, а для этого лучше подходит как раз Нано.

Размер Arduino Nano: 19 x 43 мм

Сравнение плат Arduino Uno и Arduino Nano

Отличие такой миниатюрной платы, заключается в отсутствии вынесенного гнезда для внешнего питания, но вместо него с легкостью можно подключиться напрямую к пинам. В плате используется чип FTDI FT232RL для USB-Serial преобразования и примененяется mini-USB кабель для связи с ардуино вместо стандартного. Связь с различными устройствами обеспечивают UART, I2C и SPI интерфейсы.

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

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

Смотрите по теме: Индикатор уровня воды c помощью Arduino Nano

Проекты на Arduino: что можно сделать

Рассмотрим несколько оригинальных идей, которые можно реализовать на Arduino. Помимо самой схемы, вам могут понадобиться дополнительные детали, которые выгоднее всего закупать на AliExpress.

Регулятор температуры в доме

Реализовать такой проект можно с использованием нескольких плат Arduino Nano и одной Arduino Uno или Mega, которая будет выступать в роли базы. Связь между модулями можно реализовать с помощью NRF24L01 – модуля радиосвязи, который дает возможность объединять до 6 плат.

В одном корпусе необходимо собрать Arduino Nano, соединенные с датчиками влажности и температуры DHT22, а также модулем NRF24L01. Источником питания может выступать обычная батарейка. Несколько таких устройств необходимо разместить по всем помещениям в доме.

Показатели с Arduino Nano будут передаваться на базу, в роли которой выступает Arduino Mega или Uno. К ней также необходимо присоединить приемник сигнала NRF24L01, источник питания и дисплей LCD для отображения текстовой информации. Располагать «базу» необходимо в непосредственной близости от системы отопления. Принимая и обрабатывая поступающие данные о влажности и температуре, база будет передавать системе отопления команды и повышении или понижении температуры.

ЧПУ-станок

Эта идея является одной из самых сложных в реализации. С помощью Arduino Mega вы сможете реализовать не только ЧПУ-станок, но и 3D принтер. Помимо самой платы, вам необходимы будут драйверы двигателей L298N, а также сами двигатели. Остальная часть работы – это рама и разработка программного кода.

Smart-теплица

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

Используя всего одну плату Arduino Mega и контроллер DHT22, вы сможете фиксировать и выводить на экран информацию о температуре в теплице, а также передавать команды на запуск полива, управление моторами для открытия и закрытия дверей.

Роботы

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

Например, с помощью ультразвукового дальномера HC-SR04 ваш робот сможет фиксировать расстояние до препятствий и огибать их при движении. Применив драйвер двигателей L293D, вы получите в свое распоряжение 3 сервопривода и 4 двигателя. С помощью модуля HC-06 у вас появится возможность управлять своим детищем по Bluetooth через смартфон.

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

Скетч

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

Сначала, мы устанавливаем режим контакта 8 (кнопка) в , режим контакта 13 (светодиод) в и устанавливаем начальное состояние контакта 13 в состояние (светодиод выключен).

Как всегда, Arduino позволяет нам легко использовать встроенное оборудование UART с помощью объекта serial. Последовательный serial объект имеет необходимые функции для простого использования UART-интерфейса Arduino.

Serial.begin()

Для связи через UART-интерфейс необходимо сначала его настроить. Самый простой способ настроить UART Arduino — это использовать функцию . Параметр («Скорость») — это скорость передачи данных, с которой мы хотим запустить UART. С помощью этой функции остальные параметры UART будут установлены на значения по умолчанию:

  • Data length = 8 (длина данных)
  • Parity bit = 1 (бит четности)
  • Number of Stop Bits = None (количество стоп-битов = нет)

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

Нижеприведенный код добавляет внутри для инициализации Arduino Uno UART со скоростью 9600 бит/с и другими параметрами, установленными по умолчанию.

Следующая часть кода — это чтение и сохранение значения, полученного из последовательного интерфейса. Для этого мы будем использовать функцию вместе с оператором , чтобы проверить, не получены ли данные. Затем мы вызовем для получения одного байта полученных данных и сохраним значение в переменную . Значение управляет включением/выключением встроенного светодиода.

Serial.available()

Для проверки наличия данных, ожидающих чтения в буфере UART (или в последовательном интерфейсе), воспользуемся функцией . возвращает количество байт, ожидающих чтения в буфере.

Serial.read()

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

Serial.write()

Для отправки данных через контакты Arduino TX0 мы будем использовать функцию . Параметр — это байт (или серия байтов), который будет отправлен.

В нашем скетче мы будем посылать значение в зависимости от состояния контакта 8. Мы отправим значение char ‘1’, если пин 8 HIGH, или значение char ‘0’, если пин 8 LOW.

Самые популярные Ардуино-проекты

Для начала рассмотрим самые популярные Аrduino-projects:

  1. MIDI-контроллер – самый простой из популярных проектов Ардуино. MIDI-контроллеры – отличный способ управлять различными звуками на вашем компьютере с использованием физического оборудования. Это довольно старая технология, и вы можете купить всевозможные охлаждающие MIDI-контроллеры практически в любом музыкальном магазине. Но если вы не хотите покупать MIDI-контроллер, вы можете сделать свой собственный с Arduino. Как только вы его создадите, вы сможете контролировать все свои удары, звуковые сигналы и переходы через USB.
  2. Датчик Ambilight на ЖК-дисплей (см. фото выше). Добавление небольшого количества подсветки на ваш ЖК-дисплей – отличный способ сделать просмотр фильмов немного более захватывающим. Конечный результат – это система просмотра фильмов с завораживающими эффектами.
  3. Управление устройствами высокого напряжения с использованием Arduino. В конце проекта вы сможете управлять своими бытовыми приборами, такими как светодиод, вентилятор, лампочка и так далее. Вы можете отрегулировать время включения и выключения этих приборов. В этом проекте используется один из самых популярных модулей, то есть 2-канальный релейный модуль, который широко используется для управления высоковольтными устройствами с задействованием сигналов низкого напряжения. Итак, в этом проекте вы узнаете, как использовать 2-канальный релейный модуль с Arduino и его схемой.
  4. Датчик температуры Ардуино. Схема проекта довольно проста. Основная цель оборудования – измерить значение температуры окружающего пространства, а затем распечатать его на ЖК-дисплее, используя Arduino и термистор. Термистор – это тип переменного резистора, который изменяет его сопротивление в соответствии с температурой окружающей среды. Так что да, вы можете сделать это, как работы LDR (Light Dependent Resistor) с одной разницей. В то время, как LDR меняет свое сопротивление в соответствии с интенсивностью света, сопротивление термистора зависит от температуры окружающей среды.

Компания

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

История

История проекта начинается с курсов человеко-машинного интерфейса под брендом Interaction Design Institute Ivrea (англ.)русск., существовавших в начале 2000-х годов в городке Ивреа в Италии. Для обучения использовались модули под брендом BASIC Stamp (англ.)русск., стоившие около 50 USD. В 2003 году Эрнандо Барраган (Hernando Barragán) в рамках учебной работы создает первоначальную версию новой программно-аппаратной платформы Wiring (англ.)русск.. Целью проекта было создание дешевой и простой среды для начального обучения программированию. В том же году Массимо Банци, Девид Меллис и Девид Куартиллье делают форк Wiring, назвав его Arduino.

Первоначальная команда Ардуино состояла из Массимо Банци, Девида Куартиллье, Тома Иго, Джанлука Мартино и Девида Меллиса. В начале 2008 года пять соучредителей проекта Arduino создали компанию Arduino LLC, которой принадлежали авторские права и торговые марки компании, зарегистрированные в США. Производством занимались другие компании, перечислявшие Arduino LLC платежи за использование авторских прав. В том же году Джанлука Мартино, втайне от компаньонов, регистрирует на свою компанию Smart Projects (позднее переименованную в Arduino SRL) часть торговых марок Ардуино в некоторых странах. В 2015 году начинаются судебные тяжбы Arduino LLC против Arduino SRL. В 2016 году конфликт разрешается путем слияния обеих компаний с образованием компании Arduino AG.

Команда разработчиков

Ядро команды разработчиков Arduino составляют: Массимо Банци (Massimo Banzi), Девид Куартиллье (David Cuartielles), Том Иго (Tom Igoe), Джанлука Мартино (Gianluca Martino), Девид Меллис (David Mellis), Николас Замбетти (Nicholas Zambetti) и Валерий Шумятский (Valeriy Shymatskiy).

Лицензирование

Документация, прошивки и чертежи Arduino распространяются под лицензией Creative Commons Attribution ShareAlike 3.0 и доступны на официальном сайте Arduino. Рисунок печатной платы для некоторых версий Arduino также доступен. Исходный код для интегрированной среды разработки опубликован и доступен под лицензией GPLv2. Библиотеки используют лицензию LGPL.

Несмотря на то, что документация на аппаратную часть и программный код опубликованы под лицензией «copyleft», разработчики выразили желание, чтобы название «Arduino» (и производные от него) было торговой маркой для официального продукта и не использовалось для производных работ без разрешения. В официальном документе об использовании названия Arduino подчеркивается, что проект открыт для всех желающих работать над официальным продуктом.

Обмен данными с компьютером

У всех плат Arduino есть возможность обмена информацией с компьютером. Обмен происходит по USB-кабелю — никаких дополнительных «плюшек» не требуется. Нам нужен класс , который содержит все необходимые функции. Перед работой с классом необходимо инициализировать последовательный порт, указав при этом скорость передачи данных (по умолчанию она равна 9600). Для отправки текстовых данных в классе существуют небезызвестные методы и . Рассмотрим следующий скетч:

В Arduino IDE есть Монитор порта. Запустить его можно через Инструменты→Монитор порта. После его открытия убедитесь, что Монитор работает на той же скорости, которую вы указали при инициализации последовательного порта в скетче. Это можно сделать в нижней панели Монитора. Если всё правильно настроено, то ежесекундно в Мониторе должна появляться новая строка «». Обмен данными с компьютером можно использовать для отладки вашего устройства.

Информацию на стороне компьютера можно не только получать, но и отправлять. Для этого рассмотрим следующий скетч:

Прошиваем микроконтроллер и возвращаемся в Монитор порта. Вводим в верхнее поле 1 и нажимаем Отправить. После этого на плате должен загореться светодиод. Выключаем светодиод, отправив с Монитора . Если же отправить символ , в ответ мы должны получить строку «».

Таким способом можно пересылать информацию с компьютера на Arduino и обратно. Подобным образом можно реализовать связь между двумя Arduino.

8

Область применения

С развитием микроконтроллерной техники перед ШИМ открылись новые возможности. Этот принцип стал основой для электронных устройств, требующих, как регулировки выходных параметров, так и поддержания их на заданном уровне. Метод широтно-импульсной модуляции применяется для изменения яркости света, скорости вращения двигателей, а также в управлении силовым транзистором блоков питания (БП) импульсного типа.

Широтно-импульсная (ШИ) модуляция активно используется в построении систем управления яркостью светодиодов. Благодаря низкой инерционности, светодиод успевает переключаться (вспыхивать и гаснуть) на частоте в несколько десятков кГц. Его работа в импульсном режиме воспринимается человеческим глазом как постоянное свечение. В свою очередь яркость зависит от длительности импульса (открытого состояния светодиода) в течение одного периода. Если время импульса равно времени паузы, то есть коэффициент заполнения – 50%, то яркость светодиода будет составлять половину от номинальной величины. С популяризацией светодиодных ламп на 220В стал вопрос о повышении надёжности их работы при нестабильном входном напряжении. Решение было найдено в виде универсальной микросхемы – драйвера питания, работающего по принципу широтно-импульсной или частотно-импульсной модуляции. Схема на базе одного из таких драйверов детально описана здесь.

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

Микроконтроллер Ардуино тоже может функционировать в режиме ШИМ контроллера. Для этого следует вызвать функцию AnalogWrite() с указанием в скобках значения от 0 до 255. Ноль соответствует 0В, а 255 – 5В. Промежуточные значения рассчитываются пропорционально.

Повсеместное распространение устройств, работающих по принципу ШИМ, позволило человечеству уйти от трансформаторных блоков питания линейного типа. Как результат – повышение КПД и снижение в несколько раз массы и размеров источников питания.

ШИМ-контроллер является неотъемлемой частью современного импульсного блока питания. Он управляет работой силового транзистора, расположенного в первичной цепи импульсного трансформатора. За счёт наличия цепи обратной связи напряжение на выходе БП всегда остаётся стабильным

Малейшее отклонение выходного напряжения через обратную связь фиксируется микросхемой, которая мгновенно корректирует скважность управляющих импульсов. Кроме этого современный ШИМ-контроллер решает ряд дополнительных задач, способствующих повышению надёжности источника питания:

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

Что можно создать при помощи Arduino?

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

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

Рынок дополнительных плат постоянно обновляется, появляются новые инновационные разработки. Этому способствует полностью открытая архитектура системы.

Какие бывают платы

По производителю

Существуют как официальные версии плат Arduino, так и платы от сторонних производителей. Оригинальные платы отличаются высоким качеством продукта, но и цена тоже выше. Они производятся только в Италии и США, о чём свидетельствует надпись на самой плате.

На примере самой популярной платы Arduino UNO:

  • Оригинальная плата. Поставляется только в фирменной коробке, имеет логотип компании, на портах платы — маркировка. Цена от производителя 20 €.

  • Плата от стороннего производителя. Качество хуже, однако цена начинается от 150 рублей. Качество платы может отразиться на её работоспособности в дальнейшем. Хоть это и редкость, но плата и вовсе может не работать «из коробки» — всё зависит от добросовестности изготовителя и продавца. Для работы с подобными платами требуется драйвер CH340, который находится в свободном доступе. Во всём остальном процесс разработки идентичен процессу разработки на оригинальных платах.

По назначению

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

Различные платы Arduino. Источник

Самые популярные из них:

  • Arduino Nano — различие с UNO только в конструктивном исполнении. Nano меньше.
  • Arduino Mega — плата на базе мощного микроконтроллера. Имеет большое количество портов.
  • Arduino Micro — имеет встроенную поддержку USB-соединения, а потому может использоваться как HID-устройство (клавиатура, мышь, MIDI-устройство).
  • Arduino Ethernet — имеет возможность подключения к сети через Ethernet-провод. На плате также расположен слот для microSD карточки.
  • Arduino Mini — по характеристикам немного уступает UNO. Преимуществом платы является её миниатюрное исполнение.
  • Arduino Due — плата на базе 32-разрядного ARM микроконтроллера. Имеет преимущество в производительности по сравнению с остальными.
  • Arduino LilyPad — форм-фактор позволяет использовать плату в предметах одежды и текстиля.
  • Arduino Yún — «нужно было ставить линукс…». Имеет поддержку дистрибутива Linux, встроенную поддержку Ethernet и Wi-Fi, слот для microSD. Как и Micro, имеет встроенную поддержку USB-соединения.

4

Горшок для цветов с автополивом

Слож­ность: 4/5.

Вре­мя: 3/5.

Arduino uno: распиновка, схема подключения и программирование

Полез­ный гор­шок для тех, кто забы­ва­ет полить цве­ты перед отъ­ез­дом или про­сто не зна­ет, как часто надо их поли­вать. Вся элек­тро­ни­ка, насо­сы и ёмкость для воды нахо­дят­ся внут­ри горш­ка. Для каж­до­го рас­те­ния мож­но запро­грам­ми­ро­вать свой режим поли­ва в каж­дом горш­ке.

Основ­ные харак­те­ри­сти­ки чудо-горшка:

  • встро­ен­ный резер­ву­ар для воды;
  • дат­чик кон­тро­ля уров­ня влаж­но­сти поч­вы;
  • насос для пода­чи воды;
  • дат­чик уров­ня воды в резер­ву­а­ре;
  • све­то­ди­од, инфор­ми­ру­ю­щий о недо­стат­ке воды в резер­ву­а­ре.

Подроб­но­сти: usamodelkina.ru.

Интернет вещей

Ниже сравнительные таблицы плат и модулей, которые применяются для Интернета вещей.

Платы

Arduino YUN Arduino Ethernet Arduino TIAN
AVR Микроконтроллер ARM Микроконтроллер
Микроконтроллер ATmega32U4 ATMega328 SAMD21G18, ARM Cortex-MO+
Рабочее напряжение 5 V 5 V 3.3 V
Входное напряжение 5 V
Входное напряжение Plug (Рекомендуемое) 7 -12 V
Входное напряжение Plug (Ограничениеs) 6 — 20 V
Входное напряжение PoE (Ограничениеs) 36 — 57 V
Цифровые (I/O) Пины 20 14 (4 for PWM output)
PWM Output 7
Analog I/O Пины 12 6
Аналоговый вход Пины 6
Analog Output Пины 1, 10-bit DAC
Постоянный ток на I/O Пин 40 mA on I/O Пины; 50 mA on 3.3 Пин 40 mA 7 mA (I/O Пины)
Постоянный ток для 3.3 V Пин 50 mA
Флэш-память 32 KB (4 KB для загрузчика) 32 KB (.5 для загрузчика)
SRAM 2.5 KB 2 KB
EEPROM 1 KB 1 KB
Тактовая частота 16 MHz 16 MHz 48 MHz
LED встроенные 13 13
Bluetooth CSR8510, Bluetooth with EDR / BLE 4.0
Длина 101.52 mm 68.6 mm 68.5 mm
Ширина 53.3 mm 53.3 mm 53 mm
Вес 37 g 28 g 36 g
Microprocessor Microprocessor
Processor Atheros AR9331 Atheros AR9342
Architecture MiPS MiPS
Рабочее напряжение 3.3 V 3.3 V
Ethernet 802.3 10/100 Mbit/s 802.3 10/100/1000 Mbits/s
WiFi 8.02.11b/g/n 2.4 GHz 802.11 b/g/n 2.4 GHz dual-band
USB Type 2.0 Host 2.0 Host
Card Reader Micro-SD
RAM 64 MB DDR2 64 MB DDR2
Флэш-память 16 MB 16 MB + 4 GB eMMC
SRAM 2.5 KB
EEPROM 1 KB
Тактовая частота 400 Mhz 560 MHz

Платы (продолжение)

Arduino Industrial 101 Arduino Leonardo ETH Arduino MKRFOX 1200
AVR Микроконтроллер AVR Микроконтроллер
Микроконтроллер ATmega32u4 ATmega32u4 SAMD21 Cortex-MO+ 32bit low power ARM
Рабочее напряжение 5 V 5 V
Входное напряжение 5 V 7-12 V 5-15 V
Board Power Supply 5 V (USB/VIN)
Supported Batteries 2 x AA or AAA
Circuit Рабочее напряжение 3.3 V
Цифровые (I/O) Пины 20 (7 exported on header) 20 8
PWM Пины 12 (0,1, 2, 3, 4, 5, 6, 7, 8, 10, A3 — or 18, A4 — or 19)
PWM Output 7 (2 exported on header) 7 12
UART 1
SPI 1
I2C 1
Аналоговый вход Пины 7 (ADC 8/10/12 bit)
Analog Output Пины 1 (DAC 10 bit)
External Interrupts 8 (0, 1, 4, 5, 6, 7, 8, A1 — or 16 -, A2 — or 17)
Analog I/O Пины 12 (4 exported on header) 12
Постоянный ток на I/O Пин 40 mA 40 mA on I/O Пины; 1A on 3.3 V Пин only when powered via external power supply 7 mA
Флэш-память 32 KB (4 KB для загрузчика) 256 KB
SRAM 2.5 KB 2.5 KB 32 KB
EEPROM 1 KB 1 KB no
Тактовая частота 16 MHz 16 MHz 32.768 kHz (RTC),  48 MHz
LED встроенные 6
Power Consumption 29 mA
Дополнительно * GPIO — Exported on headers
* DogOLED — 1 Exported on headers
* Цифровые I/O Пины — 36-57 V
* 4 used SD Card Select; 10 used for W550 Select
* Card Reader — Micro SD Card, with active voltage translators
* Full-speed USB Device and Embedded Host
* Antenna — 2 dB
* Carrier Frequency — 868 MHz
* Working Region — EU
Длина 51 mm 68.58 mm 67.64 mm
Ширина 42 mm 53.34 mm 25 mm
Вес .0012 Kg 28 g 32 g
Microprocessor
Processor Atheros AR9331 802.3
Architecture MIPS
Рабочее напряжение 3.3 V
Флэш-память 16 MB
RAM 64 MB DDR2
Тактовая частота 400 MHz
WiFi 802.11  b/g/n 2.4 GHz
Ethernet 802.3 10/100 Mbit/s (Exported on headers) 802.3 10/100 Mbit / s
USB 2.0 Host (Exported on headers)

Модули

Arduino MKR1000 Arduino YUN Mini
AVR Микроконтроллер
Микроконтроллер SAMD21 Cortex-MO +32bit low power ARM MCU ATmega32u4
Рабочее напряжение 5 V
Board Power Supply 5 V (USB/VIN)
Supported Battery Li-Po single cell, 3.7 V, 700mAh minimum
Circuit Рабочее напряжение 3.3 V
Цифровые (I/O) Пины 8 20
PWM Пины 12 (0,1,2,3,4,5,6,7,8,10, A3 — or 18 -, A4 -or 19)
UART 1
SPI 1
I2C 1
PWM Output 7
Power Consumption 170 mA
Аналоговый вход Пины 7 (ADC 8/10/12 bit)
Analog Output Пины 1 (DAC 10 bit)
Analog I/O Пины 12
External Interrupts 8 (0, 1, 4, 5, 6, 7, 8, A1 — or 16 -, A2 — or 17)
Постоянный ток на I/O Пин 7mA 40 mA on I/O Пины; 50 mA on 3.3 V Пин
Флэш-память 256 KB 32 KB
SRAM 32 KB 2.5 KB
EEPROM none 1 KB
Тактовая частота 32.768 kHz (RTC), 48 MHz
LED встроенные 6
Длина 61.5 mm 71.1 mm
Ширина 25 mm 23 mm
Вес 32 g 16 g
Microprocessor
Processor Atheros AR9331
Architecture MIPS 24 K processor operating at up to 400 MHz
Рабочее напряжение 3.3 V typ.380 mA (113~570 mA)
Флэш-память 16 MB
RAM 64 MB DDR2
Тактовая частота 400 MHz
WiFi 802.11 b/g/n 2.4 GHz
Ethernet 802.3 10/100 Mbit/s
USB 2.0 Host

3Цифровые и аналоговые выводы

Не все выводы у Arduino одинаковые. Есть выводы цифровые, а есть аналоговые. Принципиальная разница между ними в том, что на цифровых выводах может быть только два значения: либо логическая «1» (TRUE, от 3 до 5 вольт), либо логический «0» (FALSE, от 0 до 1,5 вольт), а на аналоговых выводах диапазон от логической «1» до «0» поделён на множество мелких участков.

Зачем это нужно? Давайте рассмотрим такой наглядный пример. Если подключить к цифровому выводу Arduino светодиод и подать на вывод логическую «1», то светодиод загорится с максимальной яркостью; если подать «0» – светодиод погаснет. Никаких промежуточных вариантов нет. Если светодиод подключить к аналоговому выводу, то яркостью светодиода можно управлять плавно. На практике к аналоговым выводам чаще всего подключаются какие-либо аналоговые датчики.