Projekty jak i urządzenia, z którymi się spotkałem "wertując" dziesiątki stron o tematyce elektronicznej nie wymagały do pracy nieprzerwanego dostępu do mediów, o które nie wszędzie łatwo (np. Internet lub zasięg sieci komórkowej). Biorąc to wszystko pod uwagę, postanowiłem zaprojektować i zbudować własne urządzenie o podobnej funkcjonalności, lecz pozbawione wad czy też wymagań, o których ogólnikowo wspomniałem. Główne założenia projektowe, które przyświecały mi w trakcie wspomnianych prac były następujące:
- system ten ma zapewniać bezprzewodową, dwukierunkową transmisję danych na odległość (w terenie otwartym) do ok. 100 m,
- urządzenie sterujące (pilot) musi mieć niewielkie wymiary oraz długi czas pracy na zasilaniu bateryjnym,
- urządzenie sterujące (pilot) musi dostarczać informacji zwrotnej o wykonaniu lub odrzuceniu rozkazu sterującego (włączenia czy też wyłączenia przekaźnika),
- system ma być prosty i tani w budowie.
Tak oto powstał system radioRelay. Składa się on z Mastera (pilota jako urządzenie sterujące) i modułu Slave (moduł z przekaźnikami jako urządzenie wykonawcze).
Nadajnik - Master
Schemat pilota sterującego, którego schemat pokazano na rysunku 1. Jest nieskomplikowany system mikroprocesorowy, którego sercem jest niewielki mikrokontroler ATtiny2313. Odpowiada on za obsługę prostej klawiatury złożonej z 8 przycisków oraz transmisję (kodowanie/dekodowanie) danych. W torze radiowym pracuje transceiver RTX-MID-3V produkcji firmy Aurel.
Wybór tego konkretnego układu transceivera nie był przypadkowy. Po pierwsze, moduł ten nie wymaga konfigurowania i innych czynności, poza obsługą wyprowadzeń sterujących. Moduł może również pracować (podobnie jak mikrokontroler sterujący) w specjalnym trybie PowerDown charakteryzującym się bardzo małym poborem prądu rzędu 8 mA, co jest ważne dla urządzenia zasilanego bateryjnie. Nie bez znaczenia są również niewielkie wymiary wspomnianego moduły radiowego.
Na schemacie naszego pilota uważny Czytelnik zauważy zapewne nietypową konfi gurację, jeśli chodzi o sposób włączenia przycisków, ponieważ, ich wspólne wyprowadzenia nie zostały (jak to zwykle bywa) dołączone do masy, tylko do wyprowadzenia INT0 mikrokontrolera sterującego. Dziwne? Otóż, nie! Wykorzystano tutaj możliwość pracy tegoż układu w trybie PowerDown, czyli w trybie o bardzo niskim (nawet sporo mniejszym, aniżeli transceiver) poborze mocy, z którego to możemy go wyprowadzić mikrokontroler właśnie dzięki wystąpieniu przerwania zewnętrznego INT0, zainicjowanego wciśnięciem któregokolwiek przycisku sterującego.
Zatem po uruchomieniu, program obsługi urządzenia ustawia port przycisków PORTB jako port wyjściowy oraz zeruje jego wyjścia, zaś pin INT0 jako pin wejściowy z podciąganiem do napięcia zasilania. Następnie konfiguruje kilku innych bloków peryferyjnych i wprowadza mikrokontroler oraz moduł transceivera w tryb obniżonego ponoru energii.
Od tej chwili każde naciśnięcie dowolnego przycisku powoduje wybudzenie procesora i realizację programu obsługi przerwania INT0, które jest odpowiedzialne za odczytanie stanu klawiszy, załączenie transceivera, wysłanie rozkazu sterującego, odbiór odpowiedzi z modułu przekaźników (jak i stosowną sygnalizację za pomocą dwubarwnej diody LED) i ponowne uśpienie transceivera oraz mikrokontrolera. Prawda, że proste?
Tylko jak możliwe jest odczytanie stanu klawiszy, skoro PORTB ustawiony był jako wyjściowy (by wciśnięcie jakiegokolwiek przycisku spowodowało wybudzenie procesora dzięki przerwaniu INT0)? To także proste! Tuż po wejściu do procedury obsługi przerwania INT0, PORTB zostaje skonfigurowany jako port wejściowy z podciąganiem do napięcia zasilania a pin INT0 jako pin wyjściowy z aktywnym stanem 0, dzięki czemu odczyt rejestru PINB daje nam odpowiedź na pytanie o numer wciśniętego klawisza.
Po wykonaniu, odpowiednich czynności i przed wyjściem z procedury obsługi przerwania INT0 zostaje przywrócona domyślna konfiguracja portu PORTB i pinu INT0 w celu umożliwienia dalszej pracy urządzenia. Z resztą najlepszą ilustracją funkcjonalności układu pilota niech będzie kompletny algorytm programu obsługi przedstawiony na rysunku 2.
Pozostaje pytanie, jak zabezpieczyć cały system przed potencjalną możliwością realizacji niezamierzonych rozkazów sterujących? To z pozoru trudne zadanie można zrealizować angażując do tego minimum środków, czyli mocy obliczeniowych mikrokontrolera mając na uwadze, iż nie wymagamy tu rozwiązań technologicznych klasy sprzętu wojskowego czy też medycznego.
Z pomocą przychodzi nam prosty standard kodowania transmisji danych stosowany powszechnie w pilotach podczerwieni tzw. Manchester oraz odpowiednia konstrukcja samej ramki danych zapewniająca eliminację błędów. Przypomnę krótko podstawowe informacje na temat kodowania typu Manchester. Otóż, kodowanie tego typu zakłada, iż każdy bit transmitowanej ramki danych transmitowany jest w postaci dwóch stanów logicznych, tzw. półbitów, a w środku czasu przeznaczonego na jego przesłanie następuje zmiana tychże stanów.
I tak, wysoki poziom logiczny przesyłanego bitu danych kodowany jest poprzez przesłanie półbitu logicznej 1 a następnie logicznego 0, natomiast niski poziom logiczny jest kodowany poprzez przesłanie "półbitu" logicznego 0, a następnie logicznej 1. W przypadku naszego urządzenia przyjmiemy, iż długość trwania półbitu wynosi 200 ms, co daje prędkość transmisji równą 2500 b/s, więc z powodzeniem mieszczącą się w zakresie możliwości układu transceivera. Dodatkowo, przyjmujemy pewne założenia dotyczące konstrukcji ramki transmisji mające na celu eliminację błędnych danych. Pełną ramkę transmisji pokazano na rysunku 3.
Każda taka ramka składa się z:
- 4 bitów synchronizacyjnych (0b0000), które są odrzucane przez procedurę dekodującą po stronie odbiornika i służą wyłącznie dopasowania się układu ARW odbiornika do parametrów odbieranego sygnału, zanim nadajnik sygnału wyemituje użyteczną informację,
- krótkiej przerwy (3 razy 200 ms) w czasie której jest wysyłana nośna sygnału informująca procedurę dekodującą o nadchodzącym początku ramki transmisji,
- nagłówka (0b1100), który służy przede wszystkim kontroli poprawności emitowanych danych, jak również podtrzymaniu optymalnych ustawień układu ARW odbiornika,
- predefiniowanego rozkazu sterującego typu włącz/wyłącz przekaźnik (4 bity),
- danych związanych z numerem przekaźnika podlegającego zmianie stanu,
- zanegowanych danych jak wyżej (dla kontroli poprawności ramki transmisji).
Treść procedury odpowiedzialnej za wysłanie kompletnej, 24-bitowej ramki transmisji (plus bity synchro) przedstawiono na listingu 1.
Jak wspomniano wcześniej i co pokazano na algorytmie obsługi pilota systemu radioRelay, transmisji każdej ramki przeprowadzanej przez układ nadrzędny (pilota) towarzyszy natychmiastowa odpowiedź karty przekaźników, która to zawiera dane oczekiwane przez jednostkę sterującą (potwierdzenie wykonania rozkazu sterującego) jak i służy kontroli poprawności transmisji.
Przyjęto, iż przy braku odpowiedzi ze strony karty przekaźników lub w przypadku błędów transmisji, układ nadrzędny, czyli pilot sterujący ponawiał będzie wysyłanie rozkazu sterującego 15 razy. Na listingu 2 przed stawiono treść procedury odpowiedzialnej za utworzenie gotowej do przesłania ramki danych, jej przesłanie, odbiór odpowiedzi i kontrolę poprawności transmisji czyli procedury odpowiedzialnej za komunikację Master <-> Slave.
Z powyższych informacji wynika, iż przyjęte rozwiązanie programowe jest dość proste a jednocześnie, co potwierdzono w praktyce, pomimo dość dużej liczby zakłóceń w paśmie 433 MHz, zapewnia doskonałą stopę błędów oraz zmniejsza wymagania sprzętowe i programowe po stronie obu uczestników transmisji. Co prawda można by było zaprzęgnąć do pracy bardziej wyrafinowane algorytmy kontroli poprawności transmisji z mechanizmami CRC8 czy CRC16 włącznie, ale moim zdaniem, byłoby to rozwiązanie przewymiarowane i w żaden sposób nieuzasadnione.
Na koniec opisu urządzenia nadrzędnego (pilota) dodam, iż poprawnemu wykonaniu rozkazu sterującego towarzyszy krótkie mignięcie zielonej diody LED zaś błędom transmisji towarzyszy odpowiednie krótkie mignięcie czerwonej diody LED. W ten prosty sposób zapewniono realizację założenia projektowego mówiącego o konieczności posiadania informacji zwrotnej o wykonaniu lub odrzuceniu rozkazu sterującego, czyli de facto o stanie przekaźników bezprzewodowej karty wykonawczej. Dodać należy, iż krótkie przyciśnięcie każdego z przycisków powoduje wysłanie rozkazu na wyłączenie odpowiedniego przekaźnika zaś długie przyciśnięcie (ok. 500 ms) powoduje wysłanie rozkazu załączającego odpowiedni przekaźnik.
Odbiornik - moduł z przekaźnikami
Przejdźmy, zatem do schematu urządzenia wykonawczego, jakim jest bezprzewodowy moduł przekaźników pokazany na rysunku 4. Tym razem do czynienia mamy z nieco bardziej rozbudowanym systemem mikroprocesorowym, choć stopień jego komplikacji wynika wyłącznie z niezbędnej liczby elementów potrzebnej do sterowania 8 przekaźnikami mocy.
Jak poprzednio, sercem urządzenia jest mikrokontroler ATtiny2313 odpowiedzialny wyłącznie za obsługę wbudowanego transceivera, domyślnie pracującego w trybie odbiornika oraz sterowanie (za pomocą układu ULN2803) pracą wspomnianego zespołu 8 przekaźników wykonawczych. Zasada działania tego układu jest bardzo prosta: moduł ten pracujący domyślnie w trybie odbiornika oczekuje na ważną dla niego ramkę danych sterujących (zawierającą odpowiedni rozkaz jak i cechującą się odpowiednią budową) przesyłaną przez moduł sterujący (pilot).
Po otrzymaniu takiej ramki danych, program obsługi urządzenia przełącza transceiver w tryb nadajnika, następnie odsyła natychmiast potwierdzenie wykonania rozkazu sterującego służące jednocześnie kontroli poprawności transmisji, po czym przechodzi ponownie w tryb odbiornika. Tym razem, nie korzystamy z trybów obniżonego poboru mocy zarówno po stronie modułu transceivera jak i po stronie mikrokontrolera zwłaszcza, iż w projekcie urządzenia przewidziano zbudowanie kompletnego układu zasilanego napięciem sieciowym 230 VAC.
To zadanie byłoby trudne do realizacji, gdyż jak już wspomniano wcześniej, transceiver karty przekaźników pracuje domyślnie w trybie odbiornika nasłuchując czy nie są przesyłane dane. Na koniec, wspomnę tylko, iż równolegle do cewek przekaźników mocy dołączono diody LED sygnalizujące stan pracy wspomnianych elementów mocy.
Wykaz elementówModuł przekaźników: Rezystory (1/8W): Kondensatory: Półprzewodniki: Inne: Pilot zdalnego sterowania: Rezystory: (SMD1206) Kondensatory: (SMD1206): Półprzewodniki: Inne: |
Montaż
Schemat montażowy pilota zdalnego sterowania systemu radioRelay pokazano na na rysunku 5. Jego montaż rozpoczynamy od przylutowania mikrokontrolera. Do jego zamontowania wystarczy zwykła stacja lutownicza. Następnie lutujemy pozostałe elementy SMD (mając na uwadze odpowiednią stronę montażu), a na końcu przyciski, moduł transceivera, gniazdo baterii CR2450 oraz dwubarwną diodę LED. Jako anteny można użyć zwykłego kawałka drutu miedzianego o przekroju 0,5 mm² i długości około 17,2 cm.
Co ciekawe, testy praktyczne pokazały, że czasami zastosowanie zwykłego kawałka drutu daje lepszy efekt, niż użycie anten SMD (oczywiście zależy to w dużym stopniu od projektu samej płytki drukowanej). Długość takiej anteny można zmniejszyć do około 8,3 cm poprzez uformowanie cewki powietrznej położonej u podstawy anteny. Należy jednak pamiętać, iż anteny nadajnika i odbiornika powinny być tego samego rodzaju oraz znajdować się w położeniu prostopadłym do powierzchni masy poszczególnych płytek drukowanych (w przypadku anten wykonanych z kawałka drutu). Ich wzajemne położenie wpływa zdecydowanie na zasięg kompletu urządzeń.
Na rysunku 6 pokazano schemat montażowy modułu wykonawczego, tj. modułu z przekaźnikami. Tym razem do czynienia mamy z jednowarstwową płytką drukowaną o dość prostej strukturze przeznaczoną wyłącznie do montażu przewlekanego. Montaż ten rozpoczynamy od wlutowania wszystkich zworek (uwaga: jedna z nich znajduje się pod mikrokontrolerem). Następnie, lutujemy elementy bierne, złącza, półprzewodniki (mikrokontroler najlepiej włożyć w podstawkę), a na końcu transformator zasilający, przekaźniki oraz moduł transceivera.
Należy także zwrócić szczególną uwagę na konieczność pocynowania grubą warstwą cyny ścieżek przewodzących duże prądy tj. ścieżek pomiędzy złączami śrubowymi OUT1...OUT2 a przekaźnikami K1...K8 (dla tych ścieżek nie stosowano solder-maski). Antenę wykonujemy według tych samych zasad jak dla modułu pilota sterującego. Poprawnie zmontowany układ powinien działać tuż po podłączeniu zasilania.
Uwaga! Na płytce karty przekaźników zamontowano kompletny zasilacz sieciowy, łącznie z transformatorem zasilanym napięciem sieciowym 230 VAC oraz zamontowano elementy będące na potencjale tegoż napięcia. Istnieje niebezpieczeństwo porażenia elektrycznego, które stanowi zagrożenie dla życia i zdrowia użytkowników. W związku z tym, montaż układu w tym zakresie powierzyć należy osobie posiadającej uprawnienia elektryczne w zakresie eksploatacji urządzeń o napięciu do 1 kV oraz niezbędną wiedzę i doświadczenie.
Robert Wołgajew, EP
Dodatkowe materiały znajdziesz na FTP
user: 32858, pass: 4285avne