Wpis z mikrobloga

#avr #arduino #atmega #atmel #elektronika

Siema ElektroMirasy jestem w trakcie projektowania "sterownika pokoju", więc może pokaże wam postępy mojej pracy.

Projektem zajmuje się wieczorami ale i nie zawsze jest na to czas i chęć.

Jest to mój w zasadzie pierwszy większy projekt zaraz po początkowej zabawie typu blink led.

Do rzeczy:

~Co już zrobiłem programowo:

Pomiar temperatury, wraz z wyświetlaniem maksymalnej i minimalnej temperatury i logowaniem godzinowej średniej na kartę.

Zegar

Sterownik taśm RGB (będą dwie 5 metrowe)

Sterowanie oświetleniem górnym po PWM

Obsługa sterowania pilotem, klawiszami oraz przez LAN (tu napotkałem problemy, o tym niżej)

Obsługa 8 punktów elektrycznych (4 podwójne gniazdka) po rejestrze przesuwnym

Poznałem podstawowe prawa elektroniki

~Co jeszcze jest w planach

Sterowanie 3 roletami i roletą od projektora

Otwieranie okna siłownikiem

System pozorowanego pobytu w domu poprzez włączanie i gaszenie świateł o losowych godzinach w pewnych zakresach doby.

System budzika - nadajnik IR włączy amplituner i co jakiś czas będzie go pogłaśniał + zwinięcie rolet i uchylenie okna a w okresie zimowym włączeniem światła.

Wymiana wyświetlacza na jakiś graficzny (montaż w miejscu starego łącznika oświetlenia) ewentualnie montaż łącznika typu "inteligentny dom" - jednak to są bardzo drogie rozwiązania.

Jako że mój pokój jest najcieplejszy w całym domu to montaż elektrozaworu na kaloryfer i ustawianie zadanej temperatury.

Postawienie drugiego serwera WWW na routerze z gargoyle do komunikacji z systemem i do zbierania logów, router jest również serwerem mediów i obsługuje 2 kamery webowe.

W dalszych planach jest podpięcie ekspresu do kawy.

Cały system będzie stał na 2-3 Atmegach. Serwer www na ardu/x-medze zajmuje dużo czasu procesora i czytnik IR gubi bądź w ogóle nie czyta poleceń pilota, odczyt z DSB1820 też potrafi trwać 2-3 sekundy czasami nawet i 8 przy 2 czujnikach a ma być ich 4. Więc obsługa serwera i przekaźników oraz oświetlenia będzie na drugiej atmedze. Zapytacie pewnie też dlaczego nie użyje mocniejszego uC zamiast 2 atmeg? Otóż będą one w różnych miejscach w pokoju i mniej ciągnięcia przewodów. Atmega nazwijmy ją przekaźnikowa(bo będzie w skrzynce razem z przekaźnikami) będzie również obsługiwała akumulator motocyklowy który w razie braku zasilania podtrzyma pracę całego systemu, routerów umożliwi włączenia oświetlenia LEDowego.

Myślę że przez zimę powinienem skończyć część programową, bo po zimie planuje remontować pokój i oczywiście położyć całe instalacjec.

Dzisiaj też zaprogramowałem pierwszy raz zewnętrzą atmegę by uwolnić Ardu, jutro zaczne rozbijać kod na 2 atmegi i pobawie się komunikacją między nimi. Poprzez ardu ładowałem wsad do zewnętrznego procka i nie było z tym problemu czyli nie ma sensu kupować USBasp?

Na filmie widać atmegę która będzie tym głównym sterownikiem, ardu podpięte jako programator i zasilacz bo akurat nie miałem na stanie stabilizatora. Dla ciekawskich wielkość binarna szkicu to 19 392 bajtów ale program jak będę dzielił na moduły postaram się coś po optymalizować . Te latające cyferki na ekranie "aktualna" pokazują mi czas do pomiaru temperatury tak tylko do debugowania.

http://www.youtube.com/watch?v=-2WeGpQcDNI

Żałuje że tak późno zainteresowałem się uC bo to przecież świetna zabawa, głupie mruganie ledami dostarcza sporej ilości satysfakcji.

Liczę na konstruktywną krytykę, dobre rady i ciekawe pomysły
  • 13
@cox22: jestem w trakcie przepisywania kodu, czyszczenia i optymalizacji bo panuje tu straszny burdel. Dziele go również na kilka części. Jak go skończę to na pewno udostępnię Ci na PW.
@cox22: no niestety projekt tymczasowo zamarł, na razie zrobiłem sterowanie oświetlenia po 433mhz na 3 punkty świetlne(ten projekt jest już na "gotowo", układy z przekaźnikiem i odbiornikiem 433mhz zmieściły mi się w dotychczasowych puszkach podtynkowych.) Powiedzmy że teraz zbieram części - pisząc kod tylko na sucho ciężko sprawdzić poprawność działania. Chciałbym to wytłumaczyć brakiem czasu ale to tylko moja jesienno-zimowa stagnacja :-). Co do samego programowania to mam za dużo złych
@nawri: Co do czujnika 1wire (ds18b20?) miałem ten sam problem czekanie 750ms strasznie laguje program można to obejść przez wykorzystanie trybu asynchronicznego. W bibliotece dallas przykład waitforconverson2. Z wykorzystaniem tego trybu nie ma odczuwalnego opóźnienia choć i tak myślę że lepszym pomysłem jest przeniesienie wszystkich czujników na oddzielna atmege i porostu wysyłać co sekundę odczyty. Jakich używasz modułów RF?
Tak 18b20. U mnie odczyt temperatur odbywa się co minutę na oddzielnej atmedze, atmega ta działa jako czujnik - tzn główna atmega również co minutę odpytuje i pobiera temperatury nie widzę potrzeby by pobierać temperatury w sekundowej rozdzielczości, planuje na atmedze czujnikowej zrobić pomiar 5 krotny na czujnik by potem odrzucić 2 skrajne temperatury a z 3 pozostałych wyciągnąć średnią arytmetyczną by dawało bardziej miarodajne wyniki. Planuje zrezygnować z wyświetlacza alfanumerycznego -