Stacja pogodowa z prezentacją pomiarów w Internecie – cz. 2

W tej części opisu projektu stacji pogodowej z prezentacją wyników pomiarów opiszę węzeł pośredniczący, oparty o mikrokontroler Atmega (w tym przykładzie jest to ATmega88, aczkolwiek większość procesorów z rodziny można tutaj zastosować) oraz dwa układy radiowe na 433 i 2400MHz.

Schemat układu zamieszczam poniżej:

schemat transceivera

Układ odbiornika na 433MHz występuje w postaci gotowego modułu, posiada tylko jedno wyjście danych. Wyjście to przyjmuje stan wysoki w momencie, kiedy sygnał nie jest odbierany, oraz stan niski, kiedy zostanie wykryty sygnał. Jest to prosta modulacja, polegająca tylko na kluczowaniu nośnej. Dostępne układy  przeznaczone są do zasilania z napięcia 5V, aczkolwiek w podanym przykładzie zastosowane zostało zasilanie 3,3V i układ działa prawidłowo. Ponieważ jest to jedynie edukacyjny prototyp, potencjalne problemy związane ze stabilnością i jakością odbioru nie mają kluczowego znaczenia. Chcąc postąpić zgodnie ze specyfikacją, należałoby zasilić moduł z 5V, a wyjście podać do mikrokontrolera poprzez odpowiedni dzielnik napięcia. Wyjście układu jest podłączone do przerwania zewnętrznego mikrokontrolera. Do modułu należy „dorobić” antenę, najprościej kawałek drutu o długości mniej więcej 1/4 fali, czyli w granicach 17cm.

Do mikrokontrolera podłączony jest także transceiver NRF24L01 – sposób podłączenia na schemacie. Komunikacja cyfrowa wykorzystująca interfejs SPI. Biblioteka do obsługi układu taka sama, jak wykorzystana w poprzednim projekcie stacji pogodowej.

Do portu PC5 dołączona jest dioda – zmienia swój stan po poprawnym odbiorze ramki danych. W prosty sposób dostarcza podstawowych danych na temat pracy urządzenia.

Ogólna zasada działania jest dość prosta. Zewnętrzny czujnik co około 40 sekund wysyła ramkę danych (dwukrotnie) – po odebraniu ramki jest ona przepisywana do pakietu dla Raspberry Pi i wysyłana przez uklad NRF24L01. Algorytm odbiorczy opisany jest tutaj. Ramka wysyłana przez NRF24L01 skłąda się z 7 bajtów:

  • bajt cyklicznie zwiększany przy każdej ramce
  • 3 bajty zawierające 3 znaczące cyfry temperatury (kod BCD),
  • bajt znaku temperatury,
  • 2 bajty z wilgotnością (jw.)

Opisywany moduł powstał właściwie  ze złączenia poprzednich projektów (dekodera sygnału czujnika Oregon Scientific i bezprzewodowej stacji pogodowej).

Kod załączam poniżej. Mikrokontroler pracuje z oscylatorem RC przy częstotliwości 1MHz.

Ciąg dalszy opisu: http://www.elektrofanklub.pl/stacja-pogodowa-z-prezentacja-pomiarow-w-internecie-cz-3/

Kod – projekt Atmel Studio 6.

Ten wpis został opublikowany w kategorii Bez kategorii. Dodaj zakładkę do bezpośredniego odnośnika.