Planowałem wymienić ogrodzenie frontowe domu na nowe i od razu przyszło mi do głowy, aby zrobić bramę otwierana zdalnie, gdyż jest to idealny moment. Oczywiście zacząłem od dokładnego rozplanowania projektu, orientacji w cenach i gotowych rozwiązaniach rynkowych.
Bramą chce moc sterować zdalnie (przez WiFi) oraz za pomocą pilota. Gotowe rozwiązania do kupienia poza wysoką ceną pozwalają tylko na to drugie, czyli nie spełnią moich oczekiwań. Rozwiązanie musiałem skonstruować samemu.
Planowanie
Mam bramę skrzydłową, więc potrzebuje siłowniki, które będą ją otwierać, poszukałem trochę i znalazłem takie (link do allegro, gdyby nie działał, to jest to po prostu siłownik elektryczny 12 calowy). Cena do jakości jak najbardziej na plus urządzenia.
Gdy już miałem siłowniki to trzeba było je jakoś zasilić. Wybrałem zasilacz komputerowy ATX z kilku względów. Po pierwsze dysponuje dużą mocą wyjściową, a dwa siłowniki będą pobierać z wyjścia 12V ok. 3A (doświadczalnie wyliczyłem, że będzie to max. 50W). Kolejnym argumentem na plus jest to, że mam tam wyjście 5V oraz 3,3V co pozwoli mi zasilić płytę główną sterownika i peryferia wymagające 3,3V (nie muszę stosować stabilizatora). No i ostatni plus to, że mam całą stertę ich w pokoju :D. Żeby nie było tak kolorowo to minusem ich jest gabaryt – są po prostu spore. Przed użyciem któregoś, wykonałem odpowiednie testy (fotka poniżej).
Wydajność nie jest może najwyżej klasy, ale do otwierania i zamykania bramy wystarczy. Dla mnie najważniejsze było, by trzymał napięcia po przyłożeniu obciążenia, a to robi 🙂
Sercem sterownika będzie układ Wemos D1 Mini z ESP8266E-12 na pokładzie. Wybrałem go dlatego, że będę potrzebował większej liczby portów GPIO niż dysponuje ESP8266-01, oraz dostępu do portu analogowego na odczyt temperatury. Oczywiście można było zastosować bezpośrednio ESP8266E-12, ale po prostu nie chciało mi się robić adaptera z wersji SMD do THT (bo w takiej technologi lutuję sterownik).
Jeszcze został temat sterowania bramy pilotem. Tutaj nic innego jak sygnał radiowy 433MHz nie przyszło mi do głowy. Miałem kiedyś kupiony moduł odbiornika i nadajnika, wiec stwierdziłem, że je szybko sprawdzę nim wykorzystam w sterowniku. Miałem problem z uzyskaniem dobrego zasięgu. Lutowałem różne anteny, bawiłem się napięciem wejściowym, ale nic nie pomagało i zasięg i tak maksymalnie wyniósł ok. 5 metrów.. Poszedłem w stronę szybszego rozwiązania jak to. W zestawie otrzymujemy od razu pilot, więc znacznie mniej pracy, a dodatkowo do mikrokontrolera docierają tylko stany High i Low, tak jakbyśmy klikali prawdziwe przyciski, więc mega to uprości projekt. No i oczywiście zasięg (po dolutowaniu anteny) wynosi 15-20 metrów więc znacznie więcej niż w przypadku pierwszego rozwiązania 🙂 Nie wiem z czego to wynika i raczej na pewno ja coś źle robiłem, ale już nie miałem czasu ani sił się nad tym zastanawiać (kiedyś do tego wrócę)
Prace
Mając już zarys całego układu, przystąpiłem do przygotowania prototypu na płytce stykowej. Siłowniki, aby otwierały i zamykały bramę muszą być sterowane w dwóch kierunkach więc do poprawnego ich działania niezbędny będzie mostek H, który wykonałem na tranzystorach MOSFET.
Nie dawałem do mostka diod zabezpieczających ani kondensatorów z racji, że jest sterowany przez transoptory, które zapewniają izolację galwaniczną, a zasilane są z zasilacza ATX, który sam w sobie ma mnóstwo zabezpieczeń i sądzę ze wystarczą. Jakby się coś niemiłego działo to w przyszłości dodam diody.
Oprócz sterowania silnikami mikrokontroler odczytuje temperatury. Wewnętrzny analogowy termometr MCP9700 umieszczony blisko radiatora od MOSFET’ów, służy głównie do monitorowania temperatury wewnątrz obudowy oraz czy układ się nie przegrzewa (wiem, lepiej by było, gdyby był przyklejony do radiatora, ale już przylutowałem całość i nie chciało mi się tego zmieniać). Oraz zewnętrzny cyfrowy DS18b20. Ogólnie pomiar temperatury na zewnątrz nie jest mi potrzebny w żaden sposób do sterownika, ale wykorzystałem to, że układ będzie umieszczony na dworze, a potrzebuje odczyt temperatury na zewnątrz do mojego SmartHome, więc wpiąłem go w sterownik.
Dlaczego dwa różne czujniki temperatury a nie np. tylko cyfrowe?
Z racji, że posiadałem tylko jeden DS18b20 i był on w obudowie wodoodpornej 🙂
Po zlutowaniu układ prezentuje się tak:
Schemat PCB:
Zastanawiałem się nad tym, czy dać radiatory, czy pominąć je. Przy obliczeniach mocy, jaką będą musiały znieść Mostfet’y zakładałem, że bez dodatkowego elementu odprowadzającego się nie obędzie. Nie chciało mi się tworzyć równań i liczyć tego, jaka moc się na nich wydzieli, znacznie lepiej i szybciej było przekonać się w praktyce. Podłączyłem jako obciążenie halogen 50W 12V i zacząłem załączać układ badając temperaturę tranzystorów.
Zanim wziąłem termometr do ręki złapałem za jeden (po kilkunastu sekundach przewodzenia) i trochę się poparzyłem :(. Nie zastanawiając się już nad niczym, dorobiłem radiatory do nich. Wybrałem jeden większy i przeciąłem na pół. Nawierciłem otwory i na końcu całość przeszlifowałem drobnym papierem ściernym. Zacząłem od 500, potem 1000 i na końcu 1500.
Potem wykonałem jeszcze raz te same testy i jak się okazała radiatory dużo dały bo można było normalnie dotykać tranzystorów 🙂
Montaż na dworze
Zasilacz razem ze sterownikiem będzie zamontowany na zewnątrz wodoodpornej obudowie. Początkowo chciałem całość umieścić w domu, a na zewnątrz puścić tylko przewody do siłownika, ale niestety przez zasięg sterowania pilotem bylem zmuszony całość przenieść przy ogrodzeniu.
Zasilacz oraz sterownik są przymocowane do metalowej wstawki, która była w komplecie wraz ze skrzynką. Do boku przymocowałem kawałek blachy, do której jest przykręcony transformator z zasilacza ATX. Jedyne otwory w skrzynce to na dole, którędy wchodzą przewody, na wszelki wypadek zabezpieczyłem je jeszcze silikonem, aby w środku nie skraplała się wilgoć, która by się nimi dostała.
Oprogramowanie
Cały kod jest dostępny na moim Gitlabie. Najnowsza dokumentacja Rest API dostępna tutaj. Z poziomu API jesteśmy w stanie otworzyć, zatrzymać i zamknąć bramę, sprawdzić jej stan oraz odczytać temperatury. Za pomocą pilota możemy tylko kontrolować bramę.
Aktualizacja #1
Zostały dorobione przyciski do otwierania bramy (na schemacie oznaczone jako JP5 oraz JP6), aby w razie awarii internetu, albo aplikacji webowej nie zostać uwięzionym bez możliwości wyjazdu 🙂 Schematy zostały zaktualizowane.
Podsumowanie
Sterownik działa super. Sterowanie bramą przez internet to był strzał w 10, gdyż zbliżając się do domu klikam w aplikacji żeby brama się otworzyła i gdy jestem na miejscu czeka już na mnie otwarta. Opóźnień przy sterowaniu przez internet nie ma prawie w ogóle co mnie bardzo zaskoczyło, gdyż spodziewałem się, że będzie trochę „lagowało”.
Plany na przyszłość:
- Pobawić się anteną do modułu radiowego 433MHz, aby uzyskać jak największy zasięg.
- Dorobić większą liczbę pilotów do sterowania bramą (klonowanie).