Witam.
Z racji mojego wrodzonego lenistwa postanowiłem zrobić sterownik, dzięki któremu będę mógł zapalać światło za pomocą pilota.
Powstał prototyp, na procesorze ATmega8.
Miał realizować indywidualne sterowanie 8 oczkami w suficie, zapalanie dwóch świetlówek, pilot, i czujnik ruchu. Ba! Chciałem też aby posiadał czujnik dźwięku aby określić czy „coś się dzieje” w pomieszczeniu.
Główne sterowanie miało być w miejscu dawnych włączników światła. Stan świateł miał być pokazany na wyświetlaczu alfanumerycznym, z klawiaturą, wielopoziomowym menu.
Projekt powstał.
Włączanie świateł działało…. I tylko tyle, albo aż tyle.
Największą wadą sterownika było to, że światła włączały się jak chciały. Samoistne włączenie się światła o 2 w nocy było czymś „normalnym”.
Ze sterownika szybko zrezygnowałem, by po roku zacząć projektować nowy, lepszy i co najważniejsze stabilny.
Po około dwóch miesiącach powstał projekt PCB.Czemu tak długo? Postanowiłem aby sterownik komunikował się ze światem zewnętrznym.
Na początku miał to być bluetooth i aplikacja na telefon do sterowania.
Tylko bluetooth ma pewne wady. Mały zasięg i konieczność każdorazowego łączenia się ze sterownikiem.
Przeglądając Internet w poszukiwaniu rozwiązań innych osób co do podobnego sterownika, natrafiłem na projekt sterowania diodą LED przez stronę www. Super! Tylko jak to zrobić… Kod skomplikowany, długi i niezrozumiały. Z ogromną pomocą przyszedł poradnik do modułów Atnel WiFi, a zwłaszcza poradniki o serwerze na AVR i „dawca czasu”. Z pozoru skomplikowane okazało się łatwe.
Powstała płytka, elementy przylutowane. Czas na program.
Było by zbyt pięknie, żeby wszystko działało. Pierwsze linijki programu i nie działa sterowanie przekaźnikiem… Sprawdzam rejestry, bity, wszystko dobrze ustawione, zwarć na płytce nie ma. Miernik w dłoń, na wyjściu procesora 5V, a na przekaźniku 0. Gdzie problem? Zła biblioteka w eagle…Wszystkie tranzystory wlutowane odwrotnie… Po przelutowaniu – sukces – działa! Teraz tylko pisanie sterowników do: pamięci, odbiornika RC5, bufory cykliczne i z górki...
Największy problem stanowił moduł WiFi. Nagłówek http obieram, w konsoli pięknie wydrukowany, dane wysyłam, a na komputerze nic – strona ładuje się w nieskończoność.
Po kilku dniach problemem okazało się brak zamykania połączenia TCP przez moduł. A raczej zamykania go aż po 300 sekundach.
Zmiana ustawień na najniższą możliwą wartość – czyli zamykanie po sekundzie rozwiązała problem.
Kod oferujący stronę www, pobieranie czasu z NTP, obsługę kontaktów po RS232, zapis logów do zewnętrznej pamięci RAM (23LCV1024) powstawał przez 2 miesiące. Dzień w dzień po 4-8 godzin. Setki kompilacji, męczenie ATmegi128 ciągłymi przeflashowaniami – koniec początku. Sterownik nie oferujący zbyt wiele powstał.
Z czasem powstała stacja pogody oferująca wykres temperatury dziennej i rocznej, maksymalnej i minimalnej, wewnątrz, na zewnątrz i grzejnika.
Kolejna zakładka to wykres miesięczny odwiedzin strony, wykrycia ruchu, użycia włączników, pilota i otwarcia drzwi.
Ostatnia zakładka to ustawienia.Tu poświęciłem najwięcej czasu.
Oferuje akcje dla wykrycia ruchu takie jak:
- włączenie lampki nocnej,
- światła w określonych godzinach na określony czas.
Powstał pomysł aby sterować roletą,
- sterowana automatycznie gdy włączy, wyłączy się światło w określonych godzinach lub ręcznie.
Wybranie zapalonych oczek gdy światło zapalone i przygaszone.
Automatyczne przygaszanie lamp w określonych godzinach.
Opcja wyboru zapisu szczegółowych logów, takich jak wykrycie ruchu, użycie kontaktów, pilota, nowa maksymalna lub minimalna temperatura.
Znalazłem też stary zegar który kiedyś próbowałem zrobić, lecz nie działał.
Kod napisany, podłączony do sterownika przez wyjście Tx do Rx w zegarze.
Komunikacja jednostronna, ponieważ w drugą stronę nadają kontakty, a na RS485 nie było już możliwości.
Zegar posiada możliwość wyboru jasności, w tym automatycznej – przez fotorezystor.
Nad oknem zaistniał pasek LED, sterowany automatycznie.
Posiada 3 tryby jasności:
- Maksymalny wtedy gdy roleta jest opuszczona i zapalone światło,
- minimalny gdy światła są przygaszone i w określonych godzinach,
- możliwość ręcznego sterowania nim.
Ostatnia pozycja to automatyczne wyłącznie światła w momencie gdy nie wykryto ruchu przez dłużej niż 1-255 minut.
Pilot: - pracuje na ATtiny24
- ciągle w trybie powerdown, wybudzany przerwaniami od przycisków.
Posiada przyciski do:
- włączenia dwóch świetlówek,
- światła głównego,
- sterowania roletą,
- przyciemnianie światła,
- pasek LED.
Aplikacja mobilna: - powstała w Android Studio,
- oferuje sterowanie światłami, podgląd temperatur, logów.
Projekt zaczynałem z bardzo małą wiedzą na temat programowania, kończę – jak na 17 latka, uważam, że z bardzo dużą.
Rzuciłem się na głęboką wodę, lecz uważam że było warto.
Dzięki temu poznałem w sposób praktyczny język C, HTML, CSS, Javę i zapytania http.
O sterowniku nie napisałem wszystkiego, droga do jego powstania była ciężka.
Byłbym wdzięczy o wyrażenie swojej opinii, pytań, co nie tak, co poprawić, co dodać.
Sterownik oczywiście nie jest dokończony. Z plątaniną kabli trzeba zrobić porządek
Zdjęcia sterownika: