Alma38.ru

Электро Свет
4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как сделать умный дом своими руками на Arduino и — пошаговая инструкция

Как сделать умный дом своими руками на Arduino и Яндекс.Алиса — пошаговая инструкция

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

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

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

Как работает такой умный дом?

Чтобы создать умный дом своими руками, потребуется навык Домовёнок Кузя. Через него можно не только контролировать умный дом, но и интегрировать виртуальные устройства напрямую в Яндекс.Алису. Это значит, что вам не придётся постоянно открывать навык, чтобы просто выключить лампочку. С микроконтроллером навык будет связываться через веб-хуки.

Для веб-хуков отлично подходит платформа Blynk — панель управления устройствами на Arduino и Raspberry Pi. Там вы сможете без труда создать графический интерфейс, через который можно будет управлять устройством по Wi-Fi (а ещё по Ethernet, USB, GSM и Bluetooth).

Какие устройства можно интегрировать в умный дом?

Через навык можно взаимодействовать с обширным количеством устройств: лампочки, розетки, шторы, замки, роботы-пылесосы, термостаты, очистители воздуха, кондиционеры и чайники. Кроме этого, можно переключать каналы на телевизоре (через универсальный пульт) и менять цвета RGB-ламп.

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

Аппаратная и программная часть

Для того, чтобы собрать умный дом своими руками, мы будет использовать Wi-Fi модуль ESP8266. Процесс разработки на нём почти не отличается от традиционной разработки на Arduino.

Для начала нужно скачать приложение Blynk из GooglePlay или AppStore и зарегистрироваться в нём. После этого нужно создать новый проект и выбрать соответствующий микроконтроллер. Перед вами появится пустая панель, на которой можно размещать элементы управления. Это могут быть кнопки, иконки, слайдеры, индикаторы, выпадающие списки и многое другое.

После создания проекта на вашу почту придёт токен доступа. Его нужно будет указать в скетче и веб-хуках.

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

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

На этом сайте можно найти много примеров кода для Blynk под разные платформы микроконтроллеров. Ниже приведён скетч, который будет управлять пином. Тот, в свою очередь, будет управлять реле, к которому будет подключена лампа:

Для этого скетча в панели управления Blynk нужно добавить элемент «Button». В его настройках OUTPUT выставить V0, а режим работы переключить в Switch.

Теперь к указанному порту можно подключать реле. Если всё правильно, то при нажатии на кнопку в панели управления реле будет открываться и закрываться.

Голосовое управление светом не мешает управлению им аппаратно. К микроконтроллеру можно подключить физическую кнопку или выключатель, которые тоже будут включать и выключать свет. Если это необходимо, то изменять состояние виртуального порта можно методом Blynk.virtualWrite(port, value) . Тогда изменения будут отображаться и на панели управления.

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

Всё работает? Тогда можете переходить к следующему этапу.

Получение веб-хуков

От Blynk вам потребуется не панель управления, а контроль виртуальных портов через GET-запросы. Вот так выглядит веб-хук на изменение состояния порта:

Чтобы включить виртуальный порт, <value> нужно указать как 1, чтобы выключить — как 0.

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

Настройка навыка «Домовёнок Кузя»

Перейдите на сайт навыка и авторизуйтесь там через Яндекс. Далее жмите на Добавить правило HTTP (GET). Перед вами откроется форма настройки правила.

Активационная фраза — название запроса, которое будет отображаться в списке (например «свет на кухне, включение»). Если вы не планируете контролировать умный дом конкретно изнутри навыка, то больше фраза нигде не понадобится. Поле Ответ Кузи тоже оставляйте пустым. В поле URL вставляете соответствующий веб-хук на включение света (виртуального порта). Остальные параметры можно не изменять. После этого нужно сделать идентичное правило на выключение света.

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

Дальше нужно перейти во вкладку виртуальных устройств и добавить устройство «Лампа». Тут нужно дать название устройству, по которому его будет идентифицировать Алиса. Например: свет, бра, подсветка, лампа или торшер. Место расположения — комната, в которой будет установлено устройство. Это нужно на тот случай, если в нескольких комнатах будут одинаковые по названию элементы. К тому же, одной голосовой командой можно включать и выключать все устройства в определённой комнате.

Читайте так же:
Устанавливаем выключатель света макел

В Правило на включение/выключение из списка выбираете соответствующие запросы. В лампе имеется возможность управления яркостью. Для этого нужно создать ещё одно правило, но значение параметра value установить как . Тогда в запрос будет подставляться число от 0 до 100, которое будет обозначать требуемую яркость. Вам лишь остаётся обработать это значение в скетче.

Пример настройки виртуального устройства

Примечание Если вы планируете изменять яркость, то параметр value в веб-хуке на включение нужно изменить с 1 на 100.

Настройка Алисы

В приложении Яндекс перейдите в раздел Устройства→Управление устройствами. Нажмите на кнопку «Добавить»→«Другое устройство». В открывшемся списке найдите навык «Домовёнок Кузя».

Авторизуйтесь в нём. Возможно, нужно будет ввести код объединения устройств, указанный в панели управления умным домом. Потом нажмите на Обновить список устройств.

На этом этом этапе вы уже создали умный дом своими руками. Теперь система полностью готова к голосовому контролю. К ней имеет доступ лишь ваш аккаунт. В настройках виртуальных устройств можно расширить доступ на другие аккаунты.

Arduino и MOSFET. Схема подключения

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

В эту схему подойдет к примеру мосфет h6n03l. Но тут есть нюанс в выборе резюков. Тот, который между ардуино и gate – чем больше сопротивление, тем меньше ток на ноге ардуино и меньше вероятность что она задымится. И чем больше сопротивление тем медленнее открывается мосфет. Кароч 150 ом норм для ардуино (по закону ома I = E / R, I = 5 / 150 = 0.033 А — это 33 миллиампера, норм). Зачем он вообще нужен? Дело в том, что затвор (gate) у полевика имеет определенную емкость и является в какой-то мере конденсатором. Так что в момент переключения через затвор проходят большие токи, которые может не выдержать ардуина. Для этого и нужен резистор между gate и пином.

А второй 10 кОм типа подтягивающий резистор – нужен чтобы держать мосфет закрытым и нагрузку выключенной пока порт ардуины в неопределенном состоянии например при загрузке (так называемое Z-состояние).

Но у этой схемы есть косяк – она медленновата. На переключение уйдет 600ns что подходит не для всех задач. Вот фронт и спад.

Желтая – выход с мосфета, зелено-бирюзово-светло-голубая – выход с ШИМ ардуино. Желтая не успевает. Для решения этой проблемы надо поставить парочку транзисторов как тут предлагают https://joost.damad.be/2012/09/dimming-12v-led-strip-with-mosfet-and.html

Но это нужно далеко не всегда и как правило достаточно первой схемы. И кстати есть вариант получше — про него в конце статьи.

Подключение мосфета к Ардуино

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

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

С одной стороны – ничего сложного, с другой – Arduino обеспечивает на выходе только небольшой ток и напряжение (U – не более 5В, I – 40 мА). Значит. Мощную нагрузку нужно подключать через специальный «усилитель». В качестве последнего могут выступать специализированные транзисторы Дарлинтона, биполярные, полевые (мосфеты), реле (механические или на оптопаре) и т.п.

Мы уже подробно рассмотрели основные варианты подключения нагрузки к Ардуино. Здесь же детально осветим вариант с полевым транзистором.

Нагрузка через мосфет к Ардуино — схема

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

  • Двигатели (шаговые или постоянного тока);
  • Нагревательные приборы;
  • Мощные лампы;
  • Соленоиды;
  • И т.п.

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

Во-первых, полевой транзистор будет греться, во-вторых, его реакция определённо «медленная» для ВЧ техники.

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

Типовая схема включения нагрузки

Рис. 1. Типовая схема включения нагрузки

Или такой (для лучшего понимания принципа работы).

Вариант схемы включения нагрузки

Рис. 2. Вариант схемы включения нагрузки

Резистор 3к на затворе – это ограничитель (подстроечное сопротивление). А 10к – это своего рода предохранитель от перехода мосфета в Z-режим (исключается эффект «дребезжания» на малых токах управления).

Читайте так же:
Подключение двойного выключателя светодиод

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

Схема принимает следующий вид.

Рис. 3. Схема устройства

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

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

Рис. 4. Гальванический разрыв цепи через оптрон

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

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

Рис. 5. Вариант схемы устройства

На случай острой необходимости управления сетью с переменным током 220В с ШИМ-выхода можно воспользоваться следующей схемой.

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

Рис. 6. Вариант схемы устройства

Она подойдёт на роль «автоматического диммера» с продвинутыми настройками.

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

Как рассчитать потери мощности на мосфете

Для этого понадобится сопроводительная документация (даташит) к выбранному полевому транзистору. Здесь стоит отметить, что подбирать мосфет необходимо из серий, помеченных как «Logic Level», они разрабатываются специально для работы с микроконтроллерами.

Из даташита необходимо уточнить график зависимости параметров транзистора, например, для IRF630.

Рис. 7. График зависимости параметров транзистора

При напряжении на затворе в 5 Вольт (см. линия в центре с подписью 5V) и токе в цепи (вертикальная ось координат) 5 А, падение напряжения составит около 2В (горизонтальная ось координат).

То есть сопротивление транзистора можно рассчитать по закону Ома как 2/8=0,25 (Ом).

Тогда мощность будет считаться как P=I2R, то есть 52·0,25 = 25·0,25=6,25 Вт.

При силе тока в 8 А потеря мощности будет составлять уже 35 Вт.

PNP mosfet arduino

Тут чутка сложнее

Если нам надо на нагрузку подать 5 вольт:

  • R1 ограничивает ток на затворе чтобы ардуинка не сломалась
  • R2 подтягивает порт на землю чтобы не было ложных срабатываний
  • D1 диод шотки чтобы не спалить все – он нужен только если нагрузка имеет большую индуктивность – например реле или мотор или еще что-то, где есть много намотанной проволоки. Кстати для NPN мосфета он тоже нужен. А на переменном токе не нужен, а то задымится)

Если на мотор или лампочку надо 12 вольт то все немного сложнее. Чтобы открыть мосфет нам надо подать 12 вольт на gate, а при таком варианте наш ардуино задымится. Надо еще один транзистор так:

Тут Q1 – биполярный транзистор – он то и включает 12 вольт на gate Q2, а R1 нужен чтобы ограничить ток чтобы ардуино опять таки не задымилась. Работает все так:

  • подаем с ардуино high – q1 начинает проводить ток с коллектора на эмиттер и 12 вольт утекает не в gate q2, а на землю. q2 включает мотор
  • подаем с ардуино low – q1 закрыт и не пропускает ток, 12 вольт через резистор подаются на gate q2, моторчик не крутится. все просто. резистор r2 нужен чтобы ограничить ток q1 и q2 чтобы он не задымились

Управлять больше чем 12 вольт можно, например 24 вольтами, если q1 выдержит. Чтобы наверняка можно добавить диод D2:

Управление двигателя постоянного тока с помощью транзистора и Arduino

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

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

В нашем случае хорошей идеей будет использовать в качестве коммутатора транзистор, например 2N2222. Транзистор способен управлять бОльшим током, используя при этом малый ток цифрового выхода Arduino.

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

Стенд для пайки со светодиодной подсветкой

Материал: АБС + металл + акриловые линзы. Светодиодная подсветка…

Для построения схемы нам потребуются следующие детали:

  • Макетная плата
  • Arduino Uno (может быть любая)
  • Двигатель постоянного тока
  • Транзистор 2N2222
  • Ограничивающий резистор 1кОм (с цветовой маркировкой: коричневый черный красный)
  • Выпрямительный диод 1N4007 (можно также использовать 1N4148)
  • Соединительные провода

Выход Arduino D3 соединен через резистор с базой транзистора. Предназначение резистора — ограничить ток, протекающий через базу транзистора.

Читайте так же:
Goldstar lt 40t450f уменьшить ток подсветки

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

Для управления двигателем мы используем простой код, задачей которого будет установка такой скорости, которую мы укажем в Serial мониторе:

Не следует забывать, что мы можем ввести значение только в диапазоне 0-255. Команда Serial.parseInt() считывает целое число типа int и сохраняет ее в программе как “Speed”. Если вы введете число, большее 255, то программа ничего не выполнит, потому что это число выше нашего диапазона.

Теперь мы знаем, что управление двигателем постоянного тока можно решить двумя способами. Мы можем использовать микросхему драйвер двигателя L293D (если планируется использование двигателя с большим потреблением тока) или использовать NPN транзистор (в данном случае, 2N2222).

Рулим 220 вольтами с помощью мосфета

Мосфетом не совсем удобно рулить 220 вольтами. Ну всяким извращенцам это нравится Вот пример схемы:

Эта схема диммера для лампочек, с помощью ШИМ можно менять яркость. Подробнее тут https://www.learningelectronics.net/circuits/dimmer-with-mosfet.html

А для нормального управления нагрузкой в 220 вольт вместо мосфетов можно использовать:

    симисторы типа bt131. Если нужна плавная регулировка света, то нужно делать что-то вроде этого:


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


Подробнее тут https://www.cyber-place.ru/showthread.php?t=525

Подключение Mosfet к Ардуино по-хорошему

Для таких вещей люди специально придумали специальные драйверы типа этих https://voltmaster-samara.ru/catalog/drajvery-mop-i-igbt-tranzistorov

Тут уж народ издевается над МОП транзисторами как хочет

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

На картинке первые две схемы а) и б) не очень, так как из-за кривых рук разработчика все может задымится. Зато вторые норм.

И кстати если надо использовать ШИМ — то лучше выбрать высокоскоростной драйвер типа TC4420.

Как подключить транзистор к Ардуино

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

Подключить мотор постоянного тока напрямую к цифровым или аналоговым портам Arduino не получится. Это обусловлено тем, что пины на плате Ардуино не способны выдавать ток более 40 мА. При этом мотору постоянного тока, в зависимости от нагрузки, необходимо сотни миллиампер. Потому и возникает потребность управления электрической цепью высокого напряжения транзистором или Motor Shield L293D.

Схема подключения мотора постоянного тока к Ардуино

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

Скетч. Управление мотором через транзистор

Если вы заметили, то это скетч из занятия — Включение светодиода на Ардуино. С точки зрения микропроцессора абсолютно не важно, что подключено к Pin13 — светодиод, транзистор или драйвер светодиодов для Светового меча на Ардуино. Обратите внимание на то, что резистор R1 подтягивает базу транзистора к земле, а резистор R2 служит для защиты порта микроконтроллера от перегрузки.

Ползунковый переключатель с Arduino Uno R3

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

Ползунковый переключатель с Arduino Uno R3

Содержание:

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

Шаг 1: Компоненты

— доска Arduino Uno * 1

— Резистор (220 Ом) * 1

— Ползунковый переключатель * 1

Шаг 2: Принцип

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

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

Шаг 3:

См. Символ цепи для ползункового переключателя, а 2 — среднее число пи.

Читайте так же:
Розетка 12в с подсветкой

Шаг 4: Схематическая диаграмма

Шаг 5: Процедуры

Здесь мы используем ползунковый переключатель для управления включением / выключением светодиода, что просто. Подключите средний контакт коммутатора к VCC. Подключите один контакт с одного конца к контакту 12. После подключения резистора 10 кОм и конденсатора 104, подключите его к заземлению (чтобы позволить переключателю выдавать сигнал стабильного уровня). Подсоедините светодиод к контакту 6. Нажмите ручку ползункового переключателя на контакт, подключенный к контакту 12, что означает «Высокий уровень», мы можем зажечь светодиод на контакте 6, программируя

Шаг 1: Постройте схему.

Шаг 2: Загрузите код с https://github.com/primerobotics/Arduino

Шаг 3: Загрузить эскиз на доску Arduino Uno

Нажмите значок «Загрузить», чтобы загрузить код на панель управления.

Если в нижней части окна отображается сообщение «Готово», это означает, что эскиз успешно загружен.

Когда вы переключаете переключатель на контакт 4, загорается светодиод

Шаг 6: Код

// Контроллинг
Ведомый ползунковым переключателем

// Включение и выключение светодиода при перемещении переключателя

const int switchPin = 12; // переключатель подключается к контакту 12

const int ledPin = 6; // светодиод подключается к контакту 6

int switchState = 0; // переменная для чтения статуса кнопки

pinMode (switchPin, INPUT); // инициализируем thebuttonPin как ввод

pinMode (ledPin, OUTPUT); // инициализировать светодиодный вывод как вывод

// читаем состояние значения переключателя

switchState = digitalRead (switchPin);

if (switchState == HIGH) // если это так, состояние HIGH

digitalWrite (ledPin, HIGH); // включить светодиод

digitalWrite (ledPin, LOW); // выключаем светодиод

Шаг 7: Анализ кода

Сначала прочитайте состояние switchPin и посмотрите, переместили ли вы ручку переключателя. Если он был нажат на контакт 12, то switchState имеет высокий уровень, поэтому установите ledPin на высокий уровень, что означает, что светодиод должен гореть; в противном случае, чтобы выключить его.

Определяем наличие сети 220В при помощи оптопары для Arduino

Задача проверки наличия 220в появилась для диспетчеризации работы теплого пола.

Необходимо определять — подано ли напряжение на сервоприводы клапанов коллектора теплого пола.

Определив моменты открытия/закрытия направлений отопления водяным теплым полом, можно уже вести статистику и передавать значения на сервер.

Выбор платы для контроля 220В.

Существуют в продаже специальные платы.

На вход подается исследуемая на наличие 220В линия, а на выходе будет 0 или +5В.

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

Бывают три вида плат с разным количеством измеряемых каналов: 1, 3, 8 — по цене 120, 320 и 622р соответственно.

Мне нужно контролировать наличие 220В нескольких направлений, поэтому заказал плату на 8 каналов.

Как работают изолированные оптопары.

Для начала необходимо выяснить — как же работает плата AC 220V 8 Channel MCU TTL Level 8 Ch Optocoupler Isolation Test Board Isolated Detection Tester Module PLC Processors.

Подключим ее к контроллеру Arduino Uno WiFi и посмотрим что будет на аналоговом входе при подаче 220В.

Пока на соответствующем контролируемом направлении сетевое питание отсутствует, на аналоговом входе Arduino мы наблюдаем значение 1023:

После подачи напряжения значение на аналоговом входе фиксируется на уровне 17-20:

Конечно имеет место переходный процесс:

Как использовать плату для контроля 220В при помощи Arduino.

Нам не нужно аналоговое значение, а нужно бинарное значение: ВКЛ/ВЫКЛ.

Получить это значение можно при помощи такого кода:

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

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

Но в моем случае это лишне усложнит код, а работает и так.

Проблемы.

Ну а куда же без них.

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

Там я контролировал питание 4-х головок-актуаторов направлений и питание насоса.

В зависимости от ситуации бывали моменты, когда плата зависала.

Исследования показали, что плата не зависала, а прекращался обмен по Serial, если включались направления, висящие на 4 и 5 аналоговых входах Arduino.

Помогла выяснить причину смена полярности подключения VSS,GND платы с оптронами к Arduino UNO.

Раньше подключение было: VSS-5.0V, GND-GND.

Теперь подключил наоборот: GND-VSS, 5.0V-GND.

После этой смены значения аналоговых входов A1-A3 стали таки зависеть от сигнала:

Значения же A4,A5 не менялись и не зависели от сигнала.

Вот листинг вывода значений A1-A5, иллюстрирующий ситуацию:

В последних показаниях все направления включены, но выходы A4,A5 показывают иные значения, чем A1-A3.

В первых строчках направления для A4,A5 и направление A1 выключены, но показания A4,A5 постоянны.

Причем причина была не в плате с оптронами, а именно в Arduino — перестановка пина A3 на направления с пинов A4,A5 показывало, что каналы платы с оптронами работают одинаково.

Причем так же вела себя и совсем другая Arduino, что, вероятно, означает что тут я делаю что-то не так, а не Arduino такая.

Читайте так же:
Схема электропроводки свет розетки

Решать проблему не стал и обошёлся нормальными входами A0-A3.

В экспериментах я использовал входы A1-A4 для контроля направлений и вход A5 для контроля насоса.

Перенес контроль направлений на входы A0-A3, а от контроля насоса отказался.

Вернул полярность подключения в исходную и при не задействованных A4, A5 все работает нормально.

Умный электронный замок на Ардуино, работающий по Bluetooth — входная дверь как у Спайдермена

RFID (англ. Radio Frequency IDentification, радиочастотная идентификация) — способ автоматической идентификации объектов, в котором посредством радиосигналов считываются или записываются данные, хранящиеся в так называемых транспондерах, или RFID-метках. Любая RFID-система состоит из считывающего устройства (считыватель, ридер или интеррогатор) и транспондера (он же RFID-метка, иногда также применяется термин RFID-тег).

В уроке будет использоваться RFID-метка с Arduino. Устройство читает уникальный идентификатор (UID) каждого тега RFID, который мы размещается рядом со считывателем, и отображает его на OLED-дисплее. Если UID тега равен предопределенному значению, которое хранится в памяти Arduino, тогда на дисплее мы увидим сообщение «Unlocked» (англ., разблокировано). Если уникальный идентификатор не равен предопределенному значению, сообщение «Unlocked» не появится — см. фото ниже.

Замок закрыт

Замок открыт

Объяснение работы проекта

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

Вид внутри на собранный умный замок

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

arduinoLab

Программируемый электронный замок с iButton (touch memory) ключами на ардуино,

с памятью на 63 ключа и открывание двери сервоприводом.

Код для ключей DALLAS DS1990, на таких, обычно по центру, написано 1-Bus или 1-Ware или совместимые с ними.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Модуль чтения радиочастотных меток EM-18 с картами (с метками) (купить на AliExpress).
  3. Реле 5v.
  4. Светодиод (купить на AliExpress).
  5. Зуммер (Buzzer) (купить на AliExpress).
  6. Соединительные провода.
  7. Резисторы (купить на AliExpress).

Внешний вид электронного замка на основе радиочастотных меток

Запись образца стука в Arduino

В нашем проекте мы использовали зуммер или пьезоэлектрический датчик (Peizo Sensor) для обнаружения стука. Кнопка используется для считывания входа датчика и для сохранения образца стука в плату Arduino. Идея проекта похожа на код Морзе, но не в точности соответствует ему.

Мы использовали картонную коробку для демонстрации работы проекта. Чтобы считать значения с выхода зуммера мы должны стучать в коробку после нажатия кнопки. Анализируется время между стуками, большее или меньше 500 мс – это значение можно поменять в программе. Более подробно смотрите в видео в конце статьи.

Внешний вид снаружи замка распознающего стуки

Когда мы начинаем стучать плата Arduino начинает анализировать (мониторить) время от первого стука до второго стука и потом записывать это значение времени в массив. В нашем проекте мы использовали 6 стуков (можно поменять в программе), то есть мы будем считывать значения 5 временных промежутков.

Затем мы будем анализировать интервалы времени между всеми 6 стуками. Сначала мы проверим временной интервал между первым и вторым стуками и если он будет меньше 500 мс, то мы запишем в соответствующую переменную 0, а если больше 500 мс – то в эту переменную мы запишем 1. После этого мы будем проверять временной интервал между вторым и третьим стуками и т.д. В результате мы получим 5 цифр в двоичном формате (0 или 1).

Работа схемы

Схема устройства представлена на следующем рисунке.


Как видите, схема нашего “умного детектора стуков” достаточно проста и содержит плату Arduino, управляющую всем процессом, кнопку, зуммер (buzzer) и сервомотор. Плата Arduino принимает пароль (образец стука) от зуммера (или датчика), сравнивает его с заданными шаблонами (образцами), дает команду сервомотору на открытие/закрытие двери и сохраняет образец (шаблон) стука.

Кнопка подключена к контакту D7 платы Arduino, второй контакт кнопки замкнут на землю. Зуммер при помощи параллельно включенного ему резистора на 1 МОм подключен к аналоговому контакту A0 платы Arduino. Сервомотор подключен к цифровому контакту D3 платы Arduino и будет управляться при помощи широтно-импульсной модуляции, доступной на данном контакте.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector