Transmisja radiowa FSK – osiągi w praktyce

Przedstawiona we wcześniej publikowanych artykułach modulacja LoRa stanowi bardzo dobre rozwiązanie dla systemów wymagających komunikacji bezprzewodowej na duże odległości. Jak w porównaniu z nią wypadają standardowe i powszechnie stosowane techniki modulacji?

W tym artykule zostanie przedstawiona modulacja FSK na przykładzie modemów SX1276 firmy Semtech oraz S2-LP od STMicroelectronics.

 

Modulacja FSK

FSK jest rodzajem modulacji częstotliwości, w której informacja cyfrowa jest przekazywana za pomocą dyskretnych zmian częstotliwości nośnej. W przypadku sygnału binarnego mamy do czynienia z dwiema częstotliwościami, z których jedna odpowiada stanowi logicznemu 0, a druga – stanowi 1. Modulacja FSK może być opisana za pomocą trzech parametrów:

  • częstotliwość nośna (carrier frequency, base frequency),
  • dewiacja częstotliwości (frequency deviation),
  • prędkość transmisji danych (datarate).

Podczas modulacji sygnału binarnego, różnica między częstotliwością nośną, a częstotliwościami odpowiadającymi stanom niskiemu i wysokiemu jest określona przez dewiację częstotliwości. Zmiana częstotliwości może odbywać się poprzez kluczowanie pomiędzy dwoma generatorami lub przestrajanie jednego generatora. Drugi przypadek został przedstawiony na rysunku 1.

Rys. 1. Modulacja FSK z ciągłą fazą (źródło: elprocus.com)

Modyfikacją modulacji FSK jest modulacja GFSK, w której sygnał przed modulacją jest przepuszczany przez filtr Gaussa. W rezultacie zmiana częstotliwości sygnału po modulacji przebiega płynnie, co z kolei umożliwia ograniczenie szerokości widma. Modulacja ta jest używana m. in. w komunikacji Bluetooth.

Moduły radiowe

FSK jest modulacją powszechnie używaną, dlatego na rynku dostępnych jest wiele modułów radiowych, które można wykorzystać do tego rodzaju komunikacji. W przykładach użyte zostały modemy SX1276 (umożliwiający także komunikację z modulacją LoRa) oraz S2-LP. Są one dostępne w zestawach ewaluacyjnych pokazanych na rysunku 2:

  • B-L072Z-LRWAN1 z układem CMWX1ZZABZ-091 zawierającym modem SX1276 i mikrokontroler STM32L072 w jednej obudowie,
  • STEVAL-FKI868V1 zawierający modem S2-LP i stanowiący rozszerzenie dla płytki NUCLEO-L152RE z mikrokontrolerem STM32L152RE.
Rys. 2. Zestawy STEVAL-FKI868V1 z płytką NUCLEO-L152RE (z lewej) i B-L072Z-LRWAN1 (z prawej)

Na maksymalną odległość na jaką można transmitować dane wpływa m.in. czułość odbiornika. Jest ona zależna od konfiguracji modemu, czyli od takich parametrów jak częstotliwość nośna, dewiacja częstotliwości i prędkość transmisji. W tabelach 1 i 2 przedstawiono wartości czułości odbiorników, wskazywane przez dokumentacje modułów, dla częstotliwości nośnej 868 MHz w zależności od pozostałych parametrów.

Z przedstawionych tabel można łatwo wywnioskować, że największą czułość, a przez to największy zasięg można osiągnąć przez maksymalne ograniczenie prędkości transmisji i dewiacji częstotliwości.

Tab. 1. Czułość odbiornika modułu S2-LP (źródło: st.com)

Tab. 2. Czułość odbiornika modułu SX1276 (źródło: semtech.com)

Przykładowy program

Ostatnio został przedstawiony prosty przykład komunikacji z użyciem dwóch zestawów B-L072Z-LRWAN1. Tym razem zostanie opisana komunikacja za pomocą zestawów NUCLEO-L152RE z rozszerzeniami STEVAL-FKI868V1. Podobnie jak poprzednio projekt zostanie przygotowany w środowisku SW4STM32.

Przed przystąpieniem do tworzenia projektu trzeba pobrać sterowniki do modułu S2-LP (STSW-S2LP-DK) ze strony (http://www.st.com/content/st_com/en/products/embedded-software/evaluation-tool-software/stsw-s2lp-dk.html). Po zainstalowaniu pakietu mamy do dyspozycji sterowniki, przykładowe projekty i aplikację graficzną umożliwiającą konfigurację modemu.

Najważniejsze są oczywiście sterowniki, które zostaną wykorzystane w prezentowanej aplikacji. Projekt w środowisku SW4STM32 należy utworzyć korzystając z opcji File → New → C Project, wybierając konfigurację dla płytki NUCLEO-L152RE i biblioteki Cube HAL (rysunek 3). Następnie należy skopiować do projektu następujące źródła z katalogu w którym zostały wcześniej zainstalowane biblioteki:

  • Do katalogu głównego projektu
    • Projects/Drivers/BSP/Components/S2LP
      • Sterowniki do modemu radiowego S2-LP
    • Projects/Drivers/BSP/STM32_Nucleo
      • Biblioteki obsługi peryferiów płytki NUCLEO-L152RE
    • Do katalogu inc/
      • Projects/Projects_Cube/S2LPLibrary_Examples/Inc/SDK_EVAL_Config.h
      • Projects/Projects_Cube/S2LPLibrary_Examples/Inc/cube_hal.h
      • Projects/Projects_Cube/S2LPLibrary_Examples/Inc/MCU_Interface.h
      • Projects/Projects_Cube/S2LPLibrary_Examples/Inc/stm32l1xx_it.h
    • Do katalogu src/
      • Projects/Projects_Cube/S2LPLibrary_Examples/Src/stm32l1xx_it.c

Z uwagi na powtarzające się definicje funkcji obsługi UART i SPI, należy usunąć z projektu pliki:

  • STM32_Nucleo/Src/SDK_EVAL_Com_UART_DMA_TX.c
  • STM32_Nucleo/Src/SDK_EVAL_Spi_Driver_DMA.c

Należy także usunąć katalog Utilities, który został automatycznie dodany do projektu, ponieważ zdefiniowane w znajdujących się w nim plikach są również w skopiowanych przed chwilą źródłach.

Rys. 3. Tworzenie nowego projektu

Po skopiowaniu plików należy dodać ścieżki do źródeł i nagłówków w ustawieniach projektu. Potrzebna będzie też definicja symbolu USE_SYSTICK_DELAY. Wszystkie ustawienia zostały przedstawione na rysunku 4.

Rys. 4. Ścieżki i symbole w ustawieniach projektu