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



Teraz jest 27 lis 2024, o 09:32


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 
Autor Wiadomość
PostNapisane: 30 wrz 2013, o 00:16 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Jak dziecko ma mokro to płacze, a jak kwiatek ma sucho... to już po nim :cry:. Na szczęście wymyślono konkurs i domowy chwast dostanie implant:
ObrazekObrazek

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:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Plik main.h:
Składnia: [ Pobierz ] [ Ukryj ]
język c
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:

ObrazekObrazekObrazek

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 :D . 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 :oops:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Plik main.h:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Plik button.c:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Plik button.h:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Ekstra funkcje do pliku MK_SSD1963.c (do pliku h należy dodać prototypy):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2013, o 00:30 
Offline
Użytkownik
Avatar użytkownika

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?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2013, o 00:55 
Offline
Użytkownik

Dołączył(a): 27 wrz 2013
Posty: 30
Pomógł: 1

Te animacje są obsługiwane jakoś sprzętowo przez wyświetlacz, czy wszystko robi AtMega?

Wielki plus za propagandę technologii PicoPower :)

Cytuj:
Gdy sygnał jest transmitowany pobór prądu wynosi 10mA, ale trwa to tylko maksymalnie 65ms


W jaki sposób mierzyłeś ten prąd? Jakim prądem sterujesz diodę?

Policzyłem, że zużywając 1mAh możesz wysłać dane 5538,46 razy :) Nieźle.
Daje to 230 dni pracy na 1mAh przy wysyłce danych co godzinę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2013, o 06:20 
Offline
Moderator
Avatar użytkownika

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

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 :lol: 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.

_________________
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: 30 wrz 2013, o 08:04 
Offline
Użytkownik

Dołączył(a): 05 lut 2013
Posty: 302
Pomógł: 19

Nie wiem ktora nagrode wybierzesz, ale nawet jakbys wzial wszystkie to bedzie za malo zeby wynagrodzic TAAAAKI projekt!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2013, o 09:53 

Pomógł: 0

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 ;).



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2013, o 20:40 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Intre napisał(a):
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.
Obrazek


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 paź 2014, o 09:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2013
Posty: 568
Zbananowany użytkownik

Pomógł: 31

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.

_________________
Und schreien

Spring
Erlöse mich
Spring
...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 paź 2014, o 22:04 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

PROTON napisał(a):
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ć.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lut 2015, o 16:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 wrz 2014
Posty: 1530
Lokalizacja: Warszawa
Pomógł: 55

Dopiero teraz zobaczyłem
Mega ciekawy projekt WOW
Gratulacje !!

_________________
--... ...-- - --- -- . -.-



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 paź 2015, o 14:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 16 wrz 2014
Posty: 29
Lokalizacja: Holmestrand - Vestwold - Norway
Pomógł: 0

PROTON napisał(a):
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.

Wysłane z mojego GT-N7100 przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2015, o 20:25 
Offline
Użytkownik

Dołączył(a): 12 mar 2014
Posty: 266
Lokalizacja: Warszawa
Zbananowany użytkownik

Pomógł: 2

Pytanie początkującego. Próbuję analizować kod i nie rozumiem takiego zapisu:

Składnia: [ Pobierz ] [ Ukryj ]
język c
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

I jak rozumieć takie przypisanie:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Wysłane z Nokii 3310



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2015, o 20:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8587
Pomógł: 337

Radziu napisał(a):
if( ++counter > WAKE_UP_PERIOD(WAKE_UP_MIN))


wolne tłumaczenie z c na polski ....

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]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2015, o 20:46 
Offline
Użytkownik

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

_________________
Wysłane z Nokii 3310



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2015, o 21:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 mar 2014
Posty: 333
Lokalizacja: Rybnik
Pomógł: 55

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Tutaj pracę wykonuje preprocesor.

Wygląda to tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

zostaje zamienione na:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

A teraz zgodnie z tym:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Obliczana jest wartość czyli:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

A więc w ostateczności dostajemy coś takiego:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Amatorska stacje meteorologiczna



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2015, o 21:19 
Offline
Użytkownik

Dołączył(a): 12 mar 2014
Posty: 266
Lokalizacja: Warszawa
Zbananowany użytkownik

Pomógł: 2

Czyli poporostu zamiast wyrażenia "WAKE_UP_PERIOD(60)" podstawiane jest obliczenie (60*60/8), co w efekcie daje wartość 450?

_________________
Wysłane z Nokii 3310



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: 16 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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

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