Radiomodem ISM do Raspberry Pi Zero

Radiomodem ISM do Raspberry Pi Zero

Komputerki Raspberry Pi wyposażone są jest w interfejs radiowy Wi-Fi i Bluetooth zapewniające komunikację drogą radiową. Gdy jednak wymagane jest zapewnienie większego zasięgu transmisji lub np. budowa sieci urządzeń IoT, pod wieloma względami korzystniejsze jest użycie radiomodemu. Opisany projekt to nakładka dla Raspberry Pi Zero zawierająca sprawdzony w wielu aplikacjach radiomodem Radiocrafts RC12xx w wersji z obsługą protokołu RC232.

Podstawowe parametry:
  • komunikacja w paśmie ISM 433 MHz (radiomodem typu RC1240) lub 868MHz (radiomodem typu RC1280),
  • zasięg połączenia dochodzi do kilkuset metrów przy transferze z przepustowością 4,8 kbit/s,
  • od strony aplikacji zestawione połączenie radiowe jest obsługiwane jak port szeregowy,
  • transmisja może być realizowana w trybie punkt-punkt lub punkt-wiele punktów.

W zależności od zastosowanego modelu radiomodemu, mamy do dyspozycji dwa pasma komunikacji:

  • radiomodem typu RC1240: pasmo ISM 433 MHz, dostępnych 69 kanałów,
  • radiomodem typu RC1280: pasmo ISM 868 MHz, dostępnych 80 kanałów.

W zależności od warunków zasięg połączenia dochodzi do kilkuset metrów przy transferze z przepustowością 4,8 kbit/s, w trybie half-duplex. Transmisja może być realizowana w trybie punkt-punkt lub punkt-wiele punktów. Od strony aplikacji zestawione połączenie radiowe jest obsługiwane jak port szeregowy, kontroler modemu zajmuje się adresacją, dekodowaniem i korekcją CRC transmitowanych pakietów.

Budowa i działanie

Schemat nakładki został pokazany na rysunku 1. Modem korzysta z portu szeregowego Raspberry Pi. Po konwersji poziomów 2,7/3,3 V w układach U3, U4, sygnały TX/RX doprowadzone są do modemu RM. Modem zasilany jest z V50 (+5 V), zapewnia to pełną moc nadajnika, napięcie jest dodatkowo odfiltrowane przez elementy C1, C2, CE1. Napięcie V27 z wewnętrznego stabilizatora LDO umieszczonego w RM zasila konwertery poziomów U3, U4 po stronie modemu. Sygnał RF doprowadzony jest go gniazda ANT typu uFL.

Rysunek 1. Schemat modułu

Modem wymaga dwóch sygnałów sterujących, pierwszy to RST umożliwiający restart modemu, drugi to CFG wprowadzający modem w tryb konfiguracji. Sygnały podłączone są poprzez bramki U1, U2 do wyprowadzeń GPIO6, GPIO5 Raspberry Pi, umożliwiając programowy restart i konfigurację modemu oraz translację poziomów napięć. Płytkę uzupełnia złącze magistrali I²C, umożliwiające podłączenie np. zewnętrznych czujników.

Montaż i uruchomienie

Układ zmontowany jest na dwustronnej płytce drukowanej zgodnej rozmiarami z RPi Zero, której schemat został pokazany na rysunku 2.

Rysunek 2. Schemat płytki PCB

Montaż płytki nie wymaga opisu, zmontowany moduł pokazuje fotografia tytułowa. Dla sprawdzenia modułu konieczne jest przygotowanie dwóch komputerków Raspberry Pi z aktywowanym portem szeregowym, czy to poprzez konfigurator raspi-config, czy bezpośrednio w pliku config.txt, poprzez dodanie linii enable_uart=1. Należy pamiętać o wyłączeniu w pliku cmdline.sys funkcji SSH, jeżeli korzysta z portu szeregowego. Po restarcie systemu instalujemy w zależności od preferencji, terminal portu szeregowego minicom lub picocom.

Konfigurujemy piny GPIO5, GPIO6 sterujące sygnałami CFG, RST oraz ustawiamy je w domyślny stan 1 wpisując:

echo 5 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio5/direction
cd /sys/class/gpio/gpio5
echo 1 > value

echo 6 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio6/direction
cd /sys/class/gpio/gpio6
echo 1 > value

Dzięki temu modemy pracują w konfiguracji fabrycznej. Stanem aktywnym sygnału RST jest stan niski, po podaniu którego modem restartuje się. Stanem aktywnym sygnału CFG, jest także stan niski, po podaniu którego modem przechodzi do trybu konfiguracji, podanie stanu wysokiego powoduje przejście do trybu pracy. Po włączeniu zasilania warto zresetować modem impulsem na linii RST i ustawić stan 1 na linii CFG.

Domyślne, fabryczne ustawienie portu szeregowego modemu to: 19200, 8N1 i taką należy ustawić w uruchamianych terminalach. Wybieramy port odpowiadający sprzętowemu UART na wyprowadzeniach GPIO14, GPIO15, czyli ttyAMA0 dla Pi4 lub ttyS0 dla Pi3 oraz brak emulacji terminala, czyli transmisje znakową ANSI. Fabryczna konfiguracja przewiduje pracę modemów jako jednokanałowy link radiowy dla portu szeregowego, gdzie transmisja danych pomiędzy modemami przeprowadzana jest po zapełnieniu bufora (128 bajtów) lub po przekroczeniu czasu timeout.

Uruchamiając terminale na obu komputerkach z ww. ustawieniami, wpisujemy kilka znaków w jednym terminalu, po chwili powinny pojawić się w drugim. Operację przeprowadzamy też w odwrotnym kierunku, sprawdzając działanie obu torów. Dalsze eksperymenty wymagają już napisania własnej aplikacji, w terminalu możemy sprawdzić jeszcze poprawność wejścia w tryb konfiguracji, zmieniając stan sygnału CFG na 0.

Algorytm konfiguracji pokazano na rysunku 3. Po prawidłowym ustawieniu stanu CFG, modem w terminalu zwróci znak zachęty „>” potwierdzając aktywny tryb konfiguracji i rozłączając zestawione wcześniej połączenie. Obsługiwane komendy zestawiono w tabeli 1.

Nie każda komenda jest potwierdzana odesłaniem znaku „>”. Szczegółowy opis komend zamieszczony jest w dokumentacji RC232 User Manual.pdf, która jest dostępna w materiałach dodatkowych do artykułu lub do pobrania ze strony producenta.

Rysunek 3. Algorytm konfiguracji modemu (za notą Radiocrafts)

Konfiguracja modemu może być przechowywana w pamięci ulotnej RAM, może być też zapisana w pamięci nieulotnej NVM. Należy pamiętać o ograniczonej liczbie cykli zapisu pamięci NVM (ok. 10000) i ograniczyć zapisy do niezbędnego minimum. Dane zapisane w NVM są przywracane po resecie modemu. Wyjście z trybu konfiguracji wymaga zmiany stanu CFG na 1 oraz wydania komendy X (Exit), która nie zostanie już potwierdzona. Przykład odczytu zawartości pamięci w trybie konfiguracji poleceniem „0” pokazano na rysunku 4.

Rysunek 4. Przykładowy odczyt zawartości pamięci RC12xx

W tabeli 2 zamieszczono skróconą listę konfigurowalnych parametrów przechowywanych w pamięci nieulotnej. Wartości te mogą być zmieniane za pomocą komendy „M”. Wszystkie adresy i argumenty muszą być wysyłane do modułu jako wartości binarne.

Więcej możliwości

W bardziej zaawansowanych aplikacjach oprócz trybu transparentnego, gdzie dane nie są buforowane i para modułów działa po prostu jako radiowy link UART, przydatny może być tryb adresacji punkt-punkt. W trybie adresacji (ADDRESS_MODE=0x02) każda strona ma swój własny adres, jak również adres podsieci, w której się znajduje, SystemID (SID), UniqueID (UID). SID musi być taki sam dla całej grupy modułów, ale UID jest unikalny dla każdego z modułów. Do transmisji ustawiamy adres przeznaczenia DestinationID (DID) modułu odbierającego i wysyłamy dane. Wszystkie moduły podsieci odbierają pakiety, sprawdzają adresy, weryfikują poprawność odbioru i jeśli identyfikatory są zgodne, to w modemie odbiorczym, odebrane dane po usunięciu adresacji wysyłane są na UART.

Każdy moduł ma również taki parametr jak adres rozgłoszeniowy Broadcast (BID). Jest on potrzebny, jeśli transmisja ma odbywać się jednocześnie do wszystkich modemów odbiorczych. Domyślnie BID = 0xFF, ale można ustawić na dowolną wartość i w ten sposób grupować moduły odbierające komunikat, pamiętając że UID nie może być identyczny z BID. Pozostaje tylko życzyć poprawnych konfiguracji i dobrej propagacji.

Adam Tatuś, EP

Wykaz elementów:
Rezystory: (SMD0603, 1%)
  • R1, R2: 10 kΩ
  • R4, R5: 4,7 kΩ
Kondensatory:
  • C1, C3, C4, C5, C6, C7: 0,1 μF/10 V (SMD0603)
  • CE1: 47 μFT/10 V tantalowy (SMD3528)
  • C2: 10 μF/10 V (SMD0603)
Półprzewodniki:
  • U1, U2: 74L VC1G07DCK (SC70-5)
  • U3, U4: 74L VC1T45GW (SC70-6)
Pozostałe:
  • ANT: UFL (UFL) MX-73412-0114
  • GPIO: złącze IDC 2×20 pinów żeńskie
  • RM: moduł Radiocrafts RC1240 lub RC1280
Artykuł ukazał się w
Elektronika Praktyczna
listopad 2022
DO POBRANIA
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio maj - czerwiec 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje kwiecień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich maj 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów