Doorlock – elektroniczny zamek do drzwi #smartroom

Posted by

Jakiś czas temu wpadłem na pomysł zrobienia zamka elektronicznego do drzwi.  Jak bylem młodszy to już robiłem podobne projekty na bramkach logicznych, niestety tylko prototypy na płytce stykowej. Kiedy myślałem o zaprojektowaniu takiego urządzenia, chciałem na początku właśnie zastosować stary schemat,  lecz miało to kilka wad m.in. brak programowalności i trudna zmiana pinu, skomplikowany układ i bardzo trudny do lutowania. Szybko z niego zrezygnowałem i postanowiłem całość oprzeć o Atmege16. Z racji, iż rozwijam projekty modułów na tą rodzinę uC,  to było mi to bardzo na rękę. Gdy przemyślałem wszystko, to czas się wziąć za planowanie. Projekt musiał spełniać kilka kryteriów:

  1. Możliwość zamykania i otwierania od zewnątrz i wewnątrz
  2. Mocno blokować drzwi, aby nie dało się ich wyważyć

Chciałem aby projekt był całkowicie wykonany przez mnie. Elektronika, oprogramowanie, elementy mechaniczne i obudowa (druk 3D) musiały zostać zaprojektowane. Z jednej strony było to mega fascynujące, że wszystko będę robił sam,  ale z drugiej to wymagało poświęcenia sporej ilości czasu, której w dzisiejszych czasach coraz mniej 🙁 Ale podjąłem się wyzwania.

Przygotowanie

Oczywiście rozpocząłem od naszkicowania wszystkiego na papierze. Zrobiłem odpowiednie pomiary i nadszedł czas na dłuższe przemyślenie, jak zaprojektować cześć mechaniczną, czyli rygiel z prowadnicą.  Nasuwało się kilka pytań:

  1. Z czego wykonam rygiel, i jak go przymontuję,  gdyż ściana jest działowa i kolki szybko z niej wypadną?
  2. W jaki sposób będę przesuwał ryglem, czyli prawdopodobnie przeniesienie ruchu obrotowego w liniowy?
  3. Jak zasilać cały układ? To chyba najważniejsze pytanie,  bo głowiłem się nad nim długo.

Prace

