Rolety okienne sterowane pilotem od TV

Rolety okienne sterowane pilotem od TV

W dzisiejszym wpisie chciałbym pokazać całkiem łatwy sposób na uproszczenie sobie pewnej nudnej codziennej czynności – odsłaniania oraz zasłaniania rolet okiennych. Opisany sposób dotyczyć będzie rolet wewnętrznych montowanych na okno, jednak zadziała również z roletami montowanymi na same szyby. Wykorzystamy tutaj kilka prostych elementów – serwo modelarskie, Arduino oraz zestaw naprawczy do rolet. Zaczynajmy :)

 

Potrzebne elementy

* moc serwa należy dobrać samodzielnie – odpowiednią do siły jaką trzeba przyłożyć aby przesunąć roletę ciągnąc za sznurek

UWAGA – istnieją różne rodzaje zestawów naprawczych, różnią się głównie tym czy kołowrotek jest przykręcany czy przyklejany (mniej ważne) oraz najważniejsze – grubością kulek na sznurku. Potrzebny jest zestaw z identycznym sznurkiem – tylko to gwarantuje, że kołowrotek będzie pasował. Kolejna ważna rzecz do odpowiednio długi sznurek tak aby przeszedł przez drugi kołowrotek (czyli bez niepotrzebnych odbojów).

W projekcie wykorzystałem Arduino dlatego, że łatwo się na nim prototypuje oraz odczytuje dane z Serial Monitora. Nie jest to jednak koniecznością, można stworzyć projekt bez jego wykorzystania, bezpośrednio na mikrokontrolerze.

W swoim pokoju posiadam dwie odrębne rolety okienne, dlatego musiałem zastosować dwa zestawy naprawcze do rolet oraz dwie diody LED (sygnalizują pracę serwa – przydatne do sprawdzenia poprawności działania krańcówek). Zastosowany mostek H posiada dwa niezależnie działające kanały, w projekcie zostaną one połączone tak, aby zawsze posiadały identyczny kierunek (zmostkowane piny input1 i input2 obu kanałów) – natomiast ich działanie (lub nie – czyli enable1 i enable2) będzie sterowane oddzielnie. Najważniejszym atutem tego akurat mostka H są piny “Current Sensing” – można na nich mierzyć aktualnie pobieraną moc, po odpowiednim dobraniu mocy krańcowej posłuży to do wyłączenia działania serwa po pełnym odsłonięciu/zasłonięciu rolety – alternatywnie można by realizować to za pomocą kontaktronów i magnesu jednak u mnie rodziło to problem przy uchylonym oknie (nie mam prowadnic).

Przygotowanie sprzętowe

W opisywanym projekcie najdłuższą część stanowi przygotowanie sprzętowe, trzeba przerobić serwo na zwykły silniczek, odpowiednio zamontować dodatkowy kołowrotek (serwo będzie ciągnąć za sznurek). Dość długo zeszło mi ze znalezieniem właściwego sposobu – próbowałem bezpośrednio w rolecie, były kombinacje z klejem, odkręcającym się serwem – dopiero na koniec zwyczajny dodatkowy kołowrotek na końcu sznurka.

Modyfikacja serwa

Tradycyjnie serwo posiada ograniczony kąt wychylenia, który sterowany jest z poziomu kodu i nie ma możliwości aby kręciło się dookoła – trzeba zatem wprowadzić kilka modyfikacji – rozkręcamy zatem serwo.

IMG_20140902_123523

Głównym obiektem naszego zainteresowania jest skrajnie prawe koło zębate – posiada ono bowiem ogranicznik który blokuje pełny obrót. Uprzedzę od razu, że warto zrobić sobie zdjęcie lub zapamiętać położenie zębatek – nie jest łatwo dobrze to złożyć z pamięci.

IMG_20140902_123645 2

Konieczne jest wypiłowanie wspomnianego odboju w całości – tak aby nic po nim nie pozostało, następnie możemy zabrać się za elektronikę od spodu.

IMG_20140902_123552 2

Cała ta płytka nie będzie nam do niczego potrzebna – odlutowujemy ją (trzyma ją tylko lutowanie silnika – dwa górne duże piny) – ja ją sobie zachowałem, może się kiedyś przyda? :) Po odlutowaniu przylutowujemy do silnika dwa przewody:

IMG_20140902_124743 2

Przerobiliśmy właśnie serwo na normalny silnik – jego kierunek ustalany jest poprzez zamianę + z – na przewodach zasilających. Modyfikacja serwa została zakończona.

Przygotowanie mechanizmu

Z zestawu naprawczego dla rolet potrzebne są następujące elementy (u mnie sznurek okazał się idealnym zastępcą posiadanego wcześniej – odpowiednia długość, brak odboju):

IMG_20140907_201416

Na samym początku zajmiemy się kołowrotkiem – przerobimy go tak, aby nadawał się do przyczepienia do serwa, odcinamy nadmiarową część wchodzącą normalnie w roletę

IMG_20140907_201545

Pozostanie kawałek tego samego materiału przyczepiony z pozostałą częścią – trzeba go na siłę oddzielić oraz usunąć sprężyny, aż zostanie “goły” mechanizm

IMG_20140907_202707

Na tym etapie obie części powinny być już swobodne i łatwo się rozdzielać, pozostaje obcięcie wystającej części (nieco niżej niż widoczny półksiężyc) i montaż serwa. Wykorzystałem orczyk w kształcie X – małym wiertłem przewierciłem w odpowiednich miejscach dziury w kołowrotku (nie uszkadzając go) oraz wykorzystując śrubki dołączone do serwa (pasowały idealnie) przykręciłem całość.

IMG_20140907_203640 IMG_20140907_203701

IMG_20140907_204655

Montaż mechanizmu

Jesteśmy na etapie gdzie mamy działające serwo (a właściwie teraz już zwykły silniczek) gotowe do kręcenia sznurkiem – pozostało całość zamontować do okna, z pewnymi oczywiście modyfikacjami części aby było to możliwe.

Składamy części do siebie i przymierzamy do sznurka – powinien być lekko naprężony jednak nie za mocno. Gdy znajdziemy właściwe miejsce, wówczas przyklejamy pierwszy komponent

IMG_0029

Zamontowanie w podobny sposób z drugiej strony wymaga wykonania małej modyfikacji – odcięcia w drugim elemencie zaznaczonej części

IMG_20140910_114721 2 IMG_20140910_115727

Oraz na koniec przewiercenia dziur oraz przykręcenia dwóch śrubek (należy uważać aby nie przewiercić w środku kabla zasilającego, ja się o niego otarłem tak niefortunnie, że wywoływał później zwarcie po pewnym czasie działania)

Zamontowany mechanizm

Udało nam się otrzymać właśnie zamontowany system – tak jak wspominałem wcześniej, u mnie są dwie rolety więc konieczne było ponowienie analogicznych czynności również dla drugiego okna. Na tym etapie można wykonać test podłączając serwo do 5V, aby odwrócić kierunek należy zamienić + z -.

IMG_0031

Przygotowanie elektroniczne

Nadeszła pora na podłączenie wszystkiego w jeden działający system – wydaje mi się, że najłatwiejszą część z całego projektu, choć oczywiście napisanie kodu oraz utworzenie odpowiednich połączeń wymagało wielu prób oraz cierpliwości. Eksperymentowałem z różnymi krańcówkami co skończyło się urwaniem sznurka – podczas kalibracji finalnie wybranego wyłączenia przeciążeniowego.

Ogólny zarys

