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:
nowa wersja:
Nowa wersja www parsuje dane ktore znajduja se w pliku xml. Struktura pliku jest nastepujaca:
<?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:
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 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:
wczesna wersja z malym lcd:
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).
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