Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 27 lis 2024, o 03:22


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
Autor Wiadomość
PostNapisane: 10 sty 2016, o 02:31 
Offline
Nowy

Dołączył(a): 11 sty 2015
Posty: 5
Pomógł: 0

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.
Obrazek
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ł.
Obrazek

Z czasem powstała stacja pogody oferująca wykres temperatury dziennej i rocznej, maksymalnej i minimalnej, wewnątrz, na zewnątrz i grzejnika.
Obrazek

Kolejna zakładka to wykres miesięczny odwiedzin strony, wykrycia ruchu, użycia włączników, pilota i otwarcia drzwi.
Obrazek

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.
Obrazek

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.
Obrazek

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.
ObrazekObrazekObrazekObrazekObrazekObrazek

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.
Obrazek

Aplikacja mobilna:
- powstała w Android Studio,
- oferuje sterowanie światłami, podgląd temperatur, logów.
ObrazekObrazekObrazek
ObrazekObrazekObrazek


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:
ObrazekObrazek



Ostatnio edytowano 10 sty 2016, o 20:49 przez tomekcdr, łącznie edytowano 4 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2016, o 08:31 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27313
Lokalizacja: Szczecin
Pomógł: 1041

Widać tutaj jakiś OGROMNY kawał roboty ;) ..... mnóstwo oprogramowania - aż miło popatrzeć .... ale

- przydałyby się na pewno jakieś lepsze fotki chociażby samego zegara - bo te są kompletnie bez ostrości i nic nie widać aż szkoda,
- także fotki w dzień jak działa zegar

taka też porada - jak robisz opis to troszkę go czasem podziel na fragmenty, żeby się lepiej czytało ... a w ramach tego podziału pod każdym blokiem właśnie umieść odpowiednie zdjęcia .... wtedy lepiej będzie się czytało wszystko

Generalnie jeśli chodzi o napisane programy ;) to widać DUŻO pracy - w czym je pisałeś na telefon ? w Javie ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2016, o 10:03 
Offline
Nowy

Dołączył(a): 11 sty 2015
Posty: 5
Pomógł: 0

Ze zrobieniem zdjęć zegara mam o tyle problem, że jako panel przedni ma matową plexe i przez to aparat nie chce złapać ostrości.
Zdejmę ją i dodam zdjęcia jego wnętrza.

Opis poprawiony, mam nadzieję, że już się lepiej czyta :)

Tak, oprogramowanie na telefon napisane w Javie, w Android Studio. Oprogramowanie na AVR w C.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2016, o 12:44 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27313
Lokalizacja: Szczecin
Pomógł: 1041

tomekcdr napisał(a):
Opis poprawiony, mam nadzieję, że już się lepiej czyta

ZDECYDOWANIE lepiej ;)

Cytuj:
Ze zrobieniem zdjęć zegara mam o tyle problem, że jako panel przedni ma matową plexe i przez to aparat nie chce złapać ostrości.

To przyklej na środku obudowy małą czarną i białą kropeczkę, albo nawet rąbek białej kartki wyciętej nożyczkami - wielkości paznokcia ... i już ostrość załapie ;)

Cytuj:
Tak, oprogramowanie na telefon napisane w Javie, w Android Studio

No to szacuneczek ... wyobrażam już sobie ile to było pracy

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2016, o 16:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Fajny projekt aż miło się patrzy na takie rozbudowane projekty.

Moją uwagę skupiłem na sterowaniu roletą. Możesz coś więcej napisać na ten temat ?

Namazane ze smarta.

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2016, o 21:14 
Offline
Nowy

Dołączył(a): 11 sty 2015
Posty: 5
Pomógł: 0

Dodałem nowe obrazki zegara.

A co do rolety.
Od oryginalnego mechanizmu wziąłem to co wchodziło do rury, zalałem klejem dwuskładnikowym. Jak klej wysechł wywierciłem otwór na środku.
Zębatki wzięte ze starej drukarki, napędzane silnikiem krokowym. Silnika nie polecam - cicho to on nie pracuje, lepszy jest zwykły z przekładnią.
Driver jest zrobiony na ATmega8, L298 i LM317 jako źródło prądowe dla silnika ustawione na ok 1A.
Sterowanie odbywa się jedną linią przez ściągnięcie do masy.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Tak wiem, z delay się nie powinno korzystać. ATmega tylko tyle ma do roboty w pętli, reszta na przerwaniach więc nie zaszkodzi za bardzo. Działa to bezbłędnie, to niech działa.

Prędkość silnika jest odczytywana z potencjometru i wpisywana do rejestru TCNT0, którym to timer zmienia kroki.

Roleta jeździ po żyłce, która przytrzymuje ją blisko ściany aby magnes mógł załączyć górny lub dolny kontaktron ukryty w ścianie informujący o położeniu.

