Jak sterować dowolnym urządzeniem w domu za pomocą pilota od TV i Arduino?

Zastanawialiście się kiedyś, czy można wykorzystać pierwszy lepszy pilot (np. od telewizora) do sterowania dowolnym urządzeniem w domu? Otóż można i wbrew pozorom jest to banalnie proste :) I właśnie tym zajmiemy się w dzisiejszym poście.

Na początku pokażę Wam, jak nauczyć Arduino odczytywać sygnały wysyłane przez dowolnego pilota, a później omówię kilka układów, które umożliwią włączanie i wyłączanie np. lampki nocnej, czy ściemnianie i rozjaśnianie diod LED.

Pamiętajcie, że Arduino jest tutaj wykorzystywane tylko dlatego, że wygodnie się na nim prototypuje. Po zaprojektowaniu całego odbiornika możemy przerzucić program na dowolny mikrokontroler i zejść z kosztami całości poniżej 10zł :)

Odbieranie sygnału z pilota

Praktycznie wszystkie domowe piloty wykorzystują do komunikacji światło podczerwone, więc na początek musimy się zaopatrzyć w jakiś odbiornik podczerwieni. Ja w swoim układzie wykorzystałem popularny scalony odbiornik TSOP2236 (koszt około 3,60zł).

Odbiornik łączymy z Arduino wg poniższego schematu:

Odbiornik IR TSOP2236 podłączony do Arduino

Następnie musimy zaopatrzyć się w bibliotekę IRremote, która pozwoli w bardzo prosty sposób odczytywać sygnały odbierane przez odbiornik. Bibliotekę IRremote możecie pobrać stąd (bezpośredni link do pliku zip). Po pobraniu i rozpakowaniu paczki kopiujemy całą bibliotekę do folderu /librares/ znajdującego się w katalogu z Arduino IDE.

Teraz możemy już wrzucić na Arduino następujący program:

Program ten ma tylko jedno zadanie – odczytywać dane z odbiornika podpiętego pod 11 pin i wysyłać je do Serial Monitora. A czym jest ten cały Serial Monitor? Jest to proste narzędzie, dzięki któremu możemy podglądać w komputerze to, co mówi do nas Arduino :)

W Arduino IDE jest wbudowany Serial Monitor, którego możemy uruchomić wybierając z menu Tools -> Serial Monitor. Po włączeniu zobaczymy puste okienko, w którym będą się pojawiały wiadomości wysyłane przez Arduino za pomocą funkcji Serial.print(). Załadowany przed chwilą program wykorzystuje tą funkcję do wyświetlania kodów wciskanych w naszym pilocie klawiszy.

Ja do sterowania wykorzystałem pilot od starego wentylatora pokojowego:

Pilot IR od wentylatora

Po wciśnięciu po kolei wszystkich przycisków Serial Monitor wyświetlił mi ich kody:

Arduino - Serial Monitor

Mając już kody przycisków, które chcemy wykorzystywać, wystarczy dopisać kawałek programu, który będzie wykonywał jakąś akcję po odebraniu konkretnego kodu z pilota:

W powyższym przykładzie skorzystałem z instrukcji switch, która umożliwia szybkie sprawdzenie, czy w odebranych danych (results.value) znajduje się któryś z naszych kodów. Konstrukcja tego kawałka programu jest prościutka, więc mam nadzieję, że każdy z Was poradzi sobie z dopisaniem swoich kodów :)

Po wgraniu powyższego programu i wciśnięciu tych samych przycisków w pilocie Serial Monitor nie wyświetli już ich kodów, a przypisane nazwy:

Serial Monitor - nazwy przycisków

I to już wszystko, jeżeli chodzi o zaprzyjaźnianie Arduino z naszym pilotem :) Przejdźmy teraz do nieco bardziej praktycznych przykładów.

Sterowanie diodą LED za pomocą pilota

W pierwszym przykładzie pobawimy się umieszczoną na płytce Arduino diodą L, która podpięta jest pod pin 13. Układu nie musimy zmieniać. Drobne zmiany musimy wprowadzić jedynie w programie:

Większość kodu, który teraz dodałem (linie 6, 7, 13 i 23) powinna być już dla Was jasna i oczywista po przeczytaniu mojego postu wprowadzającego do Arduino, dlatego nie będę go omawiał.

Nowością, o której chyba wcześniej nie wspominałem, jest to, co pojawiło się w linii 22. Dzieje się tutaj rzecz bardzo prosta – do zmiennej diodaStatus jest zapisywane jej przeciwieństwo. Jeżeli zmienna była ustawiona na LOW, to zmieni się na HIGH (i odwrotnie). Dzięki temu prostemu trickowi po przyciśnięciu środkowego przycisku w moim pilocie mogę na przemian zapalać i gasić diodę.

Proste? Jasne, że proste! Ale zróbmy coś ciekawszego…

Sterowanie lampką nocną za pomocą pilota

W równie prosty sposób możemy włączać i wyłączać np. lampkę nocną, lub jakiekolwiek inne urządzenie w domu (np. ekspres do kawy:). Jedyne, co musimy zrobić, to odrobinę zmodyfikować nasz układ, dokładając do niego przekaźnik pracujący pod napięciem 5V (koszt 2,30zł) i tranzystor BC547 (koszt 20gr), który będzie tym przekaźnikiem sterował. Dodatkowo, jak słusznie kilka osób w komentarzach zwróciło uwagę na to uwagę, równolegle do cewki przekaźnika trzeba podpiąć diodę prostowniczą, np. 1N4007 (koszt 10gr):

Arduino z odbiornikiem IR i przekaźnikiem

W programie zmienić trzeba jedynie numer pinu, do którego będziemy podpinać tranzystor (w powyższym przykładzie jest to pin 3).

Pamiętaj, że zabawa z napięciem sieciowym jest bardzo niebezpieczna dla zdrowia i życia. Zanim zaczniesz montować układ upewnij się, że kabel sieciowy nie jest podłączony do gniazdka. Osoby niepełnoletnie powinny montować układ pod czujnym okiem osoby dorosłej.

I w tej chwili już możemy włączyć np. ekspres do kawy nie ruszając się z łóżka ;) Oczywiście pod Arduino można podpiąć tyle urządzeń, ile zostało nam wolnych pinów – w przypadku Arduino UNO możemy bez żadnych kombinacji podłączyć nawet 19 urządzeń :)

Jedyne, co w zaprezentowanym wyżej przykładzie może trochę przeszkadzać, to dźwięk przełączającego się przekaźnika. Możemy go wyeliminować zmieniając nieco cały układ:

Arduino z odbiornikiem IR, optotriakiem i triakiem

Na powyższym schemacie układ z tranzystorem i przekaźnikiem został zastąpiony przez optotriak MOC3021 (koszt 1zł) oraz triak BT138 (koszt 2,20zł). Rozwiązanie to jest nieco droższe, ale za to całkowicie bezgłośne.

Optotriak w zaprezentowanym układzie odpowiada za galwaniczne odseparowanie Arduino od wysokiego napięcia, a triak za odcinanie napięcia od podłączonego urządzenia.

Proste? No jasne! Ale zróbmy coś jeszcze ciekawszego ;)

Płynne sterowanie jasnością diody za pomocą pilota

Na Majsterkowaej stronie na Google+ Wojtek poprosił o opisanie, jak zrobić płynną regulację jasności za pomocą pilota. Już pokazuję co i jak :)

Na potrzeby tego przykładu zrobimy sobie prosty układ z diodą LED podłączoną pod pin 3:

Arduino z odbiornikiem IR i diodą LED

Jasnością diody będziemy sterować za pomocą PWM (o którym wspominałem tutaj), dlatego ważne jest, żeby była podłączona do któregoś z pinów oznaczonych jako PWM.

Mając już zmontowany układ, możemy zabrać się za program, który w zasadzie niewiele różni się od programów z poprzednich przykładów:

W 7 linii utworzyłem sobie zmienną jasnosc i przypisałem jej wartość 0. W zmiennej tej będzie zapisywana jasność, z jaką ma świecić dioda (w przedziale od 0 do 255). Dodatkowo aktualny poziom jasności wysyłam sobie do Serial Monitora (linie 22 i 28), żeby móc podglądać, jak jasno świeci dioda przy różnych wartościach.

W instrukcji switch dodałem sobie kody dwóch przycisków z mojego pilota – w górę (rozjaśnianie) i w dół (ściemnianie). Podczas rozjaśniania sprawdzam w linii 21, czy jasność nie jest już ustawiona na maksymalną wartość. Jeżeli nie, to zwiększam ją o 5 i w kolejnej linii ustawiam ją na wyjściu, pod które jest podłączona dioda. Dla ściemniania wszystko dzieje się analogicznie – najpierw sprawdzam, czy jasność nie jest już na zerze, a następnie zmniejszam ją o 5.

Wynikiem działania tego kodu będzie coś takiego:

Proste? No ba! Ale przecież rozjaśnianie i przygaszanie jednej diody szybko się nam znudzi, dlatego zrobimy coś jeszcze ;)

