Что такое библиотеки в Arduino?
Библиотека ардуино – это некий программный код, хранящийся не в скетче, а во внешних файлах, которые можно подключить к вашему проекту. В библиотеке хранятся различные методы и структуры данных, которые нужны для упрощения работы с датчиками, индикаторами, модулями и другими компонентами. Использование готовых программ существенно упрощает работу над проектами, потому что можно сосредоточиться на основной логике, не тратя время на множество мелочей.
Сегодня создано огромное количество библиотек, которые можно легко найти и скачать в интернете. Подавляющее большинство библиотек распространяются по свободной лицензии, поэтому необходимости в поиске “пиратских” версий нет. Главное, это научиться искать нужные библиотеки, подходящие к вашей Arduino IDE, подключать их и правильно использовать.
Выбор платформы: Windows, Mac или Linux
Arduino Web Editor может работать со множеством разнообразных платформ. Если вы используете Windows, Mac или Linux вам необходимо будет просто установить специальный плагин от Arduino Web Editor, который позволит вам загружать скетчи из браузера в ваши платы Arduino.
Если у вас возникли какие либо проблемы с установкой данного плагина, вы всегда можете написать о возникшей проблеме в специальной теме на форуме, где специалисты техподдержки постараются решить вашу проблему.
В конце процесса установки данного плагина вас перебросит на страницу входа в аккаунт Arduino – используйте свои учетные данные чтобы войти в него.
Что делать если вы хотите работать в Chrome OS
В этом случае у вас есть два способа запуска приложения Chrome:
- Платный способ – для использования в образовательных учреждениях. Для этого перейдите по этой ссылке и выберите план, который подходит для вашего образовательного учреждения. Тарифы в этом случае стартуют от $0.29 в месяц за каждого обучающегося.
- Бесплатный способ – для частного использования. Если вы используете ChromeBook или ChromeBox вы можете установить Arduino Create Chrome Ap из официального магазина Google App Store. Вы можете управлять подписками этого приложения по .
Если у вас возникнут какие либо вопросы по работе Chrome App (приложения для Chrome), вы можете задать их в этой теме на официальном форуме Arduino.
Проекты Arduino для начинающих
Если посмотреть на все проекты ардуино, информация о которых доступна в интернете, то можно их разделить на несколько основных групп:
Начальные учебные проекты, не претендующие на какое-то важное практическое использование, но помогающие разобраться в разных аспектах платформы.Мигающие светодиоды – маячок, мигалка, светофор и другие.
Проекты с датчиками: от простейших аналоговых до цифровых, использующих разнообразные протоколы для обмена данными.
Устройства регистрации и отображения информации.
Машины и устройства с сервоприводами и шаговыми двигателями.
Устройства с использованием различных беспроводных видов связи и GPS.
Проекты для автоматизации жилья – умные дома на Arduino, а также отдельные элементы управления домашней инфраструктурой.
Разнообразные автономные машины и роботы.
Проекты для исследования природы и автоматизации сельского хозяйства
Необычные и креативные – как правило, развлекательные проекты.
По каждой из этих групп можно найти множество самых разнообразных материалов в книгах и на сайтах. В этой статье мы начнем знакомство с описанием наиболее простых проектов, с которых рекомендуется стартовать начинающим.
Как создавать проект на ардуино
Проект Ардуино – это всегда сочетание электронной схемы, некоторых связанных друг с другом аппаратных и механических устройств, системы питания и программного обеспечения, управляющего всем этим хаосом. Поэтому приступая к работе, вы должны твердо понимать, что создавая устройство в одиночестве, вы должны будете стать и программистом, и электронщиком, и конструктором.
Если речь идет не об учебном проекте, то вы обязательно столкнетесь со следующими этапами реализации с такими вот задачами:
- Придумать что-то, что будет полезно и (или) интересно для окружающих. Даже самый простой проект несет какую-то пользу – как минимум, он помогает изучать новые технологии.
- Собрать схему, подключить модули друг к другу и к контроллеру.
- Написать скетч (программу) в специальной среде и загрузить ее в контроллер.
- Проверить, как все работает вместе, и исправить ошибки.
- После тестирования – готовиться к созданию готового устройства. Это означает, нужно собрать устройство в каком-то пригодном для эксплуатации корпусе, предусмотреть систему питания, связи с окружающей средой.
- Если вы собираетесь распространять созданные вами устройства, то придется также заняться дизайном, системой транспортировки, задуматься о безопасности использования необученными пользователями и обучением этих самых пользователей.
- Если ваше устройство работает, оно протестировано и обладает какими-то преимуществами перед другими решениями, то можно попытаться сделать из вашего инженерного уже бизнес-проект, попробовать привлечь инвестиции.
Каждый из этих этапов создания проекта достоин отдельной статьи
Но мы уделим главное внимание этапам сборки электронных схем (основы электроники) и программирования контроллера
Электронные схемы
Электронные схемы обычно собираются с применением макетных плат, скрепляющих элементы друг с другом без пайки и скрутки. О том, как работают модули и схемы подключения можно узнать на нашем сайте. Обычно в описании проекта указаны способы монтажа деталей. Но для большинства популярных модулей есть уже десятки готовых схем и примеров в интернете.
Программирование
Создание и прошивка скетчей производится в специальной программе – среде программирования. Наиболее популярной версией такой среды является Arduino IDE. На нашем сайте вы сможете найти информацию о том, как скачать, установить и настроить эту программу.
Настройка Arduino IDE для работы
Для тонкой настройки Arduino IDE 1.8.5 в Windows или Linux следует через панель инструментов «Файл -> Настройки» В новом окне будет доступно несколько пунктов, которые можно настроить под себя (смотри картинку ниже). После настройки приложения, для вступления изменений в силу следует нажать кнопку «ОК» и перезапустить программу. Настройки можно изменить по своему усмотрению.
Настройка Arduino IDE для работы в Windows / Linux
- выбор места для хранения скетчей и библиотек;
- выбор языка интерфейса в программе Arduino IDE 1.8
- выбор размера шрифта текстового редактора и масштаба;
- показ подробных сообщений при компиляции / загрузке;
- показывать номера строк в текстовом редакторе;
- проверка обновлений в сети при запуске Arduino IDE;
- сохранение скетчей перед компиляцией / загрузкой.
Настройка Arduino IDE для Nano / Mega 2560 / Uno
При первом подключении микроконтроллера, следует убедиться, что программа Arduino IDE 1.8 определила плату Arduino Nano, подключенную к USB порту. При подключении любой платы Ардуино к компьютеру создается виртуальный COM порт. Проверить подключение можно через диспетчер устройств или через панель Arduino IDE «Инструменты -> Порт» — кроме COM1 должен появиться дополнительный порт.
Настройка порта программы Arduino IDE для Mega 2560
При подключении микроконтроллера Arduino к разным USB портам компьютера, номер COM порта будет меняться. Если у вас «неофициальный» микроконтроллер с microUSB, то необходимо дополнительно установить драйвера для CH340G. Если порт определился, то перед загрузкой скетча следует выбрать плату, которую вы используете в панели инструментов Arduino IDE «Инструменты -> Менеджер плат»
Выбор процессора микроконтроллера Mega 2560 в Arduino IDE
При подключении к компьютеру Arduino Uno следует выбрать в Менеджере плат Arduino/Genuino Uno. В случае с платой Arduino Mega или Nano, следует дополнительно выбрать процессор микроконтроллера. У Nano это может быть ATmega168 или ATmega328, у платы Mega процессор ATmega2560 или ATmega1280. Узнать тип можно по характеристикам, которые обычно производитель указывает на печатной плате.
Видео. Arduino IDE подключение Nano / Uno / Mega
После выполнения всех операций следует проверить подключение микроконтроллера и загрузить пустой скетч в плату или скетч для мигания светодиодом на Arduino. Для этого на панели инструментов есть соответствующие иконки: смотри картинку с обозначением функций Arduino IDE выше. При неправильном подключении или отсутствии драйверов программа сообщит ошибку — programmer is not responding.
Tinkercad для ардуино
Тинкеркад (Tinkercad Circuits Arduino) – бесплатный, удивительно простой и одновременно мощный эмулятор Arduino, с которого можно начинать обучение электронике и робототехнике. Он предоставляет очень удобную среду для написания своих проектов. Не нужно ничего покупать, ничего качать – все доступно онлайн. Единственное, что от вас потребуется – зарегистрироваться.
Что такое Tinkercad?
Tinkercad – это онлайн сервис, который сейчас принадлежит мастодонту мира CAD-систем – компании Autodesk. Тинкеркад уже давно известен многим как простая и бесплатная среда для обучения 3D-моделированию. С ее помощью можно достаточно легко создавать свои модели и отправлять их на 3D-печать. Единственным ограничением для русскоязычного сегмента интернета долгое время являлось отсутствие русскоязычного интерфейса, сейчас эта ситуация исправляется.
Совсем недавно Тинкеркад получил возможность создания электронных схем и подключения их к симулятору виртуальной платы ардуино. Эти крайне важные и мощные инструменты способны существенно облегчить начинающим разработчикам Arduino процессы обучения, проектирования и программирования новых схем.
История создания
Tinkercad был создан в 2011 году, его авторы – Кай Бекман (Kai Backman) и Микко Мононен (Mikko Mononen). Продукт изначально позиционировался как первая Web-платформа для 3D-проектирования, в которой пользователи могли делиться друг с другом результатами. В 2013 году сервис был куплен компанией Autodesk и дополнила семейство продуктов 123D. За все это время в рамках сервиса пользователями было создано и опубликовано более 4 млн. проектов (3D-моделей).
В июне 2017 г. Autodesk решил перенести часть функционала другого своего сервиса Electroinics Lab Circuits.io, после чего Tinkercad получил крайне важные и мощные инструменты, способные существенно облегчить начинающим разработчикам Arduino процессы обучения, проектирования и программирования новых схем. Если вы уже пользовались Circuits.io, то имейте в виду, что все старые проекты Circuits.io могут быть экспортированы в Tinkercad без каких-либо проблем (о сервисе Circuits.io от Autodesk Electroinics Lab мы постараемся подробно рассказать в одной из следующих статей).
Возможности симулятора Tinkercad для разработчика Arduino
Список основного функционала и полезных фич Tinkercad Circuits:
- Онлайн платформа, для работы не нужно ничего кроме браузера и устойчивого интернета.
- Удобный графический редактор для визуального построения электронных схем.
- Предустановленный набор моделей большинства популярных электронных компонентов, отсортированный по типам компонентов.
- Симулятор электронных схем, с помощью которого можно подключить созданное виртуальное устройство к виртуальному источнику питания и проследить, как оно будет работать.
- Симуляторы датчиков и инструментов внешнего воздействия. Вы можете менять показания датчиков, следя за тем, как на них реагирует система.
- Встроенный редактор Arduino с монитором порта и возможностью пошаговой отладки.
- Готовые для развертывания проекты Arduino со схемами и кодом.
- Визуальный редактор кода Arduio.
- Возможность интеграции с остальной функциональностью Tinkercad и быстрого создания для вашего устройства корпуса и других конструктивных элементов – отрисованная модель может быть сразу же сброшена на 3D-принтер.
- Встроенные учебники и огромное сообщество с коллекцией готовых проектов.
Звучит фантастично, не правда ли? Не нужно скачивать Arduino IDE, не нужно искать и скачивать популярные библиотеки и скетчи, не нужно собирать схему и подключать плату – все, что нам нужно, находится сразу на одной странице. И, самое главное – это все действительно работает! Давайте уже перейдем от слов к делу и приступим к практическому знакомству.
Как подключить нескольких устройств по I2C Arduino
В следующем примере к шине IIC Arduino будет подключено сразу три устройства — текстовый дисплей 1602, датчик давления bmp180 и RTC модуль часов. После сборки схемы можно сделать предварительное сканирование шины, но адреса у всех устройств разные и изменить адрес можно только у дисплея. У других устройств адреса «вшиты» производителем и используются в библиотеках по умолчанию.
Скетч. Подключение нескольких устройств к шине i2c
I2C интерфейс: подключение нескольких устройств
После сборки схемы, убедитесь, что у вас установлены необходимые библиотеки для работы с устройствами по IIC протоколу, и загрузите следующий пример кода в микроконтроллер. Данная программа будет выводить на текстовый экран текущую дату и время суток (устанавливаются в процедуре void setup и время можно поменять), а также данные о температуре воздуха и атмосферном давлении.
#include <Wire.h> // подключаем библиотеку для интерфейса I2C #include <LiquidCrystal_I2C.h> // подключаем библиотеку для 1602 LiquidCrystal_I2C LCD(0x27, 16, 2); // создаем объект LCD #include <SFE_BMP180.h> // подключаем библиотеку для bmp180 SFE_BMP180 pressure; // создаем объект pressure #include <iarduino_RTC.h> // подключаем библиотеку для часов iarduino_RTC time(RTC_DS1307); // создаем объект time void setup() { LCD.init(); // инициализация дисплея LCD.backlight(); // включение подсветки pressure.begin(); // запускаем датчик давления time.begin(); // запускаем модуль часов time.settime(0, 30, 16, 1, 4, 21, 5); // сек, мин, часы, дата, мес, год, день недели } void loop() { char status; double T, P, p0, a; // если прошла 1 секунда обновляем информацию if (millis() % 1000 == 0) { // выводим время с секундами и дату (день, месяц) LCD.setCursor(0, 0); LCD.print(time.gettime("H:i:s - d.m")); // узнаем температуру и выводим на дисплей status = pressure.startTemperature(); if (status != 0) { delay(status); status = pressure.getTemperature(T); if (status != 0) { LCD.setCursor(0, 1); LCD.print("T:"); LCD.print(T, 2); // узнаем давление и выводим на дисплей status = pressure.startPressure(3); if (status != 0) { delay(status); status = pressure.getPressure(P, T); if (status != 0) { p0 = pressure.sealevel(P, 1655.0); LCD.print(" D:"); LCD.print(p0, 2); } else { LCD.setCursor(0, 1); LCD.print("error retrieving pressure"); } } else { LCD.setCursor(0, 1); LCD.print("error starting pressure"); } } else { LCD.setCursor(0, 1); LCD.print("error retrieving temperature"); } } else { LCD.setCursor(0, 1); LCD.print("error starting temperature"); } } }
Пояснения к коду:
- обновление информации на текстовом экране происходит каждую секунду, данный интервал можно увеличить по своему желанию;
- время выводится с секундами, формат вывода времени и даты также можно изменить в строчке
Структура Arduino Web Editor
После запуска Arduino Web Editor вы увидите в нем три основных столбца.
Первый столбец используется для навигации между:
- Your Sketchbook – собрание всех ваших скетчей;
- Examples – примеры скетчей для демонстрации возможностей основных команд Arduino и примеры работы с библиотеками;
- Libraries – библиотеки, которые можно подключить в вашу программу (скетч) для расширения ее возможностей;
- Serial monitor – монитор последовательной связи, позволяет принимать и передавать данные в вашу плату Arduino через USB кабель;
- Help – полезные ссылки и словарь терминов Arduino;
- Preferences – ваши настройки внешнего вида Arduino Web Editor (размер шрифта, цветовая гамма и т.д.).
При выборе одного из этих пунктов меню его содержимое показывается во втором столбце (боковой панели).
И, наконец, третий столбец представляет собой область для ввода кода программы (скетча) – его вы будете использовать чаще всего. В нем вы будете писать свои скетчи, проверять их работу и загружать их в платы Arduino, сохранять свои скетчи в облаке и давать доступ к ним (расшаривать) всем, кому захотите.
Кнопки LCD Keypad Shield
На плате присутствуют пять управляющих кнопок, работа с которыми ведется через один аналоговый пин A0. В шилде использован достаточно распространенный способ простого кодирования сигнала, при котором каждая кнопка формирует определенное значение напряжения, которое после АЦП преобразуется в соответствующее значение от 0 до 1023. Таким образом, мы можем передавать информацию о нажатии разных кнопок через один пин, считывая его при помощи функции analogRead();
Значения уровня сигнала на пине A0 в зависимости от выбранной кнопки:
Нажатие кнопки | Значение на аналоговом пине |
RIGHT | 0-100 |
UP | 100-200 |
DOWN | 200-400 |
LEFT | 400-600 |
SELECT | 600-800 |
Клавиша не нажата | 800-1023 |
Пример скетча работы с кнопками LCD Keypad Shield:
int keyAnalog = analogRead(A0); if (keyAnalog < 100) { // Значение меньше 100 – нажата кнопка right // Выполняем какое-то действие для кнопки вправо. } else if (keyAnalog < 200) { // Значение больше 100 (иначе мы бы вошли в предыдущий блок результата сравнения, но меньше 200 – нажата кнопка UP // Выполняем какое-то действие для кнопки вверх } else if (keyAnalog < 400) { // Значение больше 200, но меньше 400 – нажата кнопка DOWN // Выполняем действие для кнопки вниз } else if (keyAnalog < 600) { // Значение больше 400, но меньше 600 – нажата кнопка LEFT // Выполняем действие для кнопки влево } else if (keyAnalog < 800) { // Значение больше 600, но меньше 800 – нажата кнопка SELECT // Выполняем действие для кнопки выбора пункта меню } else { // Все остальные значения (до 1023) будут означать, что нажатий не было }
В выбранном методе кодирования есть два главных недостатка:
- Нельзя отслеживать одновременное нажатие нескольких кнопок;
- Возможные искажения сигнала могут привести к ложным срабатываниям.
Нужно учитывать эти ограничения, выбирая этот шлд в своих проектах, если вы планируете использовать устройство в системах с большим количеством помех, которые могут искажать сигнал на входе A0, из-за чего АЦП может сформировать ошибочное значение и скетч в результате выполнит другие инструкции.
Язык программирования
Язык программирования Ардуино довольно прост в освоении, так как основной целевой аудиторией его применения являются любители. Однако считается одним из самых лучших языков для программирования микроконтроллеров.
Внимание! Для начала работы необходимо установить среду программирования Arduino IDE.
Arduino IDE является бесплатной программой, скачать которую может любой желающий. На нашем сайте вы можете скачать любую подходящую для вас версию среды. Также доступ к скачиванию IDE предоставлен на официальном сайте компании, а при желании, разработчиков можно отблагодарить, сделав денежный перевод.
Программу, написанную на языке программирования Ардуино называют скетчем. Готовые скетчи записываются на плату для их выполнения.
Среда IDE поддерживается такими операционными системами, как Windows, MacOs и Linux. На официальном сайте компании указанно, что данный язык программирования написан на Wiring, но на самом деле его не существует и для написания используется C++ с небольшими изменениями.
Разное
Использование сдвигового регистра 74HC595
Использование одного сдвигового регистра 74HC595
- ShftOut11 — Простая передача битов
- ShftOut12 — Один за одним
- ShftOut13 — Использование массива
- Управление светодиодами с помощью сдвигового регистра 74HC595
- Создание эффекта «бегущий всадник» с помощью сдвигового регистра 74HC595
- Гистограмма расстояния с помощью сдвигового регистра 74HC595 и ИК-датчика расстояния
Использование двух сдвиговых регистров 74HC595
- ShftOut21 — Два светодиодных счетчика от «0» до «255» (в двоичном формате)
- ShftOut22 — Поочередное зажигание 16 светодиодов
- ShftOut23 — Использование двух массивов
Использование сдвигового регистра CD4021B
Использование одного сдвигового регистра CD4021B
- ShftIn11 — Простой ввод данных
- ShftIn12 — Какая кнопка нажата?
- ShftIn13 — Проверка разных комбинаций
- ShftIn14 — Нажата ли кнопка?
Использование двух сдвиговых регистров CD4021B
- ShftIn21 — Простой ввод данных от двух сдвиговых регистров
- ShftIn22 — Проверка разных комбинаций на двух комплектах переключателей
- ShftIn23 — Печать включенных настроек
RFID
- Гайд по использованию RFID-ридера MFRC522 вместе с Arduino
- Защищенный доступ с помощью RFID-ридера MFRC522 и Arduino
LCD-дисплеи
- Гайд по использованию LCD-дисплея Nokia 5110 вместе с Arduino
- Вывод на LCD-дисплей произвольного текста и значения счетчика
- Прогресс-бар на LCD-дисплее
- Термостат с отображением информации на LCD-дисплее
Управление DC-моторами
- Управление DC-мотором при помощи Arduino
- Управление DC-мотором при помощи Arduino и потенциометра
- Управление двумя DC-моторами при помощи Arduino и Bluetooth
- Управление DC-мотором при помощи Arduino и драйвера моторов
Управление серводвигателями
- Управление серводвигателем с помощью потенциометра
- Радиальный ИК-датчик расстояния
- Радиальный ультразвуковой датчик расстояния
Управление RGB-светодиодом
- Управление RGB-светодиодом при помощи Arduino
- Управление RGB-светодиодом при помощи Arduino и Android-приложения
Последовательный порт
- Вывод значений потенциометра в последовательный порт
- Применение управляющих символов при выводе значений потенциометра в последовательный порт
- Эхо данных последовательного порта
- Различие между char и int
- Управление светодиодом отправкой одиночных символов
- Управление RGB-светодиодом отправкой последовательности цифр
- Управление цветом окна программы на Processing с помощью Arduino и потенциометра
- Управление RGB-светодиодом с помощью палитры цветов из программы на Processing
Использование библиотеки Keyboard
- Запись данных с датчиков в текстовый файл на ПК
- Блокировка ПК на основе показаний фоторезистора
- Управление курсором мыши
Использование библиотеки Wire
- Чтение данных с I2C-датчика температуры TC74A0-5.0VAT
- Чтение данных с I2C-датчика температуры TC74A0-5.0VAT с отображением данных на гистограмме и программе на Processing
Использование библиотеки SPI
- Регулировка яркости светодиодов с помощью двух SPI цифровых потенциометров MCP4231
- Регулировка яркости светодиодов и громкости динамика с помощью двух SPI цифровых потенциометров MCP4231
Использование библиотеки SD
- Запись произвольных данных на SD карту
- Чтение и запись произвольных данных на SD карту
- Чтение и запись произвольных данных на SD карту с использованием часов реального времени
- Регистратор прохода через дверь
Использование прерываний
Прерывания по таймеру
- Мигаем светодиодом с помощью прерывания по таймеру
- Музыкальный инструмент с помощью прерывания по таймеру и аппаратного прерывания
ШИМ Arduino
Широтно-импульсная модуляция (ШИМ) — это процесс управления напряжением за счет скважности сигнала. То есть используя ШИМ мы можем плавно управлять нагрузкой
Например можно плавно изменять яркость светодиода, но это изменение яркости получается не за счет уменьшения напряжения, а за счет увеличения интервалов низкого сигнала. Принцип действия ШИМ показан на этой схеме:
ШИМ ардуино
Когда мы подаем ШИМ на светодиод, то он начинает быстро зажигаться и гаснуть. Человеческий глаз не способен увидеть это, так как частота слишком высока. Но при съемке на видео вы скорее всего увидите моменты когда светодиод не горит. Это случится при условии что частота кадров камеры не будет кратна частоте ШИМ.
В Arduino есть встроенный широтно-импульсный модулятор. Использовать ШИМ можно только на тех пинах, которые поддерживаются микроконтроллером. Например Arduino Uno и Nano имеют по 6 ШИМ выводов: это пины D3, D5, D6, D9, D10 и D11. В других платах пины могут отличаться. Вы можете найти описание интересующей вас платы в этом разделе.
Для использования ШИМ в Arduino есть функция analogWrite(). Она принимает в качестве аргументов номер пина и значение ШИМ от 0 до 255. 0 — это 0% заполнения высоким сигналом, а 255 это 100%. Давайте для примера напишем простой скетч. Сделаем так, что бы светодиод плавно загорался, ждал одну секунду и так же плавно угасал и так до бесконечности. Вот пример использования этой функции:
Библиотеки для работы с датой и временем ардуино
Библиотека RTClib
Библиотека для работы с часами реального времени, упрощающая взаимодействие с Ардуино.
Пример использования:
#include <RTClib.h>
RTC_DS1307 RTC; – выбор датчика (в данном случае DS1307).
rtc.adjust(DateTime( Date, Time)); – настройка времени и календаря.
dayOfTheWeek () – вывод дня недели. Аргумент от 0 до 6, 0 – воскресенье.
Библиотека Timelib
Позволяет Ардуино получать информацию о дате и времени в данный момент.
Пример использования:
#include <TimeLib.h>
Time(); – создание экземпляра.
setTime (t); – установка времени. Аргумент t – час, минута, секунда, день, месяц и год.
timeStatus(); – показывает, установлено ли время.
adjustTime(adjustment); – настройка времени.
Библиотека Ds1307
Библиотека для удобного взаимодействия часов DS1307 с Ардуино c использованием библиотеки Wire.
Пример использования:
#include <DS1307RTC.h>
class DS1307RTC – создание объекта DS1307.
SetTime() – установка времени.
get() – считывает RTC, возвращает полученную дату в формате POSIX.
Set(time_t t) – запись даты в RTC
Библиотека DS 3231
Предназначена для управления датой и временем в модуле ds3231.
#include “ds3231.h”
DS3231 Clock(SDA, SCL); – создание объекта DS3231, подключение к линии тактирования и линии данных.
getTime(); – считывание даты и времени с часов.
setDate(date, mon, year); – установка даты.
Scratch
Эта графическая среда программирования была создана в 2003 году, когда группа сотрудников MIT Media Lab решила разработать язык программирования, доступный абсолютно для всех. В итоге через некоторое время публике был представлен Scratch.
Больше всего, пожалуй, он похож на Lego. По крайней мере, принцип тот же: это объектно ориентированная среда, в которой программы собираются из деталей, разноцветных и ярких. Эти детали можно перемещать, видоизменять, заставлять взаимодействовать различным образом. Основа Scratch — блоки команд, таких как сенсоры, переменные, движение, звук, операторы, внешность, перо, контроль и пр. Встроенный графический редактор дает возможность нарисовать любой объект. Не прошло и пяти лет с момента создания Scratch, как возник проект Scratch для Arduino (сокращённо — S4A), позволяющая программировать ПЛК Arduino.
К плюсам системы относится то, что она русифицирована и полностью локализована — любой желающий найдем множество данных по ней. Кроме того, работа в данной графической среде доступна даже для школьников младших классов, которые даже еще не слишком уверенно читают.
Совет. Для новичков в Scratch существует специальный ресурс: https://scratch-ru.info.
Делаем мини-пианино с помощью Ардуино — схемы и видео
Компоненты
Необходимые компоненты для нашего проекта:
- Arduino UNO — 1 шт.
- Провода-переходники папа-папа — 104×4.
- Клавиатура — 14 Ом.
- Динамики — 1A.
- ПК или ноутбук.
Рабочий код
arduino-keypad.rar
#include#include «pitches.h» #define GND 12 const byte ROWS = 4; //four rows const byte COLS = 4; //four columns const int SPEAKER=11;//define the symbols on the buttons of the keypads char hexaKeys = { {‘0′,’1′,’2′,’3’}, {‘4′,’5′,’6′,’7’}, {‘8′,’9′,’A’,’B’}, {‘C’,’D’,’E’,’F’} }; byte rowPins = {3, 2, 8, 0}; //connect to the row pinouts of the keypad byte colPins = {7, 6, 5, 4}; //connect to the column pinouts of the keypad//initialize an instance of class NewKeypad Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); void setup(){ Serial.begin(9600); pinMode(GND,OUTPUT); digitalWrite(GND,LOW); } void loop(){ char customKey = customKeypad.getKey(); if (customKey==’0′){ Serial.println(customKey); tone(SPEAKER,NOTE_C4,350); } if (customKey==’1′){ Serial.println(customKey); tone(SPEAKER,NOTE_D4,350); } if (customKey==’2′){ Serial.println(customKey); tone(SPEAKER,NOTE_E4,350); } if (customKey==’3′){ Serial.println(customKey); tone(SPEAKER,NOTE_F4,350); } if (customKey==’4′){ Serial.println(customKey); tone(SPEAKER,NOTE_G4,350); } if (customKey==’5′){ Serial.println(customKey); tone(SPEAKER,NOTE_A4,350); } if (customKey==’6′){ Serial.println(customKey); tone(SPEAKER,NOTE_B4,350); } if (customKey==’7′){ Serial.println(customKey); tone(SPEAKER,NOTE_C5,350); } if (customKey==’8′){ Serial.println(customKey); tone(SPEAKER,NOTE_D5,350); } if (customKey==’9′){ Serial.println(customKey); tone(SPEAKER,NOTE_E5,350); } if (customKey==’A’){ Serial.println(customKey); tone(SPEAKER,NOTE_F5,350); } if (customKey==’B’){ Serial.println(customKey); tone(SPEAKER,NOTE_G5,350); } if (customKey==’C’){ Serial.println(customKey); tone(SPEAKER,NOTE_A5,350); } if (customKey==’D’){ Serial.println(customKey); tone(SPEAKER,NOTE_B5,350); } if (customKey==’E’){ Serial.println(customKey); tone(SPEAKER,NOTE_C6,350); } if (customKey==’F ‘){ Serial.println(customKey); tone(SPEAKER,NOTE_D6,350); }}
Files — Example — Keypad — Custom Keypad
Играем песню «С Днем Рождения»
Как играть песню «С Днем Рождения» на клавиатуре:
4 4 5 4 B 6 4 4 5 4 7 B4 4 C 8 B 6 59 9 9 B 7 B
Видео:
https://youtube.com/watch?v=DXfOrWiRflg
Модули и решения «умного дома» на Ардуино
Основным элементом умного дома является центральная плата микроконтроллера. Две и более соединенных между собой плат, отвечают за взаимодействие всех элементов системы.
Существует три основных микроконтроллера в системе:
Arduino UNO – средних размеров плата с собственным процессором и памятью. Основа — микроконтроллер ATmega328. В наличии 14 цифровых входов/выходов (6 из них можно использовать как ШИМ выводы), 6 аналоговых входов, кварцевый резонатор 16 МГц, USB-порт (на некоторых платах USB-B), разъем для внутрисхемного программирования, кнопка RESET. Флэш-память – 32 Кб, оперативная память (SRAM) – 2 Кб, энергонезависимая память (EEPROM) – 1 Кб.
Arduino UNO
Arduino NANO – плата минимальных габаритов с микроконтроллером ATmega328. Отличие от UNO – компактность, за счет используемого типа контактных площадок – так называемого «гребня из ножек».
Arduino Nano
Arduino MEGA – больших размеров плата с микроконтроллером ATMega 2560. Тактовая частота 16 МГц (как и в UNO), цифровых пинов 54 вместо 14, а аналоговых 16, вместо 6. Флэш-память – 256 Кб, SRAM – 8 Кб, EEPROM – 4.
Arduino Mega
Arduino UNO – самая распространённая плата, так как с ней проще работать в плане монтажных работ. Плата NANO меньше в размерах и компактнее – это позволяет разместить ее в любом уголке умного дома. MEGA используется для сложных задач.
Сейчас на рынке представлено 3 поколение плат (R3) Ардуино. Обычно, при покупке платы, в комплект входит обучающий набор для собирания StarterKit, содержащий:
- Шаговый двигатель.
- Манипулятор управления.
- Электросхематическое реле SRD-05VDC-SL-C 5 В.
- Беспаечная плата для макета MB-102.
- Модуль с картой доступа и и двумя метками.
- Звуковой датчик LM393.
- Датчик с замером уровня жидкости.
- Два простейших устройства отображения цифровой информации.
- LCD-дисплей для вывода множества символов.
- LED-матрица ТС15-11GWA.
- Трехцветный RGB-модуль.
- Температурный датчик и измеритель влажности DHT11.
- Модуль риал тайм DS1302.
- Сервопривод SG-90.
- ИК-Пульт ДУ.
- Матрица клавиатуры на 16 кнопок.
- Микросхема 74HC595N сдвиговый регистр для получения дополнительных выходов.
- Основные небольшие компоненты электроники для составления схемы.
Можно найти и более укомплектованный набор для создания своими руками умного дома на Ардуино с нуля. А для реализации иного проекта, кроме элементов обучающего комплекта, понадобятся дополнительные вещи и модули.
Сенсоры и датчики
Чтобы контролировать температуру и влажность в доме и в подвальном помещении, потребуется датчик измерения температуры и влажности. В конструкторе умного дома это плата, соединяющая в себе датчики температуры, влажности и LCD дисплей для вывода данных.
Плата дополняется совместимыми датчиками движения или иными PIR-сенсорами, которые определяют присутствие или отсутствие человека в зоне действия, и привязывается через реле к освещению.
Датчик Arduino
Газовый датчик позволит быстро отреагировать на задымленность, углекислоту или утечку газа, и позволит при подключении к схеме, автоматически включить вытяжку.
Газовый датчик Arduino
Реле
Компонент схемы «Реле» соединяет друг с другом электрические цепи с разными параметрами. Реле включает и выключает внешние устройства с помощью размыкания и замыкания электрической цепи, в которой они находятся. С помощью данного модуля, управление освещением происходит также, если бы человек стоял и самостоятельно переключал тумблер.
Реле Arduino
Светодиоды могут указывать состояние, в котором реле находится в данным момент времени. Например, красный – освещение выключено, зеленый – освещение есть. Схема подключение к лампе выглядит так.
Для более крупного проекта лучше применять шину реле, например, восьмиканальный модуль реле 5V.
Контроллер
В качестве контроллера выступает плата Arduino UNO. Для монтажа необходимо знать:
описание элементов;
распиновку платы;
принципиальную схему работы платы;
распиновку микроконтролеера ATMega 328.
Программная настройка
Программирование подключенных элементов Ардуино происходит в редакторе IDE. Скачать его можно с официального сайта. Для программирования можно использовать готовые библиотеки.
https://youtube.com/watch?v=OsXFswotVNI
Или воспользоваться готовым скетч решением Ardublock – графический язык программирования, встраиваемый в IDE. По сути, вам нужно только скачать и установить ПО, а затем использовать блоки для создания схемы.
https://youtube.com/watch?v=jVhLUIBYWL8