- Компоненты, необходимые для создания автоматических жалюзи Arduino
- Управление рольставнями с помощью Arduino
- Спроектируйте и соберите оконную глухую передачу
- 3D-печать держателя двигателя и слепого механизма
- Принципиальная схема для управления жалюзи Arduino
- Приложение Blynk для контроля слепых на Arduino
- Программирование NodeMCU для управления жалюзи с помощью Blynk
- Управление жалюзи с помощью Google Assistant
- Автоматическое управление жалюзи окон на базе Arduino - Демонстрация
"Доброе утро. Сейчас 7 часов утра. Погода в Малибу 72 градуса… »- это были первые слова ДЖАРВИСа, когда он был представлен во вселенной Marvel Cinematics. Большинство поклонников Железного человека должны помнить эту сцену и помнить, что ДЖАРВИС смог открыть окно (вроде как) утром и сообщить новости о времени и погоде. В фильме оконные очки фактически были сделаны из прозрачных сенсорных дисплеев, и, следовательно, JARVIS смог сделать его из черного прозрачным, а также отобразить на нем статистику погоды. Но на самом деле мы далеки от прозрачных сенсорных экранов, и чем ближе мы можем стать, тем лучше управлять оконными жалюзи или ограничениями автоматически.
Итак, в этом проекте мы собираемся построить именно это, мы построим автоматические моторизованные жалюзи, которые будут автоматически открываться и закрываться в заранее определенное время. Ранее мы реализовали множество проектов домашней автоматизации, в которых мы автоматизировали освещение, двигатели и т. Д. Вы можете проверить их, если вам интересно. Итак, возвращаясь, эти управляемые жалюзи Arduino могут также принимать команды от помощника Google, чтобы вы могли открывать или закрывать жалюзи удаленно с помощью голосовых команд. Интригующе? Тогда давайте построим его.
Компоненты, необходимые для создания автоматических жалюзи Arduino
Проект относительно прост и не требует большого количества компонентов. Просто соберите перечисленные ниже предметы.
- NodeMCU
- Шаговый двигатель - 28BYJ-48
- Модуль драйвера шагового двигателя
- LM117-3.3V
- Конденсаторы (10 мкФ, 1 мкФ)
- Адаптер постоянного тока 12 В
- Perf Board
- Набор для пайки
- 3д принтер
Управление рольставнями с помощью Arduino
Сейчас на рынке есть много типов жалюзи, но наиболее часто используемый имеет веревку с бортиками (как показано ниже), которые можно потянуть, чтобы открыть или закрыть жалюзи.
Когда мы потянем эту круглую веревку по часовой стрелке, оконные жалюзи откроются, а когда мы потянем эту веревку против часовой стрелки, оконные жалюзи закроются. Итак, если бы мы должны были автоматизировать этот процесс, все, что нам нужно было бы сделать, это использовать двигатель, чтобы тянуть эту веревку по часовой стрелке или против часовой стрелки, и мы закончим с этим. Фактически, именно этим мы и собираемся заниматься в этом проекте; мы будем использовать шаговый двигатель 28BYJ-48 вместе с NodeMCU, чтобы тянуть веревку из бисера.
Спроектируйте и соберите оконную глухую передачу
Часть этого проекта, касающаяся электроники, была довольно простой и понятной, сложная часть заключалась в создании слепого механизма, который мог тянуть за веревку с бусами. Итак, давайте начнем эту статью с конструкции слепого механизма, я не буду вдаваться в подробности о том, как это сделать, но эта основная идея должна вам помочь. Изображение веревки с бусами на ней показано ниже.
Опять же, существует много типов веревок, но наиболее часто используемые веревки имеют межцентровое расстояние каждого борта 6 мм и диаметр каждого борта 4 мм. Используя эту информацию, мы можем приступить к проектированию нашего снаряжения. Если веревка на ваших жалюзи имеет те же размеры, что и обсуждались, вы можете просто пропустить этот шаг, загрузить файл STL, представленный в этой статье, и распечатать шестеренку. Если у вашей веревки другое расположение бусинок, то вам следует изменить конструкцию слепого механизма.
Я решил использовать 24 борта на своей шестерне, чтобы получить оптимальный размер шестерни. Вы можете выбрать любое число, близкое к этому, чтобы ваша шестерня была большой или маленькой. Итак, теперь мы знаем, что расстояние между каждым бусинкой составляет 6 мм, и нам нужно 24 бусинки на нашей шестеренке. Умножение обоих даст окружность шестерни. Имея эти данные, вы можете рассчитать радиус шестерни. Как вы можете видеть на изображении выше, диаметр моей шестерни был рассчитан примерно на 46 мм. Но помните, что это не фактический диаметр шестерни, потому что мы не учли диаметр выступа, равный 4 мм. Итак, фактический диаметр зубчатого колеса будет 42 мм. Я распечатал и протестировал множество зубчатых колес, прежде чем нашел ту, которая работает лучше всего. Если вам не нравится дизайн,просто скачайте и распечатайте файлы STL из следующего абзаца и продолжайте работу над проектом.
3D-печать держателя двигателя и слепого механизма
Наряду с шестерней нам также понадобится небольшой кожух, который можно просверлить в стене и удерживать шаговый двигатель в нужном положении. Кожух и шестерня, используемые в этом проекте, показаны ниже.
Вы можете найти полные файлы дизайна и файлы STL на странице Arduino Blind Control Thingiverse, приведенной ниже. Вы можете просто скачать и распечатать свой слепой механизм и корпус двигателя.
Загрузите файлы STL для слепого механизма и корпуса двигателя
Принципиальная схема для управления жалюзи Arduino
Когда вы будете готовы с редуктором и сборкой, можно легко приступить к электронике и программной части. Полная принципиальная схема для проекта управления жалюзи Интернета вещей показана ниже.
Мы использовали адаптер 12 В для питания всей установки; регулятор LM1117-3.3V преобразует напряжение 12 В в напряжение 3,3 В, которое можно использовать для питания платы NodeMCU. Модуль драйвера шагового двигателя питается напрямую от адаптера 12 В. Я попытался запустить шаговый двигатель на 5 В, но тогда он не обеспечил достаточного крутящего момента, чтобы тянуть жалюзи, поэтому убедитесь, что вы также используете 12 В.
Кроме того, схема довольно проста, если вы новичок в шаговых двигателях, изучите основы статьи о шаговых двигателях, чтобы понять, как он работает и как его можно использовать с микроконтроллером.
Приложение Blynk для контроля слепых на Arduino
Прежде чем мы перейдем к программе Arduino для управления жалюзи, давайте откроем приложение blynk и создадим несколько кнопок, с помощью которых мы сможем открывать или закрывать наши жалюзи. Нам это также понадобится позже, чтобы управлять из дома Google.
Я только что добавил две кнопки для открытия и закрытия жалюзи и одну кнопку, чтобы открывать жалюзи в 10:00 каждый день. Вы можете добавить несколько таймеров, чтобы открывать или закрывать жалюзи в разные промежутки дня. По сути, когда нам нужно закрыть жалюзи, мы должны активировать виртуальный контакт V1, а когда нам нужно открыть жалюзи, мы должны активировать виртуальный контакт V2. Программа для управления шаговым двигателем на основе нажатой здесь кнопки будет написана на Arduino IDE, то же самое обсуждается ниже.
Программирование NodeMCU для управления жалюзи с помощью Blynk
Полный код ESP8266 для этого проекта по контролю слепых можно найти внизу этой страницы. Наша программа должна ждать команды от приложения blynk, и на основе этой команды мы должны вращать шаговый двигатель либо по часовой стрелке, либо против часовой стрелки. Ниже обсуждаются важные сегменты кода.
Согласно нашей принципиальной схеме, мы использовали цифровые выводы 1, 2, 3 и 4 на nodemcu для управления нашим шаговым двигателем. Итак, мы должны создать экземпляр, называемый степпером, используя эти контакты, как показано ниже. Обратите внимание, что мы определили контакты в порядке 1, 3, 2 и 4. Это было сделано намеренно и не является ошибкой; мы должны поменять местами контакты 2 и 3 для правильной работы двигателя.
// создать экземпляр класса степпера, используя шаги и контакты Stepper stepper (STEPS, D1, D3, D2, D4);
На следующем этапе мы должны поделиться токеном аутентификации приложения blynk и учетными данными Wi-Fi, к которым должен быть подключен наш контроллер IoT Blind. Если вы не знаете, как получить этот токен аутентификации Blynk, обратитесь к проекту Blynk LED Control, чтобы понять основы приложения blynk и способы его использования.
// Вы должны получить токен аутентификации в приложении Blynk. // Заходим в настройки проекта (значок ореха). char auth = "l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx"; // Ваши учетные данные WiFi. // Установите пароль на "" для открытых сетей. char ssid = "CircuitDigest"; char pass = "dummy123";
Продолжая наш код, после функции настройки мы определили два метода для blynk. Как упоминалось ранее, мы должны определить, что должны делать виртуальные контакты V1 и V2. Код для этого приведен ниже.
BLYNK_WRITE (V1) // ЗАКРЫТЬ ЖАЛЮЗИ {Serial.println ("Закрытие жалюзи"); if (open == true) {for (int c_val = 0; c_val <= 130; c_val ++) // повернуть против часовой стрелки для закрытия {stepper.step (c_val); Уступать(); } closed = true; open = false; disable_motor (); // всегда отключать шаговые двигатели после использования для снижения энергопотребления и нагрева}} BLYNK_WRITE (V2) // ОТКРЫТЬ ЖАЛЮЗИ {Serial.println ("Открытие жалюзи"); if (closed == true) {for (int cc_val = 0; cc_val> = -130; cc_val--) // повернуть по часовой стрелке для открытия {stepper.step (cc_val); Уступать(); } open = true; закрыто = ложь; } disable_motor (); // всегда отключать шаговые двигатели после использования, чтобы снизить энергопотребление и нагрев}
Как видите, V1 используется для закрытия жалюзи, а V2 - для открытия жалюзи. Цикл for используется для вращения двигателей по часовой стрелке или против часовой стрелки на 130 шагов. Я экспериментировал со своими жалюзи и обнаружил, что за 130 шагов я могу полностью открывать и закрывать свои жалюзи. Ваш номер может отличаться. Цикл for для вращения шагового двигателя по часовой стрелке и против часовой стрелки показан ниже.
for (int c_val = 0; c_val <= 130; c_val ++) // повернуть против часовой стрелки для закрытия {stepper.step (c_val); Уступать(); } for (int cc_val = 0; cc_val> = -130; cc_val--) // повернуть по часовой стрелке для открытия {stepper.step (cc_val); Уступать(); }
Вы также можете заметить в нашей программе две логические переменные: «open» и «closed». Эти две переменные используются для предотвращения двойного открытия или закрытия жалюзи мотором. Это означает, что жалюзи будут открываться только тогда, когда они были ранее закрыты, и они закроются только тогда, когда они были ранее открыты.
Как увеличить скорость шагового двигателя 28BJY-48?
Одним из недостатков использования шагового двигателя 28BJY-48 является то, что он очень медленный. Эти двигатели первоначально были изготовлены для использования в высокоточных низкоскоростных приложениях, поэтому не ожидайте, что эти двигатели будут вращаться с высокой скоростью. Если вы хотите увеличить скорость шагового двигателя с помощью Arduino, вы можете изменить два параметра. Один из них - #define STEPS 64, я обнаружил, что, когда шаги определены как 64, двигатель был сравнительно быстрее. Другой параметр - stepper.setSpeed (500); Опять же, я обнаружил, что 500 является оптимальным значением, все, что больше, на самом деле замедляет шаговый двигатель.
Вы знаете какой-нибудь другой способ увеличить скорость этих двигателей? Если да, оставьте их в разделе комментариев ниже.
Как предотвратить перегрев шагового двигателя?
Когда шаговые двигатели не используются, всегда следует отключать их, чтобы предотвратить перегрев. Отключить шаговый двигатель очень просто; просто измените состояние контактов всех четырех контактов GPIO, которые управляют шаговым двигателем, на низкое. Это очень важно, иначе ваш мотор может сильно нагреться при напряжении +12 В и навсегда выйти из строя. Программа для отключения шагового двигателя приведена ниже.
void disable_motor () // выключаем двигатель, когда это сделано, чтобы избежать нагрева {digitalWrite (D1, LOW); digitalWrite (D2, LOW); digitalWrite (D3, LOW); digitalWrite (D4, LOW); }
Управление жалюзи с помощью Google Assistant
Мы собираемся использовать blynk API для управления жалюзи через Google Ассистент, он будет похож на наш проект домашней автоматизации с голосовым управлением, так что проверьте это, если интересно. По сути, мы должны активировать указанную ниже ссылку, когда говорим заранее определенную фразу в Google Assistant.
//http://188.166.206.43/l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx/update/V1?value=1 /
Убедитесь, что вы изменили токен аутентификации на тот, который предоставлен вашим приложением blynk. Вы даже можете проверить эту ссылку в браузере Chrome, чтобы убедиться, что она работает должным образом. Теперь, когда ссылка готова, нам просто нужно перейти к IFTTT и создать два апплета, которые могут запускать виртуальные выводы V1 и V2, когда мы просим закрыть и открыть жалюзи. Опять же, я не буду вдаваться в подробности этого, потому что мы делали это много раз. Если вам нужна дополнительная помощь, обратитесь к этому проекту FM-радио с голосовым управлением, просто замените службы adafruit на webhooks. Я также делюсь снимком экрана со своим фрагментом для справки.
Автоматическое управление жалюзи окон на базе Arduino - Демонстрация
После того, как схема и корпусы, напечатанные на 3D-принтере, будут готовы, просто установите устройство на стене, просверлив в стене два отверстия. Моя установка для монтажа показана на рисунках ниже.
После этого убедитесь, что ваши жалюзи открыты, а затем включите цепь. Теперь вы можете попробовать закрыть жалюзи из приложения blynk или через Google Assistant, и он должен работать. Вы также можете установить таймеры в приложении blynk для автоматического открытия и закрытия жалюзи в определенное время дня.
Полную работу проекта можно посмотреть в видео ниже; Если у вас есть какие-либо вопросы, не стесняйтесь писать их в разделе комментариев ниже. Кроме того, вы можете использовать наши форумы для других технических обсуждений.