Zarys działania części elektronicznej jest następujący: wprowadzimy dwa rodzaje sterowania, będzie to tradycyjny przycisk na płytce oraz druga metoda – sterowanie zdalne pilotem. Początkowo w projekcie znalazł się również adapter Internetowy jednak finalnie zrezygnowałem z tego pomysłu jako nieprzydatny. Zasada działania przycisku na płytce oraz na pilocie będzie identyczna: w dół -> stop -> w górę -> stop. Pierwsze naciśnięcie rozpocznie obniżanie, następne zatrzyma (jeśli ruch jest w trakcie, jeśli nie to od razu pkt. następny), kolejne podniesie w górę, następne zatrzyma. Aktualny stan będzie w pamięci, więc roleta opuszczona zawsze rozpocznie od ruchu w górę i odwrotnie. Jako wyłącznik krańcowy posłuży pomiar poboru mocy na mostku H – jest on wyposażony w piny “Current Sensing” pozwalające go odczytać. Konieczne będzie założenie na sznurku odboju na samym dole przy zębatce, na zasłoniętej rolecie. Istnieje oczywiście możliwość dodania dodatkowych przycisków sterujących, czy użycia do tego większej ilości przycisków z pilota, jednak zdecydowałem się na jeden przycisk sterujący tak samo obydwoma roletami – w praktyce sprawdza się to bardzo dobrze. Obie idą w górę/w dół lub się zatrzymują – za wyjątkiem krańcówek, które zatrzymują tylko konkretną roletę. Do zasymbolizowania stanu pracy posłużą dwie diody LED – ich świecenie się będzie oznaczać pracujące serwo (były problemy z rozpoznaniem ich bez tego).

Pobranie kodu pilota

Na samym początku 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.

Aby możliwe było użycie pilota, konieczne jest pobranie jego kodu. Realizujemy to poprzez następujące podłączenie:

Oraz wrzucamy następujący kod:

Uruchamiamy Serial Monitor i naciskamy wybrany przycisk na pilocie – w Serial Monitorze wyświetli się nam jego kod. W moim przypadku był to 0x5006164.

Uruchomienie właściwe

Nadeszła nareszcie pora na uruchomienie właściwe całego systemu. Podłączamy wszystko według schematu:

Schemat_bb2

Pewną trudność może stwarzać zastosowany mostek H który choć ma piny idące w dół oraz do przodu, to de fakto trafiłyby one w te same ścieżki, dlatego trzeba go zamontować tak jak ATmegę – na środku płytki.

Poniższy kod został stworzony dla wersji z dwiema roletami, aby wykorzystać go dla jednej rolety należy usunąć wzmianki dotyczące drugiego silnika.

Wyjaśnienia wymaga działanie krańcówek, linie 49 i 56 – w moim przypadku powstawał taki efekt, że przy jednej działającej rolecie (co się zdarzało jeśli obracały się nierównomiernie) potrzebne były zupełnie inne wartości krańcowe, wyłączenie jednej rolety spowodowało chwilowy wzrost mocy drugiej – i ta też się wyłączała. Dlatego warunek ma inne wartości dla działającego jednego silnika oraz dla dwóch. Wartości te można dobierać metodą prób i błędów, lub odkomentować linijkę 31 i 47 oraz monitorować Serial Monitor w poszukiwaniu odpowiedniej wartości. Właściwie dobrana jest wówczas, gdy roleta nie wyłącza się bez powodu w trakcie operacji, natomiast wyłącza się tuż po osiągnięciu położenia krańcowego.

Zastosowany mechanizm ze zmienną action ma na celu ograniczenie zagnieżdżonych ifów. W przypadku spełnienia warunku – odpowiedniego przycisku na pilocie lub na płytce action ustawiany jest na true. Następnie w ifie sprawdzany jest action – jeśli jest true, to jest cofany na false i wykonuje się odpowiednia czynność.

Podsumowanie

Na sam koniec nie pozostało nic innego jak przenieść projekt na ATMegę (prawdopodobnie 168P – na 8P się nie zmieści) aby uwolnić Arduino i mieć je do następnych projektów. Wymaga to przeniesienia podłączeń na odpowiednie nóżki ATMegi oraz zaprogramowania mikroprocesora.

Filmik prezentujący działanie zmontowanego projektu:

Ocena: 4.5/5 (głosów: 64)

Podobne posty

51 komentarzy do “Rolety okienne sterowane pilotem od TV

        • Chodzi o schemat podłączeń?

          Generalnie trzeba przypasować odpowiednie piny z Arduino do odpowiednich nóg ATmegi – są nawet takie fajne ściągawki naklejane na ATmegę które pokazują przypisania nóg do analogicznych pinów w Arduino,

          Jako przykład możesz zerknąć moje poprzednie projekty gdzie były schematy z Arduino oraz ATmegą

          Odpowiedz
  • Zmieści ci się to na Atmege8… musisz tylko zajrzeć w źródła biblioteki IRemote i wywalić wszystkie funkcje odpowiedzialne za dekodowanie/kodowanie innych systemów IR, pozostawiając tylko ten, w którym pracuje twój pilot, zostanie ci jeszcze miejsca w….bardzo dużo, a jak pominiesz bootloader to jeszcze więcej….

    Pytanie, jak radzi sobie to serwo z podnoszeniem rolety? Już przy opuszczaniu silniczek dziwnie pracował.
    Co to za model serwa?

    Odpowiedz
      • Poszukaj w sklepach/portalach aukcyjnych jakiś silniczków DC z przekładnią, zaletą będą wymiary i możliwość wpakowania tego wszystkiego w jakąś rurkę, żeby wyglądało estetycznie.

        Wydaje mi się, że udałoby się dobrać taki silniczek, który zmieściłby się w środku rolety (nie wiem jaka masz średnice wewnętrzna w zamontowanych roletach) i zamontować wszystko w sposób niewidoczny

        Odpowiedz
  • Można prościej – zamiast mostka typu H wystarczy wylutować z serwa potencjometr, a w jego miejsce wstawić dzielnik rezystancyjny z dwóch rezystorów np po 10k. Polecam potestować :-)

    Odpowiedz
    • Można też było usunąć ogranicznik a potencjometr zlepić na stałe w pozycji środkowej – później obroty i prędkość można by zmieniać zwykłym poleceniem z biblioteki Servo. Tylko gorzej wtedy chyba z pomiarem obciążenia

      Odpowiedz
  • Ja poszedłem na łatwiznę, zrobiłem rolety zdalnie sterowane z tego co miałem pod ręką samochodzik (odbiornik) z pilotem (nadajnik) + silnik od jakiejś wkrętarki 12V + zasilacz 5v 2A.

    Odpowiedz
  • Już chciałem pisać, że mostek H źle podłączony, ale zacząłem się wczytywać i widzę że tego tam wcale nie ma być. Koniecznie zamaż ten napis L293D na scalaku (chociażby w Paintcie), bo jeśli ktoś nie będzie się wczytywał w treść to podłączy tak jak jest schemacie i w najlepszym przypadku nie będzie mu działało…

    Za sam projekt dziękuję, też od dawna myślę o zautomatyzowaniu rolety w pokoju, ale nie wpadłem na to żeby silnik dać na dole, na dodatkowej “zębatce”. Cały czas chciałem psuć główny mechanizm rolety i tam u góry przykręcić serwo. A to rozwiązanie jest o wiele lepsze i mniej inwazyjne.

    Odpowiedz
    • Masz rację – mogłem to zamazać poza Fritzingiem i wstawić właściwy napis, nie wiem czemu na to nie wpadłem. Zamazałem właśnie i naniosłem poprawny napis.

      Ja też próbowałem ingerować w główny mechanizm (chociaż nie inwazyjnie), np. sprawiłem aby dodatkowa część dotychczas nie obrotowa obracała się razem z roletą i inne tego rodzaju próby ale nie udało mi się,

      Dodatkowa zębatka jest OK ale tylko jeśli sznurek jest odpowiednio długi i nie ma odboju po drodze, który przez nią nie przejdzie – tak też udało się u mnie,

      Można by również tą zębatkę przykleić tuż pod głównym uchwytem rolety (trzeba by przypiłować półksiężyc) ale to trochę więcej kabla i sam nie wiem czy jakaś zaleta – pewnie swobodny sznurek ale on i tak nie jest zbyt użyteczny (serwo stawia duży opór)

      Odpowiedz
  • marzę o czymś takim od dawna ale bardziej automat uwzględniający temperature w lecie (czyli zasłania rano jak są upały kiedy np. temp. na zewnątrz jest wyższa niż wewnątrz) + wieczorem jeżeli różnica w natężeniu światła wewnątrz / zewnątrz przekroczy jakiś próg.

    Odpowiedz
    • Żaden problem rozbudować – zostały wolne piny.

      Można podpiąć 2 sensory temperatury (jak we wpisie o Internetowym termometrze) i na ich bazie + np. fotorezystora wprowadzić trochę automatyki

      Odpowiedz
  • wszystko super, tylko mam problem z doborem odpowiedniego silnika. Jak obliczyć moment obrotowy? Jest jakiś wzór na to? Na logikę mogę doczepiać do sznureczka odważniki, uzyskam wtedy mase jaką należy przyłożyć aby rolera zaczęła się zwijać, ale jak tą masę przełożyć na Nm? :>
    Pozdrawiam

    Odpowiedz
  • Czyli na tym sterowniki silników l298n mogę tylko wykorzystać dwa serwa do tego projektu ? Co powinienem zrobić aby wykorzystać ten projekt ale na 3 pary rolet ?

    Odpowiedz
  • Przerabiałem kiedyś podobne serwo i mogę mam jedną radę, jeśli to ma działać na takiej zasadzie jak tu to odradzam serwa z plastikową przekładnią ponieważ szybko się nagrzewają i przekładnia się zaciera. Serwa z metalowymi przekładniami są troszeczkę droższe np TowerPro MG995 za 30zł można kupić.
    Jedno pytanie mam do autora, czy do sterownika silnika nie trzeba podłączyć jeszcze diodek prostowniczych ? Pozdr.

    Odpowiedz
  • Witam, super pomysł! Czy mógłbyś przerobić ten projekt, by można było sterować zwyczajnie przyciskiem i np. wysłać mi zmiany jakie by zaszły? dziękuję z góry, pozdrawiam.

    Odpowiedz
  • Mam pytanie, skąd wziąłeś L298N w obudowie z 16 pinami (rysunek z płytką stykową)? W dokumentacji L298N są tylko 15 i 20 pinowe

    Odpowiedz
  • Witam, wlasnie podlaczylem uklad i mam maly problem. Silniki zasilane z arduino chodzą dość niemrawo, chciałem dać zewnętrzne zasilanie. Podłączyłem zewnętrzne zasilanie + do pinu 4 na L298N a minus połączyłem z GND arduino. Po takim podłączeniu układ nie działa.
    Proszę o pomoc.

    Odpowiedz
  • U mnie układ działa, ale ledwo daje radę z podnoszeniem, idzie bardzo wolno, dużo wolniej niż do dołu. Serwo dałem mocniejsze, HS485HB. Roleta ma wymiary około 80cmx100cm. Z opuszczaniem nie ma problemów. Czy modyfikowałeś wbudowany hamulec rolety, żeby stawiał mniejszy opór? Ja podejrzewam, że hamulec mi psuje zabawę.

    Odpowiedz
  • U mnie wszystko dziala pod arduino leonardo ale gdy podlacze calosc pod arduino pro mini to jest problem z jednemy kanalem poniewaz serwo sie uruchamia i po 1s staje a drugie dziala bez problemu wszystko jest dobrze podlaczone tak jak w leonardo wie ktos moze co jest przyczyna tego?

    Odpowiedz
  • A ja mam pytanie w jaki sposob dzialaja ograniczniki pradu w tym l298 czyli te piny ktore ida do A0 i A1. Czy one aby nie powinny isc do masy przez rezystor o bardzo malej rezystancji do 10 ohm i dopiero wtedy odczytywana wartosc analogowa ? Gdy one nie sa podlaczone do masy silniki nie powinny sie krecic.

    Odpowiedz
  • Zaraz zaraz – coś tu jest nie tak. Nie wiem czy od 2014 roku nikt tego nie sprawdził czy może jednak użyty jest inny mostek niż l298n. Sprawdzając w dokumentacji jasno widać że ten mostek ma średni spadek około od 1,8 V do 4,9V! Czyli jeśli użyjemy wyjścia z Arduino 5V minus średnio 2V to na wyjściu mamy 3V a serwo pracuje najlepiej przy 5-6V. Z własnych testów widzę że podłączenie jednego serwa pod jeden kanał ledwo daje radę i łatwo jest zatrzymać silnik. Mostek po kilkunastu sekundach pracy ciągłej uzyskuje jeszcze około 0,6V czyli razem max daje 3,6V. To zdecydowanie za mało! Podłączenie drugiego serwa to już wogóle nic nie działa. Dlatego właśnie jest tu kilka komentarzy że komuś nie działa albo idzie bardzo wolno. Osobiście uważam że należy podłączyć zewnętrzne zasilanie tak aby zabezpieczyć się przed spadkiem czyli najlepiej jakieś 7,5V np przez przetwornicę step-up czy jakkolwiek. Ale może niech autor się wypowie.

    Odpowiedz
  • Podłączam tak jak na schemacie,wgrałem bibliotekę-wchodzę do serial monitor i gdy naciskam na pilocie jakikolwiek przycisk to nic się nie pojawia,żadnego kodu,zrobiłem wszystko po kolei według instrukcji a i tak mi nie działa help me:(

    Odpowiedz
  • Pilot ma rację – mostek L298n słabo działa zasilany z arduino, serwo ledwo kręci. Układ zasiliłem stabilizatorem napięcia L7806 i z niego zasiliłem arduino oraz 6V dałem na pin 4 L298n, wtedy serwo bez problemu kręci roletą i nie trzeba dawać mocniejszego moim zdaniem (jednak mam usunięty hamulec z rolety)
    Jak podałem zasilanie L298n z arduino układ ledwo ciągnie do góry:
    https://www.youtube.com/watch?v=vCedhRmlpJo

    Program przerobiłem tak że kontaktrony robią za krańcówki (poległem z tym nadprądowym wyłączaniem).
    Opóźnienie 500 ms pozwala wyjść ze strefy krańcówki.
    Ukłony dla autora programu. Podoba mi się opcja jednego guzika. Dorzuciłem kod każdego pilota jaki mam w domu :))
    pozdrawiam

    Odpowiedz
  • a i jeszcze trafiła mi się taka dziwna rzecz. Trzy razy lutowałem układ, bo za każdym razem jakieś problemy były, to się serwo zacinało, to przestawało reagować na pilota. (o dziwo na płytce stykowej chodziło). Na odłączonym serwo dioda reagowała poprawnie, a po podłączeniu serwo układ co kilka nawrotów głupiał, dosyć losowo. Wynalazłem że L298n potrzebuje diod zabezpieczających (myślałem że to nie tyczy się tak małego serwa), ale po zastąpieniu zwykłego l298n sterownikiem (z allegro) na l298n z diodami stabilizatorami i kondensatorami układ działa bez zarzutu

    Odpowiedz
  • Projekt sensowny, ale zamiast czasowego zatrzymywania rolet (co jest kłopotliwe jeżeli ktoś ręcznie ją przesunie), lepiej na krańcach w ramie okiennej zamontować kontaktrony (na górze i na dole) funkcjonujące jako czujniki bool’owskie oraz magnes z boku “obciążnika” rolety. Gdy magnes znajdzie się w zasięgu kontaktronu obwód zostanie zamknięty, a program zatrzyma silniki. Oczywiście można jeszcze skorygować to funkcją delay(), aby dokładnie dosunąć roletę. Do całości można zainstalować czujnik zmierzchowy na zewnątrz, aby rolety były zasuwane/otwierane automatycznie, w zależności od natężenia światła. Oczywiście z możliwością manualnego sterowania w dowolnym momencie, które przechodzi w tryb automatyczny przy zmianie stanu czujnika zmierzchowego.

    Odpowiedz

Odpowiedz

anuluj

Masz uwagi?