Nie do końca Amatorska Stacja Meteorologiczna – Część 5

Nie do końca Amatorska Stacja Meteorologiczna – Część 5

Na płytce stacji meteo o której wspomniałem w części 2 jest scalak zegara RTC co oznacza Real Time Clock jest to zegar czasu rzeczywistego. Cały problem polega na tym, że ten zegar czasu rzeczywistego którym jest PCF8583T wystawa sygnał 1 sekundy na pinie INT scalaka. Najprostszym sposobem jest podłączenie scalaka do pinu INT mikrokontrolera. Problem w stacji meteo rozpoczął się z braku wolnych pinów INT. Dlatego też scalak PCF8583T w mojej stacji meteo został obsłużony jako zwykły pin wejściowy mikrokontrolera.
2 piny Atmega 32 zostały wykorzystane na potrzeby czujnika prędkości wiatru oraz ilości opadu. Trzeba było znaleźć rozwiązanie na obsłużenie sygnału 1 sekundy z zegara. W internecie można znaleźć wiele przykładów podłączenia RTC do pinu INT mikrokontrolera ja zrobiłem to zupełnie inaczej podłączyłem pin INT układu RTC do pinu PC5.
meteo-rtc-schemat

Zastanawiacie się pewnie jak w takim wypadku w prosty sposób „czytać” sygnał przerwania co 1 sekundę. Tak naprawdę jest to bardzo proste rozwiązanie musimy podejść do tematu w taki sposób jakby zamiast układu RTC był przycisk którego ktoś przyciska w danym momencie co określoną ilość czasu.
W tym celu aby program został napisany poprawnie i się nie blokował zrezygnowałem całkowicie z funkcji _delay_ms(czas); która w niczym nam nie pomaga a wręcz przeszkadza bo w momencie w którym się wykona zablokuje całkowicie program na określoną ilość czasu przez co nie będziemy w stanie liczyć impulsów z czujników meteo.
Nic trudnego w czytaniu stanu pinów wejściowych mikrokontrolera pod warunkiem, że pozbędziemy się efektu drgań styków.  Dlatego też  stworzyłem funkcję o nazwie EDS w której sprawdzam stan flagi oraz pinu mikrokontrolera. Jeżeli wystąpi na pinie wejściowym mikrokontrolera stan wysoki program przechodzi do realizacji funkcji int_sek.

Podzielę się z wami schematem mojej stacji meteo
meteo_schematJeżeli ktoś będzie chciał skonstruować własną stację meteo może wykorzystać powyższy schemat do celów amatorskich. Wykorzystanie schematu do celów komercyjnych jest zabronione.

Rozłożenie elementów na płytce meteo strona górna:
meteo_top_elementy
Rozłożenie elementów na płytce meteo strona dolna:meteo-bottom-elementy
Wykaz potrzebnych komponentów:

1 szt   4.5×6.5mm TACT SWITCH  WPS
1 szt – Dioda zabezpieczająca 3A SMC – D1
1 szt – LED 5MM – LED1
1 szt – Przetwornica LM2576 D2PAK-5 – LM2576
1 szt – Stabilizator LM1117-3.3 SOT223 – LM1117/1
1 szt – Goldpin MA04-1 – SV4
1 szt – Kondensator 470 uF / 16 V CAP_E – C3
1 szt – Kondensator 100uF / 25V CAP_D – C2
1 szt – Kondensator 22pF – 1206 – C21
1 szt – Rezystor 0R 0805 – GND-AGND
1 szt – Rezystor 2K2 0603 – R17
1 szt – Rezystor 180R 0805 – R2
1 szt – Kwarc smt 11.059 MHz –  Q1
1 szt – Kwarc smt 32768Hz  – Q12
1 szt – Gniazdo Molex 3 pin 2.54mm – V MIN 9V / V MAX 14V
1 szt – ATMEGA32 TQFP44 – IC1
1 szt – ATNEL-WIFI232-T – U$2
1 szt – ATB-BTM-222 (opcja zamiennie z WIFI) – RS232-TTL
1 szt – RTC PCF8583T SO08 – IC2
1 szt – Czujnik ciśnienia GY-68 – BMP180
1 szt – Eeprom (opcja) 24C04SN SO-08 – IC5
1 szt – Tranzystor NPN BC817W SOT23-BEC – Q6
1 szt – Cewka 1205 – L1
1 szt – Dławik osiowy 22uH – L2
2 szt – Rezystor 510R 0603 – R15, R19
2 szt – LED 0805 – CON, RDY
2 szt – Goldpin MA06-1 – SV1, SV3
2 szt – Żeński Goldpin 2×4 2.54mm – NRF24L01
2 szt – jumer smt na pcb – SJ1, SJ2
2 szt –  Kondensator 22pF 0805 – C13, C14
2 szt – Gniazdo proste RJ45 – J1, J2
3 szt – Rezystor 10K 0805 – R6, R13, R14
4 szt – Kondensator 100nF 0805 –  C6, C7, C19, C25
4 szt – Tranzystor N-Mosfet BSS138SOT23 – T1, T2, Q2, Q3
6 szt – Rezystor 4k7 0805 – R3, R4, R5, R7, R8, R9
7 szt –  Kondensator 22uF SMC_A – C5, C8, C9, C17, C18, C23, C24
9 szt – Rezystor 10k 0603 – R1, R10, R11, R12, R16, R20, R21, R22, R23
10 szt – Kondensator 100nF 1206 – C1, C4, C10, C11, C12, C15, C16, C20, C22, C26

Kwota powyższych elementów na dzień pisania posta w przypadku zamówienia ich z jednego źródła co czasem bywa ciężkie to 294 zł nie wliczając w tę kwotę produkcji płytek obudowy jak i czujników zainstalowanych po za  płytką główną.

 

Informacje o: majeś

POLECANE POSTY

Komentarze:

  1. Witam.

    Gratuluję projektu.

    Sam też jestem w trakcie pisania programu dla swojej stacji i mam problem (nie tylko ten jeden) w jaki sposób się komunikować z raspberry (Domoticz). Skłaniam się coraz bardziej do Wifi i MQQT , przy czym robię to na okrętkę ponieważ nie znalazłem biblioteki MQQT na AVRy więc AVR po uarcie będzie wysyłał dane a na ESP będzie programik który jak klient wyśle to do Raspberry. Układ Wifi od Mirka służy mi tylko do aktualizacji oprogramowania.

    Druga sprawa to jeśli to nie problem chciałbym zobaczyć kawałek kodu mierzący prędkość wiatru.

     

    1. Jestem w trakcie przygotowania kolejnego postu opisującego czujniki:
      – opad
      – prędkość wiatru
      – kierunek wiatru

      Trochę z tym schodzi gdyż chcę opisać zagadnienie od podszewki a na końcu podać mój sposób na realizację odczytu danych z czujników.
      Proszę jednak jeszcze o chwilę Cierpliwości a na dniach ukarze się kolejny wpis.

      Co do WI-FI ze stajni Atnel.pl to można go użyć nie tylko do aktualizacji firmware, można dodatkowo przekazywać dane do bazy msql. Tak to realizowane jest u mnie.
      Przygotowanie wpisów jest naprawdę czasochłonne a w natłoku innych spraw trwa to trochę dłużej niż zazwyczaj.

      Obserwuj bloga a w kolejnym poście gdzie będę opisywał czujniki, ewentualnie w następnej części 7 opiszę jak realizuję odczyt. Wszystko zależy od tego ile treści uda mi się przekazać w części 6. Nie chcę robić długich obszernych wpisów dlatego został on podzielony na fragmenty.

      Dziękuję za komentarz gdyż jest to bardzo miłe i motywujące. Przynajmniej wiem, że ktoś czyta mojego bloga.

      Pozdrawiam

  2. Witam.

    Używasz przerwania co 1s z zegara RTC, a przecież możesz równie dobrze wykorzystać timery programowe, bądź porównywać czas z samego zegara aby dowiedzieć się czy upłynął określony odcinek czas.u Czy jednak ta 1s jest tak krytyczna czasowo, że musi być tak bardzo dokładnie odmierzana?

     

    A tak poza tym  to kawał dobrej roboty. Wewnątrz domu też masz jakieś odbiorniki, które wyświetlają temperaturę i inne parametry?

    1. Dzięki za kolejny komentarz :) Już odpowiadam:
      Używam przerwania 1 sekundy z zegara RTC do liczenia czasu 1 sekundy na potrzeby prędkości wiatru i nie tylko. Jak dobrze zdajesz sobie sprawę timer programowy nie jest tak dokładny jak pin INT w RTC. Timer nie będzie miał zawsze idealnych czasów co uwarunkowane jest temperaturą otoczenia a skoro stacja jest na zewnątrz – na dworze to czasy timerowe będą się różniły dlatego z pomocą przychodzi tutaj przerwanie od RTC. Czas z zegara RTC oczywiście porównuję aby wiedzieć kiedy dane do bazy mają zostać wysłane.
      1 sekunda jest dość krytyczna aby obliczyć prawidłową prędkość wiatru.

      Tak w domu również mam odbiornik który na bieżąco wyświetla mi dane meteo. W którejś części go również opiszę choć on nie jest jeszcze ukończony działa jako prototyp i spełnia swoja funkcję :)

      Jeżeli będziesz miał kolejne pytania śmiało pisz odpowiem.
      Pozdrawiam

  3. No, no, kawał dobrej roboty.
    Co do wejść INT to polecam przerzucić się na „nowszą” grupę AVR, dajmy na to ATmega328 gdzie każdy pin może być źródłem przerwania zewnętrznego (PCINT). W prawdzie możliwości są troszkę mniejsze od zwykłego wejścia przerwania zewnętrznego INT, a obsługi i konfiguracja troszkę trudniejsza (naprawdę nieznacznie), ale za to możliwości takiego mikroprocesora wiele większe. Niemniej i tak nie pozostaje nic innego jak podziwiać za tak proste podejście do tematu brakującego wejścia przerwania :D

    1. Jakoś tak wyszło, że Atmega32 w wersji SMT była pod ręką i na niej opierałem cały projekt ale faktycznie przy Atmega328 nie było by tego problemu :) Jak widać zawsze można znaleźć rozwiązanie problemu :) Ważne jest podejście do tematu :) Jak coś się da opanować na tym czym się ma pod ręką to po co to zmieniać. Opisując tę stację meteo myślę o jej rozbudowie i przejściem na STM lub ATXMEGA ale to narazie pomysł i plany bo puki 8bit da radę to będę się na nim siedział jak dziecko na nocniku :) hehe :)

      PS dziękuję za komentarz :) jest to bardzo motywujące i wiem, że ktoś czyta moje wypociny a co najważniejsze je rozumie bo to jest pierwszy projekt który opisuję i nie mam planu działania po porostu piszę co mi ślina na język przyniesie.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *