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

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

Przed przystąpieniem do omawiania kolejnych zagadnień chciałbym na chwilkę powrócić do części 3 w której zabrakło odczytów z bazy danych mysql, a taki odczyt widzicie na pewno po wejściu na adresy:
http://web.avrtech.pl
http://web.avrtech.pl/wyswietl.php
Pierwotnie nie było w planie dokonywania odczytów nie mniej pomyślałem sobie, że fajnie by było gdyby każda nowa osoba klikająca w link widziała poprzednie wpisy.

Tak naprawdę odczyt nie jest trudny
, najpierw pokażę wam fragment kodu odpowiadającego za odczyt a następnie go opiszę.

Połączenie z bazą danych mamy opisane w części 3 dlatego w tej części podałem sam fragment odpowiadający za odczyt.
W linii 2 do zmiennej wynik zostanie przypisana informacja czy odczyt z bazy był prawidłowy, jeżeli nie udało nam się odczytać przerwiemy próbę odczytu i wyświetlimy tekst „Błąd zapytania”.
Jak zauważyliście w poleceniu mysql_query nie ma już INSERT odpowiadającego za wpisywanie danych do bazy a pojawił się SELECT czyli zaznacz, wybierz. Gwiazdka * to polecenie odpowiada za wybranie wszystkich wartości zamiast * można wpisać jedną lub więcej nazw tabeli znajdujących się w bazie np data_czas czy też data_czas, P1 w tym wypadku wybrali byśmy dane znajdujące się w tabeli data_czas oraz P1. Kolejne polecenie to FROM czy skąd a zaraz po nim baza czyli nazwa naszej bazy, zostało to tak skonstruowane, że w obrębie jednej strony www możemy operować na większej ilości baz danych. ORDER_BY odpowiada za segregację natomiast DESC to jest od największej do najmniejszej wartości gdybyśmy wpisali ASC wyniki ułożone byłyby od najmniejszej wartości wzwyż. Następnie linia 4 sprawdza czy mamy jakieś dane przechowane w zmiennej wynik jeżeli nie ma danych to strona będzie pusta. Możemy warunek if rozwinąć o polecenie else po ostatniej klamrze zamykającej i wyświetlić tekst np „Baza danych jest pusta”, w moim przypadku jest to zbędne gdyż mam pewność, że baza zawiera już jakieś wartości.
Kolejne linie od 6 do 15 tworzą nam początek tabeli z nagłówkami natomiast linia 17 to początek pętli która będzie wykonywała się tak długo aż przekazane zostaną wszystkie wyniki z bazy. W zapytaniu do bazy w 2 linii moglibyśmy dopisać LIMIT 10 wtedy pętla while wykonała by się 10 krotnie. Z każdym obiegiem pętli do zmiennej r zapisywane są wartości pobrane z bazy odpowiadające swojej kolejności. Dlatego też od linii 18 do 25 tworzymy kolejną linię tabelki wpisując w odpowiednie miejsca wartości $r[‚id’] odpowiada za nr wpisu, gdybyśmy tę zmienną zamienili z $r[‚data_czas’] zamienilibyśmy po prostu miejscami ułożenie wyświetlanych wyników. zmienne w kwadratowych nawiasach nie są przypadkowe odpowiadają one nazwą tabeli w bazie danych. W linii 27 zamykamy klamrę czyli kończymy pętle while znaczy, że to co jest między while(……){  a  klamrą zamykającą } zostanie wykonane w danej pętli. Linia 28 celowo została wpisana już poza klamrą pętli aby z każdym wpisem nie zamykać tabeli a żeby zamknąć ją na samym końcu jak pętla już zostanie wykonana. Ostatnia klamra w linii 29 jest to zamknięcie warunku if z linii 4.
Mam nadzieję, że w prosty sposób udało mi się wytłumaczyć jak dokonać odczytu z bazy i posegregować go na stronie w tabelce, oczywiście można daną zmienną wyświetlić tam gdzie wy będziecie chcieli.

Czujnik ciśnienia został umiejscowiony na głównej płytce stacji, z tego względu że czujnik BMP180 nie lubi wilgoci. Ciśnienie mierzone w zamkniętej hermetycznie obudowie jest o 1hPa większe niż w osłonie radiacyjnej nie mniej umiejscowienie tego czujnika na płytce meteo nie jest całkiem przypadkowe. Czujnik ten do komunikacji z Atmegą32 wykorzystuje magistralę I2C która jest bardzo podatna na zakłócenia dlatego powinno się z niej korzystać w obrębie jednej płytki PCB. Gdyby taki czujnik umieszczony został w osłonie radiacyjnej to byłby narażony na błędne działanie przynajmniej z dwóch powodów: wilgoć oraz podatność na zakłócenia długiego przewodu do czujnika pracującego na magistrali I2C.

Czujniki DS18B20 orz DHT22 zostały umieszczone na osobnej płytce PCB na której znalazły się również diody led aby w prosty sposób zaobserwować prawidłową pracę stacji meteo. Złącze na płytce czujników to również RJ-45 z tą różnicą, że te jest kątowe aby przewód wychodzący z uchwytu osłony radiacyjnej idealnie zapinał się na płytce i aby serwis był wygodniejszy.

meteo_sensor_pcb_02

Płytka czujników to w zasadzie 2 płytki połączone ze sobą w sprytny sposób. Górna płytka zawierająca 2 tranzystory, 2 diody led smt, 4 diody led 5mm oraz 6 rezystorów posiada nacięcie w środkowej części oraz specjalnie zaprojektowane pady. Płytka która na której wlutowane są czujniki DHT22 oraz DS18B20 wraz z rezystorami podciągającymi szynę danych jak i złącze RJ45 posiada frezy w górnej swojej części natomiast w części wystającej takie same pady jak w przypadku płytki pod ledy.
Połączone ze sobą płytki wyglądają następującometeo_sensor_pcb_03

Na zdjęciu widoczne jest umiejscowienie czujnika DS18B20 w bardzo dziwny sposób. Zostało to jednak bardzo przemyślane i mimo iż czujnik DS18B20 umiejscowiony jest w dziwnym miejscu niektórzy będą komentować, że górna płytka jak i płytka czujników ogranicza warunki atmosferyczne dla czujnika temperatury. Nie mniej mogę podpowiedzieć, że na zdjęciu jest to słabo widoczne jednakże pod czujnikiem temperatury zostało wyfrezowane okienko dzięki czemu czujnik wystaje w połowie na obie strony płytki. Takie rozwiązanie miało na celu zwiększenie przepływu powietrza przy czujniku DS18B20. Czujnik DHT22 nie jest skręcony do płytki żadną śrubką jest on przyklejony do pcb piankową taśmą dwustronną. Na powyższym zdjęciu nie widać pinów czujnika które zostały przegięte pod kątem 45 stopni i zawinięte pod czujnik. Jest to lepiej widoczne na zdjęciu tytułowym które zamieszczam również poniżej.
meteo_sensor_pcb_01

Schemat płytki czujników jest dość prosty i nie zawiera zbyt wiele elementów nie mniej podzielę się nim z wami.
meteo-czujniki-schematPo kliknięciu na schemat otworzy się nowe okno z dobrą rozdzielczością dzięki temu dokładniej będziecie mogli przeanalizować schemat.

Płytki czujników stacji meteo:

meteo-czujniki-bottom meteo-czujniki-top

Lista elementów potrzebnych do złożenia płytki czujników:
1 szt DS18B20
1 szt DHT22
1 szt RJ45
1 szt 4k7 R0805
2 szt BC807 SOT23-BEC
1 szt 2k2 R0805
2 szt 2k2 R0603
2 szt LED 0603 SMT
4 szt LED 5mm
6 szt 180R 0603 SMT

 

 

Informacje o: majeś

POLECANE POSTY

Komentarze:

  1. Hey very cool site!! Guy .. Excellent .. Superb ..
    I’ll bookmark your site and tke the feeds also?
    I am satisfied to search out a lot of useful info right
    here within the publish, wwe need work out extra strategies iin this regard, thank you for sharing.
    . . . . .

Dodaj komentarz

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