Мови програмування: Arduino (C ++)
Теги: дистанційне керування, IR, ІК-пульт, електропривод, сервомотор
Автоматизація рутини - одна з найпопулярніших тем у світі DIY-електроніки. На цей раз ми автоматизуємо управління жалюзями за допомогою Arduino і сервоприводу постійного обертання. Як канал зв'язку використовуємо інфрачервоне світло, а в якості пульта - перший-ліпший пульт від телевізора або музичного центру.
Ми зробимо так, щоб кнопки відкривання і закривання можна було призначати самостійно. Так ми зможемо управляти пристроєм тими кнопками на пульті, які зазвичай не застосовуються.
Що нам знадобиться?
![Жалюзі з електроприводом амперка (використовували акрилову майданчик) Жалюзі з електроприводом амперка](http://wiki.amperka.ru/_media/projects:irjalousie:parts.jpg?w=700&tok=e3b60c)
Пластина кріплення сервоприводу
Якась пластина для кріплення Arduino. Ми використовували акрилову майданчик з набору «Матрьошка»
Пульт дистанційного керування
Жалюзі зі стандартним залізним кріпленням
Запасні скоби кріплення жалюзі × 2 шт
Як зібрати?
Встановіть Arduino Uno на платформу. Ми використовували акрилову майданчик з набору «Матрьошка». Так як нам потрібна тільки частина за розмірами плати, ми відпиляли непотрібну половину майданчика. А для закріплення скоби ми просвердлили отвір в акрилі.
Приклейте макетну плату за допомогою її клейкого підстави на Troyka Shield.
![Жалюзі з електроприводом амперка (жалюзі) Жалюзі з електроприводом амперка](http://wiki.amperka.ru/_media/projects:irjalousie:build.1.jpg?w=700&tok=dc5b73)
Зберіть кріплення сервомотора і муфту. У нашому випадку муфтою є втулка, з угвинченими в неї тонкими шурупами.
![Жалюзі з електроприводом амперка (використовували акрилову майданчик) Жалюзі з електроприводом амперка](http://wiki.amperka.ru/_media/projects:irjalousie:build.2.jpg?w=700&tok=8a267e)
Підключіть привід постійного обертання до цифрового піну 3. фотоприймач до піну 2 і пьезопіщалку - до піну 4.
![Жалюзі з електроприводом амперка (акрилову майданчик набору) Жалюзі з електроприводом амперка](http://wiki.amperka.ru/_media/projects:irjalousie:build.3.jpg?w=700&tok=fb3aaf)
Встановіть Troyka Shield на Arduino Uno.
Встановіть сервопривід і Arduino Uno на жалюзі.
Прошийте в Arduino Uno скетч, наведений нижче.
Відразу після подачі живлення викликається функція setup. В її тілі инициализируется ІК-бібліотека. Потім подається сигнал старту програми (три коротких сигналу) і запускається процедура «навчання» пристрою. Навчання полягає в запам'ятовуванні пристроєм кнопок, які користувач використовує для відкриття і закриття жалюзі. Користувач натискає кнопку на пульті, пристрій отримує код натиснутої кнопки, запам'ятовує його і підтверджує цю подію коротким сигналом. Потім все повторюється для другої кнопки. Після того, як обидві кнопки задані, пристрій видає довгий звуковий сигнал і переходить в робочий цикл (функція loop).
У робочому циклі пристрій очікує натискання кнопки пульта. Як тільки отримано сигнал про натискання, перевіряється чи було натискання цієї ж кнопки в недалекому минулому. Якщо так, то повторне натискання сприймається, як команда «продовжувати крутити мотор». Якщо недавно натискань не було, запам'ятовуємо момент натискання і включаємо привід в потрібному напрямку.
Вихідний код
Приклад програми з сенсором освітленості
В даному прикладі жалюзі відкриваються і закриваються залежно від освітленості. ІК-приймач нам не знадобитися, але необхідно додати датчик освітленості (Troyka-модуль) і потенціометр (Troyka-модуль).
Демонстрація роботи пристрою
Що далі?
Незручно кожен раз при включенні пристрою прошивати в нього коди кнопок пульта. Але у ATmega328p є незалежна пам'ять - EEPROM. в якій можна зберегти один раз ці коди і завантажувати їх звідти при кожному старті. Для роботи з цією пам'яттю є бібліотека EEPROM.
У нашій конструкції є вада: не можна зробити кнопку, яка автоматично повністю закриє жалюзі. Якщо встановити датчик повного закриття / відкриття, то таку функцію реалізувати стане можливим. Для цього можна, наприклад, зняти одну смужку і встановити замість неї потенціометр.
За винятком випадків, коли вказано інше, вміст цієї Вікі підпадає під дію такої ліцензії: CC Attribution-Noncommercial-Share Alike 3.0 Unported