Płynne sterowanie jasnością taśmy LED za pomocą pilota

W kolejnym przykładzie pobawimy się w rozjaśnianie taśm LED, których nie można podpiąć bezpośrednio pod któryś z pinów w Arduino, bo nie dość, że są zasilane wyższym napięciem (12V), to ciągną też za dużo prądu. Dlatego też taśmę LED musimy podpiąć za pośrednictwem tranzystora BC547 (ten sam, co w przykładzie z przekaźnikiem):

Arduino z odbiornikiem IR i taśmą LED

Od strony programu kompletnie nic się nie zmienia, więc układ będzie już działać. Poniżej wrzucam filmik, na którym pod Arduino miałem podpiętą zarówno lampkę, jak i przyklejoną do niej taśmę led, która w nocy doświetla mi klawiaturę:

Pamiętajcie tylko, że przez ten tranzystor może popłynąć prąd o maksymalnym natężeniu 100mA, jeżeli więc chcielibyście podłączyć dłuższy kawałek taśmy LED, trzeba by poszukać jakiegoś mocniejszego tranzystora.

Sterowanie komputerem za pomocą pilota od TV

Ten przykład możecie potraktować jako mały bonus, ponieważ nie da się go w prosty sposób przenieść na dowolny mikrokontroler.

Jeżeli macie pod ręką Arduino Leonardo, możecie też w prosty sposób sterować swoim komputerem. Wystarczy taki kawałek programu, żeby za pomocą pilota sterować np. kursorem myszy:

W powyższym programie wykorzystuję przyciski góra/dół/lewo/prawo ze swojego pilota do sterowania kursorem myszy, oraz przycisk środek do klikania myszką:

Jeżeli masz pilota z większą ilością klawiszy, możesz też bez problemu symulować wciśnięcia klawiszy na klawiaturze, żeby np. za pomocą skrótów klawiaturowych sterować funkcjami różnych programów :) Na stronie z tutorialami do Arduino w sekcji “9.USB” znajdziesz opisy wszystkich funkcji, za pomocą których można symulować różne zachowania myszki i klawiatury w Arduino Leonardo :)

Niestety, jak już wspomniałem wcześniej, w ten sposób mogą się pobawić jedynie posiadacze Leonardo. Tzn. na pozostałych Arduino też da się osiągnąć podobny efekt, ale jest już z tym dużo więcej grzebania.

Proste?

No jasne, że proste! Proste, i co najważniejsze, bardzo tanie, bo jak przerzucimy cały program na jakiś tani mikrokontroler, to koszt całego odbiornika schodzi poniżej 10zł :) A że programować mikrokontrolery już umiemy, bo zostało to bardzo ładnie opisane tutaj i tutaj, to problemu z tym nie będzie ;)

Macie jakieś fajne pomysły, do czego można by wykorzystać takie sterowanie za pomocą pilota?

Jak sterować dowolnym urządzeniem w domu za pomocą pilota od TV i Arduino?, 4.8 out of 5 based on 36 ratings

Oceń post Kategoria: Arduino, Tagi: , , , , ,

GD Star Rating
loading...

  • Krzysiek

    A może Arduino i sterowanie za pomocą telefonu komórkowego? Przydałoby się kiedyś zrealizować, jak zdobędę Arduino. Telefon jakiś stary kosztuje kilkanaście złotych, można się pokusić o zrobienie czegoś ciekawego, np.: alarm, sterowanie, oddzwanianie, SMS, dużo rzeczy…
    Krzysiek Rudnicki

    • Michał

      Witam.

      Być może powielam jakieś inne pytania, ale mam nadzieję, że jednak nie. Chciałbym sobie skonstruować coś takiego http://bomozna.blogspot.com/p/oswietlenie-poddasza.html do sterowania światłem w pokoju za pomocą telefonu z androidem. Niestety autor tekstu nie jest chętny do pomocy w wykonaniu a sam mam zbyt małą wiedzę żeby cokolwiek z tym zrobić. Jeżeli ktoś mógłby mi pomóc albo chociaż odesłać do jakiejś strony z czymś w rodzaju “how to…” byłbym bardzo wdzięczny ponieważ mimo mojej lektury googla do niczego konkretnego nie doszedłem :<

      Z góry dziękuję i pozdrawiam :)

  • piotrek

    Fajny wpis. Jak się bawiłem układami TSOP1736 (też scalone odbiorniki IR) miałem problem bo losowo albo układ nie chciał działać, albo wskazywał jakieś bzdury. Podłączałem go w sposób analogiczny jak tutaj, czyli sam odbiornik bezpośrednio do arduino. Zajrzałem do datasheetu czy może coś tam na temat takich błędów jest. Znalazłem schemat (kondensator i 2 rezystory) poprawnego podłączenia TSOP. Problem zniknął od ręki.

  • http://sprae.jogger.pl sprae

    Piotrek: Ja miałem podobnie na innych układach i okazało się, że wystarczy uziemić kompa :-).

  • Tomek

    No dobra, a teraz czekamy na wpis, jak zrobić własnego pilota IR :) podłączamy klawiaturkę, albo zwykłe małe buttony, wszystko na attiny/atmega i mamy komplet. Domowe centrum bezprzewodowego sterowania wszechświatem. Jeszcze można to połączyć ze sterowaniem arduino przez http://www... fantazja mnie ponosi ;)

    • https://plus.google.com/u/0/105020798016042431621?rel=author Łukasz Więcek

      Pilota też da się zrobić – żaden problem ;) Tylko raczej nie będzie on tak lekki i kompaktowy, jak jakiś standardowy pilot ;)

      A sterowanie Arduino przez neta, to też pikuś. Ba – nawet już zacząłem robić takie domowe centrum sterowania przez net: http://goo.gl/ZL0Si ;)

      • http://strojwas.eu Adrian Strójwąs

        No to byłoby coś pięknego!!
        Do tej pory nie podchodziłem jakoś specjalnie pozytywnie do Arduino, jednak jak napiszesz artykuł o sterowaniu przez kompa poszczególnymi urządzeniami w domu to z miejsca idę i kupuję to cudo.
        Mam pytanie. Rozumiem, że Arduino można sterować wszystkimi urządzeniami które mają podczerwień, czy można też innymi elektrycznymi lub jak przerobić inne elektryczne, żeby można było nimi sterować.

        • https://plus.google.com/u/0/105020798016042431621?rel=author Łukasz Więcek

          Urządzenia nie muszą mieć w ogóle podczerwieni. Podczerwień musi mieć pilot i Arduino – a już same urządzenia podpinasz tak, jak w powyższych przykładach podpinałem np. lampkę nocną :)

        • http://www.hektor.com.pl Grzegorz

          To co piszesz jest bardzo ciekawe. A projekt mówiacy o sterowaniu urządzeń w domu przez internet jest imponujący.

      • Tomek

        Tak, wiem, też przełączałem Twoje diody :D
        ale właśnie, potem wrzuciłeś na fejsa to zdjęcie z linka i nie widziałem, czy gdzieś rozwinąłeś ten pomysł. W jaki sposób sterujesz sprzętami? Przez pilota IR właśnie?

        • https://plus.google.com/u/0/105020798016042431621?rel=author Łukasz Więcek

          Tamten projekcik stanął chwilowo w miejscu, ale na pewno go jeszcze ruszę. I w nim sterowanie będzie się odbywało tylko przez neta (chociaż nic nie będzie stało na przeszkodzie, żeby wykorzystać też podczerwień, np. między leżącym gdzieś w pokoju Arduino, a lampą na suficie) :)

  • Artur

    Czy w przypadku przekaźnika nie brakuje diody, która ochroni Arduino, w razie wzbudzenia napięcia w cewce przy przepływie prądu przez styki przekaźnika?

    • https://plus.google.com/u/0/105020798016042431621?rel=author Łukasz Więcek

      Przekaźnik jest podpięty przez tranzystor, który (tak mi się wydaje) powinien ochronić Arduino :)

      • Mateusz

        Artur ma chyba racje, większość schematów z przekaźnikami ma dodatkowo diodę http://www.arduino.cc/playground/uploads/Learning/relays.pdf

      • http://sprae.jogger.pl sprae

        Przekaźnik nie ochroni tylko zadziała jak dioda (tranzystor to warstwy NPN, a dioda NP), która skieruje impuls prosto do Arduino. Przy większych mocach może się okazać, że Arduino się resetuje hgw czemu.

        • http://sprae.jogger.pl sprae

          Miało być “Tranzystor” zamiast “Przekaźnik”.
          Są też tranzystory Mosfet z wbudowaną diodą.

    • https://plus.google.com/u/0/105020798016042431621?rel=author Łukasz Więcek

      No dobra – widać moja teoria była błędna, więc już dodałem info o diodzie zarówno do schematu, jak i do opisu :)

      Serdecznie dziękuję za zwrócenie uwagi!

  • http://kamil.pawliczuk.pl pavlick

    Posiadając tylko atmegę i programator USB chyba się nie da odczytać kodów pilota? Czy się mylę?

    • http://tidzu.pl Patryk

      Da się, ale nie bezpośrednio – dane będą wyśiwietlone na ekranie podpiętym pod atmegę.

    • https://plus.google.com/u/0/105020798016042431621?rel=author Łukasz Więcek

      Jest dokładnie tak, jak pisze Patryk – kody możesz wyświetlać na jakimś wyświetlaczu podpiętym do Arduino. Ewentualnie możesz się za niecałe 6zł zaopatrzyć w tako konwerter USB->RS232 – wtedy będziesz mógł korzystać na kompie z Serial Monitora bez Arduino (no chyba, że masz w kompie RS232 – wtedy nawet tego ustrojstwa nie potrzebujesz:)

  • Wojtek

    O widzisz, i masz kawałek, którego mi brakowało – zamiast identyfikować protokół pilota, używasz gotowej biblioteki :)

    Mój problem polega na tym, że nie wiem, w jakim języku pilot gada (dzięki Twojemu postowi już wiem, jak się do niego dobrać :) – na razie po prostu moja “gwiazdka naścienna” reaguje na opadające zbocze (a by nie zmieniała trybów zbyt często – przez sekundę czy 2 wyłączone zostają przerwania).
    By było zabawniej – kod piszę od zera, bez SDK Arduino – jak będę wiedział który protokół jest w użyciu, to dekoder da się napisać np. w oparciu o to: http://www.sbprojects.com/knowledge/ir/index.php

    Odnośnie diod gaszących dla przekaźników – zaleca się zawsze, nawet, jak jest tranzystor. Aczkolwiek w projekcie resettera do serwerów poszedłem na łatwiznę – ULN2803 (8 “darlingtonów” we wspólnej obudowie) i pokrewne odpowiednie diody mają w środku. Swoją drogą – moja lampka też używa tego scalaka w stopniu wykonawczym :)

    Dzięki za kolejnego ciekawego posta :)

  • Wojtek

    @pavlick: z gołej ATmegi (168, 328) da się zrobić arduino, najwyżej będziesz potrzebował konwertera USB – Serial TTL (stary kabel do programowania komórek) lub któregoś z odpowiedników MAX232 (konwerter poziomów) i portu szeregowego w komputerze (względnie zestaw USB/RS232 i konwerter poziomów). Ja chwalę sobie płytki pod ATmega 8 (w które wchodzą też 328P) z AVT – jedna ma miejsce na konwerter USB/RS232 (FTDI, koszt scalaka to 13-16zł), więc używam jej tam, gdzie taka komunikacja może być potrzebna. Programuję zwykle programatorem.

    • http://sprae.jogger.pl sprae

      Nawet nie trzeba się aż tak bawić. Arduino IDE ma obsługę programatorów. Można nawet zaprogramować Arduino jako programator.

      • Wojtek

        O, to jak go zmusić, by poradził sobie z stk500v2 skonfigurowanym jako avrdoper?

        I proszę wybaczyć moje lenistwo – pozwolili już użytkownikom z poziomu SDK bawić się przerwaniami, czy nadal jest to “wiedza tajemna” okraszona tabliczką “tam mieszkają smoki” (a tak naprawdę – biblioteki same używają przerwań i ręczne z nimi zabawy mogą to popsuć)?

        • http://sprae.jogger.pl sprae

          Ja bym ustawił “Narzędzia->Programator->AVR ISP”

          Przerwań zewnętrzych można używać przez funkcję attachInterrupt().
          Jeśli chodzi o inne sprawy po za API to używa się ich bez problemu jak w klasycznym avr-libc czyli jak w dokumentacji Atmela.
          Możesz normalnie używać rejestrów każdego wbudowanego układu, portu i przerwania poprzez SIGNAL. Bawie się Arduino od wersji 0018 i chyba od zawsze tak było.
          W końcu to ich całe api jest tylko nakładką na avr-gcc i avr-glibc.
          Jedyną restrykcją jest chyba tylko Timer0, który jest standardowo używany jako źródło czasu dla funkcji delay/delayMicroseconds/millis/micros.
          Jeśli ich nie używasz to jego rejestry możesz również spokojnie nadpisać.

  • bartisss

    Ja bym to wykorzystał do pilota serwisowego LG ;D aby uaktywnić USB w telewizorach LG aby odtwarzały DVIXa :)

  • http://spaniewpolsce.pl/ Sando

    Bardzo ciekawe urządzenie. Chętnie wysterowałbym tak żonę :)

  • Sawek

    A ja mam dużo błędów bibliotekę skopiowałem.
    Arduino 1.0.1

    Tempbuild4263224601529647974.tmp/sketch_oct27d.cpp:7: undefined reference to `IRrecv::IRrecv(int)’

    Tempbuild4263224601529647974.tmp/sketch_oct27d.cpp:16: undefined reference to `IRrecv::decode(decode_results*)’

    /……

    • http://sprae.jogger.pl sprae

      Zainstalowałeś bibliotekę IRemote?

    • Em

      Mam to samo…nie wiem w czym jest problem

    • technik

      Być może odpowiedzią jest post poniżej:
      Ślubek
      16 lutego 2013 o 20:24

  • Andrzej

    a ja mam błąd
    avrdude: stk500_getsync(): not in sync: resp=0×00

    • Wojtek

      U mnie tak było, jak ATmega nie miała wgranego bootloadera. Jakoś przy zabawach go skasowałem bo nie był potrzebny. IDE z paczki z Ubuntu 12.04.01

  • http://www.forumgornicze.pl Górnik

    Mój stary telefon Sony Ericsson k800i posiadał funkcje sterowania komputerem dzięki możliwości Bluetooth i odpowiedniego programu do komunikacji z telefonem ->> komputerem. Można było otwierać przeglądarkę internetową, wpisywać adresy stron w okienko przeglądarki i wiele innych. Przypuszczam, że możliwości wykorzystania jest wiele, dlatego też można by było się przyjrzeć możliwością wykorzystania technologii bluetooth do takich bajerów.

  • Em

    Wyskakuje mi błąd: “(…) librariesIRremoteIRremote.cpp:227: error: ‘TCCR2A’ was not declared in this scope (…)”. Wie ktoś w czym może być problem?

  • Piotr

    Witam.
    Mógłbyś napisać (a najlepiej wrzucić także jakieś zdjęcie), w jaki sposób podłączyć lampkę nocną lub inne urządzenie do tego układu? Da się to zrobić bez rozcinania kabla? Jak prawidłowo podłączyć do tego układu i do lampki zasilanie 230V z gniazdka? Pewnie dla wprawionego elektronika lub majsterkowicza są to oczywiste sprawy, ale ja nie wiem, jak zrobić prawidłowo tak, aby działało i żeby niczego nie popsuć przy okazji. ;-)
    Będę wdzięczny za odpowiedź.
    Pozdrawiam.

    • Jarek

      Z napięciem sieciowym nie ma żartów – ktoś niewprawiony może np. złapać za przewód pod napięciem w trakcie wprowadzania poprawek czy podłączyć napięcie sieciowe bezpośrednio do Arduino i zjarać komputer. Bezpieczniej sterować żarówką zasilaną z baterii.

      Można bez rozcinania to zrobić: bierzesz gniazdko sieciowe + kabel z wtyczką i po prostu podłączasz przekaźnik pomiędzy jeden przewód kabla i jeden wtyk gniazdka. Wtedy wpinasz lampkę do nowego gniazdka, a wtyczkę do gniazdka sieciowego. Nie radzę przełączać tym niczego większego niż żarówka, chyba że masz mocny przekaźnik.

  • Bartek

    A co w przypadku gdy posiadamy arduino uno? Jak zrealizowac ta emulacje klawiatury/myszki ? Domyslam sie, ze trzeba by bylo napisac program po stronie komputera, ktory odczytywalby odbierane wartosci w przypadku wcisniecia przycisku na pilocie i wykonania odpowiednich komend, sek w tym ze nie wiem jakich. Zapewne sa jakies bibliotek do obslugi myszki i klawy. Ktos mnie naprowadzi na to?

  • http://bysiak.com Adrian Bysiak

    Ja Cię po prostu nienawidzę, kiedy bym tu nie wszedł to zawsze knuję o tych Twoich pomysłach, później zamiast się skupić na robocie, to skupiam się na zabawkach. Muszę wysłać chyba pismo do providera aby zablokował mi raz na zawsze bloga majsterkowo.pl bo on po prostu uzależnia ! A już na pewno do tej prośby rękami i nogami dołączy się moja kobieta.

  • Rob

    Czemu tutaj jasność diody określają liczby 0-255, a w poście OD CZEGO ZACZĄĆ ZABAWĘ Z ARDUINO, o szybkości migania diody są liczby 0-1024 ?

    • https://plus.google.com/u/0/105020798016042431621?rel=author Łukasz Więcek

      Wynika to ze specyfikacji Arduino (tzn. ogólnie mikrokontrolera) – na wyjściu (OUTPUT) możemy ustalać wartości od 0 do 255, a na wejściu (INPUT) analogowym od 0 do 1024.

      • Rob

        Rozumiem, jak można odczytać komendy przycisków pilota nie mając Arduino tylko chcąc wykorzystać sam procesor i czy wystarczy sam procesor np.Atmega8 czy trzeba jeszcze jakieś rezystory, kondensatory itp?

      • http://www.scheer.com.pl/ Piotrek

        Hmm… Trochę to nazbyt skomplikowane jak dla takiego początkującego majsterkowicza jak ja :)

  • Paweł

    Hej! a nie prościej do tego wykorzystać GIRDERA ? :)

    Girder to narzędzie pozwalające na przejęcie kontroli nad dowolna aplikacją zainstalowaną w systemie Windows za pomocą pilota obsługującego podczerwień.

    Program zaraz po instalacji posiada wbudowanych wiele profili obsługi najpopularniejszych aplikacji dostępnych na rynku w tym Winamp, VLC, Internet Explorer, Power DVD, Windows Media Center czy iTunes. Nie stoi jednak nic na przeszkodzie by zaprogramować swój domowy pilot od TV czy radia do obsługi innych programów. Girder obsługuje również wiele wtyczek, które ułatwiają i rozszerzają możliwości programu.

    do tego jest wtyczka http://www.cesko.host.sk/girderplugin.htm i po kłopocie :-)

  • Dareczek

    Hej, a da się w tym projekcie, w jakiś sposób wykorzystać odbiorniki podczerwieni ze starej, kulkowej myszki komputerowej?
    Dzięki za odpowiedź. Pozdrawiam.

  • hex

    ja kiedyś GRIDER’a używałem prostsze w wykonaniu

  • xyxy1024

    230V i płytka stykowa? Odważnie.

    • https://plus.google.com/u/0/105020798016042431621?rel=author Łukasz Więcek

      Do odważnych świat należy ;)

    • Jakub

      Będzie post jak sterować urządzeniami przez internet ?

  • jan

    Wie ktoś co może być przyczyną tego, że zmienna która tutaj nazwana jest “results.value” ma zawsze wartość 0×0? Użyłem TSOP31236. Wartość taka sama dla każdego przycisku pilota.

  • Tomek

    Witam! Pilot sczytany, dioda się zapala!! Sukces! Dzięki za świetny poradnik!!
    Mam pytanko, czy do zwykłej płytki stykowej, takiej jak na zdjęciu można bezpiecznie podłączyć 230V? Bo kupiłem resztę drobiazgów, ale mam takie małe wewnętrzne obawy przed podłączaniem płytki pod taki prąd.

    PS. zauważyłem, że jak do diody czytającej IR zbliżam palec, to pojawiają się różne odczyty, skąd to się bierze? ktoś wie?

    • Tomek

      Poprawka, to nie DIODA, a scalony odbiornik.

      • Maciej

        Stąd, że każde ciało emituje podczerwień :)

        • Marcin

          Bardzo fajny wpis, na pewno sam też spróbuję to zmajstrować.
          Zapytam jeszcze przy okazji, chociaż pewnie już ktoś kiedyś o to pytał. Jakiego programu używasz do robienia schematów, połączeń płytki z Arduino itp.?

        • Tomek

          schematy pochodzą zapewne z
          http://fritzing.org

  • Borik

    A czy jest możliwość podłączenia kilku odbiorników IR?
    Najlepiej tak żeby można było dla każdego czujnika definiować dla tego samego kodu wykonywanie innych czynności.

    Tzn po wciśnięciu np 1

    kiedy odczyta to czujnik 1 zrobi coś tam
    kiedy odczyta to czujnik 2 zrobi inna rzecz

  • klakier

    Siemka, mam problem wywala mi error w związku z biblioteką, zaznaczam że wszystko dobrze wypakowałem itp. errory:

    term:2: error: ‘IRrecv’ does not name a type
    term:3: error: ‘decode_results’ does not name a type
    term.cpp: In function ‘void setup()’:
    term:7: error: ‘irrecv’ was not declared in this scope
    term.cpp: In function ‘void loop()’:
    term:11: error: ‘irrecv’ was not declared in this scope
    term:11: error: ‘results’ was not declared in this scope

    I mam jeszcze jeden problem, otóż chciałem żebywyświetlało mi cos w Serial Monitor, ale nic nie pokazuje:/

  • jamal

    Witam,
    zmontowałem taki układ jak w opisie tylko z innym czujnikiem podczerwieni, problem polega na tym, iz dioda się zapala i gaśnie ale zawsze po dwukrotnym wciśnięciu przycisku na pilocie, pytanie dlaczego?

  • darksys

    Witam jaki tranzystor można zastosować zamiast BC547 do rozjaśniania/gaszenia 4 listw halogenów led każdy z nich o mocy 5W ?

  • klakier

    Teraz wywala mi takie errory:

    c:/arduino-1.0.1/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: odbiornik.cpp.elf section .text will not fit in region text
    c:/arduino-1.0.1/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: region text overflowed by 214 bytes

  • Mateusz

    Witam.
    Podpiąłem wszystko jak na schemacie, wypróbowałem 5 pilotów i nic mi nie się nie wyświetla. Tak jakby Serial Monitor nie działał w ogóle. Ktoś ma jakieś pomysły?

    • Renifer

      A może odbiornik nie działa?

  • Renifer

    Wszystko działa ok, mam jednak obawy z podpięciem tego do sieci i stąd moje pytanie: Mam przekaźnik z oznaczeniami AC 250V 8A.

    Czyli maksymalny prąd przełączania to 8A. Skąd mam wiedzieć ile prądu pobiera dane urządzenie które chciałbym podpiąć? Wszystko jest, jeśli już, podane w Watach. Mogę tu zastosować wzór P=U*I (więdząc, że mamy 230V) ? Albo jak to sprawdzić. Mam multimetr max 10A.

  • klakier

    Mi tranzystor nie działa, ciągle na tym samym poziomie swieci latarka :/

  • Renifer

    Dodam tutaj bardzo istotny fakt o którym nie wspomniał autor: biblioteka IRemote wykorzystuje w jakiś sposób PWM na pinie 2. Nie można korzystać wtedy z niego jako PWM. Dość dziwne, ale nie chciało mi się analizować całej biblioteki dlaczego tak się dzieje.

  • BR

    Witam.
    Próbowałem wgrać program do włączania diody na mikrokontroler
    Attiny 2313 tak jak w tym poradniku http://majsterkowo.pl/progamowanie-mikrokontolerow-na-przykladzie-attiny2313/
    Niestety przy kompilacji wyskoczyły mi takie błędy:
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp: In member function ‘void IRsend::mark(int)’:
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp:227: error: ‘TCCR2A’ was not declared in this scope
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp:227: error: ‘COM2B1′ was not declared in this scope
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp: In member function ‘void IRsend::space(int)’:
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp:235: error: ‘TCCR2A’ was not declared in this scope
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp:235: error: ‘COM2B1′ was not declared in this scope
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp: In member function ‘void IRsend::enableIROut(int)’:
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp:253: error: ‘TIMSK2′ was not declared in this scope
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp:263: error: ‘TCCR2A’ was not declared in this scope
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp:263: error: ‘WGM20′ was not declared in this scope
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp:263: error: ‘TCCR2B’ was not declared in this scope
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp:263: error: ‘WGM22′ was not declared in this scope
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp:263: error: ‘CS20′ was not declared in this scope
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp:263: error: ‘OCR2A’ was not declared in this scope
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp:263: error: ‘OCR2B’ was not declared in this scope
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp: In member function ‘void IRrecv::enableIRIn()’:
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp:279: error: ‘TCCR2A’ was not declared in this scope
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp:279: error: ‘WGM21′ was not declared in this scope
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp:279: error: ‘TCCR2B’ was not declared in this scope
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp:279: error: ‘CS21′ was not declared in this scope
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp:279: error: ‘OCR2A’ was not declared in this scope
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp:279: error: ‘TCNT2′ was not declared in this scope
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp:282: error: ‘TIMSK2′ was not declared in this scope
    C:UsersBartekDesktoparduino-1.0.1-windowsarduino-1.0.1librariesIRremoteIRremote.cpp:282: error: ‘OCIE2A’ was not declared in this scope
    Wie może ktoś jak to naprawić?

  • cyrulik

    Mam odbiornik IR ale nie wiem jaki, napisano na nim 3607 49A, po podłączeniu jak na schemacie zaczyna się szybko mocno grzać. Ktoś doradzi czy taki odbiornik się nada?

  • eL

    @ Up
    Wybierz sobie coś z tego: http://electropark.pl/241-odbiorniki-podczerwieni lub poszukaj na allegro odpowiedników.

    Łukasz – jest szansa żebyś wykonał przynajmniej schemat dla 2 urządzeń? Chce zaprojektować układ na więcej przekaźników ale nie bardzo wiem jak to wszystko podłączyć (tzn coś tam wiem ale wolę się upewnić żeby mnie nie popieściło bo wtedy mogę Was tu już nie odwiedzić :P ). W przypadku dwóch, mógłbym już polecieć sobie analogicznie.

  • Dominik

    Mnie by interesowało takie coś
    http://www.youtube.com/watch?v=fOHN-yMpOMo&feature=plcp
    odbiornik ir na mikrokontrolerze ze sterowaniem 5 kanałami z diodami (2 kanały np migają). Jest szansa na jakiś tutorial?

  • Bulka

    Witam,
    Czy mógłby ktoś wytłumaczyć po co steruje się przekaźnikiem poprzez tranzystor? Dlaczego nie można po prostu dać napięcie z Arduino na cewkę przekaźnika (na wyjściu jest 5V także teoretycznie tyle ile potrzeba aby cewka zwarła styki) ?

    • https://plus.google.com/u/0/105020798016042431621?rel=author Łukasz Więcek

      Bo wyjścia z Arduino mają małą wydajność prądową i mogą nie wytrzymać takiego obciążenia (dużo zależy od przekaźnika i rozmiarów cewki, która się w nim znajduje).

  • 8888

    Mi wyrzuca takie błędy:
    ketch_dec07a:4: error: ‘IRrecv’ does not name a type
    sketch_dec07a:5: error: ‘decode_results’ does not name a type
    sketch_dec07a.ino: In function ‘void setup()’:
    sketch_dec07a:8: error: ‘irrecv’ was not declared in this scope
    sketch_dec07a.ino: In function ‘void loop()’:
    sketch_dec07a:10: error: ‘irrecv’ was not declared in this scope
    sketch_dec07a:10: error: ‘results’ was not declared in this scope

    Jak to naprawić?

    • http://www.slubek.waw.pl Ślubek

      Miałem ten sam problem. Wygląda na to, że tego typu błędy występują, gdy Arduino IDE nie potrafi znaleźć biblioteki.
      Na stronie http://learn.adafruit.com/arduino-tips-tricks-and-techniques/arduino-libraries można poczytać o bibliotekach – nie jest tam to co prawda napisane wyraźnie, ale wydaje się, że nazwa katalogu musi być identyczna co nazwa plików z rozszerzeniami .h i .cpp.
      Plik archiwum zawierający bibliotekę IRremote zawiera pliki w spakowanym katalogu ‘Arduino-IRremote-master/’ – po rozpakowaniu go do libraries/ powinno się zmienić tą nazwę na IRremote (i pamiętać, że są dwie literki ‘Rr’ w nazwie :^) ). Po zmianie nazwy należy zrestartować IDE i będzie się kompilować poprawnie.

      • technik7

        Nie mogę skompilować tego programu z IRremote jeżeli urządzeniem docelowym jest attiny2313 -sypie błędami. Jest może biblioteka IRremote tylko dla attiny2313?
        D:\arduino\libraries\IRremote\IRremote.cpp:279: error: ‘TCNT2′ was not declared in this scope

  • Krzysio

    Witam!
    W jaki sposób przerzucić program wykorzystujący bibliotekę IRremote na mikrokontroler? Postępując jak w poradniku http://majsterkowo.pl/progamowanie-mikrokontolerow-na-przykladzie-attiny2313/ wyskakują błędy.

    • technik7

      Biblioteka IRremote jest za duża na atiny2313, napisana jest pod 328.

  • Andrzej

    Czy jesli już zaprogramowaliśmy mikrokontroler na programatorze to czy możemy wyjąć owy mikrokontroler i wsadzić do osobnej płytki zawierającej układ np: odbiornik ir, rezystory, przekaźnik, zasilanie 5v i bedzie działać ? (a w programatorze tworzyć nowy projekt) czy na stałe korzystamy z całego programatora arduino ?

  • Jakub

    Jak dokładnie działa ten optotriak, nigdzie nie moge tego znaleźć i co znaczy że mają przejście przez zero?

  • MariuszEm

    Rezystory do BT138 to 330 Ohm?

  • ms

    Wszystko podlaczylem jak trzeba ale dioda sie nie wylancza.
    Uzylem drugiego sposobu ( cichego ) do wlanczania diody.
    Chcialbym juz wszystko podlaczyc do kontaktu itp ale dioda sie nie wylancza.

  • http://itunix.eu modInfo

    Dziękuje za ten wpis, działa wszystko co opisałeś, nawet nagrałem filmik z moim Arduino + IR + RGB LED

    https://www.youtube.com/watch?v=YrR_1wdZNMk

  • Kuba

    Super. Bardzo przydatny post. A tu na temat zakłóceń od przekaźników i gdzie diodę a gdzie coś innego co te zakłócenia niweluje.
    http://mikrokontrolery.blogspot.com/2011/03/przekaznik-i-zaklocenia.html
    Pozdrawiam

  • Maciek

    Napisałem całkiem podobny programik do włączania listew LED przez IR , ale z racji moich małych umiejętności elektronicznych mam problem z tranzystorem. Wykonałem identyczny układ z tranzystorem BC547, ale listwa LED (ok. 30 cm) świeci bez przerwy bardzo słabym światłem. Układ w ogóle nie reaguje na komendy pilota. Gdy w grę wchodzi tylko jedna dioda zasilana z Arduino wszystko jest ok. To także nie jest wina tranzystora gdyż sprawdziłem 4 identyczne i jest to samo. Proszę o jakąś pomoc w tej sprawie.

  • Grzegorz

    Witam na podstawie tego wpisu przerobilem sobie starego pilota i samochodzik R/C w calkiem fajna zabawke. Wykorzystalem do tego celu starego pilota samochodzik arduino uno oraz motor shield, kod od sterowania jasnoscia diody steruje pwm dla motorshield dodalem tylko cztery dodatkowe przyciski do zmiany kieronkow jazdy.

    Pozdrawiam

  • filozof

    Mam pytanko odnośnie podłączenia przekaźnika… Jak idą jego wyprowadzenia na pierwszym rysunku? Dlaczego dodatkowo zastosowano tranzystor? Nie można dać tranzystora z ceweczką sterowanej na 5V(takie jak w arduino)? Połączenie ze środkowej nóżki TSOP2236 do przekaźnika jaki ma sens? :)

    Proszę o wyrozumiałość i wyjaśnienie, stawiam pierwsze kroczki z Arduino, do 230V na razie się nie pcham, ale zaciekawiło mnie to :) Z góry dziękuję za pomoc i opis projektu tutaj zamieszczony :) Powodzenia !

  • Łukasz

    Cześć, czy tym optotriakiem i triakiem można przełaczac prad 24vac do elektrozaworu do nawadniania czy lepiej uzyc zwykly przekaznik elektromagnetyczny ?

  • Damian

    Chcialem sterować wentylatorem 12v i wszystko zrobiłem tak jak jest opisane w Płynne sterowanie jasnością taśmy LED za pomocą pilota i mam jeden problem wszystko działa poprawnie wentylator ma przechodzi na różne prędkości obrotowe tylko niech ktoś mi powie dlaczego na niższych obrotach wentylator piszczy ??? i każdy inny też ???

  • Grzegorz

    Witam obecnie chce zrobic sterowanie tasma led rgd wszystko ladnie zdefiniowane cztery przyciski na pilocie do zalaczania poszczegolnych kolorow 3 przyciski i wylaczenia czwartym ale chcial bym zrealizowac cos takiego ze przyciskiem na pilocie moge wlaczyc dany kolor a jesli przycine drugi raz ten przycisk to go wylacze i jeszcze wprowadzic plynna zmiane dla danego koloru przyciski + i – ale nie wiem jak to za bardzo zrealizowac ma ktos moze jakis pomysl????

  • http://www.forum-kredytowe.pl Piter

    Bardzo ciekawe urządzenie. Szkoda tylko , że nie można tym wysterować żony :)

  • Maciek

    Kiedys wyczailem ta stronke w internecie, pomyslalem kolejna DIY, no coz, ale co projekt to po prostu geniusz w swojej prostocie. Oby tak dalej. Zycze sukcesow i z niecierpliwoscia czekam na kolejne projekty, zwlaszcza teraz, gdy zaopatrzylem sie we wlasne UNO :D.

    • https://plus.google.com/u/0/105020798016042431621?rel=author Łukasz Więcek

      Cieszę się niezmiernie, że Majsterkowo przypadło Ci do gustu :)

  • Andrzej

    Czego można użyć zamiast odbiornika TSOP2236? Nigdzie w okolicy nie mogę go dostać :( Pozdrawiam i czekam na odpowiedź.

  • Maciek

    Andrzeju to sa kompatybilne odbiorniki TFMS5360, TSOP2236, SFH5110-36, TSOP1736 – odbiornik podczerwieni 36KHz. A co to Pana Lukasza mam pytanie, zlozylem ukladzik rozpakowalem biblioteke, ale gdy zczytuje kody danych przyciskow dzieje sie cos dziwnego. Kazdy guzik ma po kilka przypisanych kodow do siebie i zdaje mi sie ze wybierane sa one losowo. Wybierajac 2 kody z dwoch roznych przyciskow i podpinajac je do kodu programu, dioda nasluchu TX pali sie wiec odbiera sygnal, lecz led jak byl martwy tak jest. Led sprawdzony dziala. Nie mam pojecia co robie nie tak, moze to te piloty jakies specyficzne, pilot pochodzi od wiezy philipsa FW-630 Mini Hi-Fi System.

  • Michał Włoch

    Witam :)
    http://www.tme.eu/html/PL/przekazniki-subminiaturowe-serii-g5v1/ramka_1984_PL_pelny.html
    Czy mogę zastosować taki przekaźnik do sterowania (w moim przypadku lampką nocną)?

  • Marcin

    Mam taki problem: Chciałem wykorzystać algorytm z przykładu o płynnym serwowaniu diodą led i przekształcić go na serowarnie serwem. Moja próba się nie powiodła, bo po wczytaniu programu serwo działa tylko raz tak jak powinno a później praktycznie się nie rusza.
    Mój program wygląda tak:
    #include
    Servo sdol;
    int pola = 0;
    void setup()
    {
    Serial.begin(9600);
    sdol.attach(2);
    }
    void loop () {
    switch(Serial.parseInt()){

    case 1://Jeśli wciśniesz “1″ to serwo przekręci się w prawo o 5 stopni
    if(pola 4) {pola= pola-5;}
    sdol.write(pola);
    break;
    }
    }
    Bardzo proszę o pomoc i góry dziękuje.

    • Marcin

      trochę ucięło mi program (od void loop):
      void loop () {
      switch(Serial.parseInt()){

      case 1:
      if(pola 4) {pola= pola-5;}
      sdol.write(pola);
      break;
      }
      }

  • Krzysiek

    Witam, mam taki problem, gdy podłączyłem odbiornik podczerwieni by użyć go do odczytu kodów z polota, zaczął się grzać i śmierdzieć spalenizną, nie mam pojęcia czemu tak się stało.

  • Michał

    Witam, moj problem polega na płynnym rozjasnianiu/przyciemnianiu diody a mianowicie gdy przytrzymam przycisk to zwieksza mi jasnosc z, np: 105 na 110 i gdy trzymam przycisk wcisniety to nic sie nie dzieje. Aby sie pojasniało musze naciskac przycisk, trzymanie go nic nie daje :/ przy zczytywaniu przycisków gdy raz nacisne przycisk to wyskakuje dobry kod, ale gdy trzymam przycisk to na poczatku wyskoczy dobry kod a pozniej 0xfffffffff i tak dopoki nie puszcze. Na kazdym pilocie to samo.
    A drugi moj problem to to samo co u kolegi Pacmana:

    “Witam, mam pytanie.
    Posiadam arduino uno R3 i po wgraniu programu płynnego sterowania jasnością diody LED na PINIE 3 nie działa PWM. Dioda pozostaje zgaszona i zapala się dopiero przy maksymalnej wartości parametru (od razu “pełnym” światłem).
    Po przełączaniu się na dowolny inny pin z tyldą i po zmianie nr pinu w kodzie programu wszystko działa oki.”

    Pozdrawiam

  • Pawel

    Co muszę zmienić jeżeli mam odbiornik:1838T ?

  • Marcino

    Witam

    Mam taki (wydaje mi się) mały problem. Gdy wklejam program do płynnego sterowania diodą led na mikrokontroler jest wszystko ok i od strony technicznej jest wszystko dobrze. Ale dioda nie chce się rozjaśniać tylko po prostu gdy osiągnę maksymalną wartość (255) zaświeci się i świeci do póki nie zejdę z wartości 255. Czy Ktoś mógłby mi powiedzieć gdzie może być błąd?

  • Michał

    Mam taki problem przerobiłem program na coś takiego:

    #include
    #define irPin A0
    IRrecv irrecv(irPin);
    decode_results results;

    #define diodaPin 13
    #define przePin 12
    int diodaStatus = LOW;
    int przeStatus = LOW;
    int jasnosc = 0;

    void setup() {
    Serial.begin(9600);
    irrecv.enableIRIn();

    pinMode(diodaPin, OUTPUT);
    }

    void loop() {
    if (irrecv.decode(&results)) {

    switch (results.value) {
    case 0x6D5D1DB3:
    Serial.print(“Dioda 13 “);
    Serial.println(diodaStatus);
    diodaStatus = ~diodaStatus;
    digitalWrite(diodaPin, diodaStatus);
    delay(250);
    break;

    case 0x25D2E369:
    Serial.print(“Lampa 12 “);
    Serial.println(przeStatus);
    przeStatus = ~przeStatus;
    digitalWrite(przePin, przeStatus);
    delay(250);
    break;

    }

    irrecv.resume();
    }
    }

    pod pod 13 mam podłączoną diodę, pod 12 poprzez CTPN 2222 przekaźnik. Problem jest taki że przekaźnik wtedy nie działa ale jak zamienię na:
    #define diodaPin 12
    #define przePin 13
    to przekaźnik działa a dioda się lekko żarzy, o co common, problem z programem czy Arduino Uno?

  • Michał

    Witam.

    Być może powielam jakieś inne pytania, ale mam nadzieję, że jednak nie. Chciałbym sobie skonstruować coś takiego http://bomozna.blogspot.com/p/oswietlenie-poddasza.html do sterowania światłem w pokoju za pomocą telefonu z androidem. Niestety autor tekstu nie jest chętny do pomocy w wykonaniu a sam mam zbyt małą wiedzę żeby cokolwiek z tym zrobić. Jeżeli ktoś mógłby mi pomóc albo chociaż odesłać do jakiejś strony z czymś w rodzaju “how to…” byłbym bardzo wdzięczny ponieważ mimo mojej lektury googla do niczego konkretnego nie doszedłem :<

    Z góry dziękuję i pozdrawiam :)

  • Krzysiek

    Dzięki Ci, ekstra wszystko opisałeś!

  • Łukasz

    Cześć,

    Jak wstawić w Fritzingu opisany optotriak i triak? – na liście części ani w wyszukiwarce nie mogę ich znaleźć. Używam Fritzing 0.7.12 (b6882 2013-02-13)
    Bardzo proszę o naprowadzenie.

  • http://avc-ligting.pl wojtek

    super rozwiązanie

  • Endzio

    Mam odbiornik TSOP31236 i kody odczytuje mi losowo. Co mogę na to poradzić?

    • Vatixxx

      Mam to samo z TSOP2236, więc może to zależy od Pilota. Może ktoś to mądrzejszy potwierdzić to info?

      • Mariusz

        spróbuj celować pilotem na drugą stronę odbiornika.

  • Val

    W jaki sposób można zapisać w pamięci arduino odczytaną z pilota podczerwieni wartość i potem ją wykorzystać w programie? Chodzi mi oto żeby po zmontowaniu układu była możliwość dostosowania go do innego pilota bez konieczności wgrywania programu na nowo.

  • Val

    tzn chodzi mi oto żeby odczytaną wartość zapisać w takiej postaci żeby można ją później użyć w funkcji “case”. Proszę o podpowiedź.

  • PAtryk

    Witam!
    Mam takie pytanie dotyczące wartości rezystorów na pokazanych schematach.
    Wartości na rysunkach są takie jak powinny czy są to tylko przykładowe?
    Dla zapytania jakie są wartości na tym rysunku :
    http://s.więcek.pl/majsterkowo.pl/uploads/2012/10/odbiornik-podczerwieni-moc.png

  • Kuba

    Mam problem podczas wgrywania do arduino programu wy skak uje mi taki error:
    ‘IRrecv’ does not name a type

    Proszę o szybką podpowieź co z tym zrobić.

  • lukiiiii

    Jak wyświetlić kody z pilota na ekranie PC? Nie mam arduino, planuje zakup USBasp i WinAVR

  • Patryk

    Mam problem podczas wgrywania do arduino programu wyskakuje mi taki error:
    ‘IRrecv’ does not name a type
    O co w tym chodzi ??

  • Rafał

    Odbiornik IR działał mi przez 2 dni do dzisiaj, kiedy próbowałem uruchamiać pilotem silniczek DC poprzez mostek H. Podejrzewam że w pewnym momencie mogłem kabelki źle powpinać, ale jesli nie to było przyczyną, to już nie wiem…

  • run

    @Kuba
    Jeśli chcesz wgrać to , żeby Ci działało wgraj to do Dokumenty/arduino
    a nazwe tego stiff… zmień na IRRemote i działa

  • run

    Jeśli by ktoś miał podobny problem to rozwiązać go się da w następujący sposób:
    Pobieramy bibliotekę z tego posta jest to napisane na samym początku
    Jak sterować dowolnym urządzeniem w domu za pomocą pilota od TV i Arduino?

    Po pobraniu i rozpakowaniu paczki kopiujemy całą bibliotekę do folderu /librares/ znajdującego się w katalogu z Arduino IDE.
    Jak już wgraliśmy :
    Tylko zmieniamy nazwę z :
    shirriff-Arduino-IRremote-3f70ad2
    na
    IRremote

    Na 100% będzie działać.
    Pozdrawiam Run

  • Yar

    Witam! Od kilku miesięcy z zapałem czytam stronkę i bardzo się cieszę, że istnieje. Mam pytanie dot. IR. Na 4 piloty 2 mi działają idealnie, 1 puszcza dziwne kody 1 nic. Myślę, że działają na innych częstotliwościach. Czy jest możliwość sprawdzenia jaką obsługuje pilot mając do dyspozycji arduino, czy trzeba kupić kilka odbiorników i próbować do skutku?
    Pozdrawiam serdecznie kierownictwo strony.

  • hcwd

    odpowie ktoś w końcu jakie to oporniki bo autor jak zwykle zapomnial o tym wspomnieć

    • https://plus.google.com/u/0/105020798016042431621?rel=author Łukasz Więcek

      Oporniki dokładnie takie, jak na załączonych obrazkach (we wszystkich schematach zawsze wstawiam odpowiednie wartości:)

  • Anonim

    dla posiadaczy arduino due bibloteke IRemote.h można ściągnąć z tąd (https://github.com/enternoescape/Arduino-IRremote-Due)

    należy pamiętać, że arduino due pracuje pod 3.3v ale moj odbiornik IR dał rade i na tym napięciu

  • Run

    Na jaki mikrokontroler to przerzucić żeby był bardzo tani i działało ?

    • https://plus.google.com/u/0/105020798016042431621?rel=author Łukasz Więcek

      ATmega8a spokojnie wystarczy.

  • Night

    Witam!
    Posiadam wszystkie części tylko teraz mam problem , żeby za pomocą arduino przerzucić na ATmegę8a program . pomoże ktoś ? jakiś schemat jak to podłączyć i zaprogramować ??

    • Bartłomiej Hydryński

      Skorzystaj z USBasp i oczywiście manuala uP

  • Run

    Kupiłem 5 Atmeg8A i same z tym kłopoty nie da się na nich wypalić Bootloadera ani nic z nimi zrobić bo wyskakuje błąd :
    avrdude: stk500_getsync(): not in sync: resp=0×00
    a po drugie ta atmega jest za mała chyba nawet na ten kod :

    • Bartłomiej Hydryński

      Świeże kości są pozbawione ustawień fusów – aby wgrać w nie bootloader musisz je odpowiednio ustawić. Kupiłem 10 szt atmeg 2560 – które żadnym programatorem nie mogłem ruszyć. Na szczęście mam Elneca i wbijałem zgraną oryginalną kość z Arduino do nowych – po tej operacji daje się z nimi pracować i je normalnie programować. W przypadku 8 Asp powinien sobie poradzić – ale poczytaj o fusach aby go przygotować pod wgranie boot’a

    • Wojciech

      Witam,

      Czy jest możliwość zrobienia tego na

      Arduino Pro Mini 328 ? Chodzi mi o sterowanie pilotem IR wyjściami I-O oraz PWM.

      Pozdrawiam i z góry dziękuję za odpowiedź.

  • Dominik

    witam… chciałem zrobić zterowanie kompem z pilota al nie wiem czemu ale nie działa link http://www.arduino.cc/en/Tutorial/HomePage i nie mam skad wziasc funkcji.. pomoze ktos????

  • cezary

    Cześć,

    Czy jest możliwość podłączenia attiny2313 do usbasp tak by odczytywał dane z IR i wyświetlał w serial?

  • Arek

    Czy jak podłacze Arduino Leonardo do komputera gdzie nie mam sterownikow od Arduino i chce zeby działał jako urządzenie hid to czy komputer bedzie widział Arduino jako klawiature lub mysz czy bez zainstalowanych sterowników nie będzie działał?

    • https://plus.google.com/u/0/105020798016042431621?rel=author Łukasz Więcek

      Na 99% powinno działać.

  • Marek

    Mam pytanie odnośnie tej taśmy LED. Chciałbym zastosować tranzystor PNP (BC640). Rozumiem, że nie wystarczy podpiąć identycznie jak na rysunku żeby to działało (w datasheecie widać, że nóżki są inaczej ułożone).

  • Luckymat

    Płynne sterowanie jasnością diody za pomocą pilota nie dziala mi moge klikac million razy na – i jest ciagle 0…0…0
    a klikne raz na + to wchodzi na 5 i sie wiesza…

    HELP!

  • Mateusz

    Hej, mam głupie pytanie (tak wiem powiecie, że jestem leniwy) ale jak wiadomo, ile omów musi mieć rezystor, do optotriaka? Tak samo połączenie triak – 230V? Co przez co mam podzieli? Np dla MOC3042, If niby tam jest 0.06 więc wychodzi mi 5/0.06 = 84ohma? Czy ja biore złe dane? Czy jestem aż taki uległy w tym :P?

  • Marcin

    Witam. Czy ten “cichy” układ zastępujący przekaźnik będzie działał na 12V… Czy jest tylko na 230v??
    Z góry dziękuje za odpowiedz.

    • T

      Nie będzie

      • Łukasz

        Możesz powiedzieć dlaczego?

      • syfon

        Ależ będzie. Też się zdziwiłem. Podobno “triaki stosowane są w obwodach prądu przemiennego”, no ale może to dlatego że Wikipedia. Zarówno przekaźnik jak i układ z triakiem podłączałem do 12V prądu stałego. Byłem przekonany że triak nie zadziała a wieczorem nie chciałem ryzykować z poważną energetyką. Niespodzianka – zadziałało. Dlaczego?

  • Kuba

    Witam. Może mnie ktoś oświecić w temacie włączania lampki nocnej pilotem? Jak zrobić to w taki sposób że lampkę można włączyć/wyłączyć pilotem ale dodatkowo żeby była możliwość ręcznego włączenia/wyłączenia bez pilota, tak żebym mógł włączyć ją pilotem a np przechodząc obok wyłączyć ręcznie?

    • b

      Moja lampka jest zasilana z kontaktu, ale przechodzi przez transformator i sam halogen zasilany jest 12V. Podlaczylem przekaznik do wyjscia 12V nie ruszajac fabrycznego przycisku wlacz/wylacz. dlatego jesli np. chce recznie wylaczyc lampke – wystarczy ze wcisne fabryczny przycisk.

  • Dawid

    Witam, niestety nie wiem dlaczego ale mam problem z zaprogramowaniem odbiornika pod arduino, sciagnalem biblioteczke i wgralem tak jak bylo napisane do libraries, jednak podczas programowania wyskakuja mi bledy:

    sketch_dec17a:3: error: ‘IRrecv’ does not name a type
    sketch_dec17a:4: error: ‘decode_results’ does not name a type
    sketch_dec17a.ino: In function ‘void setup()’:
    sketch_dec17a:8: error: ‘irrecv’ was not declared in this scope
    sketch_dec17a.ino: In function ‘void loop()’:
    sketch_dec17a:12: error: ‘irrecv’ was not declared in this scope
    sketch_dec17a:12: error: ‘results’ was not declared in this scope

    Bardzo bym prosil o pomoc, z gory dziekuje.
    Dawid

    • Artur

      A dołączyłeś ją na początku kodu?

    • krzysiek

      mam to samo ;/

    • WinWoj

      Zmien nazwe foldera lub zipa na IRecv czy jakakolwiek krotsza, potem w menu arduino (przynajmniej u mnie tak jest) wgraj ja. u mnie smiga, pilotem od tv Pionieer z 10m steruje wlaczeniem i wylaczeniem malego silniczka DC

  • Dawid

    Witam, niestety mam problem z zaprogramowaniem pilota do arduino.
    sciagnalem biblioteczki wpisalem wszystko tak jak trzeba, jednak moj odbiornik prawdopodobnie nie dostaje sygnalu z pilota lub czasem dostaje go z kilku minutowym opoznieniem, bardzo bym prosil kogos o pomoc.
    z gory dziekuje, Dawid.

    • Artur

      Obserwujesz dane wysyłane przez serial? Wklej kod

      • Dawid

        Tak, klikam przyciski na pilocie lecz nie ma zadnej reakcji ewentualnie po kilku minutach wyskakuja mi jeden lub dwa kody pomimo tego ze wcisnalem 4 przyciski:
        0x6FB84EC6
        0x4DB5DAA8
        Tyle mi wyskoczylo po dluzszym oczekiwaniu.

        #include
        #define irPin 11
        IRrecv irrecv(irPin);
        decode_results results;

        void setup() {
        Serial.begin(9600);
        irrecv.enableIRIn();
        }

        void loop() {
        if (irrecv.decode(&results)) {
        Serial.print(“0x”);
        Serial.println(results.value, HEX);
        delay(250);
        irrecv.resume(); }
        }

  • Stasiek

    chętnie bym poznał sklep gdzie można kupić przekażnik z cewką 5v i stykami które wytrzymją 230V

  • Stanislaw Konkiewicz

    chętnie bym poznał sklep gdzie można kupić przekażnik z cewką 5v i stykami które wytrzymją 230V

    • Artur

      Np. na lispolu jest

  • ReaBooK

    Jeżeli ktoś jeszcze przegląda tę stronę, to chciałbym zwrócić uwagę na pewną niezgodność tego poradnika z danymi technicznymi.

    Przedstawione jest tutaj, że patrząc od strony “oczka” odbiornik ma tak oznaczone nóżki:

    1. GND

    2. Vcc

    3. OUT

    Natomiast w dokumentacji technicznej jest:

    1. OUT

    2. Vcc.

    3. GND

    Jak widać zamieniona jest nóżka 1 z 3. Mogę wnioskować po tym, że schemat jest niepoprawnie narysowany, gdyż poprawny byłby kiedy odbiornik byłby ustawiony tyłem.

    Schemat o który mi chodzi: http://s.więcek.pl/majsterkowo.pl/uploads/2012/10/odbiornik-podczerwieni.png

    Dokumentacja techniczna: http://botland.com.pl/attachment.php?id_attachment=117

    Dodatkowo producent zaleca użycie kondensatora 4,7uF i rezystora 100 Ohm, o czym w poradniku nie ma nic wspomniane.

  • Stanislaw Konkiewicz

    Ktoś mógłby się pokusić o napisanie takiego poradnika z wykorzystaniem USBasp lub chociaż zewnętrznego mikrokontrolera

  • Krzychu

    Mam szybkie pytanie. Czy naprawdę da się przenieść program do włączania lampki nocnej za pomocą pilot na ATTINY 2313. Gdzieś podczas przeglądania forum rzuciła mi się informacją, że biblioteka IRremote jest za duża i zwyczajnie nie wejdzie.

  • Łukasz Zielaq

    Bardzo ciekawi mnie temat sterowania różnymi odbiornikami w domu radiowo/przez IR. Jedyny problem wg mnie który jest to zasilenia może nie tyle arduino bo szkoda takowego na pojedyncze rozwiazanie ale nawet zwyklej atmegi – kwestia zasilenia jej bez stosowania wielkich zasilaczy

  • oliwer

    zrobilem tą myszke na pilota oczywiscie podmienilem wszystkie kody pilota (te 0x…) na swoje, plytka odbiera ale kursor sie nie rusza, ktos wie dlaczego?

  • adam_dz

    czym są robione te fajne schematy na płytkach prototypowych? ściągnąłem fritzing i nie zawija tak fajnie kabli :)

  • Hubert

    Czy jeśli posiadam jedynie UsbAsp (nie mogę odczytać kodów HEX przez serial), czy jest możliwość zapisywać te kody w EEPROM, a potem odczytać je z pamięci np przez MkAVRCalculator?

  • lipol

    Czy mogę poprosić o zwykłe schematy tych układów zamiast tych rysunków ? Chociaż ten do sterowania lampą, gdyż chcę zbudować układ na AVR zamiast Arduino ;) z góry dziękuję

  • lipol

    Powinna być także możliwość zapalania lampki zarówno pilotem jak i zwykłym przełącznikiem. Jak rozwiązać taki problem?

  • Przemek122

    Ja mam problem gdy wgrałem do libraries ten plik co ma kodować i gdy włączam arduino klikam wgraj wyskakuje mi taki problem D:Program Files (x86)ArduinolibrariesRobotIRremotesrcIRremoteTools.cpp:5: error: ‘TKD2′ was not declared in this scope
    PROSZĘ O POMOC ;)

  • Stanislaw Konkiewicz

    Witam, gdy komplikuje szkic wyskakuje mi taki błąd:

    c:/program files/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: sketch_feb08a.cpp.elf section .text will not fit in region text

    c:/program files/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: region text overflowed by 252 bytes

    Dodam że używam USBasp i Atmegi8L

  • Gościu

    Czy można zrobić tak aby po naciśnięciu przycisku na pilocie otwierał się inny program napisany w Arduino?

  • kisiel

    mam ten zestaw http://botland.com.pl/odbiorniki-podczerwieni-tsop/2169-pilot-ir-odbiornik-podczerwieni-1838t-modul-i-przewody.html
    i jest bardzo mały zasięg i dosłownie trzeba celować pilotem w odbiornik, poradzicie coś ?

  • jan

    mi to nie działa. Sprzecza się z trzecią linią.

  • neonradeon

    Witam, mam problem, bo chciałem przerobić program do sterowania diodą led żeby można było sterować kilkoma ale mi coś nie idzie(odrazu mówię że jestem początkujący) gdy piszę pinMode(DR, OUTPUT) (DR to nazwa wcześniuej…) to przy kompilacji mi wyskakuje błąd że musi być ) przed ; (czy coś takiego) pomożecie?

    • magik

      Sprawdź czy w następnej i poprzedniej linijce masz “;”

  • Paweł

    Czy żeby sterować jasnością np żarówki (220 v) wystarczy regulować pwm’em wejście moc3021?

  • Zaba

    Witam chciałem zbudować sobie układ z moc3021 i bt138. Wcisnąłem wszystko w płytkę stykową, załadowałem prosty program (blink) i ku mojemu zaskoczeniu, dioda zapala się, ale nie gaśnie, nawet po odpięciu optotriaka. Moje pytanie, tutaj, czy może to być wina napięcia? Używam 12v DC.

  • Patryk

    Witam.
    Pomoże ktoś rozwiązać problem ?
    Chciałbym przykładowo żeby dioda na pinie np 11 wyłączała się z opóźnieniem. Z tym, że dopiero po spełnienie 2 warunków:

    - po wciśnięciu guzika Off oraz guzika np ok

    Próbowałem to zrobić w ten sposób:

    Po wciśnięciu guzika off na pinie 5 ustala się stan wysoki.
    Następnie chciałem dodać warunek w case , że dioda wyłączy się po np 5 sekundach, gdy na pinie 5 jest stan wysoki oraz zostanie dodatkowo wciśnięty ok, ale nie udało mi się tego zrobić, bo przy różnych opcjach wpisanego kodu wywalało błędy.

    Nie dawno zacząłem zabawę w programowanie i nie wiem czy jest w ogóle możliwość wstawienia warunku w case w funkcji switch ?

  • Konrad

    Mi podczas kombinowania 1 programu wyskakuje:

    e:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: IR_kontroler.cpp.elf section .text will not fit in region text
    e:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: region text overflowed by 804 bytes

  • john

    bc 547 dla taśmy led to pobożne życzenie :) , proponuję chociaż bd 135

  • kamgro

    Dzien dobry, dopiero zaczynam swoja przygode z arduio wiec mam wiele problemow.

    Czy ktos moze powiedziec mi dlaczego lub z jakiego powodu nie deklaruje mi kodu pilota np.

    “error: OXA70 was not declared in this scope” program jest dokladnie taki jak jak ten zamieniajacy na monitorze portu szregowego kody na kierunki. Dziekuje z gory za pomoc.

    • https://www.facebook.com/Piro1056 piro1056official

      witam

      a masz wgraną bibliotekę IRremote ??

  • https://www.facebook.com/Piro1056 piro1056official

    witam posiadam TSOP1738 i gdy chcę sczytać kod z pilota to mi wyskakują losowe liczby ….

    co mam zrobić ??

    z góry dzięki za pomoc ;)

    • Mateusz Jaros

      może masz takiego pilota np piloty od lego właśnie tak robią

  • Eugeniusz

    Witam,
    zbudowałem układ ściemniacza tak jak podane jest powyżej. Niestety podłączona żarówka 60W 230V ściemnia się
    bardzo słabo, tzn w bardzo małym zakresie. Gdy podłączę diodę
    (oczywiście poza optotriakiem i triakiem), to dioda ściemnia się pięknie
    i układ funkcjonuje, jak należy.
    Na żarówce 230 V to już tak nie działa.
    Czy ktoś podpowie mi dlaczego żarówka w tym układzie ściemnia się tak mało (tzn tak słabo)?

  • http://www.wtma.pl pacmann

    Witam, mam pytanie.
    Posiadam arduino uno R3 i po wgraniu programu płynnego sterowania jasnością diody LED na PINIE 3 nie działa PWM. Dioda pozostaje zgaszona i zapala się dopiero przy maksymalnej wartości parametru (od razu “pełnym” światłem).
    Po przełączaniu się na dowolny inny pin z tyldą i po zmianie nr pinu w kodzie programu wszystko działa oki. Czy może to świadczyć o jakiejś wadzie fabrycznej mojego Ardiuno ? Na usprawiedliwienie dodam, że jestem w temacie zupełnie zielony, a “płytka” jest nowa – świeżo zakupiona w nettigo.pl.

  • Bartek

    Ni wiem co jest tego przyczyną ale u mnie sytuacja jest identyczna. Na pinie np 5 działa jak należy. Plus drobna uwaga na dla odbiornika TSOP2236 kolejnosc pinow to 1 – sygnal, 2 – V, 3-GND.

  • Anonim

    Tez jestem ciekaw, bo u mnie jest identycznie :)