- Компоненти, необхідні для створення автоматичних штор Arduino
- Управління рулонними шторами за допомогою Arduino
- Спроектуйте та побудуйте віконну шторку
- 3D-друк тримача двигуна та шторки
- Схема для управління жалюзі Arduino
- Застосування Blynk для управління сліпим Arduino
- Програмування NodeMCU для управління жалюзі за допомогою Blynk
- Керування жалюзі за допомогою Google Assistant
- Автоматичне управління віконними шторами на базі Arduino - демонстрація
"Доброго ранку. Сьогодні 7:00. Погода в Малібу становить 72 градуси… ”- такими були перші слова JARVIS, коли вони були представлені у Всесвіті Marvel Cinematics. Більшість шанувальників Залізної людини повинні мати можливість згадати цю сцену і пам’ятати, що JARVIS вранці міг відкрити вікно (подібне до виду) та повідомити про час та погоду. У фільмі віконні окуляри насправді були зроблені з прозорими сенсорними дисплеями, отже, JARVIS зміг перетворити його з чорного на прозорий, а також відображати на ньому статистику погоди. Але насправді ми далеко від прозорих сенсорних екранів, і чим ближче ми можемо наблизитись, так це автоматичний контроль віконних жалюзі або обмежень.
Отже, у цьому проекті ми збираємося побудувати саме це, ми створимо автоматизовану моторизовану штору, яка автоматично відкриватиметься та закриватиметься заздалегідь визначеним часом. Раніше ми побудували багато проектів автоматизації будинку, в яких ми автоматизували світло, двигуни тощо. Ви можете перевірити їх, якщо вам цікаво. Отже, повертаючись, ці штори, керовані Arduino, також можуть приймати команди від асистента Google, щоб ви могли дистанційно відкривати або закривати вікна за допомогою голосових команд. Інтригуюче? Тоді давайте побудуємо його.
Компоненти, необхідні для створення автоматичних штор Arduino
Проект порівняно простий, і не потрібно багато компонентів. Просто зберіть елементи, перелічені нижче.
- NodeMCU
- Кроковий двигун - 28BYJ-48
- Модуль драйвера крокового двигуна
- LM117-3.3V
- Конденсатори (10 мкф, 1 мкф)
- Адаптер постійного струму 12 В
- Perf Board
- Набір для пайки
- 3D-принтер
Управління рулонними шторами за допомогою Arduino
Зараз на ринку існує безліч типів жалюзі, але найчастіше використовується мотузка з бортами (як показано нижче), яку можна натягнути, щоб відкрити або закрити жалюзі.
Коли ми потягнемо цю кругову мотузку за годинниковою стрілкою, жалюзі відкриються, а коли ми потягнемо цю мотузку в напрямку проти годинникової стрілки, жалюзі закриються. Отже, якщо ми мали автоматизувати цей процес, все, що нам потрібно зробити, це використати двигун, щоб тягнути цей канат за годинниковою стрілкою або проти годинникової стрілки, і ми з цим закінчимо. Насправді, це те, що ми збираємось робити в цьому проекті; ми будемо використовувати кроковий двигун 28BYJ-48 разом із NodeMCU для натягування бісерної мотузки.
Спроектуйте та побудуйте віконну шторку
Електронна частина цього проекту була досить простою та прямою, складна частина полягала у створенні сліпого механізму, який міг би натягнути бісерну мотузку. Отже, давайте почнемо цю статтю з дизайну глухого редуктора, я не збираюся вдаватися в подробиці про те, як проектувати редуктор, але ця основна ідея повинна вам допомогти. Зображення мотузки з намистинами на ній показано нижче.
Знову ж таки, існує безліч типів мотузок, але найчастіше використовувані мотузки - це відстань від центру до кожного бісеру - 6 мм, а діаметр кожного бісеру - 4 мм. Використовуючи цю інформацію, ми можемо розпочати розробку нашого обладнання. Якщо мотузка на ваших жалюзі має ті самі розміри, що обговорювалися, ви можете просто пропустити цей крок і завантажити файл STL, наданий у цій статті, та роздрукувати передачу. Якщо ваша мотузка має інше розташування бісеру, то ось як вам слід переробити шторку.
Я вирішив мати 24 намистини на своїй передачі, щоб отримати оптимальний розмір шестерні. Ви можете вибрати будь-яке число, близьке до цього, щоб ваше шестерня було великим чи маленьким. Отже, ми знаємо, що відстань між кожним бісером становить 6 мм, і нам потрібно 24 намистини на нашій передачі. Помноживши обидва, ви отримаєте окружність шестерні. За цими даними ви можете розрахувати радіус шестерні. Як ви можете бачити на наведеному вище зображенні, діаметр мого шестерні був розрахований приблизно на 46 мм. Але пам’ятайте, це не справжній діаметр шестерні, оскільки ми не врахували діаметр бісеру, який дорівнює 4 мм. Отже, фактичний діаметр шестірні буде 42 мм. Я надрукував та протестував багато шестірні, перш ніж знайти найкраще працює. Якщо ви не любите дизайну,просто завантажте та роздрукуйте файли STL із наступного абзацу та продовжуйте свій проект.
3D-друк тримача двигуна та шторки
Разом із шестернею нам також знадобиться невеликий кожух, який можна просвердлити на стіні та утримувати кроковий двигун у положенні, як корпус, так і шестерня, що використовуються в цьому проекті, показані нижче.
Повні файли дизайну та файли STL можна знайти на сторінці Arduino Blind Control Thingiverse, наведеній нижче. Ви можете просто завантажити та роздрукувати свій шторний редуктор та чохол для мотора.
Завантажте файли STL для сліпого приводу та чохла для двигуна
Схема для управління жалюзі Arduino
Після того, як ви готові до передач та збірки, можна легко перейти до роботи з електронікою та програмним забезпеченням. Повна електрична схема проекту управління даними IoT Blind наведена нижче.
Ми використовували адаптер 12 В для живлення всієї установки; регулятор LM1117-3.3V перетворює 12V на 3.3V, які можуть використовуватися для живлення плати NodeMCU. Модуль драйвера крокового двигуна безпосередньо живиться від адаптера 12 В. Я спробував запустити кроковий двигун на 5 В, але тоді він не забезпечував достатньо крутного моменту, щоб витягнути штори, тому переконайтеся, що ви також використовуєте 12 В.
Окрім цього, схема досить проста, якщо ви новачок у крокових двигунах, вивчіть основи статті крокового двигуна, щоб зрозуміти, як це працює і як його можна використовувати з мікроконтролером.
Застосування Blynk для управління сліпим Arduino
Перш ніж ми потрапляємо в програму Arduino для управління жалюзі, давайте відкриємо програму blynk і створимо кілька кнопок, за допомогою яких ми можемо відкривати або закривати свої жалюзі. Це нам також знадобиться пізніше для управління з домашньої сторінки Google.
Я щойно додав дві кнопки для відкривання та закриття жалюзі та одноразовий таймер для відкривання жалюзі щодня о 10:00. Ви можете додати кілька таймерів, щоб відкривати або закривати жалюзі через різні проміжки дня. В основному, коли нам доводиться закривати жалюзі, ми повинні запускати віртуальний штифт V1, а коли нам потрібно відкривати жалюзі, ми повинні запускати віртуальний штифт V2. Програма для управління кроковим двигуном на основі натиснутої тут кнопки буде записана на IDE Arduino, те саме розглянуто нижче.
Програмування NodeMCU для управління жалюзі за допомогою Blynk
Повний код ESP8266 для цього Проекту управління сліпими можна знайти внизу цієї сторінки. Наша програма повинна чекати команди з програми blynk, і на основі цієї команди ми повинні повертати кроковий двигун або за годинниковою стрілкою, або проти годинникової стрілки. Важливі сегменти коду розглядаються нижче.
Відповідно до нашої принципової схеми, ми використовували цифрові висновки 1, 2, 3 і 4 на нодемку для управління нашим кроковим двигуном. Отже, ми повинні створити екземпляр, який називається степпером, використовуючи ці штифти, як показано нижче. Зверніть увагу, що ми визначили шпильки в порядку 1, 3, 2 і 4. Це було зроблено свідомо і не є помилкою; ми повинні поміняти пальці 2 і 3, щоб двигун працював належним чином.
// створюємо екземпляр степпер-класу, використовуючи кроки та шпильки Степпер степпер (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 (opens == true) {for (int c_val = 0; c_val <= 130; c_val ++) // обертається в протилежному напрямку для закриття {stepper.step (c_val); yield (); } закрито = істина; відкрито = хибно; disable_motor (); // завжди бажані крокові двигуни після використання для зменшення споживання енергії та опалення}} BLYNK_WRITE (V2) // ВІДКРИТИ ШТОРИ {Serial.println ("Відкривання жалюзі"); if (closed == true) {for (int cc_val = 0; cc_val> = -130; cc_val--) // обертати за годинниковою стрілкою для відкриття {stepper.step (cc_val); yield (); } відкрито = істина; закрито = хибно; } вимкнути_мотор (); // завжди бажані крокові двигуни після використання для зменшення споживання енергії та опалення}
Як бачите, V1 використовується для закриття жалюзі, а V2 - для відкривання жалюзі. Цикл використовується для обертання двигунів за годинниковою стрілкою або проти годинникової стрілки на 130 кроків. Я експериментував зі своїми жалюзі, щоб виявити, що за 130 кроків я можу повністю відкрити і закрити свої штори. Ваш номер може відрізнятися. Цикл для обертання крокового двигуна за годинниковою і проти годинникової стрілки, як показано нижче.
for (int c_val = 0; c_val <= 130; c_val ++) // обертати в протилежному напрямку для закриття {stepper.step (c_val); yield (); } for (int cc_val = 0; cc_val> = -130; cc_val--) // обертати за годинниковою стрілкою для відкриття {stepper.step (cc_val); yield (); }
Ви також можете помітити дві логічні змінні "відкрито" та "закрито" в нашій програмі. Ці дві змінні використовуються для запобігання двигуну двічі відкривати або закривати штори. Це означає, що жалюзі відкриватимуться лише тоді, коли він був попередньо закритий, а закритись - лише тоді, коли він був раніше відкритий.
Як збільшити швидкість крокового двигуна 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
Ми будемо використовувати API blynk для управління жалюзі за допомогою асистента Google, він буде схожий на наш проект автоматизованої голосової автоматизації дому, тому перевірте, якщо це цікаво. В основному, ми повинні запускати посилання нижче, коли ми говоримо заздалегідь визначену фразу Google Assistant.
//http://188.166.206.43/l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx/update/V1?value=1 /
Переконайтеся, що ви змінили маркер автентифікації на той, що надається вашим додатком blynk. Ви навіть можете протестувати це посилання у своєму браузері chrome, щоб перевірити, чи працює воно належним чином. Тепер, коли посилання готове, нам просто потрібно перейти до IFTTT і створити два аплети, які можуть запускати віртуальні штифти V1 і V2, коли ми просимо закрити і відкрити жалюзі. Знову ж таки, я не вдаюся в подробиці цього, тому що ми це робили багато разів. Якщо вам потрібна додаткова допомога, зверніться до цього проекту з голосовим управлінням FM-радіо, просто замініть послуги adafruit на веб-хуки. Я також ділюся скріншотом мого фрагмента для довідки.
Автоматичне управління віконними шторами на базі Arduino - демонстрація
Після того, як схеми та корпуси з 3D-принтером будуть готові, просто зберіть пристрій на стіні, просвердливши два отвори на стіні. Моє налаштування монтажу показано на малюнках нижче.
Після цього переконайтеся, що ваші штори у відкритому стані, а потім увімкніть ланцюг. Тепер ви можете спробувати закрити жалюзі з програми blynk або через Google Assistant, і це має спрацювати. Ви також можете встановити таймери в програмі blynk для автоматичного відкривання та закривання штори в певний час доби.
Повну роботу проекту можна знайти у відео, поданому нижче; якщо у вас виникли запитання, сміливо пишіть їх у розділі коментарів нижче. Крім того, ви можете використовувати наші форуми для інших технічних дискусій.