- Работно обяснение:
- Декодиране на ИК сигнали за дистанционно управление с помощта на Arduino:
- Описание на веригата:
- Код Описание:
Преди това обхващахме много видове домашни автоматизации, използвайки различни технологии като DTMF базирана домашна автоматизация, PC контролирана домашна автоматизация с помощта на Arduino, Bluetooth контролирана домашна автоматизация. В този проект ние използваме IR базирана безжична комуникация за управление на домакински уреди. В този проект Arduino се използва за контрол на целия процес. Изпращаме някои команди към системата за управление, като използваме IR TV / DVD / MP3 дистанционно за управление на домакински уреди с променлив ток. След получаване на сигнал от IR дистанционно, Arduino изпраща свързан сигнал към релета, които са отговорни за включване или изключване на битовите уреди чрез реле драйвер.
Работно обяснение:
Работата по този проект е лесно разбираема. Когато натиснем който и да е бутон на IR Remote, дистанционното изпраща код под формата на влак от кодирани импулси, използвайки модулираща честота 38Khz. Тези импулси се приемат от сензора TSOP1738 и се четат от Arduino и след това Arduino декодира получената последователност от импулси в шестнадесетична стойност и сравнява тази декодирана стойност с предварително дефинираната шестнадесетична стойност на натиснатия бутон. Ако се случи някакво съвпадение, тогава Arduino извършва относителна операция и съответният резултат също се показва на 16x2 LCD с помощта на подходящи команди. Тук в този проект сме използвали 3 крушки с различни цветове, за демонстрация, която показва Fan, Light и TV.
Има много видове IR дистанционно управление, които се предлагат за различни устройства, но повечето от тях работят на честота около 38KHz. Тук в този проект ние контролираме домакински уреди с помощта на дистанционно управление с IR телевизор. За откриване на IR дистанционен сигнал използваме TSOP1738 IR приемник. Този сензор TSOP1738 може да усети 38Khz Честотен сигнал. Работата на IR дистанционното и TSOP1738 може да бъде разгледана подробно в тази статия: IR предавател и приемник
Компоненти:
- Arduino UNO
- TSOP1738
- IR TV / DVD дистанционно
- ULN2003
- Релета 5 волта
- Крушка с държач
- Свързващи проводници
- Дъска за хляб
- 16x2 LCD
- Захранване
- PVT
- IC 7805
Тук в този проект сме използвали 7, 8 и 9 цифров бутон на IR дистанционното, за управление на вентилатора, светлината и телевизора съответно и бутонът ON / OFF (бутон за захранване) се използва за едновременно включване и изключване на всички уреди.
Тук сме използвали превключващ метод за включване и изключване на единичния домашен уред. Превключване на метода не е нищо друго, освен да разберете дали бутонът е натиснат дори не пъти или нечетен брой пъти. Това се установява чрез получаване на напомнянето, след като се раздели на 2 (i% 2), ако има напомняне, устройството ще бъде включено и ако напомнянето е 0, то ще бъде изключено. Да предположим, че клавиш 7 е натиснат на дистанционното, след което дистанционното изпраща сигнал към Arduino чрез TSOP IR приемник. След това Arduino го декодира и съхранява декодираната стойност в променливата за резултати. Сега променливата на резултатите има шестнадесетична стойност 0x1FE00FF, след като я съпостави с предварително дефинираната шестнадесетична стойност на ключ 7 (вижте изображението по-горе), Arduino ВКЛЮЧВА Вентилатора. Сега, когато отново натиснем същия клавиш (клавиш 7), IR изпраща същия код. Arduino получава същия код и съвпада със същия код, както преди, но този път Вентилаторът е изключен поради превключване на бита (i% 2).
Декодиране на ИК сигнали за дистанционно управление с помощта на Arduino:
Ето списък на декодирани изходни кодове от тип DVD NEC:
Ако не знаете декодирания изход за вашето IR дистанционно управление, той може лесно да бъде намерен, просто изпълнете следните стъпки:
- Изтеглете IR отдалечената библиотека от тук
- Разархивирайте го и го поставете във вашата папка „Библиотеки“ на Arduino. След това преименувайте извлечената папка на IRremote.
- Стартирайте програмата по-долу от вашия Arduino и отворете прозореца Serial Monitor в Arduino IDE. Сега натиснете произволен IR дистанционен бутон и вижте съответния декодиран шестнадесетичен изход в прозореца Serial Monitor.
* IRremote: IRrecvDemo - демонстрира получаване на IR кодове с IRrecv * IR детектор / демодулатор трябва да бъде свързан към входа RECV_PIN. * Версия 0.1, юли 2009 г. * Copyright 2009 Ken Shirriff * http://arcfn.com * / #include
Горната програма е взета от папката „примери“ на библиотеката на IRremote, можете да разгледате още примери, за да научите повече за използването на IR дистанционното. Така че ние декодирахме IR дистанционния изход.
Описание на веригата:
Връзките на тази схема са много прости, тук течнокристалният дисплей се използва за показване на състоянието на домакинските уреди, който е директно свързан към arduino в 4-битов режим. Пиновете за данни на LCD, а именно RS, EN, D4, D5, D6, D7, са свързани към цифров пин номер arduino 6, 7, 8, 9, 10, 11. И изходният щифт на TSOP1738 е директно свързан към цифров пин номер 14 (A) на Arduino. И Vcc щифтът е свързан +5 волта и GND щифт, свързан към заземяващия терминал на веригата. Релеен драйвер, а именно ULN2003, също се използва за задвижване на релета. 5 волта SPDT 3 релета се използват за управление на LIGHT, FAN и TV. А релетата са свързани към arduino пин номер 3, 4 и 5 чрез реле драйвер ULN2003 за управление на LIGHT, FAN и TV съответно.
Код Описание:
В частта за програмиране на този проект На първо място в програмирането ние включваме библиотека за IR дистанционно управление, която е лесно достъпна в Google. И дефинирайте pin и декларирайте променливи.
#include
И тогава включете заглавна част за дисплей с течни кристали и след това дефинираме данни и контролни щифтове за LCD и домакински уреди.
#include
След него трябва да инициализираме LCD и да дадем посока на щифта, който се използва за вентилатор, светлина и телевизор.
void setup () {Serial.begin (9600); lcd.begin (16,2); pinMode (Вентилатор, ИЗХОД); pinMode (Light, OUTPUT); pinMode (TV, OUTPUT);
Както вече беше обяснено, по-долу част от кода се използва за сравняване на получената шестнадесетична стойност с вече дефинирания шестнадесетичен код на този бутон. Ако съвпада, тогава се извършва относителна операция чрез използване на подходящи функции, дадени в кода.
невалиден цикъл () {if (unrecv.decode (& резултати)) {Serial.println (results.value, HEX); забавяне (100); lcd.setCursor (0,0); lcd.print ("Fan Light TV"); if (results.value == 0x1FE00FF) {i ++; int x = i% 2; digitalWrite (Fan, x);