Część mechaniczna na razie nie była obowiązkowa, bo i tak trzeba było zmontować cały układ oraz napisać program do niego. Więc zacząłem od przygotowania prototypu na płytce stykowej i programowania. Układ wymagał obsługi klawiatury, sterowania serwomechanizmem (bo własnie je wybrałem do przesuwania rygla), wyświetlacz LCD (nie LED gdyż do wyświetlania będzie dużo treści) oraz kilka przycisków i diod LED. Do realizacji projektu użyję tych modułów:

  1. Moduł LCD
  2. Servo moduł – w pierwszych wersjach nie było, servo było sterowanie bezpośrednio w programie. Kiedy stworzę ten moduł zaktualizuję oprogramowanie.
  3. Keyboard moduł – oprogramowanie istnieje na GitHub`ie, lecz muszę dodać wpis na blogu

Kiedy część programowa zakończyła się powodzeniem, mogłem przystąpić do projektowania części mechanicznej. Oto moje odpowiedzi na pytania z przemyśleń:

  1. Rygiel i cały mechanizm będzie modelowany przez mnie od początku i wydrukowany na 3D. Do ściany przyczepię na zwykłe wkręty albo klej, bo nie będzie miało to znaczenia, iż elementem głównym, blokującym drzwi, będzie metalowy mostek przymontowany grubymi wkrętami do framugi drzwi.
  2. Wybrałem najłatwiejszy mechanizm zębatkowy: koło zębate porusza się po rdzeniu wymuszając jego przesunięcie.
  3. Wybrałem zasilacz 5V podłączany do 230V, więc alarm trzeba podłączyć do gniazdka, w przypadku braku zasilania nie będzie problemem wpiąć się zewnętrznym zasilaniem. Może w przyszłości dorobi się powerbank do alarmu, aby w razie awarii zasilania on dalej działał.

Wymyślenie całego mechanizmu, zaprojektowanie go oraz stworzenie obudowy i innych elementów 3D zajęło mi mnóstwo czasu i nie obyło się bez pomyłek. Pierwsza wersja alarmu działała pięknie jako prototyp na kawałku sklejki, natomiast kiedy przymontowałem go na właściwe miejsce, to odmówił już posłuszeństwa. Kilka błędów jakie dostrzegłem i przez które mógł nie działać poprawnie:

  1. Serwo naciska od lewej krawędzi na rygiel, co skutkuje lekkim przekrzywieniem rygla i zębatka często przeskakuje kroki.
  2. Rygiel ociera bezpośrednio o ścianę, co powoduje zwiększenie tarcia i servo nie jest wstanie go przesunąć.

Te elementy zostały naprawione w wersji 2. Rygiel przesuwa się teraz po plastikowej podstawce, co znacznie zmniejszyło tarcie, a serwo zostało przeniesione i zębatki umiejscowione są od góry klocka. Całość zaczęła pięknie działać 😀

Została tylko kwestia wizualna, czyli wymyślić jak zamaskować przewody. W głowie mam pomysł na zaprojektowanie 3D odpowiednich elementów, gdyż maskownice w sklepie są dość drogie i ciężko z wymiarami, a w druku 3D mam walną rękę. Była by to moim zdaniem najlepsza opcja zrobić kilka modułów które można dowolnie łączyć w całość (elementy proste, skośne i etc…)

Aktualizacja #1

Została dorobiona maskownica do przewodów, projekt 3D dostępny tutaj. Całość wygląda teraz o niebo lepiej. Dodatkowo mogę wykorzystywać maskownice wszędzie, gdzie mi się podoba, więc jej projekt uważam za przyszłościowy, bo spisuje się rewelacyjnie.

Podsumowanie

  1. Myślę, że udało mi się zachować jakąś modułowość w projekcie i tym samym jego rozbudowa i rozwój będzie bardzo prosty. Każda wersja ma odpowiednie tagi na GitHub`ie oraz jako osobny projekt na Thingiverse, wiec jeśli będzie potrzeba budowy jednej z poprzednich wersji, to nie powinno być z tym problemu.
  2. Dzięki wyprowadzeniu pinów programowalnych (MOSI, MISO, RESET, SCK) oraz obudowie którą można łatwo odczepić od ściany (wysunąć z prowadnicy) nie ma problemu z rozwijaniem oprogramowania i ulepszeniami.

Pytania do wyjaśnienia:

  1. Co w przypadku problemu z zasilaniem? (tutaj wystarczy podłączyć zewnętrzne zasilanie ~5V i układ będzie działał)
  2. Co w przypadku awarii układu (np. gdy popsuje się servo)?

Plany na przyszłość:

  1. Zamaskowanie przewodów, aby całość się estetycznie prezentowała.
  2. Implementacja modułu servo.
  3. Ulepszanie układu i oprogramowania o pamięć EEPROM, w której zapisywany będzie pin. Dzięki temu po resecie urządzenia nie trzeba będzie zmieniać pinu na nowo.
  4. Rozbudowa menu i funkcjonalności. Opcja zmiany pinu, dodania nowego.
  5. Możliwość otwierania drzwi kartą magnetyczną, odciskiem palca i inne futurystyczne bajery 😀
  6. Moduł Wi-Fi do komunikacji z serwerem (wymaganie projektu Smartroom oraz otwiera drogę do nowych możliwości i rozwoju)

Źródła i linki:

Thingiverse (wersja 1, wersja 2), maskownica, Eagle, GitHub (wersja 1, wersja 2), Youtube (prototyp v1, wersja 2)

print

One comment

Leave a Reply

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *