Napęd rolety współpracujący z Domoticzem

 

Oto i ona, na niezbyt wyraźnym, wykonanym trzęsącą się łapą nagraniu, jednak widać, mniej więcej, o co chodzi:

Niniejszy napęd powstał jako alternatywa dla typowego mechanizmu domowej rolety wewnętrznej, o takiej:

roleta_klasyczna__montaz_na_scianie_4

Mechanizm ten nie sprawdzał się u nas o tyle, że po pierwsze był bardzo awaryjny, po drugie i najważniejsze – wymagał ręcznej obsługi, codziennego podnoszenia i opuszczania. To było zbyt duże obciążenie dla domowników (zwłaszcza tych nieletnich), trzeba było coś z tym zrobić 🙂
Potrzebny był jakiś mechanizm, który roletą będzie potrafił poruszać i coś, co będzie tym sterować. Rola owego „czegoś” została w naturalny sposób powierzona Domoticzowi, który i tak steruje coraz większą liczbą urządzeń w domu, a przede wszystkim bezproblemowo się w nim przy pomocy kilku kliknięć myszą ustawia scenariusze typu „opuszczaj roletę codziennie o zachodzie słońca”, czy „podnoś roletę w dni robocze o 6:00, w weekendy zaś o 8:00”. Więcej o historii powstania tej konstrukcji oraz perypetiach, jakie miały miejsce w trakcie jej budowy można poczytać na blogu, poniżej zaś opis samej konstrukcji, zapraszam do lektury.

Podstawowe cechy projektu:

  • zasilanie 12V (ok. 50mA w trakcie czuwania, chwilowy maksymalny pobór: 0,7A),
  • współpraca z Domoticzem za pośrednictwem domowej sieci WIFI,
  • możliwość obsługi zdalnej za pośrednictwem Domoticza,
  • obsługa lokalna przyciskami na boku korpusu rolety,
  • możliwość zatrzymania rolety będącej w trakcie zwijania/rozwijania poprzez powtórne naciśnięcie przycisku,
  • konfiguracja sterownika rolety za pośrednictwem dowolnego smartfona/tabletu/laptopa wyposażonego w interfejs wifi,
  • roleta jest przez mechanizm zwijana aż do oporu – jest to jedyny sposób kontroli położenia rolety przez urządzenie,
  • roleta z pozycji zwiniętej jest rozwijana przez zadany czas (konfigurowalny),
  • roleta wykonuje automatycznie operację zwinięcia się (celem odnalezienia swego początku) po każdym załączeniu zasilania oraz w przypadku otrzymania dowolnej komendy (zwiń albo rozwiń) w sytuacji, gdy sama nie wie, w jakim jest stanie. Taka sytuacja ma miejsce np. po ręcznym przerwaniu ruchu rolety, bądź przy stwierdzeniu nadmiernego oporu ruchu w trakcie rozwijania rolety,
  • mechaniczne sprzęgło umożliwia w każdej chwili na odłączenie rolety od napędu i poruszanie nią ręcznie w przypadku braku prądu bądź totalnej awarii urządzenia.

Co będzie potrzebne: 

  1. oryginalna roleta. A tak naprawdę samo płótno z niej. Ewentualnie, dowolne inne płótno, ale wtedy należy je wyposażyć w obciążnik u dołu, dobrze, żeby płótno było odpowiednio sztywne, by się  ładnie układało na oknie,
  2. dostęp do drukarki 3D,
  3. odcinek rurki elektroinstalacyjnej PVC o średnicy 22mm i długości 1cm większej, niż szerokość płótna rolety
  4. silnik 12V z przekładnią redukcyjną do 30RPM, o taki: https://www.aliexpress.com/item/16MM-12V-30RPM-Powerful-High-Torque-DC-Gear-Box-Motor/32277705991.html
  5. ESP8266-12,
  6. moduł drivera DRV8801,
  7. podwójny przycisk chwilowy, np. taki: https://www.aliexpress.com/item/mini-rocker-switch-momentary-3pins-rocker-switch-ON-OFF-ON-spring-return/32716325471.html,
  8. typowa przedłużka do bitów „do wkrętarki”, najlepiej jak najtańsza,
  9. dwa łożyska 688Z
  10. kawałek blachy 0,5mm,
  11. pręt stalowy fi4mm, np. „pręt mocujący wieszaka do gipskartonów”, do kupienia w każdym kibelmarkecie,
  12. jakaś sprężynka kilka cm długa, średnicy takiej, by dała się nasunąć na w/w pręt
  13. drobnica, o której więcej napiszę niżej

Konstrukcja mechaniczna:

Za chwilę będę omawiał konstrukcję mechaniczną rolety, najpierw jednak słowo wyjaśnienia odnośnie publikowanych zdjęć: konstrukcja prototypu rolety przechodziła w trakcie budowy różne zmiany, prezentowane zdjęcia pochodzą z różnych faz budowy i nie zawsze przedstawiają stan docelowy, uważne oko może wychwycić pewne rozbieżności między tym, co widać, a tym co napisane. Jeśli będzie to miało znaczenie – zaznaczę ten fakt w tekście, na ogół jednak będzie chodziło o mało istotne drobiazgi, niemniej niech to będzie jasne, czemu na jednym zdjęciu jest tak, a na innym, kilka akapitów dalej – inaczej. 

Zasadniczy element rolety, to jej napęd. Jego budowę przedstawia poniższy rysunek, który zapewne warto sobie otworzyć jako osobną stronę:Przekrój mechaniki

i dla porównania to samo, ale w naturze: 
(prawie to samo – rysunek pochodzi jeszcze z wcześniejszej wersji silnika, inaczej był mocowany)

Od lewej zaczynając: mocowany do framugi okna wspornik konstrukcji, będący jednocześnie obudową dla złącza zasilania, przycisków oraz diody sygnalizacyjnej. Wspornik, wydrukowany na drukarce 3D, jest mocowany do framugi dwoma drewnowkrętami, przy czym jeden z nich wkręcamy bezproblemowo przez dużą dziurę po wyjętym ze swojego miejscu przycisku, drugi zaś – cienkim śrubokrętem przez dziurę po diodzie led, którą tym samym możemy wcisnąć na jej miejsce dopiero po zamontowaniu rolety na oknie. Wymaga to pewnej gimnastyki, ale niestety, zależało mi na wykonaniu tego elementu w jak najmniejszej formie. Tak to wygląda bliżej:

Napęd_rolety_V2_-_DesignSpark_Mechanical_2017-06-08_11-30-16

Fazowane otwory są na wkręty, pośrodku wnętrza widać gniazdo na metalową oś, na której jest mocowana reszta konstrukcji. Ośka jest wykonana z odcinka mosiężnej rurki fi8mm, jest ona w tym korpusie osadzona na wcisk i dodatkowo zablokowana wkrętem „robaczkiem” M3. Robaczek wkręcamy w nagwintowany otwór w boku rurki, przez dodatkowy otwór montażowy mieszczący się na spodzie korpusu, widać go na powyższym rysunku. U dołu obudowy (na rysunku dół jest po prawej) znajduje się otwór, w który należy wkleić gniazdo zasilania – wykorzystałem tu dwupinowe złącze do PCB typu WF-02S. Można tu pomyśleć nad czymś bardziej estetycznym, ale z uwagi na bardzo małą ilość miejsca dostępnego wewnątrz obudowy bardzo ciężko byłoby tu użyć czegoś, w stylu typowego „power jacka”, z gniazdem schowanym w obudowie. A jak pisałem, zależało mi na tym, by była jak najmniejsza.

Z drugiej strony korpusu na ośkę jest nasunięte łożysko, jest to typowe 688Z do kupienia za złotówkę w każdym sklepie z łożyskami 🙂  Łożysko ma na sobie pierścień (kolejny element z drukarki 3D) dopasowujący je do rurki PVC będącej zasadniczym wałkiem naszej rolety. Oryginalna roleta była nawijana na metalowy wałek, mocowany na końcach na pożal się Boże plastikowych łożyskach ślizgowych, jedno z nich z możliwością napędzania koralikowym łańcuszkiem. Wszystko to należy zdemontować i wywalić (albo lepiej schować, na wypadek poważniejszej awarii naszego wynalazku, może się przydać 😉 ). Płótno rolety do wałka jest przyklejone klejem zachowującym lepkość, bezproblemowo daje się je odkleić i jeśli będzie taka potrzeba, przykleić z powrotem. Oryginalny metalowy wałek nie nadaje się do naszych celów (bo za wąski, bo metalowy, co wyklucza działanie interfejsu wifi w nim schowanego). W moim projekcie zamiast tego wałka jest użyta typowa rurka elektroinstalacyjna PVC 22mm. Jest ona dość wiotka, dlatego przy szerokim oknie warto pomyśleć nad jej usztywnieniem, przez wprowadzenie do jej wnętrza innej rurki, przetoczonego na odpowiednią średnicę i przewierconego osiowo drewnianego wałka…. no co tam komu się uda wykombinować. U mnie funkcjonuje taka rurka długości 80cm bez żadnych usztywnień i jeszcze jest ok, ale przy dłuższej już warto by było.  

Kolejny rysunek ze szczegółami mocowania rurki (na rysunku jest wrysowana połówka rurki, by nie zaciemniać):
Napęd_rolety_V2_-_DesignSpark_Mechanical_2017-06-08_11-57-46
Na wystający wewnątrz rurki koniec mosiężnej ośki jest nasunięty korpus wewnętrzny utrzymujący wszystkie elementy napędu w kupie. Ten element nie może być wydrukowany z najpopularniejszego tworzywa do drukowania, czyli z PLA. Z uwagi na fakt, że elektronika się w czasie pracy rozgrzewa, musi to być coś odpornego na temperaturę rzędu kilkudziesięciu stopni, np. ABS. Dodatkowo model, który załączam ma dodany wąski kanał przebiegający wzdłuż całej kształtki, w kanał ten można wsunąć metalowy płaskownik (użyłem tu paska blachy 5×0,8mm po prostu) jako dodatkowe usztywnienie „na wszelki wypadek”. Na korpusie mieści się płytka z elektroniką oraz mocowanie silnika:

Mocowanie silnika jest zrobione z blachy 0,5mm, jest to po prostu zwinięta na jakimś kołku tulejka o średnicy takiej, by do wnętrza dało się wsunąć silnik. Jeden koniec tulei ma „wąsy” do mocowania silnika (dwa wkręty M2 od czoła silnika, niewidoczne na zdjęciu), drugi zaś jest nacięty i po nasunięciu na plastikowy korpus zawinięty dookoła jego brzegów. Nie ma sensu tu załączać rysunku z wymiarami, wymiary wynikają z pełnionej funkcji, a ta jest chyba oczywista. 

Za silnikiem mamy przeniesienie napędu. Jest ono dość złożone z uwagi na konieczność (czy raczej chęć) wpakowania tutaj dwóch sprzęgieł: ciernego, uniemożliwiającego uszkodzenie przekładni w przypadku zbyt dużego oporu ruchu oraz normalnego mechanicznego sprzęgła umożliwiającego rozłączenie napędu i poruszanie roletą ręcznie. Tak to wygląda w przekroju:

Napęd_rolety_V2_-_DesignSpark_Mechanical_2017-05-29_10-41-35

W rurkę PVC (na rysunku jest tylko jej fragment, szary) jest wciśnięta plastikowa kształtka przenosząca napęd, jest to ten duży fioletowy element. Jego kształt i średnica są tak dobrane, że wewnątrz rurki on siedzi wpasowany tam na wcisk, z pewnym oporem. Na tyle dużym, by tenże element obracany przez silnik obracał całą rurką i bez problemu nawijał roletę, jednocześnie na tyle małym, by w razie zablokowania rolety i nie zadziałania z jakichś przyczyn w porę zabezpieczenia elektronicznego przed przeciążeniem mógł się obracać w rurce bez ryzyka uszkodzenia przekładni. Trzeba to, niestety, dobrać doświadczalnie, regulacja oporu odbywa się tylko w jedną stronę metodą szlifowania papierem ściernym karbów na elemencie , więc nie można tu przesadzić, ja mogę napisać tylko tyle, że prawidłowo dopasowany element powinien się dać przesuwać w rurce od niezbyt mocnego nacisku palcem.
Wewnątrz tego elementu znajduje się sprzęgło rozłączające napęd. Tak oto wyglądają jego elementy składowe, zdjęcie jest jeszcze z bardzo starej wersji napędu, ale ponieważ wyraźnie na nim widać całe sprzęgło, pokażę je tak, jak jest, wybaczcie, ale nie chce mi się po raz kulejny demontować tej rolety tylko celem cyknięcia zdjęcia :

Zasadniczy element sprzęgła, to zwykła „przedłużka do bitów”, o taka:

Przedłużka

Pisałem na początku, że powinna to być najtańsza możliwa do kupienia przedłużka, najlepiej taka jednorazówka z kosza „wszystko po 5 zł”. I wcale nie chodzi o to, że lepszej szkoda. Przede wszystkim istotne jest to, że dobra przedłużka będzie wykonana z dobrej gatunkowo stali, a sześciokątny trzpień będzie dodatkowo utwardzany, co nam bardzo poważnie utrudni po pierwsze rozcięcie tego na dwa osobne elementy, po drugie – wykonanie w tych elementach kilku otworów. Gówniana przedłużka jest tu całkowicie wystarczająca jeśli chodzi o jej jakość, a jej obróbka będzie znacznie prostsza. 
Tak więc, mając taką przedłużkę musimy ją
– rozciąć(poprzez odpiłowanie wystającego sześciokątnego trzpienia),
– w trzpieniu wywiercić osiowy otwór o głębokości i średnicy takiej, by się to dało nasunąć na wałek silnika. Otwór ten powinien być w miarę dokładnie osiowo, więc trzeba tu odrobinę się postarać. Albo po prostu wykonać to na tokarce do metalu, jeśli ktoś ma dostęp 🙂 Ta opcja jest o tyle korzystna, że można wtedy łatwo wykonać dodatkową fazę na początku trzpienia, dzięki której jego zewnętrzne krawędzie nie będą nam potem zawadzać o łby śrub mocujących. Fazę taką widać na zdjęciu elementów sprzęgła wyżej, bez tokarki trzeba to będzie zrobić pilnikiem.
– z boku trzpienia wiercimy poprzecznie otwór fi2,5, po czym gwintujemy go M3, w tenże otwór wkręcamy „robaczka”, który nam zablokuje całą konstrukcję na ośce silnika. A by się potem nie luzował od wibracji, warto go (gdy się już będzie w miarę pewnym, że nie trzeba go będzie za chwilę odkręcać), wkręcić na kroplę kleju.
– bierzemy teraz odciętą, „zewnętrzną” część przedłużki i mniej więcej w połowie długości przewiercamy fi2,5 na wylot, otwory (to jest puste w środku, więc otwory będą dwa: po jednej i po drugiej stronie) gwintujemy M3
– od strony obciętego sześciokątnego trzpienia wiercimy osiowo otwór fi3,3, co najmniej na centymetr głęboki, prawdopodobnie przewiercimy się przy tym do pustki wewnątrz przedłużki – nie szkodzi. Otwór gwintujemy gwintem M4 
– bierzemy pręt fi4 (pręt wieszaka do gipskartonów jest idealny, do kupienia za grosze) o długości takiej, jak szerokość naszej rolety, na jego końcu nacinamy narzynką gwint M4 na taką długość, by dało się go maksymalnie głęboko wkręcić w otwór przedłużki. Wkręcamy go tam solidnie dokręcając i wspomagając się klejem. Jeśli użyliśmy pręta od wieszania gipskartonów, to na jego drugim końcu ma on ucho – należy je obciąć,
– w warsztatowych szparagałach szukamy pudełka/słoika/szufladki z napisem „Śruby M3” (jeśli nie znaleźliśmy, to porzucamy projekt i zaczynamy od porządniejszego zorganizowania sobie warsztatu 😉 ), wśród posiadanych śrub M3 szukamy dwóch takich, które nie są gwintowane na całej długości, tylko mają również część gładką, bez gwintu. Obie te śruby obcinamy tak, by nam wyszły dwa krótkie wałeczki mające około 5mm gwintu i 2,5-3mm części gładkiej. Tak spreparowane wałeczki wkręcamy (klej „na wszelki wypadek” wskazany) we wcześniej wykonane otwory. Jeśli przedłużka tak, jak u mnie jest pusta wewnątrz, to zapewne końce tych wałeczków oprą się o wcześniej wkręcony pręt. I bardzo dobrze, że się oprą, w ten sposób go jeszcze lepiej zablokują.
– na pręt nasuwamy sprężynę. Kilka cm długą, takiej średnicy, żeby luźno weszła. Prócz sprężyny nasunąłem jeszcze plastikową rurkę widoczną na zdjęciu by ograniczyć maksymalny możliwy stopień ściśnięcia sprężyny, ale nie jest to niezbędny element.
– cały zmontowany zespół przedłużki z bolcami, prętem i sprężyną wsuwamy do wnętrza kształtki przenoszącej napęd.
Całość w stanie mniej więcej zmontowanym (plastik przenoszący napęd jest odsunięty na bok, żeby było widać środek, normalnie by to sprzęgło zakrywał) jest pokazana na poniższej fotografii:

Jak to działa? Prosto: w normalnym stanie silnik kręci sześciokątnym trzpieniem, ten tkwi w gnieździe przedłużki, więc tym samym nią obraca. Bolce wystające po bokach przedłużki są wsunięte w wewnętrzne rowki plastikowej kształtki przenoszącej napęd, więc obracają tąże kształtką. A ta – obraca rurką. Gdy chcemy odłączyć napęd i poruszać roletą ręcznie – trzeba po prostu pociągnąć za wystający z boku rolety pręt (zakończony gustowną gałką). Ciągnąc zań i pokonując tym samym opór sprężyny ściągniemy przedłużkę z sześciokąta na wałku silnika, ona się może swobodnie przesuwać wzdłuż rowków kształtki przenoszącej napęd, odpychana jedynie sprężyną. Gdy pokonamy jej opór i ściągniemy przedłużkę z trzpienia, silnik będzie odłączony, a my możemy obracać roletą ręcznie, poruszając nią bezpośrednio lub kręcąc gałką.

Jeszcze jedna uwaga: na zdjęciach przewija się poniewierający się luzem pierścień segera – jest to element pewnej modyfikacji, którą dodałem już w wyniku pierwszych doświadczeń z roletą: na pręcie jest wykonane podcięcie (piłką do metalu), na które zakładam ten pierścionek, blokuje on od zewnątrz możliwość zsunięcia się plastikowego elementu przenoszącego napęd w tył, czy to w wyniku niedokładnego montażu, czy zbyt mocnego ciągnięcia potem za gałkę. Pierścień jest w takiej pozycji, że przy zesprzęglonym sprzęgle plastik jest na swoim miejscu. Tak to wygląda od tyłu:

Prawa strona rolety chyba nie wymaga tłumaczeń: łożysko z talerzykiem, takie samo jak po lewej stronie, całość mocowana na trochę mniejszym, bo nic nie kryjącym wewnątrz wsporniku, przez który przechodzi jedynie pręt do sterowania sprzęgłem:

Napęd_rolety_V2_-_DesignSpark_Mechanical_2017-06-08_14-30-36

Pręt trzeba oczywiście skrócić, koniec nagwintować, nakręcić nań gałkę, po czym również ją zablokować robaczkiem wkręconym w otwór z boku (w gałce od spodu jest gniazdo do wprowadzenia tam nakrętki M3, tu jest potrzebne solidne dociśnięcie, więc robaczek wkręcony w plastik by nie wystarczył). By się to nie rozchwiało i nie zaczęło mimo wszystko wykręcać, końcówkę pręta po nagwintowaniu warto pilnikiem spiłować  do postaci w przekroju podobnej do litery „D”. Wspornik po tej stronie składa się z dwóch nakładanych na siebie elementów, w spodnim są schowane łby wkrętów mocujących całość do framugi okna.

Ostatnia kwestia to sprawa naklejenia płótna starej rolety na wałek: tu proponuję użyć po prostu zwykłej taśmy dwustronnie samoprzylepnej. Wystarczy. 
Na koniec opisu mechanizmu zdjęcia napędu już zmontowanego i zainstalowanego, w wersji jeszcze sprzed poprawek (węższe talerzyki po bokach wałka, trochę inna gałka, widoczne dystanse, którymi odsunąłem od okna pierwszą wersję wsporników, które zaprojektowane zostały zbyt niskie). Jak zrobię zdjęcia wersji poprawionej, ten fragment opisu pozwolę sobie po cichu podmienić, zwłaszcza że na tych zdjęciach paskudnie widać jakieś ślady jeszcze z czasów malowania, normalnie niemal niewidoczne, a w świetle flesza uwidocznione że aż wstyd! 🙂 )
Strona lewa:

I strona prawa, dobitnie zdradzająca, że płótno rolety jest „z odzysku”, ze starej rolety:

 

Elektronika

Koń, jaki jest, każdy widzi, wystarczy odrobina orientacji, gdzie koń ma ogon, a gdzie kopyta i wszystko jasne 🙂

Sercem urządzenia jest kontroler ESP8266-12 stanowiący cudowny wręcz w swej uniwersalności moduł całkiem niezłego komputera wyposażonego w niezbędne peryferia, szynę GPIO oraz interfejs WIFI. Powiedzmy żołądkiem zaś –  gotowy moduł drivera silnika DC, produkowany do zastosowań w hobbystycznej robotyce przez firmę Pololu i niestety, dość trudny do kupienia (mają w TME i w Botlandzie, gdyby ktoś pytał). To maleństwo, sterowane prostymi poziomami logicznymi może z silnikiem DC zrobić właściwie wszystko: obroty prawe, lewe, sterowanie obrotami (PWMem), pomiar prądu pobieranego przez silnik (zwracany w formie potencjału analogowego), hamowanie elektrodynamiczne… a przy tym jest maleńkie i proste w użyciu.
Zasilanie 12V (u mnie „pożyczone” z domowej instalacji alarmowej, po dobraniu się do przechodzącego i tak przy tym oknie przewodu alarmowego), zasila bezpośrednio driver silnika DRV8801 oraz po konwersji do 3,3V procesor. Użyty tu stabilizator trochę się grzeje, co wraz z temperaturą wytwarzaną przez driver w czasie pracy silnika sprawiło mi pewien problem z prototypem, w przedstawianej tu wersji jest już wyeliminowane – stabilizator ma większy radiator naniesiony na PCB, korpus zaś, jak wspominałem przy opisie mechaniki, musi być wydrukowany z ABS, broń Boże nie z PLA.
Przewody do płytki można w zasadzie podlutować na sztywno, dla własnej wygody użyłem tu jednak złącza BLS (na zdjęciach widać jednorzędowe, publikowany projekt ma je przerobione na wygodniejsze dwurzędowe, a za to krótsze).

Płytka PCB jest dwustronna i obsadzona elementami po obu swoich stronach

W opisie załączam płytkę z naniesionymi już wszelakimi poprawkami, u mnie na zdjęciach jest widoczna cały czas wersja prototypowa, stąd widoczne na zdjęciach druciarstwo, proszę się nim nie sugerować 🙂 Z tego też powodu w publikowanym projekcie jest dodany w zasilaniu dławik 100uH, nieobecny u mnie w prototypie. Niestety, w trakcie testów okazało się, że pracujący silnik na tyle mocno zakłóca moduł wifi, że dochodzi wręcz do zerwania połączenia. Jest to wyeliminowane programowo (po prostu po takim chwilowym zerwaniu połączenia próby ponownego wysłania danych są ponawiane aż do skutku), niemniej w publikowanym projekcie dorzuciłem jeszcze ten dławik. Ideałem byłoby jeszcze rozdzielenie mas na analogową i cyfrową, ale tutaj już było to zbyt trudne. Tak jak jest działa dobrze.

Pewnym problemem jest montaż PCB, zwłaszcza jeśli płytka będzie wykonana domowymi metodami, bez metalizowanych przelotek i bez porządnej soldermaski – w takim wypadku znajdujące się pod modułem DRV połączenia między warstwami należy wykonać możliwie cienkim drucikiem, zaginając go poza otworami na płasko i jak najcieniej lutując. Dopiero na tak przygotowaną płytkę można położyć moduł DRV i przylutować jego kontakty do odpowiednich pól naszej płytki (wprowadzając lutowie pod płytkę – no takie prawie-jak-BGA 😉 ). Trzeba jednak zwrócić tu uwagę, że przy takim montażu płytka DRV leży wprost na ścieżkach naszej płytki, a jedyną izolacją między nimi jest soldermaska modułu DRV. Która, zwłaszcza w miejscu, w którym się styka z wykonanymi z drutu mostkami może się przetrzeć i zewrzeć. Dlatego warto przed przylutowaniem podkleić DRV od spodu kawałkiem izolacji – odsunie go to od płytki i da dodatkową izolację, a w lutowaniu nie przeszkadza.
Moduł ESP lutujemy „na nogach”, ale te musimy sobie najpierw zorganizować. W swoją płytkę powlutowywałem najpierw po prostu centymetrowe ścinki jakichś drucików (obcięte końcówki oporników wreszcie się do czegoś przydały) i po przylutowaniu ich po obu stronach PCB, nałożyłem na nie moduł ESP, po czym przylutowałem druciki doń od góry. Należy to zrobić tak, by moduł nie odstawał zbytnio od płytki (dlatego wykluczone są wszelakie złącza, czy goldpiny), bo inaczej będzie tarł krawędziami o rurkę.
Reszta elementów od spodu, ale to już sama drobnica: kondensatory filtrujące zasilanie (w tym dwa tantalowe – uwaga przy montażu, w tantalach SMD pasek oznacza wyprowadzenie plusowe, odwrotnie, niż w elektrolitach, warto o tym pamiętać, bo odwrotnie podłączone tantale wyjątkowo wrednie eksplodują, kolega tak kiedyś mało oka nie stracił), stabilizator, opornik ograniczający prąd leda (niebieski led wymaga bardzo niewielkiego prądu do pracy, stąd wysoka wartość opornika: 2,2k, po prostu nie chciałem, by ten led „walił po oczach”)

Ostatnią sprawą jest zaprogramowanie ESP. Jest do tego potrzebny jakiś konwerter USB/RS232, którego linie TX i RX łączymy prowizorycznie z odpowiednimi pinami na ESP, GND konwertera do GND modułu i UWAGA: nie podłączamy zasilania z konwertera! Moduł DRV stanowi dla konwertera zbyt duże obciążenie, trzeba by rozcinać ścieżki, by go tymczasowo odłączyć. Znacznie prościej jest zorganizować jakiś zasilacz 5-12V, normalnie zasilić z niego cały układ, a z konwertera podać tylko sygnały. Soft wgrać można czymkolwiek, choćby Nodemcu-flasher-masterem, należy jednak pamiętać, że w ESP by wgrać coś do flasha należy go uruchomić z podanym stanem niskim na GPIO0. Port ten tutaj jest odpowiedzialny za obsługę przycisku UP, więc i nic więcej nie potrzeba: włączając zasilanie wystarczy trzymać wciśnięty przycisk „Up” (i proszę się nie zdziwić, w tym stanie będzie się obracał silnik) i już 🙂

Ostatnia próba po wgraniu softu a przed zmontowaniem sprowadza się właściwie tylko do sprawdzenia, czy dobrze został podłączony silnik. Zaprogramowany układ po włączeniu wykonuje krótki, trwający około sekundy ruch silnikiem. Przy prawidłowo podłączonym silniku ruch ten powinien ROZWIJAĆ roletę. Jeśli ją zwija – należy zamienić miejscami wyprowadzenia silnika. Jeśli konwerter RS232 jest jeszcze cały czas podpięty, to uruchamiając jakiś terminal (prędkość: 115200) można sobie pooglądać, jak program pracuje, bo on tam całkiem sporo rzeczy wysyła. Ale to jako ciekawostkę tylko podaję. Kodu źródłowego softu nie udostępnię, więc nie ma sensu omawiać jego budowy. Napisany w C++, ze sporą pomocą kolegi Trash_bin, za sprawą którego zwłaszcza moja rola w pisaniu procedur komunikacji z Domoticzem sprowadzała się właściwie do metody Copy’ego-Paste’a i zwrotnego raportowania, czy jest ok, a jak nie, to jakie są błędy i któremu tym samym za pomoc jeszcze raz dziękuję 🙂

Instrukcja obsługi

Przed uruchomieniem urządzenia warto przygotować sobie w Domoticzu przycisk do jego obsługi. Robimy więc (o ile do tej pory nie mamy dla innych celów) w „Hardware” urządzenie typu Dummy, z niego kreujemy wirtual switch, możemy go od razu nazwać „Roleta”. Następnie w „Devices” odszukujemy nasz przycisk i notujemy jego numer Idx, będzie za chwile potrzebny. Ostatnie, co tu możemy zrobić, to przejść do zakładki „switches” i w nowo dodanym switchu „Roleta” zmienić jego typ na „Blinds”. Nie jest to niezbędne, ale nasz Domoticz będzie ciut przejrzystszy, jeśli celem rozwinięcia rolety będziemy klikać w ikonkę przedstawiającą okno z żaluzją, a nie w domyślną żarówkę 🙂

Teraz można przejść do konfiguracji samej rolety. Urządzenie ma współpracować z siecią wifi i za jej pośrednictwem z domoticzem, na dzieńdobry więc potrzebuje do poprawnej pracy całe mnóstwo informacji: SSID sieci, hasło do niej, adres serwera domoticza, wspomniany numer Idx przycisku, z którym ma się porozumiewać i jeszcze kilka parametrów, o których za chwilę. A jako jedyny interfejs użytkownika roleta ma jedną lampkę i dwa przyciski. Mało trochę, by podawać tyle informacji, prawda? 🙂 Problem ten rozwiązałem przy pomocy metody może nie do końca swego własnego pomysłu, bo wykorzystałem do tego istniejącą bibliotekę znalezioną na githubie, niemniej jestem z tego kawałka kodu chyba najbardziej dumny 🙂

A więc, za pierwszym włączeniem urządzenia i potem za każdym razem, gdy chcemy coś zmienić w jego konfiguracji:
– wyłączamy zasilanie,
– wciskamy przycisk „Down”,
– trzymając przycisk wciśnięty włączamy zasilanie
Upewniamy się, czy dioda LED zaczęła szybko migać (ok. 5Hz). Jeśli tak, to wyciągamy z kieszeni smartfona albo bierzemy jakikolwiek komputer z interfejsem wifi i przeglądarką internetową i szukamy, czy w dostępnych sieciach wifi pojawiła się sieć o tajemniczej i zaskakującej nazwie ‚Roleta” (jeśli nie, może być pomocne zablokowanie i odblokowanie wifi w smartfonie, bo jeśli dioda miga jak opisałem, to taka sieć powinna być dostępna). Znalazłszy sieć „Roleta” logujemy się do niej (sieć typu „open”, żadne hasło niepotrzebne), po czym w przeglądarce internetowej wpisujemy adres: 192.168.4.1. Po chwili naszym oczom powinna się ukazać strona startowa konfiguratora, tamże wśród czterech dostępnych opcji należy wybrać „Configure WiFi”. pozostałe opcje, to konfiguracja „offline” bez dostępnej sieci, informacje (dotyczące tylko procesora, nic ciekawego) i możliwość programowego zresetowania urządzenia. Po kliknięciu w „Configure” w każdym razie otrzymamy stronę jak po prawo:

Screenshot_20170526-214537

Od góry widać aktualnie dostępne sieci WiFi (u mnie w domu tylko dwie, obie moje własne – mieszkam na odludziu 🙂 ). A poniżej mamy to, co dla nas istotne:
– SSID: tu podajemy sieć, do której się chcemy połączyć. Nie trzeba wpisywać, wystarczy kliknąć/pacnąć w odpowiednią sieć powyżej,
– password: oczywiście hasło do wybranej sieci,
– IP Adres Domoticza: adres serwera Domoticza,
– ID przycisku: spisany wcześniej numer Idx (uwaga: w zakładce ‚devices” w Domoticzu są również numery ID, to nie o nie chodzi!)
– prog przeciążenia: to maksymalny prąd silnika w jednostkach umownych, po przekroczeniu tego prądu układ stwierdzi przeciążenie silnika i zareaguje stosownie do sytuacji. maksymalny prąd, jaki ten silnik jest w stanie pobrać odpowiada ustawieniu tutaj wartości 470, ale z uwagi na trwałość przekładni raczej odradzałbym nawet próbować z takimi wartościami. U mnie całość poprawnie pracuje w oknie przy wartości 100, a do testów na biurku podawałem wartość 80. 
– czas rozwijania: podany w milisekundach czas, na jaki zostanie włączony silnik celem rozwinięcia rolety. Należy go dobrać doświadczalnie, u mnie, przy typowych drzwiach balkonowych jest to 33 sekundy (znaczy wpisuję 33000).

I tyle. wpisawszy to wszystko klikamy SAVE, urządzenie skończy udawać, że jest access pointem wifi, częściowo się zrestartuje, podłączy się do zaprogramowanej sieci rozpocznie pracę. A my możemy się cieszyć działającą roletą. Wszystkie te ustawienia są zapisywane w pamięci nieulotnej, więc po wyłączeniu rolety nie trzeba jej konfigurować od nowa. Niemniej każde wejście w panel konfiguratora oznacza konieczność podania wszystkich tych parametrów od nowa. Jeśli się to robi z tego samego urządzenia (a przeglądarka na nim nie ma wyłączonego autouzupełniania), poprzednio wpisane wartości podpowie sama przeglądarka, niemniej po dojściu z konfiguracją do ładu warto sobie potrzebne wartości gdzieś zanotować na wszelki wypadek.

Włączona do zasilania roleta powinna wykonać najpierw krótki ruch w kierunku rozwinięcia 9wynikający z jakichś stanów początkowych na portach uruchamiającego się procesora), po czym pierwszą oznaką jej prawidłowego, programowego już działania będzie próba zwinięcia rolety celem odnalezienia jej początku. Jeśli wszystko jest ok, roleta po prostu się zwinie i zatrzyma. Nie jest to jednak koniec prac konfiguracyjnych, bowiem teraz należy dokończyć konfigurację Domoticza. W tym celu należy sprawdzić, jaki adres IP otrzymuje w naszej sieci roleta. Jeśli jest uruchamiana na stole i cały czas mamy podłączony RS232, to taką informację znajdziemy wśród wyświetlanych na konsoli, wygodniej chyba jednak będzie to znaleźć w naszym domowym routerze, tamże też warto ustawić na sztywno jakiś przydział adresu dla tego urządzenia. Następnie przechodzimy do panelu Domoticza, zakładka „switches”, klikamy w edit na niedawno dodanym przycisku „roleta” i tam dopisujemy:

  • „on action”: http://[IP adres rolety]/blind?action=DOWN
  • „off action”: http://[IP adres rolety]/blind?action=UP

oczywiście zamiast [IP adres rolety] należy wstawić tenże adres 🙂

Domoticz_-_Google_Chrome_2017-06-09_10-09-38

Na koniec można na tym przycisku wejść w opcję „Timers” i tam już wedle własnego uznania ustawić to, co właściwie jest kwintesencją sensu wykonania tego urządzenia. Poniżej kopia moich ustawień, chyba nie wymaga większych objaśnień 🙂 Roleta ma być opuszczana (stan „on” to właśnie opuszczona, „włączona” roleta) codziennie o zachodzie słońca, podnoszona zaś jest w dni robocze o 6:00, a w weekendy o 8:00.

Domoticz_-_Google_Chrome_2017-06-09_10-14-29

Kilka słów na temat typowego zachowania rolety: po włączeniu zasilania, jak już wspominałem, najpierw wykona krótki, sekundowy ruch rozwijania rolety, a potem rozpocznie jej zwijanie, które będzie trwało aż do wyczucia oporu (wtedy napęd się wyłączy, a automatyka stwierdzi, że roleta jest zwinięta prawidłowo), lub do upłynięcia maksymalnego czasu zwijania (ustawiony na sztywno w programie, 45 sekund, co odpowiadałoby zwijaniu około 2,5 metra płótna, jeśli to zbyt mała wartość dla kogoś, proszę pisać, podrzucę soft z inną) – wtedy roleta się zatrzyma i będzie uważała, że jest w stanie nieustalonym.
Poprawnie zwinięta roleta, gdy otrzyma polecenie rozwinięcia się, będzie się rozwijać aż do upłynięcia zadanego w konfiguracji czasu – to będzie scenariusz poprawny, roleta będzie w stanie rozwiniętym; bądź do wyczucia nadmiernego oporu ruchu – wtedy się zatrzyma, jej stan zaś będzie nieustalony. Za każdym razem, gdy roleta znajdzie się w stanie nieustalonym, realizacja dowolnego polecenia będzie poprzedzona próbą zwinięcia się i tylko po poprawnym jej zwinięciu, zadane polecenie zostanie zrealizowane.
Powtórne wydanie polecenia w trakcie ruchu rolety spowoduje jej zatrzymanie. W ten sposób można sobie ręcznie ustawić roletę w dowolnym położeniu, jeśli się np. chce mieć okno zasłonięte do połowy wystarczy zatrzymać roletę w ruchu w odpowiednim miejscu, jednak dla sterownika rolety taki stan jest również stanem nieustalonym, dlatego nie da się tak zatrzymanej w połowie rolety dalej po prostu rozwinąć. Wydanie polecenia rozwijania będzie skutkowało uprzednim zwinięciem rolety celem odnalezienia swego początku, po czym dopiero wtedy roleta się rozwinie. 

Osobnego akapitu wymaga sygnalizacyjna dioda LED umieszczona na lewym wsporniku rolety. Sygnalizuje ona całe mnóstwo rzeczy i bez szczegółowego opisu możliwych stanów nie da rady 🙂

  1. Szybkie migotanie diody (5Hz) po włączeniu zasilania urządzenia – aktywny tryb konfiguracji, roleta pracuje jako accesspoint (SSID: Roleta), strona konfiguracji: http://192.168.4.1
  2. W normalnym stanie, czyli wszystko jest ok, roleta w stanie spoczynku lampka sobie jedynie krótko błyska co kilka sekund.
  3. Jeśli co owych kilka sekund lampka błyska podwójnie oznacza to problem z komunikacją z domoticzem.
  4. Potrójne błyski – brak połączenia wifi.
  5. Naprzemienne błyski krótki – długi oznaczają, że roleta jest w stanie nieustalonym: sama nie wie, czy jest zwinięta, czy rozwinięta i będzie to sobie korygować przy najbliższej okazji, wykonując najpierw operację zwinięcia się „do oporu”.
  6. Stałe ciągłe świecenie przerywane krótkimi przerwami towarzyszy ruchowi rolety, stwierdzenie przeciążenia silnika wywołuje tu szybkie migotanie, jednak ponieważ w tej sytuacji silnik jest natychmiast zatrzymywany, raczej się tego stanu nie zaobserwuje.
  7. Funkcja „alarm”, sygnalizowana przez jednostajne równe miganie lampki  (1Hz) – roleta nie potrafi się odnaleźć, nie wie, gdzie ma koniec, a gdzie początek, jej zwijanie nie napotyka oporu. Czyli, krótko mówiąc: coś się mocno spierniczyło z mechaniką. 

Lista rzeczy do poprawy:

Sprzęgło cierne – jest o tyle nieprzemyślane, że właściwie nie daje się regulować. Aktualnie w prototypie mam je podszlifowane minimalnie za bardzo i zdarzają się niepotrzebne „uślizgi”. Zastanawiam się tutaj po prostu nad całkowitą rezygnacją z tego sprzęgła (w tym momencie wystarczy zablokować możliwość ruchu elementu przenoszącego napęd w rurce, choćby wbijając od boku mały gwoździk „na gorąco”, oczywiście po całkowitym odwinięciu płótna rolety 🙂 ), bo mechanizm jest chroniony detekcją przeciążeń, ale jednocześnie moja inżynierska dusza jęczy mi tutaj, że jak kiedyś z jakichkolwiek powodów program pójdzie w maliny (nie wiem, procek się zawiesi choćby), to detekcja przeciążeń psu na budę się nie zda, a silnik z przekładnią trzeba będzie zapewne wtedy wymienić na nowy, bo niekontrolowane kręcenie się silnika zapewne skończy się zniszczeniem przekładni. Tak więc kusi mnie, by tu wykombinować coś bardziej zaawansowanego.

Sztywniejsza rurka –  Warto zwłaszcza przy szerokim oknie. Albo wypchanie obecnej jakimś usztywnieniem, albo zastąpienie rurki z PVC rurką aluminiową (są w handlu fi22), tylko wtedy zamiast procesora ESP-12 należy użyć ESP-07, z zewnętrzną anteną wywleczoną poza rurkę.

Ustalanie położenia rolety – jest to niewątpliwy słaby punkt przyjętego sposobu napędzania roletą, ale jednocześnie bez obstawiania rolety krańcówkami, czy czujnikami wykrywającymi naniesione na płótno znaczniki właściwie nie było tego jak zrobić inaczej. W komentarzach na blogu pojawił się co prawda ciekawy pomysł wykorzystania do napędu rolety silnika krokowego, ale nie ma (a przynajmniej ja nie spotkałem) takiego silnika o gabarytach umożliwiających jego schowanie w rurę, musiałby taki kalafiorek wisieć z boku, a tego bardzo chciałem uniknąć, jeśli nawet nie z powodu estetyki, to z uwagi na fakt, że drzwi balkonowe, na których roleta u nas wisi po otwarciu opierają się o glif ściany i tam nic więcej ponad to, co jest nie wejdzie.
Myślę natomiast, że możnaby tu pokombinować jeszcze z bardziej zaawansowanym ustawianiem pozycji rolety przez pomiar czasu. W obecnym rozwiązaniu roleta zna swoje położenie tylko w dwóch sytuacjach: zwinięta i rozwinięta, przy czym tak naprawdę pewne jest dla niej (bo fizycznie potwierdzone) tylko położenie zwinięte. tego nie zmienię, ale mógłbym mierzyć czas zwijania i czas rozwijania i na tej podstawie szacować przy każdym jej ruchu jej pozycję. To by oczywiście było bardzo niedokładne, płótno za każdym razem się zwija minimalnie inaczej i te czasy się rozjeżdżają, ale ponieważ przy każdym pełnym zwinięciu byłoby to zerowane, dokładność powinna być wystarczająca. Nic, kiedyś może pomyślę. I wstawię tu wtedy nową, lepszą wersję 🙂

Pliki do pobrania:

Plik roleta – elementy 3D.rar zawiera komplet elementów do wydrukowania na drukarce 3D. Drukujemy bez podpór, niezbędne podpory w przypadku korpusu są już zawarte w projekcie, należy je potem odciąć.
Plik Roleta – Mechanizm.pdf jest plikiem PDF 3D, należy go otwierać w Acrobat Readerze, nie w oknie przeglądarki, bo wtedy się nic nie zobaczy!
Roleta SCH+PCB – projekt w Eagle
I na koniec binarka – wsad do procesora 🙂

 

Roleta - Elementy 3D
Roleta - Elementy 3D
Roleta-elementy-3D.rar
Version: 3
506.1 KiB
163 Downloads
Szczegóły
Roleta - Mechanizm
Roleta - Mechanizm
Roleta-mechanizm.pdf
Version: 3
399.0 KiB
320 Downloads
Szczegóły
Roleta SCH+PCB
Roleta SCH+PCB
Roleta-SCHPCB.rar
Version: 3
61.6 KiB
170 Downloads
Szczegóły
Roleta - Sw V3 1
Roleta - Sw V3 1
Roleta-sw-v3_1.bin
318.8 KiB
294 Downloads
Szczegóły