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:
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/