Jak dziecko ma mokro to płacze, a jak kwiatek ma sucho... to już po nim . Na szczęście wymyślono konkurs i domowy chwast dostanie implant:
Użyty został mikrokontroler ATMEGA88PA wykonany w technologi PicoPower. Wszystkie układy zewnętrzne, które mogłyby pobierać prąd zostały wyłączone (wzmacniacz operacyjny i dzielnik pomiarowy). Pomiar wilgotności gleby dokonuje się poprzez odczyt napięcia z dzielnika złożonego z rezystora 1M i elektrody wbitej w ziemię. Przesyłanie wyniku jest zrealizowane w oparciu o podczerwień. Każdy z czujników ma swój adres wybierany za pomocą rezystorów 0R. Aby maksymalnie oszczędzać energię procesor przez większość czasu przebywa w stanie PowerDown. Jest to najgłębszy stan uśpienia, a wybudzenie może nastąpić poprzez przerwanie asynchroniczne, przerwanie od watchdoga lub magistralę TWI. Wykorzystane zostały 2 pierwsze opcje. Ponieważ watchdog pracuje prąd wynosi 5uA (bez watchdoga byłoby 0,1uA). Pomiar wilgotności to pomiar względny dlatego źródłem odniesienia jest napięcie zasilania. Jak napięcie zasilania się obniży to napięcie dzielnika również, ale skoro odniesieniem jest napięcie zasilania pomiar pozostanie taki sam. Pierwotnie zakładano pomiar napięcia zasilania z zewnątrz przy wykorzystaniu jako odniesienia napięcia referencyjnego wbudowanego w mikrokontroler, ale to samo można osiągnąć mierząc napięcie referencyjne podczas gdy napięciem odniesienia jest zasilanie. Jak zasilanie spada to pomiar stałego napięcia daje coraz większe wartości. Wejścia adresowe sprawdzane są przy starcie programu, a później w odpowiedniej sekwencji wejścia przekonfigurowywane są na wyjścia, bo inaczej pobierany byłby prąd płynący przez rezystor podciągający i rezystor 0R. Nie można po prostu wyłączyć podciągania, bo nie na wszystkich liniach są rezystory 0R i wejście wisiałoby w powietrzu. Inne sposoby oszczędzania energii (w normalnym trybie pracy) to wyłączanie zbędnych peryferii procesora. Podczas transmisji sygnałów w podczerwieni oprócz odłączania sterowania pinem OC1A wyłączany jest timer. Gdy sygnał jest transmitowany pobór prądu wynosi 10mA, ale trwa to tylko maksymalnie 65ms. W ramce wysyłany jest adres, poziom wilgotności i poziom zasilania. W pliku main.h skonfigurowano układ, aby wysyłał ramkę co godzinę (jednak ze względu na to, ze taktowanie watchdoga nie jest dokładne to jest to orientacyjny czas). Dodatkowo klawiszem można obudzić procesor w każdej chwili. Funkcja main:
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Sygnały z czujników odbierane są przez system zbudowany na ATB1.04 i ATB-GLCD TFT konwerter. Wyświetlacz jest dołączony do portu A i portu C, karta SD do portu B za wyjątkiem pinu PB.0, bo on steruje buzzerem. Wyjście odbiornika podczerwieni dołaczone jest do wejścia przechwytywania na PD.6 i dodatkowo do jednej LED. RTC wykorzystuje wejście przerwania INT1/PD.3, a sygnał IRQ z modułu wyświetlacza dołączony jest do INT0/PD.2. Wygląd interfejsu:
Na panelu głównym jest 8 obrazków z naszymi roślinkami. Pod każdym z nich jest pasek informujący o poziomie wilgotności. Kolor zielony oznacza, że wilgotność jest co najmniej równa ustawionemu progowi, a czerwony, że poniżej. Szary pasek oznacza, że danego dnia nie otrzymano danych np. czujnik jest nieużywany lub bateria padła. Dodatkowo jest wyświetlana aktualna godzina i pasek menu na dole. Kolejny obrazek to okienko, które wysuwa się z dołu po wybraniu opcji 1-4, która pozawala na dokładne zapoznanie się z 4 pierwszymi odczytami. Wyświetlane są kolejno wilgotność gleby, ustawiony poziom ostrzegania, poziom baterii oraz godzina i minuta ostatniego kontaktu. Panel ustawień pozwala zmienić aktualny czas. Wykorzystana została biblioteka Button, ale wymagała modyfikacji do pracy na wielu ekranach. Oprogramowanie opiera się na bibliotece sterownika wyświetlacza SSD1963, która opisana jest w książce Mirosława Kardasia "Język C Pasja programowania mikrokontrolerów 8-bitowych". Dzięki temu pisanie własnej aplikacji na ekranik z dotykiem można porównać do zabawy klockami . I tak to wygląda:
Na początku słychać alarm co jest związane z tym, że jeden czujnik (ten akurat wysyła ramkę co 8 sekund) jest wyjęty z doniczki. Po włożeniu z powrotem sygnał dźwiękowy milknie. Podwyższając próg alarm można uruchomić ponownie. Jeśli godzina jest późna (lub wczesna) co na razie jest ustawione na sztywno to alarm milknie.
Plik main.c. Do poprawy jest oczywiście wstawianie obiektów na ekran
Dołączył(a): 27 maja 2013 Posty: 562 Lokalizacja: Bydgoszcz
Pomógł: 23
No powiem CI że siedzę sobie właśnie i koparę zbieram z ziemi. Nie wiem jakie są czy będą inne prace ale myślę że ciężko będzie komuś z Twoją konkurować. Jak dla mnie rewelacja. Podziwiam i gratuluję bo naprawdę robi wrażenie. No ale zobaczymy co na to szanowna komisja
P.S. Ale w sumie nasunęło mi się jedno pytanie, transmisja na podczerwień, czyli kwiatki tylko w 1 pomieszczeniu w miarę się widzące tak?
Krauser ------> ..... hmm...eeee, no ten tego ..... tzn ... yyy .... SORKI, nie mogę się wysłowić normalnie po obejrzeniu tego co zobaczyłem w pierwszym poście. Język mi się plącze ... ale postaram się zebrać w sobie i napisać to co chciałem powiedzieć.
Jak zacząłem czytać i zobaczyłem tytuł, pierwsze zdjęcia to pomyślałem sobie że tym razem kolejny świetny projekt Krausera chociaż bez wyświetlaczy TFT (bo tak mi się już kojarzyłeś przez swoje poprzednie extra projekty z tymi wyświetlaczami). Więc czytam sobie po kolei o założeniach i funkcjonalności tego projektu, cedząc każde zdanie, czytając wręcz z namaszczeniem i rozkoszując się samym pomysłem konkursowym .... aż tu naglę!!! przesuwam stronę opisu w dół i BĘC! .... do tego wszystkiego wyniki pomiarów na czym ? na wyświetlaczu TFT ! .... oooo żesz kurczątko, ileż to dodało uroku i jakości całemu projektowi.
Krauser skąd ty bierzesz takie fajne pomysły ? chciałbym kiedyś poznać algorytm tego zjawiska Naprawdę zazdroszczę ci tego projektu, ale też podziwiam. WIELKI SZACUN za kawał dobrej roboty. Jestem pod ogromnym wrażeniem a do tego cały ten pomysł jest dla mnie ale mam nadzieję także dla wielu innych osób niesamowitą inspiracją. GRATULACJE.
Wow . Ścieżki "sondowe" będziesz galwanizować?, miedź w środowisku doniczkowym to nie jest zbyt trwałe rozwiązanie. Po za tym nie ma się do czego przyczepić . W końcu to prototyp, same płytki też wypadało by chociaż pokryć jakimś lakierem, liście ogólnie nie lubią jak przepływa przez nie chociażby niewielki prąd .
PS. Krauser, Gem, Set i Mecz . Chociaż mam nadzieję, że to nie będzie mimo wszystko najlepsza praca konkursowa .
Ale w sumie nasunęło mi się jedno pytanie, transmisja na podczerwień, czyli kwiatki tylko w 1 pomieszczeniu w miarę się widzące tak?
Pewnie że tak, ale równie dobrze można użyć moduły radiowe (np. nadajnik RFM68CW), które przez większość czasu byłyby nieaktywne pobierając 0,5uA, a podczas nadawania 17,5mA.
kaamil napisał(a):
Te animacje są obsługiwane jakoś sprzętowo przez wyświetlacz, czy wszystko robi AtMega?
Zdjęcia są ładowane podczas startu programu z karty SD do pamięci wyświetlacza i trwa to kilka sekund. Jest to dokładnie opisane w zielonej książce.
kaamil napisał(a):
W jaki sposób mierzyłeś ten prąd? Jakim prądem sterujesz diodę?
Amperomierzem. Możesz sobie przerobić program, że stale będzie generował nośną. Z obliczeń na oko wychodzi Id = (UBAT - Ud)/Rd = (3V-1,2V)/75R = 24mA dla świecenia ciągłego i połowa z tego przy sterowaniu przez timer w trybie CTC.
mirekk36 napisał(a):
Krauser skąd ty bierzesz takie fajne pomysły ?
Jest w tym trochę twojej winy
W związku z pytaniem jednego z użytkowników zamieszczam widok 2 strony płytki i projekt z Eagle'a. Ścieżki widoczne na stronie bottom to kawałki srebrzanki. Jeden (-) ściśle przylega do PCB, a drugi (+) jest koszyczkiem jak widać na zdjęciu.
Załączniki:
Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.
Nie ogarniam kwiatków więc planuję zrobić coś podobnego, mam z związku z tym kilka pytań. Czy wzmacniacz operacyjny na sondzie jest konieczny? Według noty ATtiny13, "Analog Input Resistance" wynosi 100M. Długo wytrzymuje sonda na baterii CR2032? Zamierzam wykorzystać ATtiny13, aby ogarnąć wszystkie kwiatki w domu muszę zrobić kilkanaście sond więc chcę je uprościć, np jako elektrody pomiarowe użyję drutu miedzianego 3,5mm2.
Czy wzmacniacz operacyjny na sondzie jest konieczny? Według noty ATtiny13, "Analog Input Resistance" wynosi 100M.
Nie jest konieczny, ale wtedy musisz wziąć pod uwagę budowę analogowego układu wejściowego. Duża rezystancja rezystancja wynika z tego, że jest tam kondensator, ale musi on się naładować i w tym czasie rezystancja jest dużo mniejsza i aby napięcie na dzielniku przykładowo 1M i 1M nie spadło to należy włączyć kondensator np. 1uF pomiędzy wejście przetwornika a masę. Możesz też przeprowadzić eksperymenty z wydłużeniem czasu próbkowania.
PROTON napisał(a):
Długo wytrzymuje sonda na baterii CR2032?
Trzeba wyliczyć średni prąd i z pojemności baterii obliczyć czas.
PROTON napisał(a):
Zamierzam wykorzystać ATtiny13, aby ogarnąć wszystkie kwiatki w domu muszę zrobić kilkanaście sond więc chcę je uprościć, np jako elektrody pomiarowe użyję drutu miedzianego 3,5mm2.
To bez znaczenia co użyjesz. Ważne aby był dobry styk gleby z czujnikiem. Rezystancja przy tej samej wilgotności może być różna w zależności od tego co tam jest w doniczce, a różne kwiatki wymagają odpowiedniego podłoża. Trzeba poeksperymentować.
Nie ogarniam kwiatków więc planuję zrobić coś podobnego, mam z związku z tym kilka pytań. Czy wzmacniacz operacyjny na sondzie jest konieczny? Według noty ATtiny13, "Analog Input Resistance" wynosi 100M. Długo wytrzymuje sonda na baterii CR2032? Zamierzam wykorzystać ATtiny13, aby ogarnąć wszystkie kwiatki w domu muszę zrobić kilkanaście sond więc chcę je uprościć, np jako elektrody pomiarowe użyję drutu miedzianego 3,5mm2.
problem w tym ze elektrody musza byc pozacane wykorzystaj pozlaczane elementy np goldpony lub inne podobne rzeczy tylko z prawdziwego zlota a miejsce lutowania zabezpiecz lakierem czy czyms chroniacym przed wilgocia.
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Czy ktoś mógłby mi łopatologicznie wytłumaczyć jak sprawdzany jest ten warunek, chodzi o to co po znaku porównania? W jaki sposób jest sprawdzane/obliczane WAKE_UP_PERIOD
jeśli ( [wartość] ++counter jest większa od [wartości] WAKE_UP_PERIOD(WAKE_UP_MIN))
zaś #define WAKE_UP_PERIOD(min) (min*60/8)
tu masz zdefiniowane jak jest liczone WAKE_UP_PERIOD
czyli min * (razy) 60 / (dzielone przez) 8
_________________ Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]
Dołączył(a): 12 mar 2014 Posty: 266 Lokalizacja: Warszawa
Zbananowany użytkownik
Pomógł: 2
OK, tyle wiem, ale..
1. Co to znaczy/ jak to roziumieć, że w zapisie WAKE_UP_PERIOD(WAKE_UP_MIN), jest w nawiasie WAKE_UP_MIN, jakie tu działanie/sprawdzenie jest wykonywane. 2. Jak rozumieć że w WAKE_UP_PERIOD(min), jest w nawiasie min, a potem jeszcze w nawiasie są te obliczenia
Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość
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