Использование цифровых входов/выходов arduino

Введение

Arduino — это аппаратная платформа с открытым исходным кодом. Есть два элемента в названии: платы и программное обеспечение. Только платы от официального производителя arduino.cc можно назвать «Arduino».

Название является товарным знаком. Всё начиналось с открытого исходного кода, но по мере того, как популярность программного обеспечения Arduino (IDE — Integrated Development Environment) стала расти, оно было расширено для поддержки многих других плат.

Эти устройства более правильно называть «совместимые Arduino».

Arduino IDE — это кросс-платформенное приложение, которое обеспечивает отправную точку для всех проектов, связанных с Arduino.

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

На стороне программного обеспечения есть «ядро» и «IDE». Ядром является библиотека C ++, называемая «ядром Arduino», которая уникальна для каждого типа процессора. Эта (обширная) библиотека позволяет использовать общие функции, такие как digitalRead() или digitalWrite(), для работы со множеством разных архитектур.

На аппаратной стороне трудно охватить все возможные варианты в сжатом виде

Таким образом, здесь основное внимание уделяется таким популярным вариантам, как: Uno, Mega, ESP8266, Zero и MKR. Некоторые из них мы упоминаем ниже

Элементы платы

Микроконтроллер ATmega328P

Сердцем платформы Arduino Uno является 8-битный микроконтроллер фирмы Microchip — ATmega328P на архитектуре AVR с тактовой частотой 16 МГц.
Контроллер обладает тремя видами памяти:

  • 32 КБ Flash-памяти, из которых 0,5 КБ используются загрузчиком, который позволяет прошивать Uno с обычного компьютера через USB. Flash-память постоянна и её предназначение — хранение программ и сопутствующих статичных ресурсов.
  • 2 КБ RAM-памяти, которые предназначены для хранения временных данных, например переменных программы. По сути, это оперативная память платформы. RAM-память энергозависимая, при выключении питания все данные сотрутся.
  • 1 КБ энергонезависимой EEPROM-памяти для долговременного хранения данных, которые не стираются при выключении контроллера. По своему назначению это аналог жёсткого диска для Uno.

Микроконтроллер ATmega16U2

Микроконтроллер не содержит USB интерфейса, поэтому для прошивки и коммуникации с ПК на плате присутствует дополнительный микроконтроллер ATmega16U2 с прошивкой USB-UART преобразователя. При подключении к ПК Arduino Uno определяется как виртуальный COM-порт.

общается с ПК через по интерфейсу UART используя сигналы и , которые параллельно выведены на контакты и платы Uno. Во время прошивки и отладки программы, не используйте эти пины в своём проекте.

Светодиодная индикация

Имя светодиода Назначение
ON Индикатор питания платформы.
L Пользовательский светодиод на пине микроконтроллера. Используйте определение для работы со светодиодом. При задании значения высокого уровня светодиод включается, при низком – выключается.
RX и TX Мигают при прошивке и обмене данными между Uno и компьютером. А также при использовании пинов и .

Порт USB Type-B

Разъём USB Type-B предназначен для прошивки и питания платформы Arduino. Для подключения к ПК понадобится кабель USB (A — B).

Понижающий регулятор 5V

Понижающий линейный преобразователь NCP1117ST50T3G обеспечивает питание микроконтроллера и другой логики платы при подключении питания через или пин Vin. Диапазон входного напряжения от 7 до 12 вольт. Выходное напряжение 5 В с максимальным выходным током 1 А.

Понижающий регулятор 3V3

Понижающий линейный преобразователь LP2985-33DBVR обеспечивает напряжение на пине . Регулятор принимает входное напряжение от линии 5 вольт и выдаёт напряжение 3,3 В с максимальным выходным током 150 мА.

ICSP-разъём ATmega328P

ICSP-разъём выполняет две полезные функции:

  1. Используется для передачи сигнальных пинов интерфейса SPI при подключении Arduino Shield’ов или других плат расширения. Линии ICSP-разъёма также продублированы на цифровых пинах , , и .
  2. Предназначен для загрузки прошивки в микроконтроллер через внешний программатор. Одна из таких прошивок — Bootloader для Arduino Uno, который позволяет .

А подробности распиновки .

Расширение возможности на Ардуино

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

Упомянутая программная технология применяется для решения интернет-задач, поэтому для визуализации «Умного дома» используется язык Java Script (именно с его помощью создается обработчик и сервер). Результаты можно увидеть на экране компьютера или ПК.

Для реализации задуманного подойдет ноутбук, обычный ПК или Raspberry Pi. Применение такой системы позволяет увеличить ее возможности. Так, если на плате Ардуино имеется небольшой объем памяти, на сервере такие ограничения отсутствуют. Программа пишется таким образом, чтобы обеспечить полное управление платформой.

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

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

Чем отличается аналоговый сигнал от цифрового

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

Цифровой сигнал передается в виде единиц и нулей, для компьютеров и цифровой техники это проще реализовать (есть сигнал или нет сигнала). Для оперативной памяти в компьютерах используют конденсаторы, один заряженный конденсатор — 1 бит. На флеш-памяти используют транзисторы с плавающим затвором.


Квантование — разбиение непрерывной величины на интервалы

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

ESP8266 vs ESP32

Вкратце сравню ESP8266 с ESP32.

  ESP8266 ESP32
MCU Xtensa Single-core 32-bit L106 Xtensa Dual-Core 32-bit LX6 with 600 DMIPS
802.11 b/g/n Wi-Fi HT20 HT40
Bluetooth X Bluetooth 4.2 and BLE
Typical Frequency 80 MHz 160 MHz
SRAM X
Flash X
GPIO 17 36
Hardware /Software PWM None / 8 channels None / 16 channels
SPI/I2C/I2S/UART 2/1/2/2 4/2/2/2
ADC 10-bit 12-bit
CAN X
Ethernet MAC Interface X
Touch Sensor X
Temperature Sensor X
Hall effect sensor X
Working Temperature -40ºC to 125ºC -40ºC to 125ºC
Price $ (3$ — $6) $$ ($6 — $12)
Where to buy

Использовать GPIO входы/выходы на этих чипах можно по-разному.

Функциональное назначение выводов чипа ESP8266.

При приобретении ESP32 devkit на Aliexpress нужно обращать внимание на количество PIN-ов. Наиболее распространенный вариант — 30 PIN-овый, такой-же как ESP8266

Он стоит в районе 5 USD. Есть вариант на 36 PIN и 38 PIN. На 38 PIN стоит в районе 8 USD. Отличить легко, PIN-ы опускаюся до нижнего края кнопок.

Здесь уже нужно смотреть, что нужно от платы, поскольку може оказаться выгоднее приобрести расширение на 16 GPIO за 1,5 USD, чем переплачивать за PIN-ы на devkit.

Функциональное назначение выводов чипа ESP32 с 36 PIN-ами

В ESP32 встроен ряд датчиков, которые можно использовать при разработке простых решений. Например, можно периодически опрашивать датчик температуры для мониторинга состояния «здоровья» самого чипа, чтобы не допускать его перегрева.

У ESP32 можно использовать 10 входов в качестве емкостных (TOUCH). Присоединенный к ним провод будет изменять емкость при поднесении руки. Например, можно реализовать вечные емкостные кнопки, которые могут быть реализованы на печатной плате, без использования механических компонент.

Аналого-цифровой преобразователь АЦП (ADC)

В ESP8266 только один АЦП (ADC), в то время как в ESP32 доступно 18!!! АЦП, причем 12 битных, в отличие от 10-ти битного АЦП ESP8266. Напряжение срабатывания АЦП в ESP32 можно менять от 0 до 4 V.

I2C адресация модуля ADS1115

16-ти битные внешние модули АЦП с чипом ADS1115 4-х канальные и стоят с доставкой в Россию в районе 1,5 USD. Примерно столько же стоит 12-ти разрядный ADS1015. Datasheet здесь.

Чтобы в ESP8266 получить такое-же количество каналов АЦП, как у ESP32 потребуется 4 шт. внешних АЦП и цена только этих модулей получится в районе 6 USD. Сам чип ESP32 распаянный на плате можно приобрести примерно за 7 USD с доставкой в Россию. Схема подключения здесь.

Если есть сомнения по поводу входного напряжения, то целесообразно использовать внешний АЦП, поскольку выход из строя платы на 4 канала обойдется несколько дешевле, чем потеря микроконтроллера. Либо подстраховываться установкой стабилитрона.

  • 4-х канальный 18-ти разрядный АЦП MCP3424 обойдется примерно в 5 USD. Младший одноканальный брат MCP3421 примерно в 2,5 USD.
  • 2-х канальный 24-х разрядный АЦП ADS1232 обойдется примерно в 4 USD. Есть 4-х канальный вариант ADS1234, но платы с этим чипом отсутствуют на Aliexpress. Доступен только сам чип.
  • 24-битный АЦП ADS 1256 будет уже 8-ми канальным, небольшая экономия, но при этом цена в районе 15 USD за качество оцифровки.
  • 24-х битный АЦП для цифровых весов HX711 обойдется меньше, чем в 2 USD.
  • 3-х канальный 24-х битный АЦП AD7793 обойдется примерно в 7 USD. Datasheet здесь.

Помимо АЦП в ESP32 есть два 8-ми битных ЦАП (DAC).

Мультиплексор/демультиплексор аналоговых входов

Помимо увеличения аналоговых входов с помощью АЦП есть вариант расширения мультиплексором. Хорошая статья на эту тему в которой подробно рассмотрен аналоговый мультиплексор/демультиплексор CD4051/74HC4051. Много вариантов от других производителей.

CD4051 — это 8 канальный аналоговый CMOS мультиплексор/демультиплексор. ДЛя увеличения количества аналоговых входов на 7 потребуется 1 аналоговый и 3 цифровых входа.

Функциональная схема работы мультиплексора/демультиплексора CD4051

Мультиплексор передает сигнал с одного из нескольких входов на единственный выход. Демультиплексор, напротив, передает сигнал с единственного входа на один из информационных выходов.

Если приобретать модуль на Aliexpress, то цена будет в районе 0,8 USD за 8 каналов, 16-ти разрядное АЦП ADS1115 — 1,5 USD за 4 канала. Если же приобретать только микросхему CD4051, то цена будет гораздо ниже микросхемы АЦП.

Принцип работы системы

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

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

Питание

Питание Arduino производится через USB разъем или от внешнего питающего устройства. Источник напряжения определяется в автоматическом режиме.

Если выбран вариант с внешним питанием не через USB, можно подключать АКБ или блок питания (преобразователь напряжения). В последнем случае подключение производится с помощью 2,1-миллиметровго разъема с «+» на главном контакте.

Провода от АКБ подключаются к различным выводам питающего разъема — Vin и Gnd.

Для нормальной работы платформа нуждается в напряжении от 6 до 20 Вольт. Если параметр падает ниже 7 вольт, на выводе 5V может оказаться меньшее напряжение и появляется риск сбоя.

Если подавать 12 В, возможен перегрев регулятора напряжения и повреждения платы. По этой причине оптимальным уровнем является питание с помощью 7 — 12 В.

В отличие от прошлых типов плат, Arduino Mega 2560 работает без применения USB-микроконтроллера типа FTDI. Для обеспечения обмена информацией по USB применяется запрограммированный под конвертер USB-to-serial конвертер.

ПОПУЛЯРНО У ЧИТАТЕЛЕЙ: Что такое умный дом CLAP.

На Ардуино предусмотрены следующие питающие выводы:

  • 5V — используется для подачи напряжения на микроконтроллер, а также другие элементы печатной платы. Источник питания является регулируемым. Напряжение подается через USB-разъем или от вывода VIN, а также от иного источника питания 5 Вольт с возможностью регулирования.
  • VIN — применяется для подачи напряжения с внешнего источника. Вывод необходим, когда нет возможности подать напряжение через USB-разъем или другой внешний источник. При подаче напряжения на 2,1-миллиметровй разъем применяется этот вход.
  • 3V3 — вывод, напряжение на котором является следствием работы самой микросхемы FTDI. Предельный уровень потребляемого тока для этого элемента составляет 50 мА.
  • GND — заземляющие выводы.

Принципиальную схему платы в pdf формате можно посмотреть ЗДЕСЬ.

Связь

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

Модель ATmega 2560 отличается наличием 4 портов, через которые можно передавать данные для TTL и UART. Специальная микросхема ATmega 8U2 на плате передает интерфейс (один из них) через USB-разъем. В свою очередь, программы на ПК получают виртуальный COM.

  • Если на ПК установлен Linux, распознавание происходит в автоматическом режиме.
  • Если стоит Windows, потребуется дополнительный файл .inf.

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

Мигание светодиодов TX и RX свидетельствует о передаче данных. Для последовательной отправки информации применяется специальная библиотека Software Serial.

К особенностям ATmega 2560 стоит отнести наличие интерфейсов SPI и I2C. Кроме того, в состав Ардуино входит библиотека Wire.

Проекты Arduino для начинающих

Если посмотреть  на все проекты ардуино, информация о которых доступна в интернете, то можно их разделить на несколько основных групп:

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

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

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

Как создавать проект на ардуино

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

Если речь идет не об учебном проекте, то вы обязательно столкнетесь со следующими этапами реализации с такими вот задачами:

  • Придумать что-то, что будет полезно и (или) интересно для окружающих. Даже самый простой проект несет какую-то пользу – как минимум, он помогает изучать новые технологии.
  • Собрать схему, подключить модули друг к другу и к контроллеру.
  • Написать скетч (программу) в специальной среде и загрузить ее в контроллер.
  • Проверить, как все работает вместе, и исправить ошибки.
  • После тестирования – готовиться к созданию готового устройства. Это означает, нужно собрать устройство в каком-то пригодном для эксплуатации корпусе, предусмотреть систему питания, связи с окружающей средой.
  • Если вы собираетесь распространять созданные вами устройства, то придется также заняться дизайном, системой транспортировки, задуматься о безопасности использования необученными пользователями и обучением этих самых пользователей.
  • Если ваше устройство работает, оно протестировано и обладает какими-то преимуществами перед другими решениями, то можно попытаться сделать из вашего инженерного уже бизнес-проект, попробовать привлечь инвестиции.

Каждый из этих этапов создания проекта достоин отдельной статьи

Но мы уделим главное внимание этапам сборки электронных схем (основы электроники) и программирования контроллера

Электронные схемы

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

Программирование

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

Функция analogReference()

Для правильной работы АЦП требуется опорное напряжение (эталон). Для Arduino опорное напряжение может быть в диапазоне 0…5В (или 0… 3,3В для Arduino с напряжением питания 3,3В). В зависимости от типа используемого микроконтроллера у нас могут быть разные виды опорного напряжения.

Мы можем использовать внутренний или внешний источник опорного напряжения. Функция AnalogReference() предназначена для того, чтобы установить соответствующий источник опорного напряжения. Доступны следующие параметры этой функции:

  • DEFAULT: опорное напряжение составляет 5В или 3,3В (в зависимости от питания) — то есть, оно равно напряжению питания микроконтроллера;
  • INTERNAL: опорное напряжения составляет 1,1В для ATmega168, ATmega328 и 2,56В для ATmega8;
  • INTERNAL1V1: опорное напряжение составляет 1,1В — только для Arduino MEGA;
  • INTERNAL2V56: опорное напряжение составляет 2,56В — только для Arduino MEGA;
  • EXTERNAL: внешнее опорное напряжение, приложенное к выводу AREF — от 0 до 5В.

Параметр DEFAULT выбираем, когда хотим воспользоваться опорным напряжением 5В (питание системы). Это самый простой и одновременно наименее точный способ. Здесь требуется хорошая стабильность питания.

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

Наиболее точным вариантом является использование внешнего источника опорного напряжения. Существуют специальные источники опорного напряжения (ИОН). Плюсом является возможность получения необходимого точного опорного напряжения, например, 1,024В или 2,048В, что облегчает интерпретацию данных, считываемых АЦП. К недостаткам применения внешнего источника опорного напряжения можно отнести возможное увеличение стоимости проекта.

Силиконовый коврик для пайки
Размер 55 х 38 см, вес 800 гр….

Подробнее

Синтаксис функции analogReference() показан в следующем примере:

analogReference(DEFAULT); //опорное напряжение = напряжение питания
analogReference(INTERNAL); //опорное напряжение = 1,1В или 2,56В
analogReference(EXTERNAL); //опорное напряжение = напряжение на AREF выводе

Аналоговые и цифровые выходы на Ардуино

Для этого занятия нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • светодиод;
  • резистор 220 Ом;
  • провода «папа-папа».

Если вы хотите регулировать выходное напряжение, то следует использовать пины, помеченные символом «~». Для Arduino Uno — это 3, 5, 6, 9, 10, 11. С помощью аналоговых портов можно выдавать любое напряжение 0 до 5 Вольт, а цифровые выходы можно только включать и выключать. Аналоговые порты используют ШИМ (широтно-импульсную модуляцию), по английски PWM (pulse-width modulation), с помощью которой имитируется аналоговый сигнал.


Аналоговые выходы на плате Ардуино имеют, отметку тильда «~»

Чтобы понять разницу между цифровым и аналоговым сигналом, соберите на макетной плате схему из светодиода и резистора, как на первом занятии — Подключение светодиода. Но в этот раз подключите светодиод к аналоговому выходу ~9. Откройте скетч для мигания светодиодом из первого занятия и измените в нем порт выхода с Pin13 на Pin9. Загрузите скетч в плату Arduino NANO или UNO.


На Arduino аналоговый выход будет работать, как цифровой

9 порт может работать, как цифровой выход. Но если функцию digitalWrite изменить на analogWrite, то вместо значения HIGH (1) и LOW (0) можно поставить любое значение от 0 до 255. Именно в этом интервале можно менять напряжение на аналоговых выходах. Загрузите программу для плавного включения и затухания светодиода. Подробное описание работы данной программы даны ниже в пояснении к коду.

Скетч. Аналоговый сигнал Ардуино и светодиод

int svet = 0; // начальная яркость свечения светодиода
int fade = 5; // шаг изменения яркости свечения светодиода

void setup() {
  pinMode(9, OUTPUT); // используем Pin9 для операции вывода
}

void loop() {
 // устанавливаем яркость светодиода на Pin9
  analogWrite(9, svet);

// изменяем яркость, прибавляя заданную величину fade в каждом цикле
  svet = svet + fade;

// меняем порядок затухания при минимальной и максимальной яркости
  if (svet == 0 || svet == 255) {
    fade = -fade;
  }

  delay(20); // устанавливаем паузу для эффекта
}

Пояснения к коду:

  1. Функция , где pin — порт выхода на который подается сигнал, value — значение между 0 (полностью выключено) и 255 (полностью включено), используется для управления яркостью светодиода или скоростью электродвигателя, посредством Широтно-Импульсной Модуляции (ШИМ);
  2. Переменная имеет начальное значение «0» при каждом выполнении цикла к величине прибавляется заданное значение (в данном скетче fade = 5);
  3. При достижении переменной максимального значения равного 255, принимает отрицательное значение -5. Теперь при каждом выполнении цикла к величине прибавляется -5, т.е. каждый раз из вычитается .
  4. Если сопоставить работу скетча с графиком процесса квантования, размещенным на рисунке в начале статьи, то — это шаг квантования, т.е. величина на которую увеличивается подаваемое напряжение, а — это шаг дискретизации, т.е. период времени через который меняется значение .

Другие идеи проектов

Проекты умного дома на Ардуино

Проекты умного дома являются одним из примеров того, как перейти от «игрушек» и тренажеров к реальным системам, помогающими и облегчающим жизнь. Как правило, с помощью ардуино невозможно создать полноценные автономные решения, но отдельные компоненты сделать вполне реально.

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

Что может являться прототипом умного дома на ардуино:

  • Системы освещения с автоматическим включением и отключением в зависимости от показателей датчиков. Наиболее популярнее варианты – использовать датчик освещенности, PIR датчик движения или датчик звука.
  • Дистанционно управляемые электрические приборы. Например, включение или выключение системы отопления в зависимости от температуры или умное управление освещением в помещениях. Здесь вам понадобятся различные виды реле и один из механизмов обеспечения беспроводной связи: WiFi, GPRS, Bluetooth или радиоканал. Управлять устройствами можно через Web-интерфейс (через браузер) или с использованием соответствующего мобильного приложения (можно написать самому или выбрать одну из готовых платформ).
  • Всевозможные системы учета: воды, тепла, электроэнергии. Начинающим доступны любительские датчики напора воды, температуры, влажности, силы тока. Можно использовать и профессиональные приборы, взаимодействуя с ними по одному из промышленных протоколов. Полученные данные можно собирать локально или отправлять в облако для последующего анализа.
  • Охранные системы и контролирование внештатных ситуаций. Здесь понадобится различные датчики присутствия, движения, звука, магнитные датчики Холла и другие. Естественно, не обойтись без коммуникаций и возможности быстрой передачи информации владельцу через интернет.

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

Проекты «Зеленой робототехники»

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

  • Умная теплица
  • Полив растений
  • Умный инкубатор
  • Умный улей
  • Антигрызуны
  • Умный агроном
  • Умный ошейник для животных
  • Расширенная метеостанция
  • Робот – сеяльщик
  • Счетчик муравьев

Проекты с дронами: аэрофотосъемка, внесение удобрений.

8 или 32 бита

Основные сражения происходят между 8 и 32 битными платами.

8-бит: Uno, Nano, and Mega

32-бит: Zero, MKR, ESP8266 и ESP32

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

Более простые архитектуры означают, что регистры прямого программирования, как правило, относительно легки. 32-разрядные процессоры предлагают более высокие тактовые частоты вместе с большим количеством ОЗУ, ПЗУ и последовательной периферии. Их архитектура может усложнить программирование. К счастью, такие структуры, как библиотека Arduino и CircuitPython, зарывают большую часть этой сложности.

Выбор микропроцессора только потому, что он является 8-битным или 32-битным, может быть, скажем так, довольно «близоруким»

Поэтому важно подумать о том, как вы планируете использовать его

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

Аналоговый ввод/вывод

Функция analogRead()

Описание

Считывает значение из указанного аналогового пина.

На большинстве плат содержится многоканальный 10-битный аналого-цифровой преобразователь, поэтому результатом будет значение в приделах от 0 до 1023. На платах Arduino Due и Arduino Zero преобразователь 12-битный, но результат по-умолчанию все равно отдается в 10 битах для совместимости с другими платами. Чтобы использовать 12 бит, нужно явно указать это через вызов analogReadResolution(), тогда результат будет в пределах 0-4095.

Синтаксис

analogRead(pin)

Параметры

pin — номера аналогового пина. Для большинства плат — значение от A0 до A5, для Arduino Mini и Nano — от A0 до A7, для arduino mega — от A0 до A15

Возвращаемое значение

Целое значение в приделах от 0 до 1023 или от 0 до 4095 для плат Arduino Duo и Arduino Zero (нужна настройка)

Пример
Примечания

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

Функция analogReference()

Описание

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

Синтаксис

analogReference(type)

Параметры

type — используемое опорное напряжение (DEFAULT, INTERNAL, EXTERNAL)

Возвращаемое значение

нет

Пример
Примечания

Значения параметра для Arduino AVR плат (Uno, Mega и др.):

  • DEFAULT — стандартное опорное напряжение 5 В (на платформах с напряжением 5 В) или 3.3 В (на платформах с напряжением 3.3 В);
  • INTERNAL — встроенное опорное напряжение 1.1 В на микроконтроллерах ATmega168 и ATmega328 и 2.56 В на ATmega8 (не доступно на Arduino Mega);
  • EXTERNAL — внешний источник опорного напряжение, подключенный к выводу AREF (возможно от 0 В до 5 В);
  • INTERNAL1V1 — напряжение в 1.1 В (только для Arduino Mega);
  • INTERNAL2V56 — напряжение в 2.56 В (только для Arduino Mega);

Значения параметра для Arduino SAMD плат (Zero и тд.):

  • AR_DEFAULT — стандартное опорное напряжение 3.3 В;
  • AR_INTERNAL — встроенное опорное напряжение 2.23 В;
  • AR_INTERNAL1V0 — встроенное опорное напряжение 1.0 В;
  • AR_INTERNAL1V65 — встроенное опорное напряжение 1.65 В;
  • AR_INTERNAL2V23 — встроенное опорное напряжение 2.23 В;
  • AR_EXTERNAL — внешний источник опорного напряжение, подключенный к выводу AREF.

Значения параметра для Arduino SAM плат (Duo):

AR_DEFAULT — стандартное опорное напряжение 3.3 В. Для Arduino Duo доступно только это значение.

Функция analogWrite()

Описание

Функция выдает на пин аналоговую величину (ШИМ-сигнала или ШИМ-волну). Это может быть полезно например для управления яркостью светодиода или для задания скорости вращения мотора.

Могут использоваться только пины, помеченные символом «~». На Arduino Uno и на других платах на микроконтроллерах ATmega168 и ATmega328P это пины 3, 5, 6, 9, 10 и 11. На пинах 5 и 6 частота ШИМ-сигнала составляет около 980 Гц, а на остальных пинах — примерно 490 Гц. На плате Arduino Mega можно использовать пины 2–13 и 44–46. На Arduino DUE — пины 2–13, а также контакты DAC0 и DAC1. Причем DAC0 и DAC1 являются цифро-аналоговыми преобразователями и действуют как настоящие аналоговые выходы.

Перед использованием не требует вызова функции pinMode().

Синтаксис

analogWrite(pin, value)

Параметры

pin — номер пина, на который следует подать ШИМ-сигнал

value — период рабочего цикла от 0 (сигнал всегда выключен) до 255 (сигнал подан постоянно)

Возвращаемое значение

нет

Пример

Плавное мигание светодиодом:

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: