Odpowiedz 
 
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
radio4 - modem cyfrowy LoRa sterowany komendami tekstowymi przez port szeregowy
SQ6DGT Offline
Robert
*

Liczba postów: 41
Dołączył: 22-05-2011
Post: #1
radio4 - modem cyfrowy LoRa sterowany komendami tekstowymi przez port szeregowy
radio4

Prezentowana konstrukcja jest to modem radiowy sterowany prostymi tekstowymi komendami wysyłanymi na port szeregowy, bez dodatkowych sterowników czy bibliotek. Z jego pomocą można zdalnie sterować urządzeniami, odczytywać stan zdalnych czujników i/lub włączników oraz wymieniać komunikaty i dane. Wszystko to małą mocą, bez zezwoleń czy licencji. Urządzenie „radio4” zostało pomyślane jako platforma testowo-badawcza, pozwalająca w praktyce zapoznać się z modulacją LoRa oraz wykorzystać ją we własnych projektach. Wykorzystanie „radio4” do telemetrii czy wymiany informacji tekstowych i innych pakietów danych wydaje się mieć również wiele potencjalnych, komercyjnych, zastosowań.

Prezentowana wersja oferuje następującą funkcjonalność:

- modulacja LoRa w oparciu o moduł transceiver-a i modemu HopeRF RFM96W pracującemu w paśmie 434 MHz, w praktyce znacznie szerzej, szczegóły w nocie aplikacyjnej układu: https://www.hoperf.com/modules/lora/RFM96.html
moduł jest w stanie pracować mocą do 100mW (20dBm), jednak ze względu na parametry pracy zdecydowałem się nie przekraczać 20mW (13dBm).
- w chwili obecnej wspierana jest modulacja LoRa, moduł obsługuje również modulację (G)FSK i wykorzystanie jej planowane jest w kolejnych wersjach oprogramowania
- jako mikrokontroler pracuje układ STM32F103C8T6 w formie modułu znanego jako „blue-pill”. Ten znany i tani moduł jest kompletnym systemem posiadającym wejście USB oraz SWD do programowania.
- „radio4” po podłączeniu do komputera jest wykrywane jako urządzenie klasy USB-CDC i system operacyjny tworzy dla niego port szeregowy.
- Pamięć konfiguracji, dane służące do identyfikacji i bezpiecznych połączeń oraz odebrane wiadomości są zapisywane w nieulotnej pamięci EEPROM. W bieżącej wersji rolę tę spełnia szeregowa pamięć EEPROM typu M95256 o pojemności 32KiB. Funkcja zapisu wiadomości w pamięci nieulotnej jest w trakcie tworzenia.
- wyjście antenowe to krawędziowe gniazdo SMA-F pasujące do wielu dostępnych na rynku anten dedykowanych dla krótkofalowców, które pracują również w paśmie 430 MHz (70 cm) oraz anten dla urządzeń pracujących w paśmie ISM 434 MHz.
İmage
Po podłączeniu, w systemach Linux-owych, pojawi się urządzenie o nazwie /dev/ttyACMx, pod macOS będzie to /dev/tty.usbmodemXXX lub podobne, pod Windows’em będzie to port COMx. Teraz można już wysyłać komendy i wykorzystać całą funkcjonalność urządzenia. Jest to możliwe ręcznie za pomocą emulatora terminala lub z poziomu dowolnego języka programowania, który umożliwia komunikację z portem szeregowym, jak np. Python, Java, C/C++ itd. W praktyce nie ma potrzeby podawania prędkości i parametrów transmisji szeregowej ponieważ warstwa fizyczna jest tu całkowicie emulowana. Jeśli jednak jest to wymagane to można podać prędkość 115200 bps. Za pomocą terminala w systemie Linux połączenie może wyglądać następująco:

screen /dev/ttyACM0

potem już będąc podłączonym do urządzenia, aby wysłać ogólną wiadomość wpisujemy:

/sb oto nasz pierwszy tekst wyslany przez radio w modulacji LoRa

po wciśnięciu enter wiadomość zostanie wysłana przez radio na uprzednio wybranej częstotliwości.
İmage
Wszystkie odbiorniki w urządzeniach „radio4” będących w zasięgu i mających identycznie ustawione parametry transmisji odbiorą tą wiadomość. Będzie ją można zobaczyć na ekranie terminala lub odczytać z portu szeregowego w wybranym języku programowania.
İmage
Dodatkowo „radio4” jest wyposażone w 20 pinowe złącze rozszerzeń EXT. Dostęp do pinów jest możliwy lokalnie oraz za pomocą innego urządzenia „radio4” wykorzystując komendy zdalnego dostępu.
İmage
Każda komenda musi być poprzedzona znakiem „/” (slash). Listę komend można w każdej chwili wyświetlić pisząc /help, aktualnie zaimplementowane są następujące komendy:

/sb <wiadomość tekstowa> – wysłanie wiadomości tekstowej do wszystkich odbiorców

/su <node-id> – wiadomość tekstowa – wysłanie wiadomości do konkretnego odbiorcy

/set <pin> 0|1 – ustawienie wartości wyjściowego pin-u cyfrowego

/rset <node-id> <pin> 0|1 – ustawienie wartości wyjściowego pinu cyfrowego w zdalnym urządzeniu

/sset [0|1] – odczyt lub zmiana stanu obsługi żądań „rset”. Włączenie oznacza, że dane żądanie będzie obsługiwane.

/get <pin> – odczyt wartości cyfrowego pinu wejściowego, w przypadku pinów skonfigurowanych jako wejście analogowe zwracane jest napięcie w woltach z rozdzielczością poniżej 1mV.

/rget <node-id> <pin> – odczyt wartości pinu wejściowego na zdalnym urządzeniu.

/sget [0|1] – odczyt lub zmiana stanu obsługi żądań „rget”.

/pin [pin] [tryb-pracy] – odczyt lub ustawienie trybu pracy pin-u. Dostępne tryby pracy są następujące: ia – we. analogowe, id – we. cyfrowe pull-down, iu – we. cyfrowe pull-up, if – we. cyfrowe floating, oo – wy. cyfrowe open-drain, op – wy. cyfrowe push-pull. Komenda bez podania numeru pin-u oraz trybu pracy wyświetla tryby pracy dla wszystkich 16-tu pinów.

/ping <node-id> – wysłanie żądania odesłania raportu zawierającego odebrany poziom sygnału oraz stosunek sygnał/szum.

/sping [0|1] – odczyt lub zmiana stanu obsługi żądań „ping”. Włączenie oznacza, że dane żądanie będzie obsługiwane.

/info – wyświetlenie wszystkich lokalnych parametrów pracy, można je również odczytać lub zmienić indywidualnie

/rinfo <node-id> – odczyt wybranych parametrów zdalnego urządzenia

/sinfo [0|1] – odczyt lub zmiana stanu obsługi żądań „rinfo”

/swstr – odczyt nazwy aktualnego firmware-u

/rswstr <node-id> – odczyt aktualnego firmware-u działającego na zdalnym urządzeniu. Obsługa włączana flagą „sinfo”.

/swver – odczyt aktualnej wersji firmware-u.

/hwver – odczyt aktualnej wersji hardware-u.

/hwsig – odczyt 12-bajtowej unikalnej sygnatury mikrokontrolera

/ndid – odczyt 32-bitowego adresu urządzenia (węzła). Wykorzystywany do adresowania żądań i wiadomości tekstowych.

/time – liczba milisekund od ostatniego reset-u lub włączenia zasilania.
/freq [Hz] – odczyt lub zmiana aktualnej częstotliwości pracy. W odpowiedzi zwracana jest zawsze aktualna częstotliwość ponieważ może różnić się nieznacznie od zadanej. Wynika to z dokładności zainstalowanego w RFM96W modułu syntezy.

/mod – odczyt aktualnie wybranej modulacji

/sf [wartość] – odczyt lub zmiana współczynnika rozpraszania w modulacji LoRa

/bw [Hz] – odczyt lub zmiana szerokości pasma w modulacji LoRa

/cr [wartość] – odczyt lub zmiana współczynnika kodowania (code-rate) w modulacji LoRa

/lna [poziom] – odczyt lub zmiana wsp. wzmocnienia odbieranego sygnału

/agc [0|1] – odczyt lub zmiana stanu automatycznej regulacji wzmocnienia

/pwr [dBm] – odczyt lub zmiana aktualnej mocy nadajnika

/bcon [0|1] – odczyt lub zmiana stanu beacon-a, który okresowo wysyła kontrolne pakiety w celach diagnostycznych

/bcper <sec> – odczyt lub zmiana czasu między kolejnymi ramkami wysyłanymi przez beacon. W chwili obecnej czas ten jest ustawiony na stałe na 10 sekund. W kolejnych wersjach dodana zostanie możliwość zmiany w pewnym zakresie.

/tcxo [0|1] – odczyt lub zmiana źródła sygnału zegarowego, „0” oznacza wbudowany w moduł rezonator kwarcowy, „1” zewnętrzny, stabilizowany temperaturowo generator dla osiągnięcia większej stabilności przy długich ramkach i/lub mniejszych prędkościach gwarantujących większe zasięgi

/stinfo – status zainstalowanej pamięci EEPROM

/stinit – inicjalizacja pamięci EEPROM domyślnymi wartościami określającymi jej parametry pracy, rodzaj formatowania.

/scfg – zapis aktualnych ustawień do pamięci EEPROM

/lcfg – odczyt ustawień z pamięci EEPROM

/dcfg – zapis do pamięci EEPROM i ustawienie domyślnych parametrów konfiguracji

Do każdej komendy można zastosować parametr ?, który wyświetla sposób wywołania oraz akceptowalne wartości argumentów.

Schemat ideowy układu jest pokazany poniżej:
İmage
Prototyp został wykonany na płytce uniwersalnej i w tej formie przetestowany. Po pomyślnych testach zostały zamówione profesjonalne płytki PCB
İmage
Firmware jest cały czas rozwijany i udoskonalany. W fazie testów jest funkcja autentykacji żądań zdalnych co znacząco podniesie bezpieczeństwo przy zdalnym sterowaniu. Dodatkowo zaimplementowana zostanie możliwość wysyłania dowolnych danych binarnych, również z autentykacją, co umożliwi stosowanie całkowicie własnych protokołów komunikacji.

Kolejnym obszarem udoskonaleń jest wykorzystanie trybów o bardzo niskiej prędkości i co za tym idzie jeszcze większej odporności na zakłócenia i większych zasięgach. W tym celu wymagana jest bardzo stabilna częstotliwość generatora taktującego moduł RFM96W. Standardowo zainstalowany kwarc nie jest wystarczająco stabilny przy bardziej wymagających trybach pracy, przy dłuższych pakietach dochodzi do błędów transmisji. Jest to cecha tego modułu. Rozwiązaniem jest wprowadzenie poprawek do częstotliwości zegara lub zastosowanie generatora kwarcowego ze stabilizowaną temperaturą (TCXO).

W tym celu na płytce uwzględnione zostało miejsce na układ oscylatora z odpowiednio wyprowadzonym padem. W celu jego instalacji należy usunąć z oryginalnej płytki rezonator kwarcowy i podać na wejście taktowania sygnał z TCXO. Potem wystarczy już tylko odblokować TCXO komendą /tcxo 1. Jest to kolejny etap, który wymaga precyzji i testów, jest planowany w kolejnych tygodniach. Alternatywna metoda to pomiar częstotliwości i wprowadzanie korekty do układu modemu. W tym celu wyjście CLK-OUT modułu RFM96W zostało wyprowadzone jako osobny pin na płytce. Oprogramowanie wprowadzania korekt oraz podania sygnału na wyjście CLK-OUT jest kolejnym zadaniem na liście poprawek o dużym priorytecie.

Zachęcam się do zapoznania się z opisem modułu LoRa oraz opisu tej modulacji. Pozwoli to ze zrozumieniem wykorzystać możliwości zastosowanego modułu. Z definicji możliwości „radio4” są ograniczone możliwościami zastosowanego modułu oraz samej modulacji. Jednak moduł taki jaki jest oferowany przez producenta oferuje naprawdę bardzo dużą funkcjonalność, a w przypadku krótkich pakietów danych, możliwe jest też wykorzystanie bardziej wymagających ustawień modemu.

Aktualnie wykonany został test zasięgów w terenie zabudowanym. Jako antena bazowa podająca raporty (komenda „ping”) wykorzystana została antena typu „open-sleeve”, która w paśmie 70cm (czyli ca. 434MHz) ma już pewną kierunkowość i zysk lepszy od dipola.

W module wykorzystano antenę ze złączem SMA, przeznaczoną do urządzeń przenośnych, o długości ok. 45cm. Potwierdzono zasięgi od 500m do 1700m dla pracy mocą 10mW (10dBm) dla standardowych parametrów pracy modemu, czyli:

- częstotliwość: 434 MHz
- współczynnik rozpraszania: 10
- pasmo: 125 kHz
- code rate: 4/5

Po zautomatyzowaniu procesu testowania i pobierania położenia zostaną przeprowadzone bardziej dokładne testy, również z wykorzystaniem bardziej odpornych prędkości pracy dostępnych tylko z modułem TCXO.

Wyniki zostaną przedstawione na tej stronie jak tylko będą dostępne. Postępy w pracy nad projektem będą prezentowane w formie wpisów na bieżącej stronie. Kolejne informacje już wkrótce.

Wszystkich zainteresowanych zapraszam do kontaktu mailowego: robert(malpa)mindpart.com i/lub wizyty na stronie https://mindpart.com/strona-glowna/projekty/radio4/

Robert HF6ROB
11-04-2019 18:08
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


Użytkownicy przeglądający ten wątek: 2 gości