7 ПОЛЕЗНЫХ устройств на АРДУИНО, которые можно собрать за 15 минут.

Лекции по схемотехнике
15 Jul 202231:07

Summary

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

Takeaways

  • 🎥 В этом видео рассматриваются преимущества Arduino перед классическими аналоговыми схемами и демонстрируются различные практические конструкции для домашнего хозяйства.
  • 🔩 Arduino Uno является одной из самых распространенных моделей Arduino и используется в большинстве изображенных конструкций из-за своего количества входов и выходов.
  • 📦 Макетная плата, упомянутая в видео, предоставляет удобную платформу для монтирования и тестирования различных схем без Soldering.
  • 💡 Примеры конструкций включают индикатор затопления, основанный на электропроводности воды, и ночник с датчиком освещения, работающим на одном светодиоде.
  • 🔊 Сенсорный звонок, использующий металлическую скрепку как датчик, демонстрирует, как Arduino может реагировать на физические воздействия и воспроизводить звуковые сигналы.
  • ⚙️ Электронная линейка с датчиком перемещения использует моторчик от шпинели синерама для измерения расстояния, показывая применение Arduino в механических конструкциях.
  • 📡 Декодер сигналов инфракрасного пульта показывает, как Arduino может быть использован для создания универсальных устройств дистанционного управления.
  • 🎮 Игровая макро-клавиатура, основанная на Arduino, иллюстрирует способность платформы эмулировать различные типы USB устройств, включая клавиатуры для игровых систем.
  • 🛠️ Arduino Uno с микроконтроллером ATmega328 обладает push-pull каскадами на выходах, что позволяет подключать нагрузки с обеих сторон с учетом полярности.
  • 🔴 В видео рассказывают о том, как определить номинал токоограничивающего резистора для датчика затопления и важность корректного выбора резистора для защиты схемы.
  • 🔵 Использование библиотеки 'playSFX' для воспроизведения 8-битных звуковых файлов на Arduino Uno без дополнительных устройств.
  • 🔴 Автор канала 'Большая мастерская' благодарит подписчиков за поддержку и рассказывает о монетизации на YouTube, указывая на возможность поддержки канала материальными взносами.

Q & A

  • Чем Arduino отличается от классической электроники?

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

  • Какой тип плат Arduino выбрал автор для проекта?

    -Автор выбрал Arduino Uno, так как это одна из самых распространенных моделей с достаточным количеством входов и выходов.

  • Какой макетной платой автор решил воспользоваться?

    -Автор приобрел макетную плату, которая подходит как для Arduino Uno, так и для Mega и содержит в комплекте breadboard, гнезда Брэдфорда и дополнительные контакты с землей и питанием.

  • Какой номинал рекомендуется для токоограничивающего резистора при сборке датчика затопления?

    -Для датчика затопления автор рекомендует начать с номинала токоограничивающего резистора 100 килоом, что позволяет датчику срабатывать наверняка.

  • Какой принцип работы используется в индикаторе затопления?

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

  • Какой микроконтроллер используется в Arduino Uno?

    -В Arduino Uno установлен микроконтроллер ATmega328.

  • Какой библиотеку необходимо использовать для воспроизведения 8-битных звуковых файлов на Arduino?

    -Для воспроизведения 8-битных звуковых файлов на Arduino используется библиотека 'da', 'mere' согласно описанию она умеет воспроизводить такие файлы используя встроенный аппаратный таймер Arduino.

  • Какой формат аудио данных должен быть использован для библиотеки 'da', 'mere'?

    -Библиотека 'da', 'mere' принимает аудиоданные в формате 11000 Гц 8-бит моно.

  • Какой тип двигателя используется в электронной линейке проекта?

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

  • Какой принцип работы используется в декодере сигналов инфракрасного пульта?

    -Декодер сигналов инфракрасного пульта использует микросхему TSP 1736, которая формирует качественный прямоугольный сигнал, лишенный помех и дребезга.

  • Какие устройства можно эмулировать с помощью Arduino?

    -С помощью Arduino можно эмулировать компьютерную клавиатуру, джойстик, мышь, тачскрин, веб-камеру, микрофон и другие USB устройства.

  • Какой тип микроконтроллера Arduino поддерживает эмуляцию USB устройств?

    -Эмуляция USB устройств поддерживается Arduino моделями, основанными на микроконтроллере ATmega32U4.

Outlines

00:00

😀 Arduino и классическая электроника: как выбрать?

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

05:00

🔊 Создание индикатора затопления с использованием Arduino

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

10:01

🌙 Arduino и светодиод: ночник с датчиком освещения

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

15:01

📞 Arduino и воспроизведение звука: сенсорный звонок

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

20:03

🎮 Arduino как эмулятор USB-устройств: игровая макроклавиатура

В этом параграфе рассказывается о возможности Arduino выполнять роль эмулятора различных USB-устройств, включая клавиатуры. Создается игровая макроклавиатура, состоящая из четырех кнопок, курсора и пробела, которые достаточно для большинства винтажных игр. Описывается схема подключения кнопок и использование библиотеки Arduino 'Keyboard' для эмуляции нажатий клавиш на компьютере. Также упоминается, что для учета удержания кнопок и многократного нажатия используются два набора переменных, что позволяет определить нажатие, отпускание и удержание кнопок.

25:04

🔗 Инфракрасный декодер сигналов и управление нагрузками

Автор описывает устройство, основанное на инфракрасном приемнике TSP 1736, которое позволяет дистанционно управлять различной нагрузкой. Вместо того чтобы использовать любой сигнал инфракрасного пульта, автор реализовал программу декодирования сигнала, чтобы схема реагировала только на определенные сигналы с конкретного пульта. Для этого используется библиотека 'IRremote', и на выходе каждый сигнал кнопки пульта активирует соответствующий светодиод. Таким образом, устройство стабилизируется и становится более надежным в работе.

30:04

📡 Arduino и электронная линейка: измерение расстояния

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

📘 Распространение и поддержка канала: Большая мастерская

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

Mindmap

Keywords

💡Arduino

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

💡Транзисторы

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

💡Скетч Arduino

Скетч Arduino - это программное обеспечение, написанное на языке программирования C/C++, которое задаёт функциональность Arduino платы. В видео описываются различные скетчи, необходимые для работы проектов, таких как индикатор затопления и ночник.

💡Датчик затопления

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

💡Ночник

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

💡Сенсорный звонок

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

💡Электронная линейка

Электронная линейка - это инструмент, используемый для измерения расстояний или длин. В контексте видео, автор создает линейку, используя моторчик от шпинели, который превращается в генератор импульсов, пропорционально скорости вращения его вала.

💡Декодер сигналов инфракрасного пульта

Декодер сигналов инфракрасного пульта - это устройство, способное понимать и реагировать на сигналы, отправленные инфракрасным пультом. В видео используется микросхема TSP 1736 для декодирования сигналов и управления нагрузками с помощью Arduino.

💡Игровая макро клавиатура

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

💡Библиотека Arduino

Библиотека Arduino - это набор предопределенных функций и определений, которые расширяют функциональность Arduino. В видео упоминается использование библиотеки, таких как 'Keyboard' для эмуляции нажатий клавиш и 'IRremote' для работы с инфракрасным пультом.

💡Мульти-рид (Множественное считывание)

Мульти-рид - это техника, используемая для устранения дребезга контактов или кнопок. В контексте видео, автор использует мульти-рид для стабильного определения нажатия или отпускания кнопок на игровой макро клавиатуре.

Highlights

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

Ардуино Uno является одной из самых распространенных моделей Arduino с достаточным количеством входов и выходов.

Макетная плата с breadboard упрощает монтаж без пайки и имеет дополнительные контакты для удобства.

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

Создание индикатора затопления с использованием эффекта электропроводности воды и датчика на основе текстолита.

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

Использование микрофона с нестандартным подключением для увеличения громкости звучания.

Создание схемы устройства сенсорного звонка с использованием металлической скрепки и резистора.

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

Использование 8-битных звуковых файлов PCM с библиотекой для воспроизведения на Arduino Uno.

Конвертация аудио сэмплов из формата 44 кГц 16 бит стерео в 11000 Гц 8 бит моно.

Использование двигателя от шпинели для создания электронной линейки с датчиком перемещения.

Применение принципа работы генератора с коллектором двигателя для измерения расстояния.

Декодирование сигналов инфракрасного пульта с помощью микросхемы TSP 1736.

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

Использование Arduino Pro Micro для создания игровой макро-клавиатуры с эмуляцией USB устройства.

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

Использование библиотеки Keyboard для эмуляции нажатий клавиш на компьютере.

Реализация опроса кнопок с учетом удерживания и комбинаций нажатий для игровых программ.

Введение функции мультирид для устранения дребезга и определения состояния кнопок.

Поддержка большого мастерства на платформе Индекс Джини, а также продолжение работы на YouTube.

Transcripts

00:00

от сторонников классической аналоговой

00:02

электронике часто можно услышать вопрос

00:04

зачем он нужен этот ваш arduino все

00:08

прекрасно можно собрать и на

00:09

транзисторах или на худой конец на

00:11

логике либо на том же ne555

00:15

в этом видео друзья я хочу показать чем

00:19

arduino выгодно отличается от классики и

00:22

как на его основе

00:23

по сути из подручных материалов можно

00:26

собрать целый ряд практически полезных в

00:29

хозяйстве конструкций потратив на сборку

00:32

не более 15 минут вы смотрите youtube

00:35

канал большая мастерская там а

00:38

[музыка]

00:41

большинство наших сегодняшних

00:43

конструкции будет построена на базе

00:45

arduino uno напомню это одна из моделей

00:49

плата arduino а всего их несколько

00:52

именно у на я выбрал потому что она

00:55

самая распространенная и имеет

00:57

достаточное количество входов и выходов

01:00

в принципе все что мы будем делать

01:02

сегодня можно повторить практически на

