Добро пожаловать в мир Arduino!
Изучаем низкоуровневое программирование с Arduino!
Учебная и научная литература
для инженеров и программистов
Это первое издание книги
© Сергей Евдокимов, 2023
ПРЕДИСЛОВИЕ
Плата микроконтроллера известна как небольшой компьютер, построенный на микросхеме полупроводника из оксида металла. Общим для всех типов микроконтроллеров является то, что они имеют одинаковые основные строительные части, как центральный процессор (CPU), вход/выход (I/O), память и периферийные устройства (программированные).
Микроконтроллеры приобрели большую популярность благодаря своей функциональности во всем мире, и сегодня они регулярно используются почти во всех автоматически управляемых продуктах и устройствах, таких как устройства управления, автомобильные двигатели, пульты дистанционного управления, приборы, электроинструменты, игрушки, имплантированные медицинские устройства и другие встроенные системы. Они привлекают внимание инженеров, энтузиастов и программистов и являются первым выбором для создания проектов своими руками и обучения.
Микропроцессор можно определить как тип миниатюрного электронного устройства, расположенного на материнской плате компьютера, содержащий арифметику, логику и схемы управления, необходимые для выполнения функций центрального процессора цифрового компьютера. Это важный электронный компонент компьютера, позволяющий компьютеру эффективно выполнять свои задачи. Далее его можно описать как центральный процессор, интегрированный в одну интегральную микросхему, содержащую миллионы мелких компонентов, таких как резисторы, транзисторы и диоды, работающие вместе. Для имплементации преобразования сигнала с датчика и передачи метрик в веб-приложение для обработки и визуализации данных будут рассматриваться микроконтроллерные платформы Arduino и Raspberry PI, как простейшие решения для реализации. Проект Arduino был начат в 2005 году. Цель заключалась в том, чтобы использовать его как инструмент для студентов Института проектирования взаимодействия Ивреа, Италия. Другим мотивом нужно взять простой и недорогой способ для начинающих и профессионалов создавать такие устройства, взаимодействующие с окружающею средой с помощью датчиков и приводов.
Arduino известен своим простым инструментом для создания прототипов электроники с аппаратным и программным обеспечением с открытым кодом. Arduino — это тип платы для разработки микроконтроллеров, который используется для многих целей, таких как прием входных данных от кнопок, мигание светодиодов, обработка данных из датчиков, управление двигателями и многие другие задачи, связанные с «микроконтроллером». «Arduino UNO» является одной из самых распространенных плат Arduino, доступных на рынке. Это плата микроконтроллера с открытым кодом, основанная на микроконтроллере ATmega328P и разработанная Arduino.cc. Здесь открытый исходный код означает, что файлы дизайна и исходный код для программного обеспечения и библиотек доступны, поэтому любой, кто интересуется программированием, может бесплатно использовать их как справочник для создания плат Arduino. Плата оснащена наборами контактов цифрового и аналогового входа/вывода (I/O), которые можно сочетать с разными платами расширения (щитами) и другими схемами.
Одной из областей применения компьютерных технологий есть лабораторные исследования, в которых персональный компьютер (ПК) используется для автоматизации проведения физического эксперимента и обработки полученных данных. Используя вычислительные мощности ПК можно в кратчайшие сроки, снимать и обрабатывать большие массивы получаемых данных с помощью различных датчиков.
Arduino — это платформа для создания устройств на основе микроконтроллеров, в интегрированной среде Arduino IDE на низкоуровневом языке программирования. Трудно даже перечислить все возможности платформы Arduino, потому что возможности ограничены всего лишь только воображением. Можно использовать Arduino для любой системы управления, добавив датчики, динамики, дополнительные модули (платы расширения), приводы, и прибавочные микросхемы. Используя Arduino, представляется возможность для реализации почти любых идей.
Основная цель работы — разработать экспериментальные стенды:
1. Разноцветный стенд на RGB: «Семь цветов радуги».
2. Универсальный стенд для ЦОС датчиков.
3. Учебный звуковой стенд: «В реальном времени».
4.Специализированный цифровой стенд для измерения температуры и влажности.
Объект исследования: лабораторные стенды на Arduino Uno
Предмет исследования — аппаратно-вычислительная платформа Arduino.
Исходя из цели исследования были выделены следующие цели и задачи работы:
— создать программу к проекту на сосновой Arduino IDE;
— подключить аппаратную часть стенда;
— проанализировать работу, поиск возможных усовершенствований;
— сформировать выводы и рекомендации.
ОПРЕДЕЛЕНИЕ, ОБОЗНАЧЕНИЕ И СОКРАЩЕНИЕ
ИТ — Информационные технологии;
МК — Микроконтроллер;
МП — Микропроцесор;
ОС — Операционная система;
OS — Operating System;
ПЗ — Программное обеспечение;
СНГ — Содружество независимых государств;
БД — База данных;
ПК — Персональный компьютер;
ПО — Программное обеспечение;
НП — Низкоуровневое программирование;
ПЗУ — Постоянное запоминающее устройство;
ЦОС — Цифровая обработка сигнала;
ПЦОС — Процессор цифровой обработки сигналов;
БИС– Большая Интегральной Схема;
ЦАП — Цифро-аналоговый преобразователь;
ФНЧ — Фильтры нижних частот;
RGB — Red Grey Blue;
DHT — Digital Temperature And Humidity Sensor
COM — COMmunication;
LDA — Latent Dirichlet Allocation;
VCC — Voltage of the CirCuit;
TV — TeleVision;
DVD — Digital Video Disc;
USB — Universal Serial Bus;
ШИМ — Широтно-импульсная модуляция;
I2C — Inter-Integrated Circuit, eye-squared-C;
SPI — Serial Peripheral Interface;
CAN — Controller Area Network;
UART — Universal asynchronous receiver-transmitter;
NC — Numerical control;
LPT — Line Print Terminal;
AVR — Alf and Vegard’s RISC processor;
DSP — Digital Signal Processor;
SSD — Seven segment displays;
SMS — Short Message Service;
Рис. — Рисунок;
ИК — Инфо-красный (а);
Табл. — Таблица;
др. — другие;
т. д. — так далее;
т.е. — то есть;
англ. — английский;
см. — смотреть;
В –Вольт;
Вт — Ватт;
стр. — страница;
ок. — октава;
шт. — штука (штук).
РАЗДЕЛ 1. Описание предметной области
1.1. Ведение в Arduino
Arduino — это платформа (физическая) с открытым функционалом и кодом, основывается на плате ввод-вывод и среде разработки, использующей низкоуровневый (машинный) язык. Arduino имеет много возможностей, его можно применять для создания самостоятельных объектов и разработок интерактивных субъектов или можно связать с программами на ПК (Например: Processing, Flash, VVVV). Такие платы можно собирать самостоятельно или покупать уже собранными. Среди главных причин чтобы использовать Arduino следующие:
— многоплатформенная среда, которая имеет возможность работать на ОС Windows, и на ОС Linux, и Macintosh;
— основывается на языке Arduino C++ (или Arduino Sketches);
— удобная и простая в использовании среда разработки применяется дизайнерами и художниками;
— программирование устройства осуществляется не с помощью последовательный порт, а через USB-интерфейс. Так как последовательный порт отсутствует в большинстве компьютеров современности, это можно считать как дополнительное удобство.
— Устройство можно назвать «открытым», так как, если есть нужда, чтобы скачать на сайте, или необходимую микросхему, получить все необходимые элементы, чтобы спаять самостоятельно, сами создатели Arduino ничего с этого не имеют;
— «Hardware», с которого содержится плата Arduino, дешево, так как полностью вся USB-плата по ценовой политике на 2023 год, около 10€, а для замены испорченого чипа пользователю придется отдать где-то около 2,5 евро. Поэтому есть такая возможность недорогой замены комплектующих и выгодной эксплуатации созданых устройств на Arduino;
— существует много официальных и неофициальных сообществ активных пользователей, поэтому хватает людей, что имею возможность оказывать соответствующую помощь;
— изначально проект Arduino создавался в среде университета, тому он очень хорошо подойдёт для новичков, что хотят быстро заставить функционировать задуманные устройства;
Arduino состоит из двух основных компонентов: млат, с которой работает пользователь при создании собственных прототипов, и интегрированной (роды разработки (IDE) — программного обеспечения, установленного на компьютере. Интегрированная среда разработки используется для создания программных модулей. То есть мы будем регулировать функцию каждого необходимого параметра и получать нужный цвет на выходе, как будто это палитра художника или словно вы настраиваете частоты на своем плеере. Для этого можно использовать сменные резисторы. В результате чего, схема оказывается довольно-таки сложной. Но такая платфорама как Arduino даёт возможность использовать разные функции и свойства. Если задействовать на плате необходимые нам контакты, можно регулировать напряжение, подаваемое на Arduino. Именно программный модуль говорит о плате, что нужно делать.
В первую очередь, Arduino Integrated Development Environment — это интегрированная среда разработк (кроссплатформеное программное обеспечение для пользователей ОС Windows, Linux и macOS, созданое в функциях C и C++. Он используется для записи и записи программ с совместимыми с Arduino досками, но также с помощью посторонних мостов, других комитетов по развитию.
На Arduino IDE исходный код выпущен на публичной лицензии типа GNU Arduino IDE поддерживает языки C и C++ с помощью специальных правил кодировки. Идентификатор Ardeino IDE обеспечивает библиотеку данных от проекта Wire предлагает широкий спектр практических и производственных методов. Код, назначенный только для пользователя, и требуется две основные функции чтобы запустить изображения и цикла основной программы, состоящие совместно с цепочкой инструментов GNU, а также другой, входящей в дистрибутиве IDE. Также, используется программное обеспечение avrdude для преобразования кода действия, который может быть преобразован в текстовый файл в шестнадцатеричный код, вставленный в плату Arduino в программе загрузки компании. При прикосновении avrdude используется как инструмент фильтра для генерации пользовательского кода для планшетов на досках Arduino. С ростом популярности Arduino как компьютерного устройства другие
производители начинают внедрять компактные компьютеры с открытым кодом и сердечники, которые могут создавать и устанавливать другие не поддерживающие MCU прямой доступ. В октябре 2019 года ассоциация Arduino вскоре выпустила новую версию под названием: «Arduino Pro», также — другие расширенные функции.
1.2. Цифровая обработка сигналов автоматизированных систем
Цифровое преобразование сигнала — это процесс выполнения разнообразных операций с одномерными и многомерными сигналами. В широком смысле, к одномерными сигналами считаются радиосигналы и телефоны, а многомерными — исследовательские изображения, рентгенограммы (медицинские), а также: данные томографии, сигналы TV, изображения молекул (электронно-микроскопические), радио-звуколокационые карты, и т. д.
В технических кругах значение такого понятия как «Сигнал» (с англ. Signal, а от лат. Signum) подразумевает техническое средство (или физический носитель), который можно использовать как для использования данных (Например: магнитный, электрический, оптический сигнал), так и в широком спектре возможностей для обращения и передачи, что являет собой физические процессы информационных сообщений — изменение определенного свойства носителей данных (частоты, мощности, интенсивности светового потока во времени, и т.д.) в пространстве и времени, учитывая изменение значений других параметров.
Термин «сигнал» очень часто сравнивают с понятием «данные» или «информация», так как между собою они взаимосвязаны и не могут существовать одно без другого, но всё-таки к разным категориям предопределены. Так как данные об измерениях имеют информацию об основных свойствах объекта исследования, так и о разных сопутствующих факторах воздействия, тогда в узком понимании этот сигнал — отражение всеобщей измерительной информации. Учитывая, что материальная форма носителя сигнала, равно как и форма их отражения в любом физическом процессе, значения не имеет.
Так как, сигнал представляет собой информационную функцию, несущую информацию про физические свойства, поведение или состояние любой физического объекта системы, или среды, а целями преобразования сигналов в самом общем содержании можно считать получение определенных информационных сведений, и последующего использования.
Цифровую обработку сигнала используют современные звуковые устройства, например «MP3-плеер» или «Смартфон» для коррекции, управления необходимой мощности низкой и высокой частоты при воспроизведении музыкального (звукового) произведения. Но сё же, не нужно выводить изменённые версии входных сигналов, если цифровая обработка ещё необходима, лишь только с целью избавиться от нежелательных помех сигнала и чтобы таким образом получить более точное значение от датчика.
Цифровое преобразование (обработка) сигнала в направлении развития техники и науки берёт своё начало с 1950-х годов. Первоначально представляла собой достаточно отрасль радиоэлектроники, а практическая ценность являлась вовсе не очевидной. Однако за прошедшие больше семьдесят пяти лет системы цифровой обработки сигналов успехи в микроэлектронике не только вписались в реальность, но и является в нашей повседневной жизни, например: модемов, DVD-проигрывателей, современных телефонов и TV, а также многого другого. В достаточной степени всё это пришло в аудиотехнику, интенсивно перешло в процесс телевизионного вещания на цифровую основу.
Цифровая обработка сигнала в 1965 г. было открытием для развития ускорено эффективных алгоритмов в преобразований и вычислений Фурье. Этот алгоритм стал очень известен под названием «быстрое преобразование Фурье» (с англ. Fast Fourier transform). Этот алгоритм быстрого обработки Фурье дал возможность уменьшить время вычислений преобразования Фурье на несколько порядка, что позволяет создавать сложнейшие алгоритмы в обработке сигнала (в настоящем времени). Кроме того, с учетом возможностей действительной реализации алгоритмов «Быстрого преобразования Фурье» в специализированном цифровом устройстве, многие ранее непрактичные алгоритмы преобразования сигналов начали находить воплощение на специализированных устройствах.
Аналоговые входы на плате Arduino используются чтобы зарегистрировать сигналы, что в широкой сфере называю оцифровкой, так как в ходе его исполнения сигнал (аналоговый) преобразовывается в цифровую форму. Чтобы получилась достаточно точная копия исходного сигнала, нужно исполнять достаточно быстро замеры.
Сущность цифровой обработки сигнала состоит в том, что необходимо оцифровать его используя АЦП (аналого-цифровой преобразователь), выполняя несколько манипуляций, а затем сгенерировать выходной сигнал (аналоговый), используя ЦАП (цифровой аналоговый преобразователь). Поэтому ЦОС — это динамично развивающаяся область вычислительной техники, охватывающая как технические, так и программные средства. Родственными областями для ЦОС являются теория информации, в частности теория оптимального приема сигналов и теория распознавания образов. При этом в первом случае основной задачей является на фоне помех и шума выделить сигнал разной физической природы, а во втором — автоматическое распознавание, то есть классификация и идентификация сигнала.
При цифровой обработке используется подача сигналов посредством последовательностей чисел или символов. Цель такой обработки может заключаться в оценке характерных параметров сигнала или в преобразовании сигнала в форму, которая в некотором смысле более удобна. Формулы классического численного анализа, такие как формулы для интерполяции, интегрирования и дифференцировки, безусловно являются алгоритмами цифровой обработки.
Цифровая обработка сигналов является альтернативой традиционной аналоговой. К ее важнейшим качественным преимуществам относят: возможность реализации любых сколь угодно сложных (оптимальных) алгоритмов обработки с гарантированной и независимой от дестабилизирующих факторов точностью, запрограммиированностью и функциональная гибкость, возможность адаптации к обрабатываемым сигналам, технологичность.
Всё более широкое распространение методов цифровой обработки сигналов и построения цифровых измерительных приборов на базе микропроцессоров не приводит к снижению уровня производства и значимости аналоговых измерительных устройств и преобразователей, особенно в интегральном исполнении. Напротив, их производство быстро растет, поскольку они широко используются для предварительного аналогового измерительного преобразования в АЦП с микропроцессорами, незаменимы в тех случаях, когда цифровая обработка принципиально непригодна, например, при высоких частотах, а также когда применение микропроцессоров нецелесообразно по техническим или экономическим причинам., например в несложных измерительных устройствах.
1.3. Системы восприятия звуков
Звук, как правило, представляется, как вибрация, что происходит через распределенную среду (в основном, по воздуху), которую царство животных воспринимает слуховыми органами. Продольная волна, которая распространяет звук, сначала скалывает, а потом разжимает молекулы веществ (таких как воздух), по которым он идёт. По результатам, в большинстве случаев, звук представляется ввиду графика давления из временем. (Показ. на рисунке 1.3.1).
Такое представление звуков на отрезке времени показывает более точный образ того, как звук реагирует в нашем мире, и, как вскорее всего можно услышать, это наиболее распространенное представление звуков, что используются по работе с аудио (цифровым). Когда технически описывать звуковую волну, можно запускать несколько ствойств, что имеют возможность лучше понимать протсходящее.
Так, глядя на величину отклонения в первом случае, она вызванная волной давления (звукового); исходя из этого, можно измерить амплитуду звука. Это может быть измерено научной величиной давления в Па (Паскалях), но, как показала практика, удобнее распределять величину волны (амплитуды) за логарифмической шкале, что измеряется в дБ (в децибелах). В случае, когда давление звуковой волны регулярно возобновляется как периодическая структура целого, можно длиною целого периода за определённое количество колебаний вывести частоту волн. К примеру, если звук распространяется в среде со скоростью 321 метр за секунду (при обычной температуре скорость звука воздуха) состоит из повторяющийся волны через каждый метр, тот такой звук приравнивается к частоте 664 Гц (повтор за секунду). Как правило, всё что происходит в Большом мире природы, так как и звуки содержат много дискретных компонентов (частотных). Там, где шумные звуки, эта частота может совершенно не связанной или не сгруппированной по граничной типологии. Однако, в гармонических звуках, такие частоты не редко имеют разнос целыми коэффициентами, к примеру такие звуки как в виолончели в 200 Гц производит частоту не только на 200 (как основной), да и целому гармоническом ряду 200, 800, 1200 и т. д. (как показано на Рис. 1.3.2). Мужчина певец производя ту же самую мелодию имеет такие же компоненты частоты по голосу, хоть и в различных соотношениях к виолончели. Относительная сила (или отсутствие) этих гармонических элементов (так называемые обертоны) обеспечивает восприятие тембра звука.
Когда звук распространяются и к ушам человека, в человеческого вида происходит важнейшая сенсорная обработка в организме, такое нужно понимать по работе с аудио. Таким образом, как и свет с разными размерами волн, яркости возбуждает разные рецепторы сетчатки газовой оболочки, чтобы получить цветную картинку, так как улитка внутреннего уха человека имеет определенный массив клеток (волосковых) с базилярной мембраны, которые построены таким образом, чтобы реагировать на разную частоту звуков. Можно напомнить, что волосковые клетки внутреннего уха реагируют на частоту примерно между 20 и 20000 Гц, так как многие из этих волосиков со временем теряют чувствительность (или под воздействием громких шумов). В першую очередь, такие клетки, отправляют электрические сигналы с помощью слухового нерва в слуховую кору центрального мозга, где они разлагаются для построения более частотных звуков, что поступают в уши организма человека.
Подобная интерпретация звуков как дискретный набор отрезков независимых амплитуд и частот по времени — это больше имеет схожести с тем, как мы воспринимаем нашу звуковое окружение (давление волны на отрезке времени). Французский математик ХII века Жан-Батист-Жозеф Фурье разрабатывал уравнения, позволяющие переводить звуковые волны (независимо от сложности) по ряду частот и амплитуд. Преобразование Фурье — важный инструмент на ПК (с процессами по работе со звукам.
Слуховая система животных (и конечно же людей) весь поток данных о амплитуде и частоте принимает от ушей, используя их, для построения слуховой картинки, что похожа больше на визуальную сценку. Человеческий мозг умеет анализировать акустические данные по ряду определённых свойств, таких как начало и конец корреляции (стерео), таких как коэффициент и время совокупности разбора рядов акустических
1.4 Необходимость измерение температуры и влажности
Сейчас не обходится без многочисленных замеров ни один технологический процесс. Что в свою очередь производятся, используя системы измерения и датчики, которые в сегодня отличаются принципами действия и различными конструкциями.
Критерии выбора соответствующего показателя температуры:
— температурный диапазон для измирения, учитывая допустимые погрешности измерений;
— расположением датчика (как в измеряемой среде так и вне ее);
— условия, при которых должен работать датчик;
Системы контроля (автоматического) делятся на несколько видов, такие системы состоят из единственного хаба (принимающего и фиксирующего), периферических датчиков, данные с датчиков, и ПО, что позволяет хранить информацию, удаленно контролировать свойства хранения. Датчики имеют возможность быть беспроводными и проводными, сертифицированными, а также могут использовать различные методы передачи данных (Wi-Fi, Ethernet, LoRa).
Программное обеспечение устройства включает очень широкую функциональность, вплоть к автоматическому управлению установкой помещения, состоит с мобильного приложения и WEB-части, а также имеет возможность для рассылки сообщений различными способами, например: в самом ПО, с помощью SMS, по email и т. д. Аналитический модуль в подобных системах оценивает саму ситуацию на довольно-таки больших горизонтах (временных или постоянных), даёт рекомендации для принятия правильных управленческих решений.
1.5 Область использования датчиков движения и перемещения
Датчик перемещения (движения) — это такой пироэлектрический детектор, что является приемник волны инфракрасных диапазонов. С уроков физики все знают, что любое тело нагревается до определенной температуры, а потом начинается излучение ИК волны.
Можно сказать, что принцип работы датчиков передвижения основывается на регистрации инфракрасной волны, исходящих от тела человека. В инфракрасном датчике имеется линза Френеля, разделенная на сектора, посредством которой формируется необходимая зона, контролируемая датчиком движения. Когда пересекает человек зону на пироэлектрическом детекторе, сформированной линзой, появляются сигнальные импульсы.
Усиливаются усилителем сигналы, которые получаются от пьероэлементов, а позже через компаратор превращается в цифровой, и подается на реле, построенный «сигнал беды», через размыкание контактов (имеют ввиду электронный ИК датчик, что обнаруживает перемещение и присутствие животного при коммутирующего питания электроприбора)
Иногда датчиками движения по ошибке называют акселерометры; на самом деле акселерометры не могут ощутить прямолинейное равномерное перемещение, так как испытывают по вертикали ориентирование оси по состоянию покоя.
Инженерные системы в странах СНГ для проектирования новой реконструкции помещений и постройки, так как по проблемам энергосбережения выделяют все больше внимание. Соответственно, существует значимый интерес к разработкам уже испытанным методами, что позволяет иметь значительную экономию энергии.
Энергосберегающие мероприятия, внедряемые в Германии, хорошо зарекомендовали себя и на отечественных объектах. Да, нашло широкое применение в системах внутреннего освещения зданий автоматическое управление с использованием специальных датчиков. Германия далеко продвинулась в этом направлении: в стране на федеральном уровне принят закон, регламентирующий обязательную установку в домах датчиков присутствия и движения с целью экономии электрической энергии, затрачиваемой на искусственное освещение.
Без реализации этих энергосберегающих требований невозможно спроектировать новое здание или провести реконструкцию существующего. Их выполнение несложно, так как рынок предлагает широкий выбор датчиков движения, присутствия, сумеречных датчиков и сопутствующего оборудования, необходимого для автоматической регулировки освещения в домах.
1.6 Установка Arduino IDE
Скачать последнюю версию со страницы загрузки arduino.cc. где можно выбрать между установщиком (.exe) и Zip-пакетами. Когда загрузка завершится, продолжим установку и, разрешим процесс установки драйверов, после предупреждения от операционной системы.
Процесс извлечет и установит все необходимые файлы для правильной работы программного обеспечения Arduino (IDE). Текст руководства по началу работы с Arduino находится под. В руководстве пользователя примеры кода что является достоянием общества.
РАЗДЕЛ 2. Разработка проектировочного разноцветного стенда на RGB
2.1. Постановка задания
Теперь для эксперимента будем использовать RGB-светодиоды. Вспомним, что помощью красного (Red), серого (Green), синего (Blue), можно получить любой цвет смешиванием. Светодиод RGB имеет отличия от других тем, так как имеет 3 маленьких кристаллика R, G, B, что синтезируют любой необходимый цвет или его оттенок. А вот, RGB-светодиоды имеют 4 вывода (показано на Рис. 2.1). Можно подключить RGB-светодиод к самой аппаратной части платы Arduino и заставить по цвету радуги переливаться. На рис. 2.2.8 отображается схема подключения RGB-светодиода к плате Arduino.
ПО своей сути, радуга состоит из множеств цветов, а вот 7 цветов были только придуманы потому, что они больше всего устойчивы и определяются восприятием глаза.
В задачи работы входит правильный выбор программного обеспечения и аппаратного для лабораторного стенда на основе эффективных алгоритмов получения и создания соответствующего программного обеспечения для обработки цветов светодиодов на компьютере, подключенном к плате. Для данного проекта нам понадобятся детали, которые присутствуют в наборе «Базовый», а также «Изучаем Arduino»:
— Arduino Uno;
— RGB-светодиод — 2 шт (1 запасной);
— Резисторы 220 Ом — 4 шт;
— Кабель USB;
— Провод «папа-папа» — 8 шт;
— Плата для прототипирования;
— Потенциометр.
2.2. Эскизный проект стенда
Список этих 7 основных цветов радуги с разложением по компонентам R, G и B представлен в Табл. 2.2.1
— Красный цвет учтём как начальная точка отсчета (255, 0, 0).
— Теперь красной составляющей R нужно уменьшить значение до зеленого цвета (0, 255, 0).
— Далее увеличиваем красной составляющей R до значений цвета фиолетового (255, 0, 255).
— Равномерно уменьшим G (количество зеленовато) аж до значений цвета синего (0, 0, 255).
— Равномерно синей составляющей B нужно увеличить его значение до цвета голубого (0, 255, 255).
— Теперь, понемножку увеличиваем зеленой составляющей G, значение до тех пор, пока не достигается оранжевого значение (255, 125, 0), а поотом цвета желтого (255, 255, 0).
— Дожидаемся недолгой паузы и дальше переходим к шагу 1.
Составляющими частями аппаратной части, которая проектируется на базе платформы Aruduino, являются:
— МК — это микросхема в какой программа эта может получать сигналы с разных датчиков, обращаться до компьютера или другим устройствам через интерфейс, также выводить обработанную информацию через различные устройства индикации, также управлять действующими устройствами.
— Датчики температуры, давления, освещенности, присутствия, ускорения, расстояния до препятствия и т. д.
— Интерфейсы как достаточно специализированные SPI, I2C, CAN, USB, Bluetooth, Ethernet, WiFi, COM-порт и т. д.
МК может работать напрямую с чем-то из данного списка (нужно всего лишь 2 проводочка для соединения МК и кнопки), а для других — нужны дополнительные детали (их нужно подкручивать моторчиком напрямую подкручивать не получится, нужно какие-то другие усилители-драйверов).
Обвязкой называется дополнительные детали, которые необходимы МК для взаимодействия с внешними процессами. Другими словами, обвязкой считают компоненты (электронные, радиодетали) что нужны в данных условиях для работы МК. Есть то, что очень необходимо для запуска МК, а есть то что только добавляет удобства в функционал.
Самые первенцы Arduino подключались к COM-порту (или как называли UART), согласовывая уровни (МК от 0 до +5 В, а у ПК –12В до +12,), потом было ясно то, что USB все -таки удобнее, и решили поставить преобразователь интерфейса.
Дальше, для Arduino обвязка МК, следующая:
— Линейный стабилизатор, который обеспечивает нормально-стабильное питание для самой МК.
— На плату Arduino можно подать напряжение от 7 до 12В (к примеру 79-вольтовый крона, 12в в автотранспорте.) Стабилизатор не нужное напряжение выгрузит, а ровно 5В пойдет на МК.
— USB-UART преобразователь для того, чтобы можно было через МК обращаться к компьютеру по USB. У МК уже есть UART, а вот USB — не имеет.
И так, для реализации данного небольшого проекта нужно.
Узлы, необходимые для подключений:
Резистор можно использовать до 1 кОм (сопротивление), но при этом с повышенным сопротивлением светодиоды светятся не так уж ярко.
На примере будет отправляться полученные данные с переменного резистора в порт через ПК. Чтобы читать и обрабатывать данные из порта платы нужно использовать команду analogRead и номер порта. Далее все будет понятно.
Также к данному интерфейсу можно подключить ещё датчики, к например аналоговый стек, инфракрасный дальномер, датчик температуры, фоторезистор, фотодиод, и т. д.
2.3. Технический проект
2.3.1 Общая структура системы цифровой обработки RGB светодиода
Схема для подключения:
В RGB светодиода есть четыре ножки: по 1 положительному контактику на соотвествующий светодиод и 1 общий контакт, на который подключат все полюсы светодиодов (отрицательные аноды).
На RGB светодиоде общий анод определяется 2 по длине контакта. Данный контакт подключаем к GND («земля»). Для каждого по отдельности светодиода нужно свой резистор на 270 Ом для предотвращения возможного протекания чересчур больших токов.
Этот резистор устанавливается в цепь между катодом (зеленый, красный, синий) и управляется через пины на плате Arduino.
Когда используем RGB-светодиодиод (с общим анодом), а не катода общего, то длинный контакт на светодиоде может подклчится к пину +5 V а не к GND.
2.3.2 Связь Arduino з ПК
На рис. 2.3.2.1 показано: вариант отображения контроллера на плате Arduino. Сам контроллер состоит из следующих основных узлов:
— разъем питания на 6—12 вольт;
— микроконтроллер (Atmega32U2 или Atmega1280);
— стабилизатор напряжения (интегральный) LM7805, который преобразовывает из разъема питания (от 6 до 12 вольт) напряжение в 5 вольт, что поддается на выводы питания микроконтроллера);
— разъем USB может быть нескольких типов: mini, micro и обычный (на разных контроллерах);
— разъемы для подключения устройств, учитывая датчики выводами микроконтроллера;
— индикаторный светодиод, который соединяется через вывод 13 микроконтроллеров, но в программе нужно установить параметры напряжения в 5 вольт, а на выводе — 13. Светодиод засветится, а когда 0 вольт — погаснет).
— обвязка контроллера состоит из кварцевого резонатора
— (с конденсаторами), фильтров питания АЦП, обеспечивающего тактового процессора, резисторов (токоограничивающих) и других защитных элементов;
— микросхема FT232 (интерфейсная), которая имеет необходимую обвязку через организующую связь через USB с ПК. Здесь нужно подметить то, что данная микросхема имеет значимую долю по стоимости всего контроллера. В микроконтроллере Atmega32U2 есть встроенная аппаратная поддержка, но для FT232 и USB отсутствует;
«Сердце» Arduino — микроконтроллер Atmega 1280, что содержит100 выходов. Выходы состоят из строго определенного назначения (к примеру, питание), а назначение других можно определить программой. В Flash-память, чтобы поместить программу, нужно использовать микроконтроллера USB-интерфейса. На рис. 2.4.2.2 показано интегрированная среда разработки Arduino, посредством которой, программа написана, проверена и откомпилирована, а также прошита в микроконтроллере, потом и отлажена.
Для начала, к свободному разъему USB нужно подключить контроллер, загорится индикатор питания, но вопрос контроллера осуществляется через специальный разъем 6—12В, так и от компьютера через USB.
Теперь главное, чтобы контроллер был обнаружен в ПК. Детализировано распишем: на иконке «Компьютер» правой кнопкой мыши выбираем элемент «Свойства». Появится «Диспетчер оборудования». Отрываем порты LPT и COM. В списке есть устройство, которое подключено к COM-порту (с номером 1 и больше) А последовательный порт COM-1 всегда есть. К примеру, может быть такое, что Arduino (COM3) — Leonardo. Но, всё же важно помнить № порта и закрывать диспетчер оборудования.
Устройство не будет установлено без сопутствующих драйверов, если плата Arduino подключена к компьютеру первый раз. Путь расположения драйверов Arduino в папке для контроллеров на основе FT232 и без нее. Нужно установить их (при необходимости), потом повторить предыдущий шаг.
Теперь запускаем среду разработки Arduino IEA. Нужно ввести текст (код программы), который показанный ниже ниже (2.32). Количество символов табуляции, пробелов, и пустых строк между отдельными программными элементами не так важно для ее работы и влияет только на визуальную составляющую оформления текста,
с другой же стороны — регистр букв (маленькие и большие символы) имеют значение, так как в этом не нужно ошибаться. Нужно обратить внимание на то, что некоторые строки могут заканчиваться символами «;»,»}»,»)».
void setup () {(2.3.2)
pinMode (13, OUTPUT);
}
void loop () {
digitalWrite (13, HIGH);
delay (1000);
digitalWrite (13, LOW);
delay (500);
}
Теперь нужно нажать на кнопку «Проверить», что расположена на панели инструментов приложения Arduino, и если ошибок не найдено, тогда программа компилируется успешно, об этом будет выведено соответствующее сообщение в нижней черной части окна.
Теперь необходимо его загрузить в контроллер. Нужно исполнить команду что в меню Сервис → Плата, дальше выбираем имя платы или ее аналог. Потом выполняем команду в меню Сервис → Последовательный порт и выбираем № используемого порта. Теперь, нужно нажать на кнопку «Загрузить», что расположена на панели инструментов. Если не возникло ошибок, приложение загружается в микроконтроллер, а потом светодиод (индикаторный) будет мигать.
Нужно разобраться в процессах программы. Перед тем как увидеть код программы, нужно определить несколько используемых терминов.
«Пин» — это вход или выход, который подключается к чему-либо, напрмер: кнопка на входе или светодиоду на выходе.
Программы состоят из миллионов отдельных по себе команд, и в них нужно ориентироваться, так как сами программы разбиваются на ещё отдельные части — подпрограммы. К примеру, подпрограмма может быть на текстовый дисплей вывод символа, который подключается к контроллеру. И для того, чтобы выводить сам отдельный символ, нужно сформировать импульс на различных входах дисплея.
И так как в любой программе, что состоит только из функций, существует такая функция, что вызывается через операционную систему или микроконтроллером, с этого начнется процессы самой программы, что является главной функцией. В языке С это есть main (уникальное имя, главное). Первая строчка самой программы float y; определяет новую переменную в самой программе с тем именем y (типа float). Все переменные сначала перед тем как исполняются должны определятся, а микроконтроллер выделяет необходимое количество ячеек памяти для этого. Кроме этого варианта что выше, можно показать еще способы:
int temperature = 20; ← определяется переменная temperature целочисленного типа и ей сразу же присваивается начальное значение;
float x, y, pressure; ← определяются переменные x, y, pressure (давление), все типа float, начальные значения неизвестны;
float y = mult2 (4); ← в языке С++ так можно.
следующая строка программы — вызов функции mult2. Запись и действие как в математике, переменной y будет присвоено значение 8. А после выполнения следующей строки y станет равной 16. И даже такой вариант вызова функций верен:
y = mult2 (5) + mult2 (2);
Вызов будет происходить слева направо, повернутые значения сложатся, и результат будет присвоен переменной y. Переменные, определенные внутри функции, существуют только при одном вызове этой функции.
y = mult2 (5) + mult2 (2);
Вызов проходит слева-направо, значения, что повернутые слаживаются, а результат присваивается через переменную y. Определенные внутри функции переменные существуют только лишь при вызове данной функции.
Когда подключаем к устройству принимающее сигналы от микроконтроллера есть необходимость для использования функция OUTPUT. Но, Одного вывода микроконтроллера максимальный ток типа Atmega 40 мА, поэтому не получится подключить непосредственно десяток светодиодов к одному выводу. Также, к разному максимальному току по линии питания VCC и GND 200мА.
К повреждению контроллера может привести в результате в программы неверно выбранные режимы (превышение максимальных токов).
Вторая функция loop состоит из 4 вызовов функций:
void loop ()
{
digitalWrite (13, HIGH);
delay (1000);
digitalWrite (13, LOW);
delay (400);
}
Новые 2 функции — стандартны в Arduino. Выполнит функция только одно мигание, так как ее нужно постоянно вызывать из функции main. В среде Arduino она описана, к примерно так:
void main ()
{
setup ();
while (1)
loop ();
}
где while это оператор цикла следующего формата: while (выражение) команда;
Поэтому, программа на языке С включает как минимум 1 функцию main, а программа на Arduino минимум две функции setup и loop.
2.4. Програмное обеспечение ЦОС
2.4. 1. Цифровое преобразование
И так, ещё немного теории. Так как смешивать можно 3 основных цвета и получатся новые оттенки, например в наших глазах 3 типа рецепторов (для зеленого, красного и синего цвета). В результате чего человеческий глаз и мозг обрабатывает эту информацию о насыщенности 3 цветов, превращает их в другие оттенки спектра.
То есть, используя одновременно 3 светодиода, словно «обманывает человеческие глаза». Эта же идея используется на TV, где из маленьких точек красного состоит жидкокристаллический дисплей, синего и зеленого цветов, что расположены близко очень и формируются отдельные пиксели.
Когда настраивается одинаковая яркость всех этих светодиодов, свет получается белым. Если отключить синий светодиод и с одинаковой яркостью будет гореть только красный и зеленый цвета, то получится — желтый.
Яркость каждого светодиода управляется по-отдельности, можно смешивать цвета по желанию. Так как чёрный цвет не что иное, как отсутствие света, получить его не получится. Потому что оттенок черного — это полностью выключенные светодиоды.
RGB-светодиоды переливаются по всем цветам радуги начиная с красного заканчивая фиолетовым, затем переходим к красному и так по кругу. Регулируется скорость цветопередачи с помощью потенциометра. В Табл. 2.2.1 показаны данные значений R, G, B для 7 основных цветов радуги. Для смешивания этих цветов нужно на R, G, B входы светодиода с выводов платы Arduino подать полный спектр напряжений. Но Arduino не может на цифровое заключение выдавать произвольное напряжение. Выдается либо +5 В (HIGH), либо 0 В (LOW). Для симуляции неполного напряжения используется ШИМ (широтно-импульсная модуляция, или PWM).
2.4.2. Алгоритм исполнения программ
Увеличиваем значение зеленой составляющей G, пока не достигнем значения оранжевого (255,125,0),
Увеличиваем значение зеленой составляющей G, пока не достигнем желтого цвета (255,255,0).
Уменьшаем значение красной составляющей R до зеленого цвета (0,255,0).
Начальная точка — красный цвет (255,0,0).
Увеличиваем значение синей составляющей B до голубого цвета (0,255,255).
Уменьшаем значение зеленой составляющей G до синего цвета (0,0,255).
Постепенно увеличим значение красной составляющей R до фиолетового цвета (255,0,255).
Уменьшаем значение синей составляющей B до красного цвета (255,0,0).
Теперь попробуем зажигать одновременно по два цвета. Запрограммируем следующую цветовую последовательность:
красный
красный + зеленый = желтый
зеленый
зеленый + синий = голубой
синий
синий + красный = фиолетовый
2.4. 3. Подключение датчика к микроконтроллеру
После каждого шага делаем паузу для фиксации цветового показа: delay (VIEW_PAUSE);
проверяем значение потенциометра и изменяем значение скорости изменения цвета.
void setpause () {
pause=map (analogRead (POT), 0,1024, MIN_PAUSE, MAX_PAUSE);
Serial.print («pause=»); Serial.println (pause);
}
Создадим в Arduino IDE новый скетч, занесем в него код из листинга 1 и загрузим скетч на плату Arduino. Напомним, что в настройках Arduino IDE необходимо выбрать тип платы (Arduino UNO) и порт подключения платы.
const int RED = 11; // вывод R RGB-светодиоды
const int GREEN = 10; // вывод G RGB-светодиоды
const int BLUE=9; // вывод B RGB-светодиоды
int red; // сменная для хранения R-составляющего цвета
int green; // сменная для хранения G-составляющего цвета
int blue; // сменная для хранения B-составляющего цвета
const int POT=A0; // вывод подключения потенциометра
const int MIN_PAUSE = 10; // минимальная задержка изменения цвета, мс
const int MAX_PAUSE = 100; // максимальная задержка изменения цвета, мс
int pause; // переменная для хранения текущей задержки
const int VIEW_PAUSE = 2000; // время фиксации основного цвета, мс
void setup () {
Serial.begin (9600);
}
void loop () {
// от красного до желтого
Serial.println («red — yellow»);
red=255; green=0; blue=0;
for (green=0; green <=255; green++) setRGB (red, green, blue); setpause (); delay (VIEW_PAUSE); // от желтого до зеленого Serial.println («yellow — green»); red=255; green=255; blue=0; for (red=255; red> =0; red — )
setRGB (red, green, blue);
setpause ();
delay (VIEW_PAUSE);
// от зеленого до голубого
Serial.println («green — blue»);
red=0; green=255; blue=0;
for (blue=0; blue <=255; blue++) setRGB (red, green, blue); setpause (); delay (VIEW_PAUSE); // от голубого до синего Serial.println («blue — blue»); red=0; green=255; blue=255; for (green=255; green> =0; green — )
setRGB (red, green, blue);
setpause ();
delay (VIEW_PAUSE);
// от синего до фиолетового
Serial.println («blue — purple»);
red=0; green=0; blue=255;
for (red=0; red <=255; red++) setRGB (red, green, blue); setpause (); delay (VIEW_PAUSE); // от фиолетового до красного Serial.println («purple — red»); red=255; green=0; blue=255; for (blue=0; blue> =0; blue — )
setRGB (red, green, blue);
setpause ();
delay (VIEW_PAUSE);
}
// функция установки цвета RGB-светодиоды
void setRGB (int r, int g, int b) {
analogWrite (RED, r);
analogWrite (GREEN, g);
analogWrite (BLUE, b);
Бесплатный фрагмент закончился.
Купите книгу, чтобы продолжить чтение.