Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

mETHeo - domowa stacja meteorologiczna z serwerem www.

dir3ctor 08 Maj 2009 20:37 18882 23
  • mETHeo - domowa stacja meteorologiczna z serwerem www.

    Witam wszystkich.

    Pragne przedstawic wam projekcik za ktory zabieralem sie ponad rok czasu, az wreszcie przyszla pora na jego uruchomienie. Jest to prosciutka stacja meteorologiczna zbudowana na mikroprocesorze Microchipa PIC18F67J60. Zaleta tego klocka jest ilosc dostepnej pamieci, mnogosc pinow I/O oraz fakt ze posiada wbudowany kontroler PHY oraz MAC (warstwa fizyczna polaczenia TCP/IP). Niewatpliwa wada jest rodzaj pamieci mikrokontrolera, ktorej budowa zostala przewidziana na 100 cykli zapisu (tak twierdzi nota katalogowa, jednak podczas tworzenia projektu na pewno przekroczylem te ilosc i jak na razie nie widze zadnych problemow).

    Projekt zasilany jest poprzez 2 regulatory napiecia: 5V dla LCD i czujnika cisnienia, oraz 3.3V dla calej reszty. Radiator znajduje sie tylko na regulatorze 3.3V z tego wzgledu ze sam mikroprocesor podczas pracy w sieci potrafi polknac ponad 300mA pradu.

    Baze oprogramowania stanowi przerobiony przez Jorge Amodio stos TCP/IP Microchipa w wersji 3.75. Obecnie Microchip wypuscil wersje 5.0, jednak zajmuje ona znacznie wiecej pamieci, a opcje tam zawarte nie byly mi do niczego potrzebne.

    Mikrokontroler pobiera dane z czujnikow:
    - SHT11 - wilgotnosc i temperatura
    - MPX6115A - cisnienie atmosferyczne
    - 4 x DS18B20 - temperatura (docelowo pomiary na zewnatrz i w roznych pomieszczeniach w domu)
    Dodatkowo na podstawie temperatury zewnetrznej oraz wilgotnosci powietrza liczony jest punkt rosy.

    Wszystkie te informacje prezentowane sa na stronie internetowej, ktora hostowana jest przez mikroprocesor:
    stara wersja:
    mETHeo - domowa stacja meteorologiczna z serwerem www.
    nowa wersja:
    mETHeo - domowa stacja meteorologiczna z serwerem www.

    Nowa wersja www parsuje dane ktore znajduja se w pliku xml. Struktura pliku jest nastepujaca:




    Code:

    <?xml version="1.0" ?>
    <pomiary data="05/10/09" czas="20:57" rx="749" tx="483">
       <czujnik id="0">
          <nazwa>DS18B20_1</nazwa>
          <wartosc>19.31</wartosc>
       </czujnik>
       <czujnik id="1">
          <nazwa>DS18B20_2</nazwa>
          <wartosc>--.--</wartosc>
       </czujnik>
       <czujnik id="2">
          <nazwa>DS18B20_3</nazwa>
          <wartosc>--.--</wartosc>
       </czujnik>
       <czujnik id="3">
          <nazwa>DS18B20_4</nazwa>
          <wartosc>--.--</wartosc>
       </czujnik>
       <czujnik id="4">
          <nazwa>SHT-11 Temp</nazwa>
          <wartosc>20.97</wartosc>
       </czujnik>   
       <czujnik id="5">
          <nazwa>SHT-11 Humi</nazwa>
          <wartosc>41.94</wartosc>
       </czujnik>   
       <czujnik id="6">
          <nazwa>MPX6115A Pres [hPa]</nazwa>
          <wartosc>1010.5</wartosc>
       </czujnik>   
       <czujnik id="7">
          <nazwa>Punkt rosy</nazwa>
          <wartosc>6.07</wartosc>
       </czujnik>
    </pomiary>

    Skad ta zmiana? W przyszlosci zamierzam zrezygnowac z hostowania calej strony www na mikroprocesorze. Strona bedzie na zewnetrznym serwerze, a jedynie dane z pliku xml bedzie pobierala z pamieci mikroprocesora.


    Dodatkowo, na wyswietlaczu LCD 4x20 znakow wyswietla sie aktualna wersja oprogramowania, aktualna godzina oraz data (synchronizowane z serwera SNTP), ilosc odebranych i wyslanych ramek danych RX i TX, oraz oczywiscie wszystkie mierzone wartosci. Rotacje danych na LCD przedstawia zalaczony filmik:



    Co 10 minut pomiary sa zapisywane w pliku tekstowym na karcie SD. Format zapisu jest nastepujacy:
    Code:

    czas  data ; cisnienie ; ds_1_temp ;  ds_2_temp ;  ds_3_temp ;  ds_4_temp ; sht_11_wilg ; sht11_temp ; pkt_rosy
    22:20 07/05/09   ; 1004.1 ; 9.81   ; --.--  ; --.--  ; 41.88  ; 37.19  ; 23.18  ; -4.10
    22:30 07/05/09   ; 1004.6 ; 9.88   ; --.--  ; --.--  ; 42.19  ; 37.51  ; 22.98  ; -3.98
    22:40 07/05/09   ; 1004.3 ; 10.00  ; --.--  ; --.--  ; 43.44  ; 38.16  ; 22.65  ; -3.64

    Karte w kazdej chwili mozna wyciagnac i odczytac na komputerze - forma zapisu danych (CSV) ma ulatwic import do Excela.

    Na dzien dzisiejszy nie zaimplementowalem jeszcze obslugi RS232, jednak na plytce przewidziane jest miejsce na odpowiednie gniazdo oraz kostke max232. Wyprowadzilem takze 4 wolne piny mikroprocesora "tak na wszelki wypadek". W przyszlosci planuje dodac oprzyrzadowanie mierzace predkosc i kierunek wiatru. Co mnie przed tym wstrzymuje? Koszty czujnikow indukcyjnych ;-) Nie bede teraz pisal dlaczego akurat indukcyjne chce wykorzystac - nie czas i miejsce na to.

    Nie ustrzeglem sie takze bledow podczas projektowania plytki. W jedym miejscu zamienilem we+ i we- wzmacniacza operacyjnego. Na szczescie dalo sie wprowadzic korekte za pomoca przewodow. Wersja w zalaczonych pdf-ach jest juz poprawiona. Czujniki wilgotnosci i cisnienia w mojej realizacji sa umieszczone na spodniej warstwie PCB, jednak w najnowszej wersji PCB beda one na gornej warstwie plytki. Dodatkowo chce takze wyprowadzic zlacze gold-pin z sygnalami do SHT-11, tak aby uzytkownik mogl sam zdecydowac czy chce wlutowac czujnik w plytke, czy umiescic go na przewodzie (np. za oknem).

    Jesli juz pisze o bledach, to sposob dostosowania napiecia wyjsciowego z MPX-a i podanie go na mikroprocesor takze wymaga glebszego przemyslenia. Obecnie pomiar troszke plywa (prawdopodobnie przez potencjometry).

    Wiecej zdjec:
    mETHeo - domowa stacja meteorologiczna z serwerem www.
    mETHeo - domowa stacja meteorologiczna z serwerem www.
    mETHeo - domowa stacja meteorologiczna z serwerem www.
    wczesna wersja z malym lcd:
    mETHeo - domowa stacja meteorologiczna z serwerem www.

    Jako ze dzis sobota (16 maj) zaczalem pracowac nad obudowa. Wpadla w moje rece puszka po kosmetykach firmy, ktora z nazwy jest tylko dla heterykow (hyhy). Wycialem dziure, dopasowalem ramke z laminatu 2mm, od spodu, aby odpowiednio wpasowac wyswietlacz zostana wklejone dystansy-podkladki widoczne na 2 ostatnich zdjeciach. Musze jeszcze wyciac otwor na gniazda i zrobic z laminatu cos w rodzaju "sledzia" (jak na kartach rozszerzen w PC).

    mETHeo - domowa stacja meteorologiczna z serwerem www.
    mETHeo - domowa stacja meteorologiczna z serwerem www.
    mETHeo - domowa stacja meteorologiczna z serwerem www.
    mETHeo - domowa stacja meteorologiczna z serwerem www.
    mETHeo - domowa stacja meteorologiczna z serwerem www.



    KOSZTORYS:
    - MPX6115A - sample - 0zl
    - SHT-11 - sample - 0zl
    - ds18b20 - 2x5zl - 10zl
    - 2 x PCB (druga na wszelki wypadek) - 90zl
    - LCD - 42zl
    - CPU - 36zl
    - RJ45 MAG-JACK - 12zl
    - drobnica - nie mam pojecia, czesc mialem, czesc kupowalem
    - SD 2GB - mialem

    Podsumowujac bedzie ponad 200zl

    Czasowo tez nie wyglada to tak strasznie... chociaz rozwleklo sie okrutnie. 1 dzien na projektowanie PCB, potem czekanie na plytki, kilka godzin lutowania i 4-5 dni rzezbienia w kodzie. Mysle ze gdyby zebrac wszystko w calosc to w tydzien, moze poltora bym sie uwinal (nie chodzac do pracy ;-).


    BTW.
    Prosze nie czepiac sie braku polskich liter na LCD, czy * zamiast symbola stopni. To sa zmiany kosmetyczne, na ktore jeszcze przyjdzie pora (jak i na wiele innych). Tak, wiem... w roznych miejscach sa rozne wersje oprogramowania podane. To tez sie dopiesci ;-)

    Zrodel oraz hex-a brak - wstrzymam sie z publikacja do wersji finalnej.


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • #2 08 Maj 2009 23:01
    bishofek
    Poziom 18  

    Projekt bardzo esetyczny i przydatny lecz nie łatwiej byłoby na stronie www zamieścić zamiast "czujnik ds18b20_1" np. Czujnik zewnętrzny_1 ?

  • #3 09 Maj 2009 00:44
    krystian08
    Poziom 16  

    Dobra robota :) na pewno dużo pracy cię to kosztowało. Ciekawi mnie jednak, czy rozmieszczenie czujników DS18B20 po różnych pomieszczeniach, na stosunkowo długich przewodach nie sfałszuje pomiarów temperatur. PCB wykonałeś sam czy zleciłeś to specjalistom?
    Pozdrawiam i życzę kolejnych udanych konstrukcji, i równie ciekawych pomysłów jak ten :)

  • #4 09 Maj 2009 09:46
    dir3ctor
    Poziom 27  

    bishofek: docelowo planuje dodac opisy po 10 znakow do kazdego z czujnikow, ktore beda przechowywane w pamieci procka, a ich edycja nastepowac bedzie poprzez wypelnienie formularzy na stronie www.

    krystian08: plytke zlecilem do wykonania pewnej katowickiej firmie. Ja jestem zbyt nerwowy, a przy rastrze 0.5mm watpie zeby mi wyszla za 1 razem. Co do dlugosci kabla do DS-ow: czujniki podaja temperature cyfrowo, wiec jesli byly by jakies zaklocenia to zamiast temperatury otrzymal bys smieci. Wystarczy ze sprawdzasz w kodzie sume kontrolna CRC i nie ma prawa nie dzialac.

  • #5 09 Maj 2009 11:59
    fibu
    Poziom 11  

    Widzę że zastosowałeś podobne rozwiązanie jak tutaj:
    http://davidbray.org/onewire/barometer.html
    Też korzystam z tego rozwiązania w pomiarze ciśnienia jednak jestem w fazie testów. Jeszcze nie mogę powiedzieć czy pomiar pływa. Mam pytanie odnośnie przetwornika ac: jaką rozdzielczość uzyskujesz, jakie masz napięcie odniesienia, bo z tego co widzę to nie masz zewnętrznego wiec korzystasz z wewnętrznego, a nie znam jeszcze pic'ów. Ja u siebie mam zamiar zastosować potencjometry precyzyjne, myśle ze nie powinno być dużego błędu z tego powodu ;) Podoba mi się wszechstronność twojej stacji, karta pamięci, www i jeszcze rs485 ;] ekstra projekcik
    BTW: ekstra ta płytka, gdzie ty ją tak tanio zrobiłeś ;p

  • #6 09 Maj 2009 12:08
    dir3ctor
    Poziom 27  

    fibu: rozdzielczosc pomiaru jest, powiedzmy wystarczajaca, poniewaz dzieki temu analogowemu ukladowi dopasowania tak naprawde przetwornik pracuje w pelnym zakresie (0V dla 950hPa, 3,3V dla 1100hPa). Napiecie odniesienia mam wziete z napiecia zasilania, jednak nie jest to dobry pomysl. Nalezalo by zastosowac jakas diode referencyjna, jednak pomysle o tym w nastepnej wersji (v2.0 bedzie z wykorzystaniem modulu wifi ZeroG - aktualnie czekam na paczke :).

    Plytki zamowilem w katowickim Merkarze. Czekalem na nie jakies 3 tygodnie. Niestety przy zamowieniach detalicznych chlopaki nie staraja sie tak jak w hurtowych. Na kazdej z dwoch plytek dopatrzylem sie przecinanych zwarc, poprawianych przelotek itd. Zostalem jednak zapewniony ze plytki przetestowano elektrycznie i wszystko jest ok - gdyby nie bylo zaoferowano ponowne wykonanie zlecenia.

  • #7 09 Maj 2009 12:52
    djkomprez
    Poziom 21  

    dir3ctor - jak widzę zrobiłeś troszkę inaczej ode mnie
    pomiar ciśnienia i być może tak niskie napięcie powoduje Ci większy błąd pomiarowy i pływanie.
    Ja zastosowałem inny układ który skalibrowałem tak , że dla 0V - 960hPa , dla 5V - 1050hPa
    I pomiary są powiedzmy że stabilne, dokładność to 0.4hPa
    oczywiście zawężając zakres pomiarowy zwiększamy dokładność :) Tu jest opisywany układ prze zemnie.

    https://www.elektroda.pl/rtvforum/viewtopic.php?t=1202019&highlight=
    na samym dole :)

  • #8 09 Maj 2009 12:56
    dir3ctor
    Poziom 27  

    W sumie to masz racje... tak teraz zerkam na wikipedie i rekordowe cisniena zanotowane w Polsce to 962 hPa i 1054hPa. Kupie potencjometry precyzyjne i wtedy bede sie bawil w kalibracje.

  • #9 11 Maj 2009 20:44
    finch
    Poziom 20  

    Witam, projekt ambitny i ciekawy. Mam pytanie odnośnie SHT11, skąd wytrzasnąłeś sample tych czujników?

  • #10 11 Maj 2009 21:28
    Svavo
    Poziom 23  

    finch napisał:
    Witam, projekt ambitny i ciekawy. Mam pytanie odnośnie SHT11, skąd wytrzasnąłeś sample tych czujników?


    Dołączam się do pytania i dołączam takież o MPX6115A... A konstrukcja świetna - bardzo elastyczna, estetycznie wykonana - moje gratulacje!

  • #11 12 Maj 2009 08:00
    byrrt
    Poziom 21  

    I tego właśnie nie rozumiem ;) Mój posty odnośnie podobnej pracy zostały 2krotnie usunięte a tu jak to w Polsce pytają się jak zdobyć za darmo układ (a to chyba nie wnosi nic do dyskusji) i jakoś posty są ;) Śmieszne..

    A dla osób pytających >> google.pl lub strony producentów, tak ciężko po prostu samemu poszukać?

  • #12 12 Maj 2009 09:41
    dir3ctor
    Poziom 27  

    ;-)
    Sample zamowione na stronach producentow, czyli Sensiriona i Freescale-a. Obecnie Sensirion nie wysyla juz probek osobom prywatnym, nie wiem jak sprawa z Freescale wyglada.

    Chcac kupowac te uklady trzeba sie liczyc z niemalymi kosztami. SHT trafiaja sie na allegro po 35zl, natomiast MPX to wydatek okolo 80zl

  • #13 01 Cze 2009 21:09
    dir3ctor
    Poziom 27  

    Witam wszystkich ponownie. Pod adresem http://direk.info/mETHeo/ umieszczona jest strona internetowa z pogodynka, ktora pobiera dane bezposrednio z modulu stacji meteo pracujacej w mojej domowej sieci komputerowej. Dane w formie xml dostepne sa tutaj: http://direk.info/mETHeo/dane.php
    Prosze nie zrazac sie dlugim czasem ladowania wynikow pomiarow - moje domowe lacze to "bidna" neostrada, a sama stacja meteo moze obsluzyc max 2 polaczenia tcp/ip jednoczesnie.

    Parser XML dziala poprawnie w przegladarkach:
    FIREFOX
    EXPLORER 8.0
    SAFARI

    Niestety podobno pod Opera oraz Explorerem 7.0 strona nie laduje danych z xml-a. Pracuje nad rozwiazaniem problemu.

  • #14 08 Lip 2009 08:59
    djkomprez
    Poziom 21  

    dir3ctor - a może pokusisz się o zaprzęgniecie do pracy jakiegoś modułu internetowego ? :) np avr z rtl8019 ? :)
    ja właśnie kombinuje z tym i chce taka stacje odpalić u siebie w mieście, ewentualnie jakiś acesspoint linksysa z wykorzystaniem rs-a

  • #15 08 Lip 2009 16:41
    dir3ctor
    Poziom 27  

    Szczerze mowiac to myslalem nad linksysem WRT54GL. Chcialem wyprowadzic z niego RS232, zrobic modul pomiarowy z tym interfejsem, a potem tylko oprogramowac pod linuxem na WRTku. Stwierdzilem jednak ze to malo eleganckie rozwiazanie, poza tym po co caly router wykorzystywac jak to samo moze realizowac procek.

    Jesli chcialbys dorzucic WiFi to sa takie moduly ZeroG... obsluguje sie je po SPI, a stos TCP/IP 5.0 od Microchipa posiada juz wbudowana ich obsluge.

  • #16 01 Paź 2009 20:38
    Robstar
    Poziom 17  

    Witam fajnz projekt naprawdę gratulacje :)

    Ale mam pytanie czy możesz opisać proces programowania procka bo jak widze to w spakowanym pliku stosu jest wiele plików i nie bardzo wiem co z nimi zrobić :).

    Pozdrawiam

  • #17 02 Paź 2009 08:02
    dir3ctor
    Poziom 27  

    Robstar, potrzebujesz środowisko programistyczne od Microchipa, które nazywa się MPLAB. Do tego jeszcze kompilator języka C18. MPLAB jest darmowy, natomiast C18 tylko w okrojonej (bądź studenckiej wersji) można legalnie za darmo stargać. Jeśli masz już wszystko zainstalowane to otwierasz w MPLABIE plik projektu, tam możesz go wygodnie edytować, debugować i kompilować. Skompilowany plik wgrywasz programatorem do procka.

  • #18 01 Kwi 2011 22:09
    don diego
    Poziom 32  

    Odgrzeję trochę temat gdyż sam zaczynam się bawić z Ethernetowym mikrokontrolerem od Microchipa (PIC18F66J65). Te katalogowe 100 cykli zapisu flasha faktycznie nie wygląda zachęcająco. Zwłaszcza dla początkującego, kiedy program zmienia się bardzo często :)
    dir3ctor, czy w swoich doświadczeniach spotkałeś się z jakimiś problemami w tej kwestii?

  • #19 23 Kwi 2011 20:53
    dir3ctor
    Poziom 27  

    Żadnymi. Myślę że te 100 cykli to mocno zaniżona granica. Myślę że suma-sumarum zapisałem procka ponad 200 razy i wszystko śmiga elegancko.

  • #20 09 Cze 2012 10:06
    bisoni
    Poziom 2  

    Co do ilości kasowania i zapisywania pamięci flash to raczej to jest pewnie jakieś nieporozumienie. Zapewne chodzi tu o 100 tysięcy!!! Wydaje mi się że ponad 5000 razy już zapisywałem i nadal śmiga. A tu inny link co do tego:
    http://www.digchip.com/datasheets/parts/datasheet/295/PIC18F67J60.php
    Może ktoś ma informację co do VoIP z IAX2 z tym mikrokontrolerem podłączonym do Asterisk'a?
    Pozdrawiam

  • #21 03 Paź 2015 12:24
    majesgrudziadz
    Poziom 10  

    Sorki za odkop ... poszukuje wzoru na obliczenie temperatury punktu rosy widzę że kolega go obliczał.

    Obliczałeś punkt rosy po stronie uC czy www ?
    Możesz podzielić się wzorem ?

  • #23 04 Lis 2015 21:39
    majesgrudziadz
    Poziom 10  

    byrrt napisał:
    Wzór znajdziesz chociażby w dokumentacji układu SHT11 i podobnych..


    No nie bardzo nie znalazłem tam wzorów :/
    Nie mniej wikipedia pomogła...

    efekt działania mojej stacji można znaleźć na http://meteo.avrtech.pl
    Niebawem opiszę ją w dziale DIY

    Pozdrawiam

  • #24 09 Lis 2015 14:50
    dir3ctor
    Poziom 27  

    majesgrudziadz napisał:
    byrrt napisał:
    Wzór znajdziesz chociażby w dokumentacji układu SHT11 i podobnych..


    No nie bardzo nie znalazłem tam wzorów :/
    Nie mniej wikipedia pomogła...

    efekt działania mojej stacji można znaleźć na http://meteo.avrtech.pl
    Niebawem opiszę ją w dziale DIY

    Pozdrawiam


    http://www.sensirion.com/fileadmin/user_uploa...ity/Sensirion_Humidity_SHT1x_Datasheet_V5.pdf

    Punkt 4.4 - Dew Point