Мови програмування: Arduino (C ++)
Теги: дистанційне керування, IR, ІК-пульт, електропривод, сервомотор
Автоматизація рутини - одна з найпопулярніших тем у світі DIY-електроніки. На цей раз ми автоматизуємо управління жалюзями за допомогою Arduino і сервоприводу постійного обертання. Як канал зв'язку використовуємо інфрачервоне світло, а в якості пульта - перший-ліпший пульт від телевізора або музичного центру.
Ми зробимо так, щоб кнопки відкривання і закривання можна було призначати самостійно. Так ми зможемо управляти пристроєм тими кнопками на пульті, які зазвичай не застосовуються.
Що нам знадобиться?
Пластина кріплення сервоприводу
Якась пластина для кріплення Arduino. Ми використовували акрилову майданчик з набору «Матрьошка»
Пульт дистанційного керування
Жалюзі зі стандартним залізним кріпленням
Запасні скоби кріплення жалюзі × 2 шт
Як зібрати?
Встановіть Arduino Uno на платформу. Ми використовували акрилову майданчик з набору «Матрьошка». Так як нам потрібна тільки частина за розмірами плати, ми відпиляли непотрібну половину майданчика. А для закріплення скоби ми просвердлили отвір в акрилі.
Приклейте макетну плату за допомогою її клейкого підстави на Troyka Shield.
Зберіть кріплення сервомотора і муфту. У нашому випадку муфтою є втулка, з угвинченими в неї тонкими шурупами.
Підключіть привід постійного обертання до цифрового піну 3. фотоприймач до піну 2 і пьезопіщалку - до піну 4.
Встановіть Troyka Shield на Arduino Uno.
Встановіть сервопривід і Arduino Uno на жалюзі.
Прошийте в Arduino Uno скетч, наведений нижче.
Відразу після подачі живлення викликається функція setup. В її тілі инициализируется ІК-бібліотека. Потім подається сигнал старту програми (три коротких сигналу) і запускається процедура «навчання» пристрою. Навчання полягає в запам'ятовуванні пристроєм кнопок, які користувач використовує для відкриття і закриття жалюзі. Користувач натискає кнопку на пульті, пристрій отримує код натиснутої кнопки, запам'ятовує його і підтверджує цю подію коротким сигналом. Потім все повторюється для другої кнопки. Після того, як обидві кнопки задані, пристрій видає довгий звуковий сигнал і переходить в робочий цикл (функція loop).
У робочому циклі пристрій очікує натискання кнопки пульта. Як тільки отримано сигнал про натискання, перевіряється чи було натискання цієї ж кнопки в недалекому минулому. Якщо так, то повторне натискання сприймається, як команда «продовжувати крутити мотор». Якщо недавно натискань не було, запам'ятовуємо момент натискання і включаємо привід в потрібному напрямку.
Вихідний код
Приклад програми з сенсором освітленості
В даному прикладі жалюзі відкриваються і закриваються залежно від освітленості. ІК-приймач нам не знадобитися, але необхідно додати датчик освітленості (Troyka-модуль) і потенціометр (Troyka-модуль).
Демонстрація роботи пристрою
Що далі?
Незручно кожен раз при включенні пристрою прошивати в нього коди кнопок пульта. Але у ATmega328p є незалежна пам'ять - EEPROM. в якій можна зберегти один раз ці коди і завантажувати їх звідти при кожному старті. Для роботи з цією пам'яттю є бібліотека EEPROM.
У нашій конструкції є вада: не можна зробити кнопку, яка автоматично повністю закриє жалюзі. Якщо встановити датчик повного закриття / відкриття, то таку функцію реалізувати стане можливим. Для цього можна, наприклад, зняти одну смужку і встановити замість неї потенціометр.
За винятком випадків, коли вказано інше, вміст цієї Вікі підпадає під дію такої ліцензії: CC Attribution-Noncommercial-Share Alike 3.0 Unported