- Objaśnienie robocze:
- Dekodowanie sygnałów pilota na podczerwień za pomocą Arduino:
- Opis obwodu:
- Kod Opis:
Wcześniej omawialiśmy wiele typów automatyzacji domu przy użyciu różnych technologii, takich jak automatyka domowa oparta na DTMF, automatyka domowa sterowana komputerowo za pomocą Arduino, automatyka domowa sterowana przez Bluetooth. W tym projekcie wykorzystujemy komunikację bezprzewodową opartą na podczerwieni do sterowania urządzeniami domowymi. W tym projekcie Arduino służy do sterowania całym procesem. Niektóre polecenia wysyłamy do systemu sterowania za pomocą pilota IR TV / DVD / MP3 do sterowania urządzeniami gospodarstwa domowego AC. Po odebraniu sygnału z pilota na podczerwień, Arduino wysyła powiązany sygnał do przekaźników, które są odpowiedzialne za włączanie i wyłączanie urządzeń domowych poprzez sterownik przekaźnika.
Objaśnienie robocze:
Działanie tego projektu jest łatwe do zrozumienia. Po naciśnięciu dowolnego przycisku pilota na podczerwień pilot wysyła kod w postaci ciągu zakodowanych impulsów z częstotliwością modulującą 38 kHz. Impulsy te są odbierane przez czujnik TSOP1738 i odczytywane przez Arduino, a następnie Arduino dekoduje otrzymany ciąg impulsów na wartość szesnastkową i porównuje tę zdekodowaną wartość z predefiniowaną wartością szesnastkową wciśniętego przycisku. Jeśli wystąpi jakakolwiek zgodność, Arduino wykonuje względną operację, a odpowiadający jej wynik jest również wyświetlany na wyświetlaczu LCD 16x2 za pomocą odpowiednich poleceń. Tutaj w tym projekcie użyliśmy 3 żarówek w różnych kolorach do demonstracji, co oznacza wentylator, światło i telewizor.
Istnieje wiele typów pilotów na podczerwień dostępnych dla różnych urządzeń, ale większość z nich pracuje na sygnale o częstotliwości około 38 kHz. Tutaj w tym projekcie sterujemy urządzeniami domowymi za pomocą pilota IR TV. Do wykrywania sygnału pilota na podczerwień używamy odbiornika podczerwieni TSOP1738. Ten czujnik TSOP1738 może wykryć sygnał częstotliwości 38 kHz. Działanie pilota na podczerwień i TSOP1738 można szczegółowo omówić w tym artykule: Nadajnik i odbiornik podczerwieni
Składniki:
- Arduino UNO
- TSOP1738
- Pilot IR TV / DVD
- ULN2003
- Przekaźniki 5 wolt
- Żarówka z uchwytem
- Przewody łączące
- Deska do chleba
- Wyświetlacz LCD 16x2
- Zasilacz
- PVT
- IC 7805
W tym projekcie użyliśmy przycisków numerycznych 7, 8 i 9 pilota na podczerwień do sterowania odpowiednio wentylatorem, światłem i telewizorem, a przycisk ON / OFF (przycisk zasilania) służy do jednoczesnego włączania i wyłączania wszystkich urządzeń.
Tutaj użyliśmy metody przełączania włączania i wyłączania pojedynczego urządzenia domowego. Metoda przełączania to nic innego, jak tylko to, czy przycisk jest naciskany parzystą, czy nieparzystą liczbę razy. Można to znaleźć, uzyskując przypomnienie po podzieleniu go przez 2 (i% 2), jeśli jest jakieś przypomnienie, urządzenie zostanie włączone, a jeśli przypomnienie wynosi 0, zostanie wyłączone. Załóżmy, że przycisk 7 jest wciśnięty na pilocie, a następnie pilot wysyła sygnał do Arduino przez odbiornik TSOP IR. Następnie Arduino dekoduje go i zapisuje zdekodowaną wartość w zmiennej wynikowej. Teraz zmienna wynikowa ma wartość szesnastkową 0x1FE00FF, po dopasowaniu jej do predefiniowanej wartości szesnastkowej klucza 7 (patrz powyższy obrazek), Arduino włącza wentylator. Teraz, gdy ponownie wciśniemy ten sam klawisz (klawisz 7), IR wysyła ten sam kod. Arduino otrzymuje ten sam kod i dopasowuje się do tego samego kodu co poprzednio, ale tym razem wentylator jest wyłączony z powodu przełączania bitu (i% 2).
Dekodowanie sygnałów pilota na podczerwień za pomocą Arduino:
Oto lista zdalnie zdekodowanych kodów wyjścia typu DVD NEC:
Jeśli nie znasz zdekodowanego wyjścia dla pilota na podczerwień, możesz je łatwo znaleźć, po prostu wykonaj następujące kroki:
- Pobierz zdalną bibliotekę IR stąd
- Rozpakuj go i umieść w folderze „Biblioteki” Arduino. Następnie zmień nazwę wyodrębnionego folderu na IRremote.
- Uruchom poniższy program ze swojego Arduino i otwórz okno Serial Monitor w Arduino IDE. Teraz naciśnij dowolny przycisk pilota na podczerwień i zobacz odpowiednie zdekodowane wyjście szesnastkowe w oknie monitora szeregowego.
* IRremote: IRrecvDemo - demonstruje odbieranie kodów IR za pomocą IRrecv * Do wejścia RECV_PIN należy podłączyć detektor / demodulator IR. * Wersja 0.1 lipiec 2009 r. * Copyright 2009 Ken Shirriff * http://arcfn.com * / #include
Powyższy program pochodzi z folderu „przykłady” biblioteki IRremote. Możesz sprawdzić więcej przykładów, aby dowiedzieć się więcej o korzystaniu z pilota na podczerwień. Tak więc zdekodowaliśmy wyjście pilota IR.
Opis obwodu:
Połączenia tego obwodu są bardzo proste, tutaj wyświetlacz ciekłokrystaliczny służy do wyświetlania stanu urządzeń gospodarstwa domowego, który jest bezpośrednio podłączony do arduino w trybie 4-bitowym. Piny danych LCD, a mianowicie RS, EN, D4, D5, D6, D7 są podłączone do cyfrowego pinu arduino o numerze 6, 7, 8, 9, 10, 11. A pin wyjściowy TSOP1738 jest bezpośrednio podłączony do cyfrowego pinu numer 14 (A) Arduino. A pin Vcc jest podłączony do +5 V i pin GND podłączony do zacisku uziemienia obwodu. Do sterowania przekaźnikami używany jest również sterownik przekaźnika ULN2003. Przekaźniki 5 V SPDT 3 służą do sterowania OŚWIETLENIEM, WENTYLATOREM i TV. Przekaźniki są podłączone do pinów arduino o numerach 3, 4 i 5 poprzez sterownik przekaźnika ULN2003 do sterowania odpowiednio ŚWIATŁEM, WENTYLATOREM i telewizorem.
Kod Opis:
W części programistycznej tego projektu Przede wszystkim w programowaniu dołączamy bibliotekę do pilota IR, która jest łatwo dostępna w Google. I zdefiniuj pin i zadeklaruj zmienne.
#zawierać
Następnie dołącz nagłówek dla wyświetlacza ciekłokrystalicznego, a następnie zdefiniujemy dane i piny sterujące dla LCD i urządzeń domowych.
#zawierać
Po tym musimy zainicjalizować LCD i podać kierunek pinów, które są używane do wentylatora, światła i telewizora.
void setup () {Serial.begin (9600); lcd.begin (16,2); pinMode (wentylator, wyjście); pinMode (światło, wyjście); pinMode (TV, OUTPUT);
Jak już wyjaśniono, poniżej część kodu służy do porównania otrzymanej wartości szesnastkowej z już zdefiniowanym kodem szesnastkowym tego przycisku. Jeśli pasuje, to operacja względna jest wykonywana przy użyciu odpowiednich funkcji podanych w kodzie.
void loop () {if (irrecv.decode (& results)) {Serial.println (results.value, HEX); opóźnienie (100); lcd.setCursor (0,0); lcd.print ("Fan Light TV"); if (results.value == 0x1FE00FF) {i ++; int x = i% 2; digitalWrite (Fan, x);