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

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?

Ocena: 4.8/5 (głosów: 74)

Podobne posty

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

  • 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

    Odpowiedz
  • 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.

    Odpowiedz
  • 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 ;)

    Odpowiedz
      • 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ć.

        Odpowiedz
      • 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?

        Odpowiedz
        • 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) :)

          Odpowiedz
        • @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.

          Odpowiedz
            • 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ć)?

              Odpowiedz
              • 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ć.

                Odpowiedz
  • 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 :)

    Odpowiedz
  • 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*)’

    /……

    Odpowiedz
  • 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.

    Odpowiedz
  • 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.

    Odpowiedz
    • 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.

      Odpowiedz
  • 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?

    Odpowiedz
  • 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.

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

      Odpowiedz
      • 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?

        Odpowiedz
  • 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

    Odpowiedz
  • 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:/

    Odpowiedz
  • 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?

    Odpowiedz
  • 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

    Odpowiedz
  • 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.

    Odpowiedz
  • 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.

    Odpowiedz
  • Witam.
    Próbowałem wgrać program do włączania diody na mikrokontroler
    Attiny 2313 tak jak w tym poradniku https://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ć?

    Odpowiedz
  • 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?

    Odpowiedz
  • 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) ?

    Odpowiedz
  • 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ć?

    Odpowiedz
    • 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.

      Odpowiedz
      • 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

        Odpowiedz
  • 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 ?

    Odpowiedz
  • 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.

    Odpowiedz
  • 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.

    Odpowiedz
  • 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

    Odpowiedz
  • 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 !

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

    Odpowiedz
  • 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ż ???

    Odpowiedz
  • 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????

    Odpowiedz
  • 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.

    Odpowiedz
  • 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.

    Odpowiedz
  • 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.

    Odpowiedz
    • 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;
      }
      }

      Odpowiedz
  • 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.

    Odpowiedz
  • 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

    Odpowiedz
  • 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?

    Odpowiedz
  • 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?

    Odpowiedz
  • 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 :)

    Odpowiedz
  • 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.

    Odpowiedz
  • 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.

    Odpowiedz
  • 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ź.

    Odpowiedz
  • 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ć.

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

    Odpowiedz
  • 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…

    Odpowiedz
  • 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

    Odpowiedz
  • 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.

    Odpowiedz
  • 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ć ??

    Odpowiedz
  • 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=0x00
    a po drugie ta atmega jest za mała chyba nawet na ten kod :

    Odpowiedz
    • Ś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

      Odpowiedz
    • 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ź.

      Odpowiedz
  • 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ł?

    Odpowiedz
  • 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).

    Odpowiedz
  • 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!

    Odpowiedz
  • 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?

    Odpowiedz
  • 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?

    Odpowiedz
    • 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.

      Odpowiedz
  • 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

    Odpowiedz
  • 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.

    Odpowiedz
      • 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(); }
        }

        Odpowiedz
  • 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.

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

    Odpowiedz
  • 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.

    Odpowiedz
    • – 2K Bytes of In-System Self Programmable Flash dla Attiny2313
      Ile zajmuje skompilowana biblioteka to nie wiem.
      Można przerobić bibliotekę żeby działała z jednym pilotem, rozmiar pliku maleje

      Odpowiedz
  • 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

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

    Odpowiedz
  • 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?

    Odpowiedz
  • 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ę

    Odpowiedz
  • 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 ;)

    Odpowiedz
    • Też tak miałem. Wejdź w folder arduino, następnie do folderu “libraries” i usuń folder tej biblioteki. Otwórz Arduino i spróbuj

      Odpowiedz
  • 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

    Odpowiedz
  • 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?

    Odpowiedz
  • 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.

    Odpowiedz
  • 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 ?

    Odpowiedz
  • 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

    Odpowiedz
  • 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.

    Odpowiedz
  • 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)?

    Odpowiedz
  • Witam, fajny artykuł. Czy można by zmienić jakoś kod by LED po wciśnięciu przycisku migała i po naciśnięciu tego samego przestała migać? Jeśli tak to czy mógłby ktoś wkleić tekst programu? Z góry dziękuje.

    Odpowiedz
  • Witam

    Tutorial bardzo zacny.
    Zainteresował mnie głownie koniec…
    Czy istnieje możliwość by ta lampka sama się powoli rozjaśniała do pełnej wartości po
    wciśnięciu przycisku a potem sama z pełnej wartości do zera po wciśnięciu tego samego
    przycisku wyłączała? Jeśli tak to czy mógłby ktoś napisać jak to zrobić. Byłbym wdzięczny.
    Pozdrawiam

    Odpowiedz
  • Cześć
    Właśnie czytałem ten artykuł i aż zabrałem się do sprawdzania czy faktycznie w myśl tego
    co napisał autor “Po zaprojektowaniu całego odbiornika możemy przerzucić program na dowolny mikrokontroler i zejść z kosztami całości poniżej 10zł :)” można to zrobić na innym MCU. No i wybór padł na bieduino taki biedny odpowiednik arduino, który ma na pokładzie ATMEGE8. No i klops już po pierwszym programie do sprawdzania komend z pilota ”
    #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();
    }
    }”

    Okazało się, że ma ponad 9KB i nie wejdzie na ATMEGĘ8 a więc nie da rady tego zrobić na dowolnym MCU? Czy może jest jakiś sposób by to dostosować np. do megi8?
    Może ktoś napisać jak to zrobić by faktycznie weszło na dowolny MCU?
    Z góry dziękuje.

    Odpowiedz
  • Co do płynnego sterowania to jak rozwiązałeś problem z tym że z pilota pierwsze wciśnięcie i przytrzymanie daje właściwy kod HEX a później następuje fala innego powtarzającego się kodu HEX (dla każdego przycisku na pilocie) ? przez co płynne sterowanie jest nie możliwe tylko trzeba non stop naciskać ten sam przycisk lecz nie o to w tym chodzi

    Odpowiedz
  • Witam czy ktoś jest w posiadaniu pomniejszonej biblioteki tak żeby program dało wgrać się na ATTINY 2313, albo chociaż na megi8???

    Odpowiedz
  • Witam. Mam taki problem podczas odczytywania kodu pilota. MIanowicie, gdy wcisnę klawisz to wyskakuje mi jego kod 0x750, a gdy wcisnę go po raz drugi to 0xF50. Cała sytuacja się zapętla. Jest na zmianę raz taki kod raz taki. Powie mi ktoś dlaczego tak się dzieje
    Pozdrawiam Michu

    Odpowiedz
    • Mam to samo. Ale nie przeszkadza to w sterowaniu. Ewentualne dopisz kod. Np tak: switch (results.value) {

      case 0x750:
      Serial.println(“w lewo”);
      break;
      switch (results.value) {
      case 0xF50:
      Serial.println(“w lewo”);
      break;
      Pozdro.

      Odpowiedz
  • Pojawia mi się taki błąd

    ffff.ino: In function ‘void setup()’:
    ffff:6: error: redefinition of ‘void setup()’
    Blink:2: error: ‘void setup()’ previously defined here
    ffff.ino: In function ‘void loop()’:
    ffff:11: error: redefinition of ‘void loop()’
    Blink:14: error: ‘void loop()’ previously defined here

    Odpowiedz
  • Zastanawia mnie jeszcze dlaczego podczas sterowania jasnością diody jej maksymalny zakres = 250. Z czego to wynika? Na jakiej podstawie została dopasowana ta wartość. Dziękuję za odp.

    Odpowiedz
    • Poczytaj sobie o PWM
      “…Sygnał PWM można wygenerować za pomocą funkcji analogWrite(x, y), gdzie x reprezentuje odpowiedni pin cyfrowy, natomiast y reprezentuje wartość współczynnika wypełnienia impulsu (z przedziału od 0 do 255, gdzie 0 oznacza 0% współczynnik wypełnienia, a 255 oznacza 100% współczynnik wypełnienia)…”

      Odpowiedz
  • A można jakimś prostym sposobem zrezygnować z przekaźnika ? Chodzi mi o jego uciążliwy hałas.
    Jakiś triak, tyrystor… no nie wiem – nie znam się :)

    Odpowiedz
  • Witam. Super sprawa i od razu chcialbym zapytać jeśli ktoś sie orientuje.
    Chcialbym zakupic kilka lampek nocnych led ktore sa wlaczane na pilota i chcialbym sterowac je niezaleznie wlaczajac i wylaczajac pojedynczo jednym pilotem.
    Da sie to jakos zrobic?

    Odpowiedz
    • tak wszystko da sie sterowac pilotem ja mam cale oswietlenie w domu podzielone na sekcje i zalanczam je polotem pozatym dodatkowo moge sterowac za pomaca telefonu komorkowego
      chcesz wiecej informacji pisz dyksa71@kpnmail.nl

      Odpowiedz
  • C:\Program Files (x86)\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: ‘TKD2’ was not declared in this scope
    int RECV_PIN = TKD2; // the pin the IR receiver is connected to
    ^
    Błąd kompilacji.
    U mnie ciągle wyrzuca ten błąd.

    Odpowiedz
  • Czy ktoś może wyjaśnic czemu kiedy zastosowałem tranzystor 2N2222 – Tranzystor NPN 0.8A.układ działa, a kiedy BD139 – Tranzystor NPN 1.5A już nie?

    Odpowiedz
  • Pomóż mi pokazuje coś takiego komplikator :

    Arduino:1.6.0 (Windows 7), Płyta:”Arduino Leonardo”

    E:\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: ‘TKD2’ was not declared in this scope
    int RECV_PIN = TKD2; // the pin the IR receiver is connected to
    ^
    Błąd kompilacji.

    Raport ten będzie miał więcej informacji z
    “Pokaż szczegółowe informacje podczas kompilacji”
    włącz w Plik > Preferencje

    Odpowiedz
  • “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ł :) ”
    Plik .hex z tym programen zawiera aż 32kB.
    Czy ktoś mógłby pomóc, jak zmniejszyć ten plik (bibliotekę ir), aby program spokojnie zmieścił się na ATmegę?

    Odpowiedz
  • Witam. Bardzo ciekawy projekcik, probowalem zrobic swoja wersje ale chyba skutecznie sie zniechecilem po przetestowaniu 4 pilotow zaden nie dziala tak jak nalezy a mianowicie kiedy zczytuje z nich kody po jednokrotnym nacisnieciu danego przycisku jakis kod sie tam pojawia, ale gdy przytrzymam przycisk kod wyglada tak: 0xFFFFFFFF dla kazdego przycisku jest taki sam, nasuwa sie pytanie jak mam sterowac ta dioda w plynny sposob gdy trzeba przycisk przytrzymac zeby rozjasnic badz przyciemnic diode. Sytuacja jest podobna gdy zawre w programie te kody z pilotow ktore udalo mi sie odczytac po jednokrotnym nacisnieciu guzika; dioda tx zapala sie wiec arduino odczytuja jakis tam przychodzacy sygnal, dioda na plytce stykowej raz sie zaswieci raz nie innym razem wogole nie reaguje ale nie dziala plynnie tak jakby piny PWM byly martwe(przetestowalem chyba wszystkie piny oznaczone tylda) nie mam pojecia co robie zle, moze przyczyna jest tak oczywista ale ja jej niestety nie dostrzegam ;__; jezeli komus przyszlo sie spotkac z owym problemem a jeszcze lepiej go rozwiazac bardzo prosze o porade.

    Odpowiedz
  • Przy próbie kompilacji programu wyskakuje mi błąd:

    D:\Program Files (x86)\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: ‘TKD2’ was not declared in this scope
    int RECV_PIN = TKD2; // the pin the IR receiver is connected to
    ^
    Błąd kompilacji.

    Co mam robić??

    Odpowiedz
  • Czy andruino można zastąpić samym mikrokontrolerem? czy za pomocą jednego mikrokontolera i jednego odbiornika można sterowować kilkoma urządzenia?

    Odpowiedz
  • Witam
    Układ zbudowany, z regulacją diody wszystko ok ale pod pinem ~6.
    Z kolei układ z taśmą ma problem.
    Tranzystor zmieniony na BD139, taśma złożona z 20 LED.
    Układ po podłączaniu do taśmy nie jest sterowny, taśma ciągle świeci bardzo słabym światłem.
    Jakieś pomysły?
    Pozdrawiam

    Odpowiedz
  • Witam.
    Mam problem z rozpoznawaniem kodu, czujnik odczytuje kod, a następnie wyświetla go na ekranie lcd 2×16. problem w tym że piloty (3) dziwnie reagują, raz gdy je wciskam to wyświetlają ten sam kod a inym razem z każdym naciśnięciem kod jest inny lub niepełny. Ktoś wie jak temu zaradzić?
    Dodam że czujnik mam podłączony identycznie jak na schemacie. 1-GND, 2-V, 3-Sygnał.

    Odpowiedz
  • pilot.ino: In function ‘void loop()’:
    pilot:20: error: ‘OxE0E006F9’ was not declared in this scope
    pilot:24: error: ‘OxE0E046B9’ was not declared in this scope
    pilot:28: error: ‘OxE0E08679’ was not declared in this scope
    pilot:32: error: ‘OxE0E0A659’ was not declared in this scope
    ‘OxE0E006F9’ was not declared in this scope

    pomóżcie !!

    Odpowiedz
  • Cześć jestem świeżakiem w temacie i chciałem prosić o pomoc bo nie mogę sobie poradzić z połączeniem/włączeniem/zaprogramowaniem pinów w arduino tak zeby pwm działał na pinie 3, a na piny A1 i A2 były podłączone włącz i wyłącz. Osobno jakośto działa ale jak chce to w całość spąc to jest problrm bo nawet kompilacji nie chce przejśc

    Odpowiedz
  • Witam, Oswietlenie w pokoju steroeane pilotem samo mi sie wlacza co pewien czas, a przed chwila wlaczylo sie i wylaczylo, ktos wie jaka moze byc tego przyczyna?

    Odpowiedz
  • W opcji z triakiem chyba jest błąd bo rezystor jest wstawiony do przewodu lampki a nie zasilania więc nawet po podaniu na optiotrack z ardurino niebedzie przepływac prąd na triak

    Odpowiedz
  • Odnosnie błedu D:\Program Files (x86)\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: ‚TKD2’ was not declared in this scope
    Wystarczy usunąć bibliotekę RobotIRremote i wszystko śmiga :)

    Odpowiedz
  • Witam po przetestowaniu podanego programu czyli przekaznik sterowany pilotem okazalo sie kilka zawartym w kodzie wad otóż po zaladowaniu programu do arduino diody na przekaznikach odrazu zapalaja sie czyli przekaznik jest załaczony i druga sprawa po wylaczeniu jednym przyciskiem jednego przekaznika i probie wylaczenia drugiego przekaznika drugim przyciskiem pilota nalezy kliknac dwa razy aby zadzialal i tyczy sie to do innych przekaznikow, po kilku probach zmieniania statusu na wysoki stan itd nic nie pomoglo dlatego zaczalem szukac innego rozwiazania bardziej praktycznego i trafilem na zmienne bolowskie. kod niestety jest troche dluzszy ale super sie sprawuje wszystko idealnie i plynnie pracuje kazdy przekaznik jest wlaczany i wylaczany jednym przypozadkowanym przyciskiem oto kod mam nadzieje ze komus sie przyda

    #include
    #include
    #define irPin 11
    IRrecv irrecv(irPin);
    decode_results results;
    int relay1 = 3;
    int relay2 = 2;
    int relay3 = 4;
    int relay4 = 5;
    bool sp1 = true;
    bool sp2 = true;
    bool sp3 = true;
    bool sp4 = true;

    void setup() {
    Serial.begin(9600);
    irrecv.enableIRIn();
    pinMode(relay1, OUTPUT);
    pinMode(relay2, OUTPUT);
    pinMode(relay3, OUTPUT);
    pinMode(relay4, OUTPUT);
    digitalWrite(relay1, HIGH);
    digitalWrite(relay2, HIGH);
    digitalWrite(relay3, HIGH);
    digitalWrite(relay4, HIGH);
    }

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

    switch (results.value) {
    case 0xFF827D:
    sp1=!sp1;
    digitalWrite(relay1, sp1);
    delay(150);
    break;
    case 0xFF42BD:
    sp2=!sp2;
    digitalWrite(relay2, sp2);
    delay(150);
    break;
    case 0xFFC23D:
    sp3=!sp3;
    digitalWrite(relay3, sp3);
    delay(150);
    break;
    case 0xFFB847:
    sp4=!sp4;
    digitalWrite(relay4, sp4);
    delay(150);
    break;
    }
    irrecv.resume();
    }
    }

    Choc co do poradnika bardzo przydatny fajnie ze ktos takie cos stworzyl :)

    Odpowiedz
  • Projekt świetny, pomimo że ma już 5 lat.
    Mam pytanie: jak przerobić kod aby on/off poza pilotem można było przełączać też microswich’em? (np. włączam miroswich’em a wyłączam pilotem lub odwrotnie)
    Z góry dziękuję za odpowiedź.

    Odpowiedz
  • Witam , czy w projekcie “Sterowanie lampką nocną za pomocą pilota” można zamienić Triak BT138 na BT139?? Proszę o odp. Z góry dzięki :)

    Odpowiedz
  • Witam, jaki tranzystor zastosować w przypadku taśmy LED 5m, 3,1W/m czyli z zapasem niech będzie 16W. Nie bardzo znam się na tranzystorach stąd to pytanie. Próbowałem poszukać w Internecie i czy np. IRF540N IRF 540N Mosfet 33A 100V byłby dobry? Czy jednak za duży i nie będzie dobrze działać?

    Odpowiedz
  • witam jakie sa zastosowane oporniki na schemacie tam gdzie przekaźnik załącza lampkę i tam gdzie jest bez przekaźnika. Zaczynam przygodę z arduino i chciałbym spróbować podłączyć. Kody juz mam odczytane i działa.

    Odpowiedz

Odpowiedz

anuluj

Masz uwagi?