Sterowanie nią odbywa się przez stronę, aplikację, pilotem, włącznikiem na ścianie lub automatycznie.

I to chyba tyle :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2016, o 21:18 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27313
Lokalizacja: Szczecin
Pomógł: 1041

Ok a powiedz dlaczego umieściłeś to w dziale język C dla AVR - zamiast w dziale DIY projekty sprzętowe ? na forum ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2016, o 21:20 
Offline
Nowy

Dołączył(a): 11 sty 2015
Posty: 5
Pomógł: 0

Teraz zauważyłem ten dział, a szukałem go :)
Proszę przenieść temat



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2016, o 18:42 
Offline
Użytkownik

Dołączył(a): 02 lut 2014
Posty: 60
Pomógł: 1

Witam
A mógłbyś napisać coś więcej o trudach tworzenia apki pod Androida?
Nie napisałeś o trybie komunikacji ale domyślam się, ze UDP.
Byłbym wdzięczny za info o konfiguracji połączenia i wysyłaniu/odbieraniu pakietów w Javie(Android Studio).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2016, o 19:07 
Offline
Użytkownik

Dołączył(a): 20 lip 2015
Posty: 83
Pomógł: 6

Uwaga będę szeryfował :D

Kolego masz błąd ortograficzny w sofcie :-) odśwież pisze się przez ż :P

Oczywiście czepiam się żartobliwie, nie miej do mnie pretensji :P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2016, o 22:10 
Offline
Nowy

Dołączył(a): 11 sty 2015
Posty: 5
Pomógł: 0

volt_1 napisał(a):
A mógłbyś napisać coś więcej o trudach tworzenia apki pod Androida?

Komunikacja niestety jest przez TCP. Podyktowane to było tym, że jest strona www i moduł aby obsłużyć stronę musi pracować w trybie TCP.
Wadą TCP oczywiście jest to, że moduł kończy połączenie minimalnie po 1s, a nie wtedy kiedy kończą się dane. Chyba, że się da zamknąć połączenie wcześniej a ja o tym nie wiem.
Pakiet są wysyłanie i odbierane przez HTTP z wykorzystaniem biblioteki apache.
Aplikacja przy starcie wchodzi na stronę "IP:PORT/apk/now?" i dostaje informację zwrotną:
Kod:
+ok/apk/now+lmp=1+sw1=0+sw2=0+rol=0+lck=0+dim=1+ktk=0!const!www=;;;29+rch=;;448+wl=;;;15+pil=;;;;0+az=255+dz=;;;21+led=;;0;;;0;;;0+t1=;21.9*C+t2=;;4.0*C+t3=;45.5*C+t4=;20.8*Cdrz_s=0time=;21:;58:;35+;31.;;1.;2016+nlmp=0!end

Tak samo aplikacja wysyła informację o stanie świateł odpowiednim linkiem i dostaje informację taką samą jak powyżej. Oczywiście komunikacja po UDP jest moim zdaniem najlepsza, lecz tu nad wyborem postanowiła strona WWW.
Gdy telefon jest połączony z siecią WiFi o ustalonej nazwie korzysta z wewnętrznego adresu IP, gdy z inną - z zewnętrznego.

marmur napisał(a):
Kolego masz błąd ortograficzny w sofcie :-) odśwież pisze się przez ż :P

Wiem, poprawione już dawno :D

majster napisał(a):
Jak już wytykamy :) to fajny ficzer aby żarówka po prawej stronie zmieniała swoją jasność raz z postępem paska :) od jasności :)
Dodatkowo po wejściu w Info i powrocie do Ustawień nadal widać dolną część panelu od Info

Nie, rozumiem. Nie ma żadnego paska do regulowania jasności.
Aplikacja czy strona? Nie widzę tego błędu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2016, o 22:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Sorka usunąłem post bo pomyliłem tematy

Wysłane z mojego Tab2A7-10F przy użyciu Tapatalka

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lut 2016, o 00:37 
Offline
Użytkownik

Dołączył(a): 20 lip 2015
Posty: 83
Pomógł: 6

tomekcdr napisał(a):
volt_1 napisał(a):
A mógłbyś napisać coś więcej o trudach tworzenia apki pod Androida?

Komunikacja niestety jest przez TCP. Podyktowane to było tym, że jest strona www i moduł aby obsłużyć stronę musi pracować w trybie TCP.
Wadą TCP oczywiście jest to, że moduł kończy połączenie minimalnie po 1s, a nie wtedy kiedy kończą się dane. .


Po tcp chulaja websockety :) idealna technologia dla Ciebie. Problem tylko jest taki ze pewnie musiałbyś napisać to sam od zera bo bibliotek pod avr prawie nie ma.

Ewentualnie jeżeli strona stoi gdzieś na serwerze to php ma możliwość komunikacji przy użyciu udp



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO