Po zrealizowaniu wielu ćwiczeń z arduino stwierdziłem że pisanie programów i robienie schematów elektronicznych to fajna zabawa, ale chciałbym tę wiedzę wykorzystać w praktyczny sposób.
Na początku mógłbym zacząć robić zabawki i gadżety, a z czasem automaty, drony i roboty mające bardzie praktyczne zastosowanie w życiu codziennym. Do tego wszystkiego będą potrzebne części mechaniczne (przekładnie itd.). Wiele z nich można kupić ale nie wszystkie, zwłaszcza jak chce się zacząć robić coś nowego czego jeszcze nie ma na rynku. Poza tym tworzenie prototypów to ciągłe zmiany, ulepszanie, testowanie aż do zadawalającego rezultatu. Na początek nie ma sensu kupować drogich części z lepszych materiałów jak nie wiem czy te co kupię nie okażą się za małe albo za duże lub jeszcze co innego wyjdzie do poprawy.
Na podstawie powyższych przemyśleń stwierdziłem, że muszę mieć maszynę lub maszyny do robienia części.
Początkowo miałem zamiar zbudować drukarkę 3D, ale nie znałem tej technologii (więc kupiłem sobie jeden z tych tańszych modeli). Za to w technologii pracy i obsłudze maszyn CNC miałem już duże doświadczenie praktyczne; trzyletnie doświadczenie zawodowe jako operator programista maszyny CNC tokarki i 3 miesięczne jako operator frezarki konwencjonalnej oraz mam ukończony kurs operatora programisty zarówno frezarki jak tokarki CNC. Postanowiłem, że zbuduję na początek mini frezarkę CNC opartą o arduino ( platformę programistyczną którą znam). Wprawdzie mógłbym sobie kupić gotowy model, ściągnąć oprogramowanie z Internetu i tylko skalibrować urządzenie, ale to co się nauczyłem przy jej budowie, problemy z którymi się zmierzyłem i je rozwiązałem to moje, do tego jeszcze dochodzi kwestia że jakby coś się popsuło w tej maszynie to jestem sobie wstanie ze wszystkim poradzić ponieważ mam umiejętności: konstruktora, mechanika, technologa, programisty i operatora tej maszyny.
Mini frezarka CNC to pierwsza maszyna którą zbudowałem. Przy projektowaniu i składaniu pomógł mi brat, sam natomiast zająłem się oprogramowaniem i kalibracją. Konstrukcje wzorowałem między innymi na projekcie: DIY Dremel CNC.
Projekt ten zamierzam jeszcze ulepszać, ale najpierw przetestuję jej użytkowanie i dopracuję technologię .
Na początek zamieszczam zdjęcia, a z czasem dodam filmiki z ustawianiem i pracą maszyny. Wcześniej dodam i omówię jej budowę, kalibrację i działanie.
Pokażę: mocowanie detalu, ustawienia parametrów, jak pisać programy w systemie Grbl przy użyciu programu "CNCJS", jak wygenerować G-code z rysunku w programie FUSION 360, wgrać go do "CNCJS" oraz użyć do zrobienia części.
Kolejne projekt które chce zrobić i dodać w tym dziale to:
Brama wjazdowa otwierana zdalnie za pomocą pilota (to w pierwszym etapie później chce ten układ dodać do sieci IoT - Internet Rzeczy który stworzę ).
Na początku tego projektu zamieszczam filmik poprawnie działającej bramy, wraz z omówieniem jakie mamy opcje do wyboru (otwieranie, zamykanie, zatrzymywanie, opcja furtki) oraz jak działa komunikacja dwustronna w tym projekcie. To tak żeby nie zanudzać, jeśli kogoś nie interesuje szczegółowa analiza realizacji tego projektu. Czyli jak do tego doszedłem i co zrobiłem.
Prezentacja Działania
(pilot Arduino Nano, centralka Arduino Uno, komunikacja dwukierunkowa)
Uwaga!Uprzedzam, że to co zrobiłem i pokaże zostało zrobione w ramach mojego hobby, i obecnie testuje działanie tej automatyki (poprzez użytkowanie). W tej chwili nie mogę dać żadnej gwarancji, że ta technologia jest bezpieczna. Więc jeśli ktoś chce z niej skorzystać i ją odtworzyć to robi to na własne ryzyko i odpowiedzialność.
Spis treści tego projektu:
Technologia, automatyka używana w bramie na pilota (dwuskrzydłowej), wydawało by się, że za dużo niema tu do zrobienia. Jako użytkownik standardowo mam dwie opcje: zamykani, otwieranie, no i jeszcze czasem trzecią otwierania tylko jednego wybranego skrzydła bramy.
Uważam jednak, że oceniając stopień zawansowania tej technologii (czy innej) jedynie z punktu widzenia użytkownika to tak jakby oceniać wielkość góry lodowej jedynie no podstawie jej czubka, który wystaje z wody.
Dlatego aby pokazać, ile czasu, wiedzy i wysiłku trzeba, aby zrealizować tego typu projekt, postanowiłem, że wykonam go w całości od początku (etapu pomysłu, planowania) do końca (etapu użytkowania).
Poza tym to projekt praktyczny który można wykorzystywać na co dzień, aby ułatwić sobie życie a nie tylko efektowny gadżet czy zabawka (chociaż jedno nie wyklucz drugiego 😊).
Ad2. Opis działania programu (dla użytkownika).
Do wyboru mamy cztery opcje pracy: otwieranie, zamykanie, zatrzymanie (cyklu pracy), efekt furtki. Oraz dodatkowo funkcja informacyjna (zwrotna), która informuje za pomocą zaświecenia na pilocie diody o określonym kolorze co się teraz dzieje (to znaczy czy brama jest w stanie otwierania, zamykania czy postoju, a brak świecenia diody oznacza, że zakończyła prace lub jeszcze jej nie zaczęła, ponieważ żaden z przycisków nie został wciśnięty).
Uwaga!
Przed wciśnięciem któregoś z przycisków należ za pomocą suwaka umieszczonego z tyłu pilota włączyć zasilanie (z akumulatora) i po zakończeniu używania od razu wyłączyć. Akumulator w stanie włączenia może się dość szybko rozładować, to dlatego że układ ma bardzo duży zasięg działania, standardowo 600 metrów na otwartej przestrzeni, a można ustawić nawet 1000 metrów przez co zużywa więcej energii. Dla porównania „powiem” że standardowe piloty które są obecnie do kupienia na rynku mają zasięg ok. 100 metrów (ale mają za to mniejsze wymiary, coś za coś).
Opcja pierwsza Otwieranie. Wciskamy przycisk w lewym górnym rogu pilota, zostaje wysłany sygnał do centralki z poleceniem otwarcia bramy, jeśli sygnał dotrze do celu to brama zaczyna się otwierać, i jednocześnie centralka wysyła sygnał powrotny do pilota z potwierdzeniem, że sygnał do niej dotarł (w efekcie czego zaświeca się dioda koloru zielonego na pilocie).
Podczas otwierania miga lampa sygnalizacyjna umieszczona koło bramy informująca o pracy. Gdy brama się już całkowicie otworzy lampa jeszcze miga przez 10 sekund i kończy się cykl pracy, następuje odcięcie zasilania do siłowników i lampy, oraz wysłanie sygnału, który gasi wszystkie diody na pilocie potwierdzając ze cykl się zakończył.
Opcja druga Zamykanie. Wciskamy przycisk w prawym górnym rogu, w wyniku czego zostaje wysłany sygnał do centralki z poleceniem, tym razem zamknięcia bramy, i dalej analogicznie jak przy otwieraniu, z tą różnicą, że tym razem zamykamy, a dioda na pilocie zaświeci się koloru czerwonego.
Opcja trzecia Zatrzymywanie.Ta opcja została stworzona dla bezpieczeństwa. W każdym momencie, nieważne czy to otwieranie czy zamykanie można zatrzymać bramę, wystarczy wcisnąć na pilocie dolny przycisk z lewej strony.
Wciśnięcie przycisku w tym przypadku powoduje natychmiastowe zatrzymanie bramy i zaświecenie się diody koloru żółtego na pilocie (tak samo jak w poprzednich opcjach to jest sygnał zwrotny z centralki informujący, tym razem o zatrzymani).
Opcja czwarta Efekt Furtki. W tym przypadku trzeba użyć kombinacji kilku przycisków w odpowiedniej kolejności. Ok. więc chce na przykład otworzyć bramę tak żebym mógł wyjść z posesji (ma się otworzyć dla mnie a nie dla samochodu). Naciskam przycisk otwierający bramę i czekam, kiedy skrzydła się rozwierają na interesującą mnie szerokość, wciskam przycisk zatrzymania i wychodzę z posesji, następnie wciskam zamykanie i tyle (nie muszę czekać aż brama wykona cały cykl).
Sam proces zatrzymania siłowników odbywa się na skutek zadziałania krańcówek w siłownikach, gdy osiągnięta zostanie pozycja krańcowa, a nie na skutek zakończenia pracy przez funkcje czasową która po upływie określonego czasu odcina zasilanie idące do siłowników i lampy sygnalizacyjnej (to w trybie normalnej pracy, a awaryjne zatrzymanie się siłowników odbywa się za pomocą dolnego przycisku z lewej strony pilota).
Dzięki funkcji zwrotnej nie musze się odwracać lub patrzyć w lusterko i obserwować czy brama się zamyka, mam pewność, że sygnał dotarł i zadanie zamykania się rozpoczęło.
Czasem zdarza się taka sytuacja, że człowiek myśli o dwóch rzeczach na raz i jeszcze robi trzecią a później się zastanawia: wcisnąłem ten przycisk czy nie? a jeśli wcisnąłem to sygnał doszedł czy może nie? i teraz czy muszę się odwracać lub patrzyć w lusterko i jeszcze koncentrować się na jeździe? NIE, NIEMUSZE ta funkcja wszystkie ewentualne problemy rozwiązuję, wystarczy w chwili wciśnięcia przycisku na pilocie zwrócić uwagę czy zaświeciła się dioda i jakiego koloru (nie musze myśleć, mogę użyć wzroku i skojarzeń :)).
Ps. Przed przystąpieniem do użytkowania proponuje zapoznać się jeszcze z punktem piątym (Użytkowanie) .
Jeszcze dochodzi kwestia otwierania, gdy doszło do awarii zasilania z sieci elektrycznej i co wtedy?
Zrobiłem otwieranie awaryjne. A wygląda to tak że mocowanie każdego z siłowników do skrzydła bramy nie jest zrealizowane za pomocą skręcania śruby, tylko specjalnie zrobionego bolca. Śruby z przyspawaną do niego płytką z otworem (a w otwór ten wkładam kłódkę). Gdy chce otworzyć bramę w trybie awaryjnym, podchodzę do niej (indywidualnie do każdego z siłowników), wprowadzam szyfr do kłódki (niema potrzeby szukania kluczyków po kieszeniach), ściągam ją, wyjmuje płytkę z bolcem (bez żadnego odkręcania), odsuwam siłownik ręką (analogicznie drugi) i otwieram bramę.
Ad3.1 Pomysł i plan działania.
Najpierw musiałem się zastanowić i określić co chce mniej więcej zrobić, jak to ma działać, co mi będzie potrzebne, jak zapewnić bezpieczeństwo podczas realizacji i użytkowania tego projektu sobie i innym.
Chciałem zrobić automat, który będzie otwierał zdalnie bramę za pomocą pilota (To w pierwszym etapie, w kolejnym ten automat ma się łączyć i współpracować z Internetem rzeczy jaki zamierzam stworzyć). Bramę już miałem, była stara, w przyszłości i tak zamierzałem ją wymienić, więc do testów się nadawała w sam raz.
Wiedziałem, że podobna technologia już istnieje, więc wpisywałem w wyszukiwarce google odpowiednie hasła, aby znaleźć niezbędne informacje. Analizowałem treści, filmiki i określiłem co mi się podoba a co nie, co można poprawić, zmienić, dostosować indywidualnie do moich potrzeb i ewentualnie innych ludzi jak im się spodoba pomysł.
Ze względów bezpieczeństwa i ekonomicznych postanowiłem, że na początek będę testował układ sterujący (centralkę) na jednym siłowniku a nie na dwóch (jak się uszkodzi to jeden siłownik a nie od razu dwa). Do zasilania użyje akumulatora 12V DC. I dopiero potem jak już napisze program (tak że będzie działał dobrze) to podepnę drugi siłownik. Następnie wymienię źródło zasilania na zasilacz pobierający z sieci napięcie 230V AC, który na wyjściu będzie miał 12V DC.
Co do bezpieczeństwa podczas testowania i użytkowania już gotowego projektu, postanowiłem, że centralka nie będzie znajdowała się przy bramie tylko w pomieszczeniu gospodarczym oddalonym ok. 25 m od niej. Dzięki czemu w przewodach poprowadzonych do bramy (do siłowników i lampy sygnalizacyjnej) będzie bezpieczne w razie przebicia napięcie 12V DC zamiast 230V AC. Odbędzie się to kosztem zmniejszenia zasięgu działania pilota, dlatego musiałem dać lepszej jakości moduły zdalnego sterowania. Centralka będzie się znajdować w pomieszczeniu przez co nie będzie narażona tak bardzo na czynniki środowiskowe, czyli wilgoć i niskie, wysokie temperatury. I dodatkowo w oprogramowaniu dopiszę opcje bezwzględnego zatrzymania bramy.
Ad3.2 Zakres wiedzy oraz części, które wykorzystałem przy realizacji tego zadania.
WIEDZA
1) Podstawowa wiedza z pisania programów w platformie arduino.
2) Znajomość przeznaczenia i działania modułów i części elektronicznych kompatybilnych z arduino (markatesty.pl/Moduly-Czujniki).
3) Poznanie budowy i działania siłownika (a zwłaszcza układu działania krańcówek).
4) Wiedza z zakresu elektryki (Jeśli chodzi o bezpieczeństwo, to steruje w tym projekcie między innymi przepływem napięcia 230V AC. Musiałem więc dobrać odpowiednie przewody do instalacji siłowników oraz określić na podstawie obecnie obowiązującej normy dotyczącej „instalacji elektrycznych” jak poprowadzić przewody w ziemi).
5) Mechanika. Chodzi o montaż siłowników. Są w Internecie wzory, kalkulatory, przy użyciu których można (na podstawie wprowadzonych danych) obliczyć kąt montażu siłownika i inne parametry montażu, ale tyczy się to danego modelu siłownika i jakiegoś wzorcowego układu ogrodzenia. A jak mam inny, stary typ ogrodzenia, gdzie kiedyś nie brano pod uwagę, że do bramy można dorobić automat i chce użyć inny typ siłownika niż ten ze wzoru, to sytuacja się komplikuje i z tym też trzeba sobie poradzić).
6) Projektowanie (przed wydrukowaniem obudowy pilota (drukarką 3d) trzeba było najpierw zrobić jej projekt graficzny w odpowiednim programie i zapisać w specjalnym formacie).
CZĘŚCI
Rzeczy, które potrzebowałem to:
Jeśli chodzi o siłownik to na początku kupiłem jedną sztukę, dopiero po rozpracowaniu jego działania, i upewnieniu się, że będę wstanie kontrolować go za pomocą arduino zdecydowałem, że dokupię drugi i na siłownikach tego typu zbuduje mój automat.
Chciałem również użyć fotokomórek, ale po ich zakupie się rozmyśliłem. Postanowiłem, że użyje ich w innym projekcie (systemie alarmowym). W tym przypadku, jeśli chodzi o bezpieczeństwo mogę je zastąpić dodając w opcjach pilota „przycisk stop”. Zaoszczędzę w ten sposób na dodatkowych przewodach i zużyciu energii.
Dodam jeszcze, że jakby ktoś twierdził, że skąpię na bezpieczeństwie to niech wie, że prędkość wysuwania się tych siłowników co kupiłem to 6mm/s (według opisu sprzedawcy). Jak bym czekał na śmierć czy na kalectwo na skutek potrącenia przez tą bramę to Bym się Zanudził😊. Do testów to dobre (bezpieczne rozwiązanie) ale jeśli chodzi o komfort użytkowania jak już się wszystko dopracuje, to jak dla mnie to trochę za wolno, czekać ok. 39 sekund na otwarcie bramy. Będę musiał z czasem podmienić siłowniki na szybsze albo dorobić inne przekładnie i wtedy pomyśle o fotokomórkach.
Po wstępnej analizie zrobiłem szkic i rozplanowałem, co, gdzie ma być i jak działać.
Następnie na podstawie tego określiłem co mam a co muszę dokupić (omówiłem listę części w punkcie poprzednim).
Po zakupie brakujących części, zmontowałem układ pilota i centralki na płytkach stykowych.
Kolejną rzeczą było napisanie programów do pilota i centralki i sprawdzenie czy wszystko działa tak jak chcę.
Nie będę opisywał wszystkich wersji i poprawek programu, bo trochę ich było, zamiast tego skupie się no pokazaniu i omówieniu już działającego poprawnie programu (kodu arduino).
Omówienie Programu Pilota:
Podpinam bibliotekę, która umożliwia zdalne sterowanie.
Definiuje piny na którym mają być odbierane i przesyłane dane szeregowe.
Ustawiam nowy obiekt dla klasy „SoftwareSerial” który będzie odpowiedzialny za odbieranie i wysyłanie danych.
Definiuje piny na których będą przyciski
Definiuje piny na których będą diody
Zmienna które użyje do wyeliminowania błędów podczas wciśnięcia przycisku i drgań styków
Następnie przechodzę do instrukcji, która się wykonuje tylko jeden raz,
i w niej:
Ustawiam szybkość transmisji danych dla obiektu: „BSerial”
Przypisuje tryb pracy dla przycisków „INPUT_PULLUP” (czyli wejściowy z wykorzystaniem wbudowanego rezystora podciągającego w arduino, jeśli dobrze pamiętam)
Przypisuje tryb pracy dla diod „OUTPUT” (czyli wyjściowy)
Wszystkie diody początkowo mają być wyłączone
Potem przechodzę do instrukcji, która będzie się wykonywała w pętli (czyli cały czas w kółko)
I tu ustawiam:
Instrukcje warunkową odpowiedzialną za odbieranie danych, w niej przechwytuje odebrane dane i przypisuje je do zmiennej.
A potem tą zmienną porównuje z czterema wariantami (każda z tych zmiennych jest typu „int” czyli z zakresu od -32768 do 32767, wybieram sobie liczbę z tego zakresu i przypisuje ją do danego wariantu):
// sygnalizacja otwieranie, zaświeć diodę koloru zielonego pozostałe mają być wyłączone
// sygnalizacja zamykania, zaświeć diodę koloru czerwonego, pozostałe mają być wyłączone
// STOP (zatrzymanie bramy), zaświeć diodę koloru żółtego, pozostałe mają być wyłączone
A następnie przechodzę do części kodu odpowiedzialnego za wysyłanie danych (z pilota do centralki).
Ta część sprawdza który przycisk został wciśnięty i na podstawie wyboru określa co ma się wykonać.
// Najpierw wykonaj funkcje usuwającą efekt „drgania styków” dla wciśniętego przycisku, a potem, jeśli został wciśnięty przycisk zdefiniowany jak „otwieranie bramy” to wyślij kod „1010” do centralki który spowoduje otwieranie bramy.
// Najpierw wykonaj funkcje usuwającą efekt „drgania styków” dla wciśniętego przycisku, a potem, jeśli został wciśnięty przycisk zdefiniowany jak „zamykanie bramy” to wyślij kod „1011” do centralki który spowoduje zamykanie bramy .
// Najpierw wykonaj funkcje usuwającą efekt „drgania styków” dla wciśniętego przycisku, a potem, jeśli został wciśnięty przycisk zdefiniowany jak „zatrzymanie bramy” to wyślij kod „1012” do centralki który spowoduje zatrzymanie bramy .
A to jest funkcja, która ma za zadanie wyeliminować błąd odczytu na skutek drgania styków (to znaczy, żeby jedno przyciśnięcie przycisku było odczytywane jako jedno a nie kilka, w tym celu stosuje się niewielkie opóźnienie czasowe).
Dodam jeszcze odnośnie tej funkcji, że to nie ja ją wymyśliłem. Pobrałem z Internetu i zmodyfikowałem nieco, tak aby wpasować ją do mojego kodu (nie pamiętam źródła strony, dlatego zamieszczam tą informacje).
CAŁY PROGRAM PILOTA
}
Omówienie Programu Centralki:
Podpinam bibliotekę, która umożliwia zdalne sterowanie.
Definiuje piny na którym mają być odbierane i przesyłane dane szeregowe.
Ustawiam nowy obiekt o nazwie „BSerial” dla klasy „SoftwareSerial” który będzie odpowiedzialny za odbieranie i wysyłanie danych (może być tak samo nazwany jak w kodzie pilota)
Definiuje piny na których będą przekaźniki mocy. Jednokanałowy do włączania, wyłączania zasilania siłowników i lampy sygnalizacyjnej. Dwukanałowy (dwa piny na przekaźnik) do zmiany kierunku obrotów silników, znajdujących się w siłownikach.
Definiuje zmienne które wykorzystam do zrobienia licznika (chodzi o to, aby program mógł wykonywać wiele zadań na raz, tzw. „Wielozadaniowość”). Omówię to dokładniej za chwile (na końcu opisu programu)
Następnie przechodzę do instrukcji, która się wykonuje tylko jeden raz,
i w niej:
Ustawiam szybkość transmisji danych dla obiektu: „BSerial”
Przypisuje tryb pracy dla kanałów w przekaźnikach mocy „OUTPUT” (czyli wyjściowy)
Ustalam, że na początku oba przekaźniki będą miały stan niski (to będą ustawienia domyślne)
Potem przechodzę do instrukcji, która będzie się wykonywała w pętli (czyli cały czas w kółko, dopóki jest doprowadzone zasilanie do arduino, w tym przypadku)
Najpierw łap aktualny czas i przypisuje go do zmiennej
A dopiero potem wchodzę w Instrukcje warunkową odpowiedzialną za odbieranie danych, w niej przechwytuje odebrane dane i przypisuje je do zmiennej.
// odbieranie danych
Następnie tą zmienną porównuje z trzema wariantami.
Jeśli jest zgodna z wariantem pierwszym to:
-przekaźnik mocy jednokanałowy odpowiedzialny za zasilanie dopuszcza napięcie do zasilacza (a tym samym do siłowników i do lampy sygnalizacyjnej),
-przekaźnik mocy dwukanałowy ustawie kierunek obrotów silników znajdujących się w siłownikach na opcje otwierania bramy
-zostaje wysłany sygnał, do pilota który zaświeci odpowiednią diodę na pilocie informującą o tym co się teraz dzieje z bramą (to znaczy, że się w tym przypadku otwiera).
Jeśli jest zgodna z wariantem drugim to:
- przekaźnik mocy odpowiedzialny za zasilanie dopuszcza napięcie do zasilacza a tym samym do siłowników i do lampy sygnalizacyjnej
-przekaźnik mocy dwukanałowy ustawie kierunek obrotów silników znajdujących się w siłownikach na opcje zamykania bramy
-zostaje wysłany sygnał, do pilota który zaświeci odpowiednią diodę na pilocie informującą o tym co się teraz dzieje z bramą (to znaczy, że się w tym przypadku zamyka).
A jeśli zgodna z wariantem trzecim to:
- przekaźnik mocy(jednokanałowy) odpowiedzialny za zasilanie rozłącza przewody idące do zasilacza i tym samym do siłowników i do lampy sygnalizacyjnej powodując ich wyłączenie i wysyła sygnał do pilota, aby zgasić wszystkie diody na pilocie i poinformować tym samym, że cykl pracy bramy się zakończył
Wychodzę z części odpowiedzialnej za odbieranie I wysyłanie danych.
I teraz przechodzimy do części kodo odpowiedzialnego za wielozadaniowość, o której wspomniałem już wcześniej. Sytuacja wygląda następująco.
Wykonuje się cykl pracy np. „zamykanie bramy”, a ja go chce przerwać (zatrzymać) w pewnym momencie (miejscu), a następnie wznowić od tego samego momentu (nie chce wykonać jednej czynności po drugiej tylko dwie na raz).
Funkcją delay() nie dało się tego zrealizować, a zegar czasu rzeczywistego to dodatkowy koszt, który mogę ominąć, za pomocą funkcji, którą napisałem (mogłem sobie na to pozwolić ponieważ była powtarzalność, mierzyłem czas otwierania i zamykania bramy i testy wykazały, że za każdym razem jest taki sam).
OK, a teraz jak to działa:
Co sekundę jest sprawdzany stan przekaźnika mocy odpowiedzialnego za zasilanie, jeśli jest włączony to licznik zwiększa swą wartość o jeden (oczywiście zaczyna od zera) i jednocześnie sprawdza czy już jest jego wartość równa 50 (siłowniki zamykają bramę po 39 sekundach, ale jeden pracuje wolniej od drugiego, dlatego dałem 11s zapasu czasu, można to zmienić). W chwili, gdy mija 50 sekund następuje wyłączenie zasilacza (przesyłającego prąd do siłowników i lampy), wysłanie sygnał do pilota (aby zgasić wszystkie diody i poinformować tym samym, że cykl pracy bramy się zakończył), oraz wyzerowanie licznika a następnie czasu.
CAŁY PROGRAM CENTRALKI
Program ten niema kodowania sygnału pilota! Ludzie znający się na przechwytywaniu sygnałów mogli by go odczytać i użyć, ale też musieli by znaleźć się w odpowiedniej odległości od pilota i centralki (Ich też można namierzyć).
Ujmę to tak, zastosowanie kłódki do zamknięcia bramy to też nie najlepsze zabezpieczenie posesji. Można znaleźć w Internecie masę filmików i poradników, jak ją otworzyć bez kluczyka, a mimo to miliony ludzi na świecie z nich korzystają (w tym Ja). Chodzi oto, że brama zabezpieczająca dostęp do posesji to dopiero pierwsza linia zabezpieczeń, powiedziałbym prowizoryczna, to nie jest wejście jeszcze do budynku czy do skarbca. Nie jestem instytucją państwową czy milionerem, obecnie mi takie zabezpieczenie plus monitoring wystarcza. A z czasem dorobie kolejne linie (technologie) zabezpieczenia posesji.
A jak ktoś chce już teraz zabezpieczyć sygnał pilota przed potencjalnymi złodziejami to może w tym celu użyć modułów „zegara czasu rzeczywistego”, zsynchronizować je i napisać odpowiedni program z funkcją szyfrującą i deszyfrującą.
Ok. Program napisany, wszystko zmontowane przechodzimy do testów.
Jak już wspominałem wcześniej pierwsze testy ze względów bezpieczeństwa i ekonomicznych zacząłem od kontroli jednego siłownika a do zasilania użyłem akumulatora 12V DC.
W czasie testowania często trzeba było odpinać zasilanie poprawiać program i podłączać znowu, zwiększało to ryzyko popełnienia błędu, a z dwojga złego jakby coś poszło nie tak to 12 V DC jest względnie bezpieczne, a 230 AC może zabić. Na początku używałem jednego siłownik a nie dwóch, ponieważ w razie uszkodzenia chciałem zminimalizować straty. Nie zaryglowałem siłownika (końcówki mocowanej normalnie do skrzydła bramy), ponieważ jeśli bym to zrobił a coś by poszło nie tak jak chce to mogło by przeskoczyć krańcówkę i uszkodzić części mechaniczne siłownika, gdybym w porę nie odłączył zasilania (co zresztą się wydarzyło, ale w testach już na bramie, tam zadziałał na szczęście inny bezpiecznik, który wymyśliłem do testów, o tym za chwile, w kolejnym punkcie).
Po przetestowaniu jednego siłownika zasilanego z akumulatora 12V DC i upewnieniu się, że działa tak jak chcę zmieniłem zasilanie na takie jakie ma być docelowo, czyli na zasilacz (zasilanie z sieci 230V AC) i za pomocą złączek wago podpiąłem drugi siłownik do przewodów które idą do pierwszego. Do zasilacza również podpiąłem lampę, chociaż mógłbym ją podpiąć bezpośrednio pod przewody idące do jednego z siłowników w sposób równoległy, ale chciałem przetestować taki wariant. Przy okazji przetestowałem pobór zużycia energii, aby określić mniej więcej koszty użytkowania.
Zarówno jeden jak i drugi zasilacz podpiąłem do przedłużacza z opcją przycisku. Do pomiaru zużycia energii użyłem wcześniej kupionego urządzenia, które podpinałem między przedłużacz a wtyczkę z zasilacza.
Podłączenie i praca jednego siłownika.
Na tym filmiku powyżej można zauważyć również, że gdy siłownik jest wysunięty i wyślemy mu (przez pomyłkę) sygnał, żeby się dale wysuwał to centralka odpowie i zaświeci odpowiednia diodę na pilocie potwierdzając, że polecenie do niej dotarło i załączy zasilanie, ale nic się niestanie, jeśli chodzi o prace siłownika.
Uwaga!
Co mogę wywnioskować z tego filmiku i jakie działania podjąć.
Odnośnie użytkowania. Jeśli obsługuje ten automat według założeń użytkowania to znaczy: wciskam przycisk otwierania, brama się otwiera, zamykania, brama się zamyka to jest ok. Ale gdy brama jest otwarta, chce ją zamknąć i przez pomyłkę ponownie wciskam przycisk otwierania to, jeśli chodzi o prace siłownika, nic się nie dzieje, jak widać na filmie (i dobrze oto chodziło), ale zaczęła świecić i migać lampa ostrzegawcza to może oznaczać, że funkcja czasowa zaczyna odliczanie (ustalony cykl, w programie centralki na 50 sekund). I co się w takim przypadku może wydarzyć. Jeśli w ciągu 11 sekund od pomyłki wciśniemy poprawny przycisk w tym przypadku zamykania to brama się powinna poprawnie zamknąć, a jeśli po tym czasie, to brama się zatrzyma wcześniej niż się zamknie do końca (niż osiągnie pozycje krańcową). Jeśli był to cykl otwierania to nic złego się nie wydarzy po prostu chce wyjechać z posesji brama się nie otworzyła do końca, widzę to, bo mam ją przed sobą, ponownie wciskam przycisk otwierania i jest ok. Problem byłby, gdyby to był cykl zamykania, brama wprawdzie jak i automatyka nieuległa by żadnemu uszkodzeniu czy awarii, ale została by niedomknięta. W moim przypadku nic specjalnego by się niestała bo mógłbym sobie później sprawdzić za pomocą kamery czy ją zamknąłem poprawnie, jeśli nie zwrócił bym uwagi że za długo czekałem nim wcisnąłem prawidłowy przycisk na pilocie(Jeśli była by niedomknięta to zadzwoniłbym do domu żeby ktoś domknął, to tak na początek później jak dorobie zdalne sterowanie z telefonu to będę ją mógł sam otwierać i zamykać z innego miasta niż mieszkam). I pewnie bym się przez jakiś czas kontrolował nim poprawna obsługa tego automatu nie weszła by mi w nawyk.
Wspomniane wcześniej 11 sekund (mówię i pisze, że około 10, bo zaokrągliłem, ale dokładnie to 11) bo czas poruszania się siłownika wyregulowałem za pomocą krańcówek na 39 sekund i po 11 sekundach (39+11=50) ma nastąpić odcięcie zasilania do siłowników i lampy tak dla oszczędności (zużycia energii) i zgaszenia lampy, dwa w jednym uzyskałem w ten sposób.
Mógłbym od razu wprowadzić zmiany w programie i wyeliminować ten ewentualny problem. Ale go zostawię chce przetestować taki wariant i przy okazji Siebie. Czyli określić jak szybko mi się zakodują poprawne nawyki użytkowania i ile razy się w tym czasie ewentualnie pomylę. Najważniejsze, że wiem co się może wydarzyć i jak w takiej sytuacji zareagować.
I Jeszcze jedna Uwaga! nie od razu to zauważyłem o tym co napisałem odnośnie tego filmiku dopiero na etapie użytkowania , jak pojawiła się pomyłka. Przypomniałem sobie wtedy ten filmik i skojarzyłem fakty, zresztą na tym filmiku widać że te diody są przypisane na odwrót niż w ostatecznej wersji, to też było ze skojarzenie, tylko tyle że błędnego.
Całkowite zużycie energii w czasie pracy (centralka, oba siłowniki, lampa).
Odczyt pokazuje ok. 42 W (to tutaj, a w późniejszych testach na bramie wyszło ok. 54 W).
Zużycie energii przez układ (centralkę) w czasie czuwania
(w 13 sekundzie nagrania wskazuje od 3,5 W do 3,6 W).
Na powyższych filmikach widać, że pod diodę czerwoną przypisałem opcje chowania się słownika, a pod kolor zielony wysuwanie. W wersji ostatecznej jest na odwrót, bo chowanie się siłownika to jest na bramie otwieranie jej i ogólnie kojarzy się to z kolorem zielonym. Poza tym, kiedy wybieram którąś z opcji to świeci się również dioda żółta, to dlatego że pierwotnie w programie zapisałem, że zaświecenie tej diody informuje, że działa zasilanie w pilocie. W ostatecznej wersji zmieniłem to i zaświecenie diody żółtej oznacza sygnał powrotny z centralki informujący, że brama została zatrzymana na skutek wciśnięcia przycisku znajdującego się na pilocie pod tą diodą.
Na tych filmikach widać również, że używam już gotowego pilota, a nie tego z złożonego na płytce stykowej to dlatego że te filmiki były nagrywane już po testach na jednym skrzydle bramy. Prace pilota złożonego na płytce stykowej można zobaczyć w kolejnym punkcie (Etap1 na furtce stodoły).
Odnośnie mojej sieci elektrycznej i bezpieczeństwa dodam jeszcze, że w projekcie tym przy użyciu arduino steruje między innymi przepływem napięcia 230V AC. Odbywa się to za pomocą przekaźnika mocy, którym włączam i wyłączam zasilacz.
Ważne jest też, aby nie pomylić biegunów przy podłączaniu do tego typu zasilacza (tego co zasila siłowniki i lampę), czyli plus do plusa podłączamy a minus do minusa (a o przewodzie bezpieczeństwa wspomnę za chwile), w przeciwnym razie może dojść do uszkodzenia elektroniki a nawet do pożaru.
Określenie przewodu fazowego - Pod napięciem (+)
(Wcześniej jednak ustaliłem na którym bolcu wtyczki ma początek przewód koloru czerwonego).
Robienie takich rzeczy bez odpowiedniego przygotowania jest niebezpieczne, dlatego nim rozpocząłem ten projekt to zrobiłem sobie kurs z: „instalacji elektrycznych domku jednorodzinnego” (poza tym przyda mi się ta wiedza przy realizacji projektu „Inteligentny dom”).
A pisze o tym dlatego że pracując przy napięciu z sieci 230V AC trzeba być ostrożnym i trochę się znać, to nie jest bezpieczne napięcie 5V DC jakim się bawimy w elektronice hobbystycznej, projektach arduino. Tutaj przez pomyłkę można stracić życie. W elektryce dochodzi jeszcze coś takiego jak przewód bezpieczeństwa czego nie widziałem w projektach hobbystycznych z arduino.
I teraz jak używać tego przewodu. Najpierw trzeba określić jaki jest układ sieci elektrycznej w twojej okolicy a potem na podstawie tego dowiesz się jak, gdzie i dlaczego podpinać ten przewód.
Ok. Po wpisaniu w google np. „rodzaje sieci elektrycznych” można uzyskać taką informacje:
„Wyróżnia się (norma PN-91/E-05009/ 03) pięć podstawowych układów sieci: TN-C, TN-S, TN-C-S, TT i IT. Dotychczas w Polsce stosowany był przede wszystkim układ TN-C z przewodem ochronno-neutralnym PEN”.
W mojej okolicy sądzę, że jest układ sieci typu: TN-C, ponieważ:
- sieć jest starego typu, czyli sprzed 1996 roku, a wtedy stosowano ten układ sieci (dotyczy Polski).
- z sieci do gospodarstwa „idą” cztery przewody (a nie pięć) i niema po stronie odbiornika (czyli mojego domu, gospodarstwa) żadnego uziemienia,
-a na pobliskiej Stacji transformatorowo słupowej widziałem, że jest poprowadzone uziemienie.
Ze strony: elektrykapradnietyka.com (/tnc-tns-tncs-tt-it) dowiedziałem się odnośnie mojego układu, że:
„W układzie tym funkcje ochronne oraz robocze instalacji są realizowane przez ten sam przewód zwany PEN. W układzie tym w wyniku powstania uszkodzenia przewodu PEN, na obudowach metalowych odbiorników pojawia się pełne napięcie fazowe.”
„Dodatkowo układ ten nie pozwala na stosowanie we właściwy sposób nowoczesnych urządzeń zabezpieczających przed porażeniem, jakimi są wyłączniki różnicowoprądowe.”
A więc w moim przypadku trzeba uważać i pilnować się czy na obudowie zasilacza niema prądu (przebicia), poza tym pin ochronny zasilacza powinienem połączyć (zmostkować) z neutralnym.
Ad3.4 Testy i praca wykonana w terenie (montaż, elektryka, filmiki z testów).
Po testach domowych przyszedł czas, aby wypróbować układ w terenie.
Na początek na furtce stodoły potem na jednym skrzydle bramy no i na końcu już na całej bramie (prace podzieliłem na etapy).
Najpierw zacząłem od furtki stodoły, ponieważ: jej uszkodzenie byłoby najmniej kosztowne i łatwe do naprawy, poza tym łatwiej i szybciej coś zamontować i zdemontować w drewnie za pomocą wkrętów przy użyciu wkrętarki niż w metalu spawać, wiercić i skręcać na śruby (jeszcze do tego trzeba mieć odpowiednie narzędzia i umiejętności).
Do zasilania siłownika użyłem akumulatora 12V DC, a do zasilania arduino zasilacza 12V DC który pobierał prąd z sieci elektrycznej za pośrednictwem przedłużacza.
Początkowo zasilałem arduino (część logiczną układu centralki) z baterii 9V, ale dużo czasu schodziło z testami i bateria się dość szybko rozładowywała, dlatego zastosowałem zasilacz.
Testy na drzwiach stodoły.
Jak już wcześniej wspomniałem wystąpił błąd którego w poprzednich testach nie zauważyłem, mianowicie po zamknięciu furtki wcisnąłem ponownie przycisk zamknięcia i przeskoczyło krańcówkę w siłowniku co spowodowało że siłownik zaczął się dalej wkręcać, ale w tym przypadku przewidziałem że do czegoś takiego może dojść i w miejscu rygla zamiast metalowej śruby użyłem drewnianego kołka, który został złamany i zwolnił trzymanie nie dopuszczając do uszkodzenia siłownika ani innego elementu montażu czy furtki (Taki naturalny mechaniczny bezpiecznik). Błąd ten usunąłem poprzez wprowadzenie zmian w kodzie programu arduino.
Kąt mocowania najpierw określiłem mniej więcej za pomocą kalkulatora znalezionego w Internecie, a potem dokładnie wyregulowałem go na uchwycie i krańcówkach siłownika.
Etap II Na jednym skrzydle bramy
Zasilanie najpierw z akumulatora 12 V DC, potem z zasilacza 230V (na wyjściu 12 V DC).
Etap pierwszy zakończony, kąt mniej więcej określony, błędy wyeliminowane, program poprawiony, przycisk bezpieczeństwa działa tak jak chciałem.
Brama (metalowa) jak i ogrodzenie są starego typu, uznałem, że montaż na śruby może osłabić konstrukcie, lepszym rozwiązaniem będzie przyspawanie elementów (z tym niestety sam nie mogłem sobie poradzić, gdyż nie mam takich umiejętności ani sprzętu, może kiedyś zbuduje robota, który będzie to robił za mnie, ale puki co poproszę brata, który spawał zawodowo i ma sprzęt). Wyznaczyłem kąt i miejsca, gdzie przyspawać mocowania, na początek tak tylko cyknąć, żeby dużo niebyło zbędnej roboty, jak trzeba będzie poprawiać.
Potem przykręciłem uchwyt siłownika z siłownikiem do uchwytu montażowego przyspawanego do słupka bramy, przyniosłem pod bramę wcześniej zmontowany układ centralki i doprowadziłem zasilanie, następnie zacząłem testować. Wyszło, że program pracuje dobrze, ale brama się do końca nie otwiera i nie domyka, trzeba jeszcze wyregulować kont. To już zrobiłem bez wycinania i ponownego spawania elementów montażowych, wyregulowałem to na uchwycie siłownika (część łącząca siłownik z elementem montażowym przyspawanym do bramy) i krańcówkach.
Jeszcze trzeba było uwzględnić: A co by było, gdyby zabrakło zasilania na skutek awarii sieci elektrycznej. W tym celu zrobiłem otwieranie awaryjne na kłódki z szyfrem (jeden siłownik jedna kłódka).
Testy na jednym skrzydle bramy.
Etap drugi ukończony, skrzydło bramy się poprawnie otwiera i zamyka, program działa dobrze, czas na etap trzeci, czyli poprawienie spawu (już solidnie) przy pierwszym siłowniku oraz dospawanie elementów montażowych i przymocowanie drugiego siłownika, a potem czas na test.
Na tym etapie wyszedł kolejny błąd mianowicie siłownik drugi nie najlepiej wyregulowałem, w końcowej fazie pracy, gdy brama się już niemal cała otwierała zawadzał minimalnie końcem plastikowej obudowy o słupek (nie widziałem uszkodzenia i założyłem, że dochodzi po prostu idealnie), parł na niego przez około 15 sekund. Można by pomyśleć i co z tego, tylko że jak zrobiłem pomiary poboru energii podczas zamykania i otwierania bramy to wyszło, że w wspomnianej końcowej fazie otwierania układ pobiera ok. 138% mocy maksymalnie dopuszczalnej!! (jeden siłownik tego model co kupiłem może max 4A* 12V = 48W pobierać bezpiecznie, czyli dwa siłowniki ok. 96 W, więc jak mi podczas końcówki wspomnianego pomiaru zamykania wychodziło 135 W to się domyśliłem, że jest coś nie tak dodam, że lampa sygnalizacyjna pobiera 0,14 A * 12V = 1,68 W więc specjalnie nie wpływa na wielkość odczytu, a odczyt w pozostałej fazie otwierania i zamykania mieścił się w przedziale między 42W a 54W, czyli ok. 55% mocy maksymalnej).
Jakbym tego nie zauważył to mogło by z czasem dojść nie tylko do uszkodzenia siłownika, ale też ogrodzenia czy elektroniki. Dlatego dobrze jest przy testowaniu jakiegoś urządzenia określić jego moc maksymalną, użytkową i zrobić pomiar, dzięki temu nie dopuścimy do uszkodzenia od razu ani w przyszłości. Poza tym, jeśli odczyt jest zbliżony w jakiejś fazie pracy do maksymalnego i odbiega od normy to można przypuszczać, że coś jest źle zamocowane, wyregulowane i trzeba poprawić.
Zauważyłem też inny błąd, na który wcześniej nie zwracałem uwagi, w pierwotnym założeniu chciałem, żeby zielona dioda sygnalizowała otwieranie bramy a czerwona jej zamykanie (a jest odwrotnie). W czasie pierwszych testów w domu wysuwanie siłownika kojarzyłem tak że to jest otwieranie (i tak też przypisałem kolor diody do przycisku pilota) a przecież po zamontowaniu na bramie jest odwrotnie, wysuwający się siłownik ją zamyka, a chowający otwiera. Aby to poprawić podłączyłem na odwrót przewodu wychodzące z centralki do siłowników i lamp sygnalizacyjnej, mogłem to też zrobić w inny sposób wprowadzając zmiany w programie pilota, ale pierwszy wariant był szybszy i łatwiejszy do zrealizowania.
Etap IV Roboty ziemne (pod kątem instalacji elektrycznych)
Do tej pory doprowadzałem napięcie do mojej centralki z akumulatora a potem z sieci elektrycznej za pomocą przedłużacza. Ale skoro uchwyty montażowe już przyspawane solidnie, brama się poprawnie otwiera i zamyka, program działa dobrze, więc nadszedł czas, aby umieścić przewody w ziemi. Nim to zrobiłem to najpierw dociąłem je na odpowiednią długość, rozłożyłem na ziemi na trasie i sprawdziłem czy nie są nigdzie uszkodzone następnie sprawdziłem czy dobrze przewodzą. Gdy się upewniłem że wszystko jest w porządku z powrotem je złożyłem i przystąpiłem do wykopania rowu pod przewody, gdy był już ukończony (osiągnął wymaganą głębokość), na dnie rozłożyłem rurę karbowaną (peszel do ziemi) , przyciąłem ją na odpowiednią długość i przeciągnąłem w niej przewody, ponownie sprawdziłem czy dobrze przewodzą , następnie obsypałem je 10cm warstwo piasku i resztę wykopu zakopałem ziemią (starałem się ją przefiltrować aby niebyło w niej kamieni i innych ostrych i twardych przedmiotów które mogły by uszkodzić rurę) i wyrównałem teren.
To co teraz opisałem na tym etapie, nierobi się tak sobie, z jakich bądź materiałów, na głębokość taką, aby się czasem nie zmęczyć. Wszystko ze względów bezpieczeństwa jest opisane w specjalnych normach i wytycznych. I teraz omówię trochę tego tematu.
Przy wyborze przewodów do siłownika należy zwrócić uwagę na ich średnice, stosunek długość do średnicy i rodzaj obudowy (przeznaczenie użycia). Informacji na ten temat jest dużo w Internecie więc nie będę bardziej rozwijał tego tematu. Co do mojego wyboru to szczegółowy opis użytych części i materiałów znajduje sięw punkcie ”3.2 Zakres wiedzy i części..”.
Informacje jak układanie kabli w ziemi możemy znaleźć w normie:
„N SEP-E-004 Elektroenergetyczne i sygnalizacyjne linie kablowe. Projektowanie i budowa” w punkcie trzecim.
W punkcie tym znajdziemy takie informacje jak: Wymagania ogólne układanie kabli bezpośrednio w ziemi i możemy przeczytać, że” Kable należy układać na dnie wykopu, jeżeli grunt jest piaszczysty, w pozostałych przypadkach kable należy układać na warstwie piasku o grubości co najmniej 10 cm. Ułożone kable należy zasypać warstwą piasku o grubości co najmniej 10 cm, następnie warstwą piasku lub rodzimego gruntu, jak również oznaczyć wg 2.7.2.
Folia lub siatka powinna znajdować się nad ułożonym kablem na wysokości nie mniejszej niż 25 cm i nie większej niż 35 cm”
Z kolei w punkcie 3.1.2 tej normy dowiemy się na jaką głębokość układać kabli w ziemi. Znajdziemy to taki zapis:
” Głębokość ułożenia kabli w ziemi, mierzona prostopadle od powierzchni ziemi do górnej powierzchni kabla, powinna wynosić co najmniej:
70 cm - kabli o napięciu znamionowym do 1 kV, ułożonych poza użytkami rolnymi; 50 cm - kabli o napięciu znamionowym do 1 kV, ułożonych pod chodnikami, drogą rowerową, przeznaczonych do oświetlenia ulicznego, do oświetlenia znaków drogowych i sygnalizacji ruchu ulicznego oraz reklam itp. Jeżeli głębokości te nie mogą być zachowane, np. przy wprowadzeniu kabla do budynku, przy skrzyżowaniu lub obejściu urządzeń podziemnych, to dopuszczalne jest ułożenie kabla na mniejszej głębokości, jednak na tym odcinku kabel należy chronić osłoną otaczającą.”
Ja wykopałem rów na głębokość 50cm i umieściłem kable w osłonie (rurze typu peszla). Co do przewodów to ważne jest też, aby używać je zgodnie z przeznaczeniem. Innego typu przewody stosowane są do pomieszczeń a innego do prowadzenia w ziemi. I zgodnie z normą obsypałem je 10 cm warstwą piasku i pod nimi zostawiłem również około 10cm piasku. Dodatkowo zrobiłem jeszcze dokumentacje położenia w postaci zdjęć, punktów odniesienia i odległości ich od rowu.
Ad4. Projekt pilota (wersja użytkowa).
Po zrobieniu pilota na płytce stykowej, przetestowaniu jego działania (Punkt 3.4 Testy w Terenie - Na furtce stodoły) i upewnieniu się, że program już działa dobrze przystąpiłem do zrobienia wersji bardziej nadającej się do użytkowania.
Zacząłem od pomierzenia pilotów które miałem w domu i ustalenia na podstawie tego jakie wymiary mniej więcej musi mieć mój pilot tak żeby dobrze pasował do dłoni.
Następnie kupiłem płytkę drukowaną uniwersalną dwustronną o interesujących mnie wymiarach, zrobiłem szkic połączeń elektronicznych bazując na pilocie wcześniej zrobionym na płytce stykowej i na podstawie tego zlutowałem moduł do pilota.
Moduł ten tak zaprojektowałem, aby płytka arduino nano (klon) i moduł zdalnego sterowania HC-12 (opis tego modułu na tej zakładce: Zdalne-Sterowanie ) niebyły do niego wlutowane na stałe, tylko żeby była możliwość ich wpinania i wyciągania. Zrobiłem to z myślą, że jak będę niezadowolony z tego projektu to je po prostu wyjmę i użyje w innym projekcie.
Później okazało się, że to było dobre rozwiązanie, bo co prawda po zlutowaniu układu w jedność zyskałbym mniejsze wymiary pilota, ale jak bym chciał coś poprawić w oprogramowaniu to nie mógłbym wgrać programu do płytki. Ponieważ po podłączeniu płytki (wpiętej w moduł) do laptopa i próbie wgrania oprogramowania platforma arduino nie wykrywa tego modelu płytki i nie pozwala na przesłanie programu.
Prezentacja modułu pilota (część elektroniczna).
Po zrobieniu modułu kolejną rzeczą było dorobienie zasilania (układu zasilającego) i obudowy.
Jeśli chodzi o zasilanie to na początku wersie pilota zmontowanego na płytce stykowej zasilałem bateriom 9V (4022 6LR61) w czasie testów i było dobrze.
Natomiast przy robieniu wersji użytkowej stwierdziłem, że jeśli dam mniejszą baterię o tym samym napięciu to mogę również zmniejszyć wymiary pilota, jest wprawdzie ryzyko, że będzie za mała wydajność prądowa, ale mam już w domu podobny pilot, którym gaszę światło w pokoju (żyrandol zasilany 230V AC, odbiornik we włączniku przy drzwiach), używam go parę miesięcy i nadal działa.
I to rozwiązanie i założenie okazało się jednak błędem. Mogłem od razu sprawdzić jak długo pilot będzie działał (żywotność baterii), zamiast tego użyłem kilka razy pilota i ucieszyłem się, że działa i od razu przeszedłem do projektowania i druku obudowy, i tym samym dodałem sobie zbędnej roboty. W założeniu nie uwzględniłem natomiast że pilot, którego używam do zapalania światła w pokoju ma zasięg zaledwie parędziesiąt metrów przez co niewiele zużywa energii, moje zdalne sterowanie ma ustawione domyślnie aż 600 m (w przestrzeni otwartej) to też będzie zużywać dużo więcej energii (mogę układ wprowadzić w stan uśpienia, ale pobór nadal będzie spory, przynajmniej tak mi się wydaje, muszę to jeszcze przetestować).
Trzecia wersja pilota została ostatecznie zasilona akumulatorem 9V i ta puki co posłuży mi do testów podczas użytkowania.
A jeśli chodzi o obudowę to zaczym się wykona ją za pomocą drukarki 3d, to trzeba jeszcze wcześniej zrobić projekt graficzny (to też nie jest takie łatwe na początku, trzeba uwzględnić skurcz plastiku, tolerancje wymiarów i to wszystko zgrać). Do tego celu użyłem programu Fusion360.
Projekt graficzny obudowy pilota.
Założenia na przyszłość do pilota.
W pilocie brakuje jeszcze odpowiedniego uszczelnienia, dobrze by było, żeby wilgoć, deszcz czy śnieg się nie dostały do części elektronicznej. No i jeszcze przydało by się zmniejszyć jego wymiary i poprawić ogólnie wygląd zewnętrzny, ale nie wszystko na raz puki co do testów się nadaje, podstawowe założenia zostały osiągnięte.
Ad5. Użytkowanie (spostrzeżenia, ewentualne błędy lub nieprawidłowości do poprawy).
Tak jak już wspomniałem w punkcie 3.3 (analizując pierwszy filmik z kolei tego punktu ) postępując zgodnie z opisem użytkowania (podanym w punkie 2 ) wszystko działa prawidłowo. Natomiast gdy zaczniemy inaczej używać opcji pilota niż jest zalecane mogą wystąpić nieprawidłowości. Takie jak:
Wszystkie te przypadki mógłbym wyeliminować już teraz, wprowadzając zmiany w programie centralki. Ale na razie tego nie zrobię, A dlaczego? Napisałem o tym w punkcie 3.3 pod wspomnianym filmikiem.
Analizując ten projekt można wywnioskować, że jak się dobrze napisze program to można dużo zaoszczędzić (nie potrzeba dodatkowych czujników, część i przewodów, a zakupione wcześniej można przekierować do innego projektu tam, gdzie będą bardziej potrzebne), ale jak się nie uwzględni wszystkich możliwych do przewidzenia wariantów w programie i się ich nie przetestuje to mogą powstać nieprawidłowości. Które można przegapić nawet na gotowym produkcie a wyjdą w czasie użytkowania.
Wspomniane wyżej nieprawidłowości wynikają z tego, że: w przypadku opcji furtki przycisk stop nie zeruje czasu tylko go pauzuje, a w innych przypadkach ponowne wciśnięcie któregoś z pozostałych przycisków nie powoduje zmiany odliczania czasu w funkcji czasowej.
Z powyższych problemów możemy wybrnąć na kilka sposobów. Pierwszy z nich (raz a porządnie) to poprawienie programu centralki i wszystko powinno działać, jak należy. Drugi, jeśli nie chcemy robić poprawek w programie to możemy to zrobić tak że wrazi problemów: sprowadzamy bramę pilotem do pozycji krańcowej i czekamy aż funkcja czasowa dokończy odliczanie i czas się wyzeruje i teraz już powinna działać prawidłowo. Trzecia opcja również bez potrzeby edycji programu. W tym przypadku sprowadzamy bramę, pilotem do pozycji krańcowej i resetujemy centralkę (przyciskiem wbudowanym w arduino które zarządza centralką lub odłączając arduino od układu zasilania i po chwili ponownie je włączając).
Tak sobie teraz myślę, jak widać z powyższego, nawet jak bym nie do końca napisał idealnie program, ponieważ poza tym co planowałem generuje inne zjawiska (nieprawidłowości) o których nie pomyślałem to dzięki temu że wiem co się w nim dzieje (po zestawieniu planowania z rzeczywistością) to mogę opracować i dodać dla użytkownika dodatkowe informacje jak postępować żeby do nieprawidłowości niedoszło i jak z nich ewentualnie wybrnąć gdy one nastąpią (i wtedy te nieprawidłowości nie są już potencjalnymi błędami tylko niewłaściwym użytkowaniem :)).
A druga opcja to taka, że poprawiam program (kod centralki) tak żeby funkcja czasowa była lepiej zsynchronizowana z częścią kodu która się wykonuje po wciśnięciu któregoś z przycisków i wtedy mogę już nie dodawać żadnych uwag do obecnego opisu programu dla użytkownika.
W obu przypadkach nie zostawiam użytkownika z niedopracowaną technologią.
Ad6. Wnioski i przemyślenia (w tym: lepiej kupić czy wykonać samemu taki automat).
Gdybym miał się teraz cofnąć w czasie i doradzić sobie z przeszłości w kwestii, czy lepiej kupić gotową automatykę do bramy czy zrobić samemu, to bym się cofnął (jeśli miałbym taką możliwość :)) i powiedział tak:
Zależy co cię satysfakcjonuje i ile czasu jesteś gotów na to poświęcić.
Jeśli chcesz mieć szybko, względnie tanio (cena proporcjonalna do jakości), nie narobić się, zasięg zdalnego sterowania do 100 m maksymalnie (oferowany w standardowym zestawie, jeśli nie chcesz dopłacać) ci wystarcza, to lepiej sobie taki automat kupić i zlecić komuś instalacje, poza tym, jeśli taki produkt został dopuszczony do sprzedaży to ma certyfikaty i znaki jakości i powinien być bezpieczny w użyciu. Minusem takiego rozwiązania jest brak możliwości dopasowania indywidualnie do Twoich wymagań (brak możliwości rozbudowy, ulepszania, dopisania nowych funkcji w programie).
Natomiast robiąc samemu, jeśli do ceny części wliczysz też czas, który poświęcisz na zrobienie tego wszystkiego to wyjdzie pewniej drożej niż kupując gotowy zestaw, ale gdy się jakiś element np. w centralce popsuje albo zużyje to wymienisz tylko ten element a nie całą centralkę. Gdy będziesz chciał rozbudować układ to możesz zrobić to programowo (dopisać nowe algorytmy w programie), nawet bez dodawania kolejnych części elektronicznych czy mechanicznych. Jeśli będziesz chciał, żeby brama się szybko otwierała i zamykała to tylko podmienisz siłowniki a nie będziesz musiał wymieniać całego zestawu, nie będzie zbędnych śmieci elektronicznych i zaoszczędzisz na naprawach w przyszłości, bo skoro sam to wszystko zrobiłeś to też sam ze wszystkim sobie poradzisz (nie będziesz potrzebował serwisu czy kogokolwiek, będziesz niezależny).
Podsumowanie
Ogólnie można bardzo dużo zrobić tylko trzeba jeszcze wziąć pod uwagę zużycie energii i koszty z tym związane.
Tworząc technologie samemu, nie tylko pokonasz przeszkody, które ci stoją na drodze do celu, ale pozyskasz doświadczenie i nową wiedze która ci się przyda w kolejnych projektach, wyzwaniach. Nie tylko ulepszasz produkt, ale też swoje umiejętności.
To co było kiedyś bardzo trudne dziś się staje łatwe, a to co dziś jest niemożliwe, jutro może być już tylko bardzo trudne.
Pamiętaj, zawsze masz wybór. Pierwszy wybór, który jest (niezależny od czasu, miejsca czy sytuacji) to: Podać się albo walczyć (zrobić coś albo nic nie robić). A kolejne się same utworzą na skutek pierwszego.