FSK i LoRa w zestawach startowych STMicroelectronics

Podobne dokumenty
LoRa w praktyce (1) CR BW [ Hz ] Modulacja

MOBOT-RCR v2 miniaturowe moduły radiowe Bezprzewodowa transmisja UART

rh-serwer Sterownik główny (serwer) systemu F&Home RADIO.

Wymiary: 90mm/60mm/25mm

rh-serwer 2.0 LR Sterownik główny (serwer) systemu F&Home RADIO. Wersja LR powiększony zasięg.

dokument DOK wersja 1.0

SYSTEM BEZPRZEWODOWY RETRANSMITER SYGNAŁÓW

ADVANCE ELECTRONIC. Instrukcja obsługi aplikacji. Modbus konfigurator. Modbus konfigurator. wersja 1.1

F&F Filipowski Sp. J Pabianice, ul. Konstantynowska 79/81 tel KARTA KATALOGOWA

Uniwersalny modem radiowy UMR433-S2/UK

Obsługa przesyłek InPost w aplikacji Komornik SQL

CENTRALA STERUJĄCA SMART CONTROL

Uniwersalny modem radiowy UMR433-S1-Z/UK UMR433-S1/UK

Modułowy programowalny przekaźnik czasowy firmy Aniro.

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

Szkolenia specjalistyczne

Rozproszony system zbierania danych.

Kod produktu: MP-BTM222-5V

Instrukcja obsługi programatora AVR Prog USB v2

ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM

1. Opis aplikacji. 2. Przeprowadzanie pomiarów. 3. Tworzenie sprawozdania

Instrukcja obsługi. Centrala radiowa NETINO NRU-01. v r.

POLITECHNIKA WROCŁAWSKA WYDZIAŁ ELEKTRYCZNY KATEDRA ENERGOELEKTRYKI LABORATORIUM INTELIGENTNYCH INSTALACJI ELEKTRYCZNYCH

Instytut Teleinformatyki

Katedra Inżynierii Systemów Sterowania WEiA PG. Przemysłowe Sieci Informatyczne Laboratorium

Parametryzacja przetworników analogowocyfrowych

o Instalacja środowiska programistycznego (18) o Blink (18) o Zasilanie (21) o Złącza zasilania (22) o Wejścia analogowe (22) o Złącza cyfrowe (22)

Instrukcja obsługi programatora AVR Prog USB v2

Rozdział ten zawiera informacje na temat zarządzania Modułem Modbus TCP oraz jego konfiguracji.

Po uzupełnieniu informacji i zapisaniu formularza, należy wybrać firmę jako aktywną, potwierdzając na liście dostępnych firm klawiszem Wybierz.

Programowanie mikrokontrolerów 2.0

Jednostka odbiorcza kontroluje temperaturę minimalną i maksymalną mierzoną w różnych miejscach.

Instrukcja dla: Icomsat v1.0 SIM900 GSM/GPRS shield for Arduino oraz dla GPRS Shield produkcji Seeedstudio.

Modem Bluetooth MBL-232/UK

Modem Bluetooth MBL-USB/UK

SML3 październik

interfejs szeregowy wyświetlaczy do systemów PLC

Obługa czujników do robota śledzącego linie. Michał Wendland czerwca 2011

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701.

Instrukcja obsługi programatora AVR Prog USB v2

F&F Filipowski Sp. J Pabianice, ul. Konstantynowska 79/81 tel KARTA KATALOGOWA

Modu³ transmisji radiowej du ej mocy MR03

Minimalna wspierana wersja systemu Android to zalecana 4.0. Ta dokumentacja została wykonana na telefonie HUAWEI ASCEND P7 z Android 4.

1. Tworzenie nowego projektu.

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Instytut Teleinformatyki

Praktyka programowania w C Laboratorium 5.

PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

Specyfikacja techniczna:

Instrukcja do oprogramowania ENAP DEC-1

LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

Instrukcja integratora - obsługa dużych plików w epuap2

1. Aplikacja LOGO! App do LOGO! 8 i LOGO! 7

Instrukcja obsługi programatora AVR Prog USB v2

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

Instrukcja obsługi. PROGRAMATOR dualavr. redflu Tarnów

Modulacja i kodowanie - labolatorium. Modulacje cyfrowe. Kluczowane częstotliwości (FSK)

Szkoła programisty PLC : sterowniki przemysłowe / Gilewski Tomasz. Gliwice, cop Spis treści

Instrukcja użytkownika LK100B. Zawartość opakowania

Modem radiowy MR10-GATEWAY-S

Arduino dla początkujących. Kolejny krok Autor: Simon Monk. Spis treści

Programowanie mikrokontrolerów AVR

Kod produktu: MP-BT-USB

Modem radiowy MR10-NODE-S

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Interfejs analogowy LDN-...-AN

Tablet bezprzewodowy QIT30. Oprogramowanie Macro Key Manager

Projekt AMIplus Opis modelu komunikacji modułu wireless M-BUS wersja r.

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

TECHNIKA MIKROPROCESOROWA II

1.Wstęp. 2.Generowanie systemu w EDK

Instytut Teleinformatyki

1 Moduł Inteligentnego Głośnika

Specyfikacja techniczna:

To jeszcze prostsze, MMcc1100!

1722/85 I 1722/86 INSTRUKCJA UŻYTKOWNIKA. Panel MIKRA i monitory głośnomówiące CXMODO. Nr ref. 1722/85 Nr ref. 1722/86 INSTRUKCJA UŻYTKOWNIKA

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

ZL10PLD. Moduł dippld z układem XC3S200

1 Moduł Inteligentnego Głośnika 3

1.1 Co to jest USBasp? Parametry techniczne Obsługiwane procesory Zawartość zestawu... 4

Kod produktu: MP-BT-RS232

Diagnostyka pamięci RAM

Rysunek 1: Okno z lista

Bezprzewodowy dzwonek zewnętrzny HX (70374) Nr produktu

Konsola operatora TKombajn

SYSTEM PL ROZDZIAŁ D

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

Dokumentacja Techniczna. Czytnik RFID UW-M4GM

Instrukcja obsługi programu. BlazeVideo HDTV Player v6

1 Moduł Bramki xcomfort 3

BEZPRZEWODOWA KARTA SIECIOWA WL-8313 / WL-8314

Aplikacja dla eksperymentu identyfikacyjnego z wykorzystaniem układu PAIO. Wykonał : Marcin Cichorowski Prowadzenie : dr inż.

Angel GTS. Instrukcja użytkownika dla lokalizatora LK 106 GPS.

Instrukcja inteligentnego 2-kanałowego odbiornika radiowego z wbudowanym kontrolerem WiFi

Wpisz ID i nazwę Projektu. Instalacja AMIplus. Opis modelu komunikacji modułu wireless M-BUS w licznikach AMI. wersja r.

ARS3-MODEM dokumentacja modemu radiowego do lokalnej transmisji danych w wolnych pasmach 433MHz i 868MHz

Ćwiczenia z S S jako Profinet-IO Controller. FAQ Marzec 2012

Transkrypt:

FSK i LoRa w zestawach startowych STMicroelectronics Przedstawiona w poprzednich wydaniach EP modulacja LoRa stanowi bardzo dobre rozwiązanie dla systemów wymagających komunikacji bezprzewodowej na duże odległości. Jednak jak w porównaniu z nią wypadają standardowe i powszechnie stosowane techniki modulacji? W artykule przedstawiamy modulację FSK realizowaną na modemach SX1276 firmy Semtech oraz S2-LP od STMicroelectronics. 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: 1. Częstotliwość nośna (carrier frequency, base frequency). 2. Dewiacja częstotliwości (frequency deviation). 3. 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. Rysunek 1. Modulacja FSK z ciągłą fazą (źródło: elprocus.com) 74 ELEKTRONIKA PRAKTYCZNA 12/2017

FSK i LoRa w zestawach startowych STMicroelectronics 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 STM32L082 w jednej obudowie, STEVAL-FKI868V1 zawierający modem S2-LP i stanowiący rozszerzenie dla płytki NUCLEO-L152RE z mikrokontrolerem STM32L152RE. Na zasięg transmisji danych 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 tabeli 1 i tabeli 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 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. Przykładowy program Rysunek 2. Zestawy STEVAL-FKI868V1 z płytką NUCLEO-L152RE (z lewej) i B-L072Z-LRWAN1 (z prawej) (źródło: digikey.com) Testową komunikację nawiążemy za pomocą zestawów NUCLEO-L152RE z rozszerzeniami STEVAL-FKI868V1. 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 (https://goo.gl/eqafg1). 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/: 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. Tabela 1. Czułość odbiornika modułu S2-LP (źródło: st.com) 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 Tabela 2. Czułość odbiornika modułu SX1276 (źródło: semtech.com) ELEKTRONIKA PRAKTYCZNA 12/2017 75

SDK_EVAL_Config.h, cube_hal.h, MCU_Interface.h, 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: Rysunek 3. Tworzenie nowego projektu Rysunek 4. Ścieżki i symbole w ustawieniach projektu 76 ELEKTRONIKA PRAKTYCZNA 12/2017

FSK i LoRa w zestawach startowych STMicroelectronics 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. 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. Po przygotowaniu bibliotek i skonfigurowaniu projektu można przystąpić do implementacji prostej komunikacji pomiędzy dwoma urządzeniami. Program został napisany na podstawie przykładów znajdujących się w pakiecie STSW-S2LP-DK. Składa się on z dwóch funkcji main(), zawierającej konfigurację mikrokontrolera i modułu radiowego oraz HAL_GPIO_EXTI_Callback(), obsługującej przerwania od wszystkich linii GPIO. Fragment funkcji main(), zawierający pełną konfigurację mikrokontrolera oraz moduły S2-LP pokazano na listingu 1. Rozpoczyna się on od inicjalizacji biblioteki Cube HAL, SPI i pinu Shutdown dla modułu radiowego, oraz GPIO dla przycisku i diody. W tej sekcji znajduje się również inicjalizacja znajdującej się na płytce pamięci EEPROM zawierającej m.in. fabrycznie zapisaną poprawkę do częstotliwości nośnej wykorzystywaną do korekcji wartości zmiennej radioconfig.lfrequencybase. Kolejne wywołania to reset modułu S2-LP, synchronizacja zegara i konfiguracja linii przerwań służącej do powiadamiania mikrokontrolera. Następnie wysyłana jest komenda SABORT, która powoduje wyjście ze stanu transmisji, lub odbioru i przejście do stanu READY. W tym ostatnim stanie możliwa jest konfiguracja parametrów radia, przekazywanych do funkcji S2LPRadioInit() za pomocą struktury SRadioInit. W przykładzie radio zostało skonfigurowane następującymi parametrami: SRadioInit radioconfig =.lfrequencybase = 868.0e6,.xModulationSelect = MOD_2FSK,.lDatarate = 300,.lFreqDev = 250,.lBandwidth = 5000 Zgodnie z nimi częstotliwość nośna wynosi 868 MHz, prędkość transmisji 300 bps, dewiacja częstotliwości 250 Hz, a pasmo odbiornika 5000 Hz. Typ modulacji został ustawiony na 2FSK. Jest to zwykła modulacja FSK z użyciem dwóch częstotliwości, w przeciwieństwie do 4FSK, w której do transmisji używa się czterech częstotliwości, co umożliwia transfer dwóch bitów jednocześnie. Kolejne wywołania to ustawienie mocy nadawczej na 14 dbm oraz parametrów filtracji RSSI. Jest to metoda detekcji pakietów przychodzących na podstawie zmian mocy sygnału. W przykładzie została ona skonfigurowana następująco: SRssiInit rssiinit =.crssiflt = 15,.cRssiThreshdBm = 130,.xRssiMode = RSSI_DYNAMIC_6DB_STEP_MODE, Pierwszym parametrem jest wzmocnienie filtra RSSI w dbm, drugim próg RSSI po przekroczeniu którego pakiety danych zostaną odebrane, a ostatnim tryb filtracji. Tryb statyczny oznacza odbiór danych bezpośrednio po przekroczeniu progu, natomiast w trybie dynamicznym oprócz poziomu sprawdzany jest również przyrost RSSI. W kolejnej sekcji konfigurowane są pakiety danych za pomocą struktury: PktBasicInit xbasicinit=.xpreamblelength = 16,.xSyncLength = 32,.lSyncWords = 0x88888888,.xFixVarLength = S_ENABLE,.cExtendedPktLenField = S_DISABLE,.xCrcMode = PKT_CRC_MODE_8BITS,.xAddressField = S_DISABLE,.xFec = S_DISABLE,.xDataWhitening = S_ENABLE, Struktura ta zawiera następujące informacje: długość preambuły, długość i wartość słowa synchronizującego, stała lub zmienna długość pakietu, rozmiar pola z długością danych (jeden lub dwa bajty), typ sumy kontrolnej, włączenie lub wyłączenie pola z adresem odbiornika, włączenie lub wyłączenie autokorekty danych, data whitening, czyli zapobieganie transmisji ciągów zer i jedynek. Następnie jest ustawiana długość danych w pakiecie. Jeśli jest włączona opcja zmiennej długości danych (xfixvarlength = S_ENA- BLE), ustawiona długość dotyczy wyłącznie nadajnika, ponieważ odbiornik otrzyma tą wartość w pakiecie. W przeciwnym razie obie strony muszą mieć jawnie ustawioną długość danych za pomocą funkcji S2LPPktBasicSetPayloadLength(). Na koniec pozostały jeszcze do wybrania źródła przerwań. Z uwagi na fakt, że S2-LP używa tylko jednej linii przerwań, należy wybrać zdarzenia, które będą to przerwanie wywoływać. W przykładzie używane są tylko dwa źródła przerwań koniec nadawania pakietu i jego udany odbiór. Po skończonej konfiguracji można przełączyć moduł w stan odbioru pakietów. Czas oczekiwania na dane można skonfigurować funkcją S2LPTimerSetRxTimerCounter(). Argument 0 oznacza tryb ciągłego nasłuchu. Druga z funkcji jest odpowiedzialna za obsługę przerwań GPIO, zarówno od modułu radiowego, jak i od przycisku użytkownika. Została ona przedstawiona na listingu 2. Z racji tego, że funkcja ta jest wywoływana przez bibliotekę Cube HAL do obsługi wszystkich zarejestrowanych przerwań GPIO, jest w niej wykonywane źródło przerwania na podstawie argumentu. Jeżeli przerwanie pochodzi od moduły S2-LP, należy najpierw pobrać stany wszystkich możliwych zdarzeń wywołując funkcję S2LPGpioIrqGetStatus(). Dla uproszczenia programu w przykładzie obsługiwane są tylko dwa zdarzenia, skonfigurowane wcześniej jako bezpośrednie źródła przerwań: zakończenie transmisji i odbiór pakietu. Pierwsze z nich powoduje wyłączenie diody sygnalizującej stan nadawania i przejście w tryb nasłuchu. Drugie ze zdarzeń powoduje odczyt danych ze sprzętowej kolejki odbiorczej, opróżnienie jej, ponowne przejście w stan nasłuchu oraz ustawienie flagi rxready. Flaga ta jest sprawdzana w pętli while() na końcu funkcji main(). Jeżeli zostanie ona ustawiona, wówczas na 100 ms jest zaświecana dioda sygnalizująca odbiór danych. Obsługa drugiej linii przerwań, sygnalizującej wciśnięcie przycisku, sprowadza się do wysłania komendy ABORT, która przełącza moduł radiowy w stan READY, opróżnienia sprzętowej kolejki nadawczej, nadania pakietu danych i zapalenia diody sygnalizującej stan transmisji danych. Listing 1. Konfiguracja radia w funkcji main() SRadioInit radioconfig =.lfrequencybase = 868.0e6,.xModulationSelect = MOD_2FSK,.lDatarate = 300,.lFreqDev = 250,.lBandwidth = 5000 PktBasicInit xbasicinit=.xpreamblelength = 16,.xSyncLength = 32,.lSyncWords = 0x88888888,.xFixVarLength = S_ENABLE,.cExtendedPktLenField = S_DISABLE,.xCrcMode = PKT_CRC_MODE_8BITS,.xAddressField = S_DISABLE,.xFec = S_DISABLE,.xDataWhitening = S_ENABLE, ELEKTRONIKA PRAKTYCZNA 12/2017 77

Listing 2. Obsługa przerwań GPIO w funkcji HAL_GPIO_EXTI_Callback void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) if(gpio_pin == M2S_GPIO_PIN_IRQ) S2LPIrqs xirqstatus; S2LPGpioIrqGetStatus(&xIrqStatus); if(xirqstatus.irq_tx_data_sent) SdkEvalLedOff(LED1); S2LPCmdStrobeRx(); if(xirqstatus.irq_rx_data_ready) uint8_t crxdata = S2LPFifoReadNumberBytesRxFifo(); uint8_t vectcrxbuff[16]; S2LPSpiReadFifo(cRxData, vectcrxbuff); S2LPCmdStrobeFlushRxFifo(); S2LPCmdStrobeRx(); rxready = 1; else if(gpio_pin == BUTTON1_PIN) SdkEvalLedOn(LED1); uint8_t buffer[5] = 1, 2, 3, 4, 5 S2LPCmdStrobeSabort(); S2LPCmdStrobeFlushTxFifo(); S2LPSpiWriteFifo(5, buffer); S2LPCmdStrobeTx(); Tabela 3. Konfiguracja testowanych modułów Moduł S2-LP SX1276 Modulacja FSK FSK Częstotliwość nośna 868 MHz 868 MHz Dewiacja częstotliwości 600 Hz 600Hz Prędkość transmisji danych 1200 bps 1200 bps Pasmo odbiornika 5000 Hz 2600 Hz Moc nadajnika 14 dbm 14 dbm Test zasięgu Głównym przeznaczeniem modułów S2-LP jest komunikacja na dużą odległość, dlatego w tym rozdziale przedstawione zostaną testy zasięgu. Podobnie jak w przypadku innym modułów radiowych, w tym także przedstawionych poprzednio SX1276, maksymalny zasięg jest uzależniony od konfiguracji modułu, położenia anten, ukształtowania terenu, przeszkód na drodze sygnału radiowego oraz innych czynników zewnętrznych. W teście zostały wykorzystane zarówno opisywane w artykule moduły S2-LP, jak i SX1276 w trybie modulacji FSK. Konfiguracja modemów została przedstawiona w tabeli 3. W obu przypadkach anteny były umieszczone na wysokości ok. 1,5 m nad ziemią, a na drodze sygnału nie znajdowały się żadne przeszkody, co można zobaczyć na rysunku 5. Maksymalny zasięg jaki udało się osiągnąć to ok. 1720 m. Zwiększenie odległości w przypadku obu modułów powodowało utratę pakietów danych. Podsumowanie Moduł radiowy S2-LP oparty na modulacji FSK jest układem dobrze spisującym się w komunikacji na dużą odległość. W zależności od wymagań projektu może być on skonfigurowany do różnych prędkości transmisji danych, co ma jednak wpływ na maksymalny zasięg Rysunek 5. Punkty pomiarowe z zaznaczoną odległością (źródło maps.google.pl) sygnału radiowego. Dodatkowo, dostępne biblioteki i przykłady aplikacji sprawiają, że rozpoczęcie pracy z S2-LP jest stosunkowo proste i nie wymaga dużego nakładu pracy. Krzysztof Chojnowski 78 ELEKTRONIKA PRAKTYCZNA 12/2017