Łącze radiowe – moduły TR-52D
Każda stacja meteorologiczna powinna być zbudowana w części czujników umieszczonych na zewnątrz, najlepiej w specjalnej klatce, oraz z części prezentującej pomiary umieszczonej w pomieszczeniu w miejscu najbardziej dogodnym dla użytkownika. Oba te elementy muszą być ze sobą połączone kanałem transmisyjnym pozwalającym na przesyłanie danych pomiarowych. Z technicznego, ale też praktycznego punktu widzenia, najłatwiej jest to zrobić wykorzystując łącze radiowe w pasmach nie wymagających pozwolenia. Mała moc nadajników spełniających wymóg braku konieczności uzyskiwania pozwolenia na pracę w eterze ogranicza zasięg do kilkudziesięciu metrów zależnie od ilość przeszkód (ścian) ale też od ich budowy. Ściana żelbetowa będzie mocniej tłumić sygnał niż ściana z bloczków cementowo wapiennych. W praktyce taki zasięg jest zupełnie wystarczający. Opisywane urządzenie pracuje bez żadnych problemów z łączem radiowym w odległości ok. 20 metrów miedzy urządzeniem umieszczonym na zewnątrz i wewnątrz. Przeszkodę stanowią 2 ściany budynku z bloczków.
Łącze można realizować używając szerokiej gamy modułów radiowych. Ja zgodnie z początkowym założeniem zastosowałem to co miałem, czyli moduły IQRF TR52-D produkowane przez czeską firmę MICRORISC. Z punktu widzenia projektanta to bardzo dobry wybór. TR-52D to nie tylko moduł radiowy. Producent wpadł na pomysł, żeby połączyć prosty (punktu widzenia programisty) moduł radiowy z małym mikrokontrolerem PIC16F886. Taki pomysł nie wydaje się czymś odkrywczym i rzeczywiście tak by było, gdyby na tym poprzestano. Produkt MICRORISC to znacznie więcej niż układ moduł radiowy i mikrokontroler. Został zaprojektowany cały ekosystem zbudowany z małych łatwych w użyciu i programowaniu modułów radiowych, zestawów rozszerzających DCC Kits i firmowych narzędzi sprzętowych i programowych stanowiących kompleksowe wsparcie dla projektanta.
W protokole wymiany danych zaimplementowano tylko te funkcje, które są niezbędne do przesyłania danych pomiędzy modułami. Nie oznacza to jednak rezygnacji z maksymalnej dostępnej funkcjonalności ograniczonej zasobami małego mikrokontrolerem. Oprócz możliwości wymiany danych pomiędzy dwoma modułami (peer-to-peer) zaimplementowano własny protokół sieciowy o nazwie IQMESH. Niestety takie możliwości muszą kosztować. Moduły nie są tanie. TR-52D nie jest już produkowany, a jego następca kosztuje ponad 100 PLN/sztukę. A to nie wszystko, bo żeby ich używać trzeba kupić przynajmniej jeden moduł programatora USB. Taki programator CK-USB-04A kosztuje ok. 300 PLN. Gdybym nie miał modułów i CK-USB-04 to owe rozwiązanie nie byłoby brane pod uwagę właśnie ze względu na koszty. Są inne tańsze opcje.
Poza ceną system ma same zalety. Jeżeli potrzebne jest kodowanie transmisji, to może ją wykonać Host współpracujący z modułem. Ponieważ moduł radiowy ma wbudowany programowany przez użytkownika mikrokontroler, to w prostych zastosowaniach można go użyć bez dodatkowych elementów. Potrzebne jest tylko 8-pinowe złącze takie, jak dla dużych katy SIM w telefonach i układ zasilania +5 V. Przez kilka lat używałem samodzielnego modułu TR-52 z dołączonym czujnikiem DS18B20 jako zewnętrznego czujnika temperatury i pracował znakomicie. Zasoby wbudowanego mikrokontrolera nie są duże, a musi on też wykonywać funkcje pracującego w tle miniaturowego systemu operacyjnego IQRF OS obsługującego transmisję SPI i funkcje sieci MESH. Dlatego kiedy układ musi wykonywać bardziej zaawansowane funkcje, to moduł współpracuje z zewnętrznym mikrokontrolerem hostem tak, jak to jest w naszym przypadku.
Część radiowa (transceiver RF) bazuje na układzie MRF49A. Jak już wspomniałem mikrokontroler to 8 bitowy PIC16F886. Układ zasilania zawiera stabilizator MCP1700. W moduł wbudowano też sensor temperatury MCP9700A. Przy okazji opisu DS18B20 wyjaśniałem dlaczego nie używam modułów pomiaru temperatury umieszczanych wewnątrz urządzenia. Dla systemu IQRF OS przeznaczona jest pamięć 24AA16MC. Wszystkie wymienione elementy modułu są produkowane przez firmę Microchip.
Użytkownik uruchamiana swoją aplikację pod systemem IQRF OS i ma do dyspozycji wiele funkcji systemowych. Program użytkownika jest pisany w języku C i kompilowany kompilatorem CC5X. Producent zadbał o to, aby nie trzeba było się martwić o niezbędne narzędzia. Darmowa wersja kompilatora jest zupełnie wystarczająca do napisania sporego programu. Trzeba pamiętać, że taki moduł jest inteligentnym układem peryferyjnym i nie są na nim uruchamiane duże zadania. Tworzenie aplikacji umożliwia firmowy pakiet IRQF IDE. Z jego pomocą możemy wykonać wszystkie czynności projektowe: edytować (za pomocą zewnętrznego edytora) plik źródłowy, skompilować go, zaprogramować mikrokontroler modułu radiowego i debugować działający program.