01:04

любой плате arduino

01:06

адаптация программы под конкретный тип

01:08

процессора

01:09

а в разных моделях они естественно

01:11

разные происходит автоматически и в этом

01:14

в том числе прелесть arduino

01:19

как видим у меня сейчас выбран именно у

01:21

на

01:23

сборки наших конструкций мы будем

01:25

использовать вот эту симпатичную

01:26

макетную плату которую я приобрел на

01:29

алиэкспрессе ссылочку на заказ я оставлю

01:32

описание

01:33

она подходит как для у на так и для мега

01:36

и содержит в комплекте так называемый

01:38

breadboard небольшое приспособление

01:41

позволяющие выполнять монтаж без помощи

01:44

пайки

01:45

гнезда брэдфорда соединены друг с другом

01:47

по вертикали вот таким образом а сама

01:51

плата содержит дополнительные контакты с

01:53

земли и питание плюс 5 вольт что очень

01:56

удобно при монтаже

01:58

макетная плата вставляется в arduino вот

02:00

таким образом в принципе перепутать

02:02

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

02:04

следует соблюдать осторожность чтобы не

02:07

погнуть контакты да и не поранить пальцы

02:11

также обратите внимание что юсб кабель

02:14

не должен быть необоснованно длинным я

02:17

сталкивался с платами которые плохо

02:19

работали с кабелями длиннее полутора

02:21

метров

02:23

ясно что раз на раз не приходится но на

02:25

всякий случай имейте в виду через юизби

02:28

соединения кстати будут питаться и все

02:30

дополнительные элементы которые мы

02:32

подключим к arduino об этом также не

02:35

следует забывать

02:38

чтобы убедиться что все работает для

02:40

начала загрузим в процессор тестовый

02:43

скетч мигающим светодиодом его текст вы

02:46

видите на экране

02:48

нагрузка у нас подключена к плюсу

02:50

питания и седьмому выходу платы

02:52

разумеется через долга ограничивающий

02:54

резистор его номинал 430 вам к плюсовой

02:58

шине в данном случае я подключился

03:00

исключительно из соображений удобства

03:03

а вообще на выходах микроконтроллера

03:05

arduino uno установлены push-pull

03:08

каскады и нагрузку можно подключать как

03:11

плюсы так и к минусу очевидно с учетом

03:14

полярности

03:15

рекомендованное производителем

03:16

номинальная сила тока нагрузки на один

03:19

выход для

03:20

atmega328 20 миллиампер максимальная 40

03:25

миллиампер в принципе если соединить

03:27

несколько выходов параллельно можно

03:29

получить большую силу тока в программе в

03:33

этом случае выхода необходимо

03:34

переключать синхронно

03:36

[музыка]

03:37

первое устройство которое мы соберем

03:40

сегодня это индикатор затопления его

03:43

принцип работы основан на эффекте

03:46

электропроводности воды из обычного

03:48

куска стекла текстолита мы изготовим

03:50

датчик состоящий из двух изолированных

03:53

друг от друга пластин

03:55

далее ограничив силу тока резистором

03:57

подадим на них напряжение с плюсовой

03:59

шина питания таким образом в исходном

04:03

состоянии на вход ацп будет поступать 5

04:05

вольт

04:06

при погружении же датчика в воду между

04:09

пластинами возникнет цепь потечет ток и

04:12

напряжение на выходе микроконтроллера

04:14

снизится

04:16

это соответственно отразится на значение

04:19

считываем omsa т.п. и программа при

04:22

достижении заранее определенного

04:24

критического значения выдаст звуковой

04:26

сигнал на динамик

04:28

прежде чем мы приступим к написанию

04:30

программы нам необходимо определиться с

04:33

номиналом токоограничивающего резистора

04:35

r1 давайте испытаем устройство в деле

04:40

ок

04:41

сопротивление у нас получилось около

04:43

пяти килоом

04:45

чтобы датчик срабатывал наверняка

04:47

резистор должен быть пропорционально

04:50

большим

04:51

давайте установим сюда сто кило ум

04:55

в принципе единственная функция этого

04:57

резистора защиты схемы от емкостных и

05:00

эфирных помех в состоянии покоя

05:02

если у вас наблюдаются ложные

05:05

срабатывания его номинал можно уменьшить

05:08

динамик мы подключим немного

05:10

нестандартно не к земле а к двум

05:13

цифровым выходом

05:15

используя выходные push-pull а arduino

05:17

мы сможем получить таким образом

05:19

мостовое подключение что увеличить

05:22

громкость звучания динамика

05:24

скетч будет выглядеть вот так

05:27

блоки сетап мы устанавливаем режим

05:29

работы выходов в основном цикле

05:32

считываем показания cp и вызываем

05:35

процедуру проигрывания звукового сигнала

05:37

в случае если считанное значение

05:39

превышает 700

05:41

в качестве параметра мы передаем сюда

05:43

частоту и длительность сигнала

05:47

пробуем

05:49

при затоплении датчика сразу же

05:52

раздается звуковой сигнал

05:54

поскольку затопление это аварийная

05:57

ситуация

05:57

я написал программу так что отключить

06:00

сирену можно только перри запустив плату

06:03

и

06:05

сигнал возобновляется так как затопление

06:08

не устранена

06:10

максимальное значение выдаваемое отца по

06:12

arduino

06:13

1023 чем она выше тем выше степень

06:17

затопления в случае необходимости порог

06:20

срабатывания устройства можно сместить

06:22

подобрав значение вот этой константы

06:25

в принципе если расположить

06:27

измерительную панель вертикально и

06:29

поиграться с номиналом резистора можно

06:31

получить датчик уровня жидкости

06:34

сопротивление будет меняться в

06:36

зависимости от степени погружения правда

06:39

на показания будет влиять

06:40

электропроводность самой жидкости

06:42

поэтому данный способ измерения уровня

06:45

не обладает высокой верностью

06:50

наше следующее устройство ночник с

06:53

датчиком освещения на одном светодиоде

06:57

его функционал очень прост в сумерках

07:00

светодиод светится при наличии же

07:03

внешнего освещения

07:05

отключается

07:07

схема устройства перед вами

07:10

произнося фразу на одном светодиоде я в

07:14

буквальном смысле имел в виду что здесь

07:17

нет ничего кроме светодиода и процессора

07:21

вы не ослышались

07:23

один и тот же элемент мы будем

07:25

использовать и как световой излучатель и

07:27

как датчик освещенности

07:30

а способности светодиода работать фото

07:32

датчиком я рассказывал в лекции 7

07:35

необычных схем которые реально работают

07:37

ссылочку на нее я оставлю в описании

07:42

как вы скорее всего уже догадались

07:43

программная часть этого проекта будет

07:46

посложнее чем схемотехническое

07:48

но именно для упрощения схемы и нужен

07:51

микроконтроллер сложность же реализация

07:54

алгоритма здесь сводится к тому что

07:57

светодиод не может работать излучателем

08:00

и датчиком одновременно

08:02

но учитывая его практически нулевую

08:06

инерционность для считывания уровня

08:08

освещенности мы можем временно отключать

08:11

его производить измерение а затем уже

08:15

исходя из результата либо зажигать либо

08:18

оставлять выключен

08:21

исходный текст программы перед вами

08:24

светодиод у нас подключая ко входу а два

08:27

это также вход ацп через резистор 430 и

08:32

как же мы будем зажигать светодиод через

08:35

вход ацп спросите вы

08:37

дело в том что все аналоговые входы

08:40

arduino если вы при помощи команды пин

08:43

mode output переключить их в режим

08:45

вывода могут работать как обычные

08:48

цифровые такой вот чудесный процессор

08:51

этот atmega328

08:53

в реализации данного алгоритма есть еще

08:56

один нюанс числа аппаратный

08:59

ацп arduino требуется некоторое время на

09:02

выполнение измерения

09:04

тем более это становится заметным если

09:06

вы постоянно переключаете режим работы

09:09

со входа на вых

09:11

поэтому для корректной работы программы

09:13

перед командой считывания информации об

09:15

освещенности мы вынуждены добавить

09:18

небольшую задержку она составляет менее

09:21

100 миллисекунд но визуально скорее

09:24

всего будет заметно

09:26

также уже в процессе отладки устройство

09:29

я выявил еще одну особенность работы ацп

09:33

после переключения из цифрового режима в

09:35

аналоговый порог срабатывания временно

09:38

смещается связано это видимо с

09:41

переходными процессами внутри самого

09:43

микроконтроллера а также с паразитной

09:45

емкостью его выходов

09:47

так или иначе ждать восстановление этого

09:50

смещения у нас нет времени поэтому для

09:53

корректировки погрешности я ввел в

09:55

программу переменную шоу

09:57

константу определяющую основной порог

10:00

срабатывания

10:01

это 220 я получил опытным путем

10:05

если вы будете повторять конструкцию

10:07

скорее всего вам также придется ее

10:09

подбирать так как свойства светодиода

10:12

как датчика не нормируются и будут

10:15

отличаться от экземпляра к экземпляру

10:17

сама программа простейшая в начале цикла

10:21

мы устанавливаем на ножке лет уровень

10:24

логического 0 а затем переводим и его

10:27

налоговый режим после чего осуществляем

10:30

считывание значения со т.п.

10:33

процедура ridata выполняет 10

10:35

последовательных считывание с интервалом

10:38

в 10 миллисекунд это стандартный прием в

10:41

программировании датчиков который

10:43

позволяет избежать дребезга и ошибочных

10:45

срабатываний

10:47

завершив считывание со т.п. но школы

10:49

переводим в режим цифрового выхода

10:53

если считанное значение больше двухсот

10:55

двадцати отключаем светодиод если меньше

10:59

включаем

11:01

если состоялась включение устанавливаем

11:04

в переменный shells значение смещения

11:06

порога равная 180 если светодиод не

11:10

включался порог устанавливаем равным

11:13

нулю

11:14

далее идет задержка две секунды после

11:17

чего весь процесс повторяется сначала

11:20

смотрим

11:27

конечно сказать что мерцание незаметно

11:30

нельзя но в реальном ночнике совсем не

11:33

обязательно проверять освещенность так

11:35

часто по факту это вполне достаточно

11:38

делать например раз в 15 минут или даже

11:41

полчаса ведь солнце у нас заходит не

11:43

моментально

11:45

думаю в этом случае на мерцание вряд ли

11:47

кто обратит внимание для увеличения

11:50

интервала измерения освещенности

11:52

необходимо откорректировать значение вот

11:54

этой константы

11:55

[музыка]

11:59

наша следующая конструкция

12:01

сенсорный звонок

12:03

принципиальную схему устройства вы

12:06

видите на рисунке в качестве датчика

12:08

обнаружения пальца мы будем использовать

12:11

обычную металлическую скрепку

12:12

подключенную к входу а0 ацп

12:15

микроконтроллера

12:16

также нам понадобится резистор номиналом

12:18

1 мигом который необходимо подключить

12:21

между входом ацп и минусом питания

12:25

принцип работы устройства основан на

12:27

эффекте протекания емкостного тока от

12:30

фазовых проводов находящихся в помещении

12:32

по близости с телом человека через

12:35

входную цепь схемы

12:37

когда вы прикасаетесь к скрепки

12:39

микроконтроллер регистрирует наличие

12:41

сигнала на входе ацп и выполняет

12:44

требуемые действия

12:45

нашем случае воспроизводит звуковой

12:47

сигнал

12:49

следует отметить что слабым местом любой

12:52

подобной схемы является подверженность

12:54

помехам

12:56

для защиты от них обычно собирают фильтр

12:58

либо использует специализированную

13:00

микросхему

13:02

но у нас есть микроконтроллер и все эти

13:05

функции мы можем реализовать программно

13:08

для корректной работы схемы нам нужно

13:11

чтобы сенсор реагировал только на

13:13

сетевую синусоиду и игнорировал любые

13:16

высокочастотные импульсы

13:18

для этой цели в скетче я реализовал

13:20

простейший цифровой частотомер

13:23

как я уже рассказывал в одном из

13:25

предыдущих видео в цифровой технике

13:27

измерения частоты производится путем

13:30

подсчета количества импульсов

13:32

поступивших на вход схемы за известный

13:35

интервал времени в нашем случае этот

13:38

интервал будет равняться 25

13:40

миллисекундам я выбрал его исходя из

13:43

желаемого времени отклика

13:45

если количество подсчитанных импульсов

13:48

лежит в диапазоне от 70 до 150 эти

13:51

значения подобрал опытным путем значит

13:54

получен полезный сигнал

13:56

для проверки выведем данные обработаны и

13:59

нашим цифровым фильтром на светодиод

14:03

как видим программа работает очень четко

14:05

и безошибочно реагирует на прикосновение

14:08

пальца при этом слишком кратки и нажатия

14:11

игнорируются

14:13

теперь нужно реализовать воспроизведение

14:15

звука конечно можно ограничиться

14:18

простейшими звуковыми тоннами или

14:20

исполнением примитивной мелодий на

14:22

гипере

14:23

но мне хотелось получить звучание именно

14:26

классического дверного звонка

14:29

wave файл с желаемым звуковым фрагментом

14:32

я разыскал в интернете без труда звучит

14:34

он вот так

14:36

проблема в том что в arduino uno нет

14:40

полноценного встроенного цапа и без

14:43

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

14:45

воспроизводить оцифрованные сэмплы как

14:47

это делают обычные сиде mp3 плееры

14:51

но на просторах интернета нашлась одна

14:54

занятная библиотека называется она да

14:57

мере с писем согласно описанию она умеет

15:01

воспроизводить

15:02

8-битные звуковые файлы писем формата

15:05

используя встроенный аппаратный таймер

15:08

ардуины для установки библиотеку

15:10

необходимо скачать ссылочку я оставлю в

15:13

описании распаковать и положить в папку

15:15

libraries оболочки arduino под именем

15:18

писем

15:20

следом сразу же откроем файл pcm все

15:22

исправим частоту дискретизации с 8000

15:26

герц на 11000 25 герц именно в таком

15:30

формате мы будем готовить цифровой сэмпл

15:33

со звуком дверного звонка

15:35

скачанные из интернета в файл имеет

15:38

формат 44 килогерца 16 бит стерео нам

15:43

необходимо конвертировать его в 11000 25

15:46

герц 8 бит монна обратите внимание

15:50

только в таком формате библиотека

15:52

принимает сэмпла

15:55

конвертация необходимо потому что память

15:58

arduino uno слишком мало для хранения

16:01

больших блоков данных конечно снижение

16:03

битрейта приведет к ухудшению качества

16:05

звука но в нашем случае это некритично

16:10

завершив конвертацию удаляем из

16:12

полученного в файла заголовок и мета

16:15

вставки и извлекаем из него

16:17

непосредственно блок 8-битных

16:19

аудиоданных

16:21

теперь нам нужно поместить этот блок в

16:23

байт вый массив к сожалению оболочка

16:26

arduino не умеет загружать бинарный файл

16:29

напрямую в переменную поэтому его нужно

16:31

конвертировать в стандартный оператор

16:34

определения массива записаны в формате

16:37

принятом языке программирования си

16:39

для этой цели мы будем использовать

16:41

программу hex workshop

16:45

звуковой sample в итоге приобретает вот

16:48

такой вид

16:50

сохраним его в отдельный файл и включим

16:52

в основную программу при помощи

16:53

директивы include

16:56

для воспроизведения сэмпла достаточно

16:58

использовать процедуру старт play дак и

17:00

и единственными двумя параметрами

17:02

являются имя бы этого массива и его

17:05

длина

17:07

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

17:09

подключается к одиннадцатому выходу

17:11

arduino и изменить это назначение нельзя

17:14

причина в том что именно сюда подключен

17:17

выход аппаратного таймера

17:18

микроконтроллера

17:24

по-моему получилось неплохо

17:30

дорогие друзья я бы хотел в очередной

17:33

раз искренне поблагодарить подписчиков

17:36

принявших участие в судьбе канал работа

17:39

над этим проектом занимает сейчас

17:41

практически все мое свободное время к

17:44

сожалению в данный момент монетизации на

17:46

youtube работает с большими

17:48

ограничениями и канал по сути существует

17:51

на ваши добровольные взносы если вы

17:54

смотрите большую мастерскую тома и

17:56

находите публикуемая здесь материалы

17:58

интересными и полезными я прошу вас

18:01

поддержать канал посильным материальным

18:03

пожертвую средства будут направлены на

18:06

развитие проекта и создание новых

18:08

роликов для выполнения перевода

18:11

пожалуйста перейдите по ссылке в

18:13

описании этого ролика либо просто

18:15

отсканируйте qr-код который видите на

18:17

экране

18:19

наш следующий проект электронная линейка

18:23

использующие в качестве датчика

18:25

перемещения моторчик от шпинели синерама

18:29

думаю ни для кого не секрет что любой

18:31

коллекторный двигатель постоянного тока

18:33

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

18:37

так вырабатываемой таким двигателем

18:39

однако является непостоянным а

18:42

пульсирующим поскольку в коллекторе

18:45

двигателя происходит непрерывное

18:47

переключения обмоток благодаря чему цепь

18:50

разрывается с частотой пропорциональной

18:52

скорости вращения вала

18:55

именно этот эффект мы будем использовать

18:58

в данном устройстве

19:00

его принципиальную схему вы видите на

19:02

экране

19:04

здесь у нас будет использоваться

19:05

2-значный семисегментный дисплей

19:08

работающие в режиме динамической

19:10

индикации

19:11

рассказу о динамическом способы вывода

19:14

информации и опроса клавиатуры я

19:16

посвятил отдельное видео ссылочку я

19:19

оставлю в описании

19:20

точно так же как и в предыдущих скетчах

19:23

для считывания информации мы будем

19:25

использовать ацп

19:27

но и здесь есть небольшой нюанс

19:30

очевидно нам хотелось бы реализовать от

19:33

счет импульсов в обоих направлениях и на

19:35

увеличение и на уменьшение чтобы все

19:38

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

19:40

штангенциркуль мы знаем что при

19:43

изменении направления вращения вала на

19:46

выходе моторчика будет меняться

19:48

полярность и д.с.

19:50

как опросить это при помощи от cp

19:53

в принципе можно собрать делитель на

19:55

двух резисторах и поднять уровень нуля

19:57

до половины питания в этом случае

20:00

положительное ds будет увеличивать

20:02

значение считаем as a т.п. отрицательное

20:05

понижать

20:07

но наша цель максимальное упрощение

20:09

схемы

20:11

поэтому мы поступим хитрее

20:13

мотор мы будем подключать между двумя

20:16

аналоговыми входами

20:18

как мы уже знаем отца по arduino умеет

20:21

превращаться в транзисторный ключ

20:23

поэтому мы будем поочередно переводить

20:26

аналоговые входы в цифровой режим и

20:29

устанавливать на них нолик параллельно

20:32

опрашивая при этом второй оставшийся

20:34

вход

20:35

тем самым мы будем как бы менять входную

20:37

полярность ацп

20:39

добавлю что в сфере автоматизации

20:41

процессов подобные решения используются

20:43

очень часто входы процессора попеременно

20:47

переключают в разные режимы и датчики

20:49

опрашивают также поочередно

20:52

поскольку происходит это на порядки

20:54

быстрее чем сам анализируемый процесс

20:56

для пользователя это выглядит полностью

20:58

прозрачна

21:00

перед нами основной цикл скетча

21:03

кнопка минус используется для обнуления

21:05

счетчика

21:07

мы переводим вход а один в цифровой

21:10

режим и устанавливаем на нем логический

21:12

0

21:14

далее производим аналоговой считывание

21:16

со входа а 0

21:18

если значение считанное соци п больше

21:20

нуля увеличиваем счетчик расстояние на

21:23

единицу

21:25

в следующем блоке входы а0 и а1 меняются

21:28

местами и счетчик соответственно уже

21:31

уменьшается на единицу

21:34

процессе отладки устройство я выяснил

21:36

что на показания влияет и амплитуда

21:38

сигнала которая вырастает при увеличении

21:41

скорости перемещения моторчика для

21:44

устранения обнаруженной погрешности я

21:46

ввёл корректирующий коэффициент

21:48

подобранный опытным путем

21:51

точность же самих измерений также можно

21:53

отрегулировать при помощи вот этого

21:55

калибровочного коэффициента

21:58

смотрим

22:01

поскольку подобный моторчик можно найти

22:03

практически в любом синдроме думаю

22:05

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

22:08

вас никакого труда

22:11

следующая схема которой мы разберем

22:14

сегодня это декодер сигналов

22:16

инфракрасного пульта используя данное

22:19

устройство вы сможете дистанционно

22:21

управлять самой различной нагрузкой

22:24

в основе схемы лежит инфракрасный

22:27

приемник tsp 1736 данный элемент не

22:31

просто фотодиод или фоторезистор это

22:35

микросхема формирующие качественный

22:38

прямоугольный сигнал лишенные помех и

22:40

дребезга которой можно сразу подавать на

22:42

процессор

22:44

в данном случае и к приёмник подключен у

22:47

нас клинья аду а просто ради удобства а

22:50

т б нам здесь не нужен для работы

22:52

датчика на него также необходимо подать

22:55

питание

22:56

светодиоды подключены к цифровым линиям

22:59

257 10 и 13 если вам нужно управлять

23:03

только 1 нагрузкой например просто

23:06

включать и выключать светильник в

23:08

принципе можно обойтись и без процессора

23:10

однако проблема подобной схемы в том что

23:13

работать оно будет очень нестабильно

23:15

во-первых датчик будет принимать сигнал

23:18

любого инфракрасного пульта находящуюся

23:20

в помещении например вы переключаете

23:23

канала на телевизоре а у вас начинает

23:25

мигать торшер

23:26

во-вторых он будет реагировать даже на

23:29

включение выключение люстры так как

23:31

обычная лампа также излучает в

23:33

инфракрасном спектре

23:35

для того чтобы сделать работу схемы

23:37

осмысленны и привязать нужные вам

23:40

операции к нажатию конкретных кнопок на

23:43

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

23:45

программу декодер сигнала

23:47

счастью мы являемся обладателями arduino

23:50

и такую программу другие хорошие люди

23:53

уже написали за нас чтобы скомпилировать

23:56

данный скетч в оболочке вам необходимо

23:59

подключить библиотеку под названием и

24:01

эры mode

24:02

для использования библиотеки в блок

24:05

сетап достаточно включить команду

24:07

инициализации а в блоке лук вызывая

24:10

соответствующую функцию просто

24:13

сравнивать полученные декором значения с

24:16

неким эталонным списком кодов кнопок

24:19

я заранее прогнал скетч в режиме отладки

24:21

и прочитал коды вот этого небольшого

24:24

пульсе к и занес их в программу теперь

24:27

при нажатии кнопок у нас зажигаются

24:29

соответствующие светодиоды

24:32

[музыка]

24:34

последнее устройство которое мы соберем

24:37

сегодня это игровая макро клавиатура

24:40

проект основан на способности arduino

24:43

выполнять роль эмулятора практически

24:46

любого юсб устройства

24:48

arduino может быть компьютерной

24:50

клавиатурой джойстиком мышью тачскрином

24:54

веб-камеры микрофоном и так далее и тому

24:56

подобное

24:58

чтобы воспользоваться этой функцией

25:00

вы написав соответствующий скетч просто

25:03

подключаете плату к компьютеру при

25:05

помощи того же юсб порта через которые и

25:08

программировали единственно эмулировать

25:11

и избе устройство умеют не все платы

25:14

arduino а только модели основанный на

25:16

микроконтроллере 32 у 4

25:19

в данном случае мы будем использовать

25:21

arduino про микро

25:23

а состоять наша клавиатура будет из

25:25

четырех кнопок курсора и пробела этого

25:29

вполне достаточно для большинства

25:30

винтажных игр

25:32

вообще количество кнопок ничем не

25:35

ограничено и для их поддержки вам

25:37

достаточно просто описать обработку их

25:40

кодов программ на

25:42

схемы устройства вы видите на рисунке

25:45

кнопки у нас здесь подключены

25:47

относительно земли поэтому

25:49

соответствующие входа arduino мы

25:51

переведем в режим input pull up тем

25:53

самым активировав встроенные резисторы

25:56

которые будут подтягивать ножки на плюс

25:58

да у

26:00

atmega328 есть внутренние подключаемые

26:04

подтягивающие резисторы ну как можно не

26:07

любить этот процессор

26:10

эмуляцией usb клавиатуры мы будем

26:12

использовать встроенную библиотеку

26:14

arduino под названием keyboard для

26:16

успешной компиляции скетча ее необходимо

26:19

активировать через меню оболочки вот

26:22

таким образом

26:23

пользоваться библиотекой предельно

26:25

просто сначала мы инициализируем ее в

26:28

блоке сетап а затем когда регистрируем

26:31

нажатии одной из кнопок на нашем

26:33

устройстве вызываем соответствующую

26:35

процедуру для эмуляции нажатия нужной

26:38

клавиши на наши виртуальные избе

26:40

клавиатуре

26:41

на первый взгляд алгоритм этот предельно

26:44

прост опросили кнопки выдали нужный кода

26:47

на юсб порт

26:48

но на поверку все немного сложнее дело в

26:51

том что в игровых программах зачастую

26:54

используются удержание либо

26:56

одновременное нажатие нескольких кнопок

26:59

например чтобы герой бежал мы удерживаем

27:02

кнопку соответствующего направления а

27:04

чтобы прыгнул влево зажимаем кнопки

27:07

влево и вверх

27:09

чтобы все это реализовать процесс опроса

27:12

каждой кнопки придется разбить на две

27:14

составляющие опрос собственно нажатие и

27:18

опрос отпускания

27:20

на юсб порт компьютера мы также будем

27:23

отправлять эти события по отдельности

27:25

благо библиотека keyboard поддерживает

27:27

такой режим работы

27:29

как же нам отличить нажатии и отпускании

27:31

и от удерживания

27:34

для этой цели в программировании

27:36

используется давний классический прием

27:39

мы определяем два набора переменных по

27:41

количеству кнопок у нас их 5 значит

27:44

переменных будет 10 самом начале цикла

27:47

мы опрашиваем все кнопки и сохраняем их

27:51

состояния в этот набор переменных

27:53

в конце же цикла копируем эти состояния

27:57

во второй набор переменных

27:59

таким образом получается что на момент

28:02

начала цикла переменные на букву р

28:05

хранят текущее состояние кнопок а

28:08

переменные на букву м состояние из

28:11

предыдущего цикла

28:13

теперь нам остаётся только сравнить эти

28:15

два массива

28:17

если предыдущее состояние некой кнопки

28:19

было отпущено а текущая нажата напоминаю

28:24

нажатие это нолик значит произошло ее

28:26

нажатии если же предыдущее состояние

28:30

напротив была нажата а текущая отпущено

28:34

значит пользователь отпустил кнопку

28:38

если же оба состояния одинаковы значит

28:41

никаких событий не происходило и нам

28:43

ничего не нужно отправлять на ее usb

28:45

порт в процессе отладки программы я

28:48

также добавил небольшую функцию под

28:50

названием мульти рид она выполняет 50

28:54

последовательных считывание кнопки а

28:56

затем сравнивает чего было больше нулей

28:59

или единиц соответственно принимается

29:02

решение нажата кнопка или отпущено это

29:06

необходимо для устранения дребезга при

29:08

нажатии

29:09

при любом событии и нажатии и отпускании

29:12

у нас будет мигать светодиодик и

29:14

выполняться задержка на 100 микросекунд

29:17

также для устранения дребезга

29:21

здесь у нас расположились коды клавиш

29:23

которые мы будем отправлять в компьютер

29:25

роль кнопки огонь fire будет играть

29:28

пробел его 16-ричный код 20

29:34

проверим

29:36

судя по всему все работает

29:41

друзья у меня есть для вас небольшая

29:44

новость теперь вы можете найти большую

29:47

мастерскую пола на индекс джини но

29:50

youtube канал безусловно будет

29:52

продолжать свое существование

29:54

также напомню что полные тексты всех

29:57

скетчей arduino вместе с принципиальными

30:00

схемами

30:01

сопутствующими файлами и текстовыми

30:04

версиями лекций вы как всегда можете

30:06

найти в эксклюзивной секции доступной

30:10

при расширенной подписки на канал ссылка

30:12

на оформление подписки находится в

30:14

описании доступ к этому внушительному

30:17

архиву также автоматически получают все

30:20

подписчики оказавшие материальную

30:23

поддержку каналу если же вы хотели бы

30:25

приобрести оборудование или компоненты

30:28

продемонстрированные в этом ролике

30:30

ссылки на их заказ вы так же найдете в

30:33

описании и как всегда буду благодарен

30:36

если вы поставите лайк и поделитесь

30:38

ссылкой на это видео с друзьями и

30:41

знакомыми вы смотрели этот канал большая

30:44

мастерская дома на этом я с вами

30:46

прощаюсь

30:47

будьте здоровы пока

Rate This

5.0 / 5 (0 votes)

Связанные теги
ArduinoДомашние устройстваИндикатор затопленияИгровая клавиатураЭлектронные конструкцииМастер-классДатчик освещенностиУльтразвуковой пультЭлектронная линейкаСенсорный звонокЮсб эмуляция