- komunikacja w paśmie ISM 868 MHz przy zastosowaniu modulacji LoRA,
- wyposażony jest w gniazdo antenowe do bezpośredniego podłączenia anteny o impedancji 50 Ω z wtykiem żeńskim uFL,
- realizuje bezprzewodową transmisję szeregowego interfejsu UART,
- możliwa praca w trybie adresacji – tylko modem ze zgodnym kanałem i adresacją będzie odbierał transmitowane dane,
- możliwa praca w trybie rozgłoszeniowym (broadcast) – wszystkie moduły ze zgodnym kanałem będą odbierały dane,
- transmisja jest „otwarta” i możliwa do podsłuchania dowolnym innym modemem E32 pracującym z taką samą konfiguracją. Autoryzacja urządzeń i szyfrowanie przesyłanych danych muszą być wykonane w aplikacji sterującej.
W urządzeniu zastosowano moduł radiowy typu E32-868T20S firmy Ebyte, którego wygląd pokazano na fotografii 1. Odpowiada on za realizację transmisji szeregowej UART w paśmie ISM 866 MHz z modulacją LoRa. Wybór modemu został podyktowany prostotą aplikacji i konfiguracji.
Budowa i działanie
Schemat urządzenia został pokazany na rysunku 1. Moduł RM typu E32-868T20S zasilany jest napięciem systemowym Pico VSYS lub stabilizowanym 3,3 V z wewnętrznego stabilizatora Pico V33. Wybór napięcia zasilania modemu VRM umożliwia zwora VS. Do komunikacji z Pico używany jest interfejs UART dostępny na wyprowadzeniach GPIO0/1 (UART0) lub GPIO4/5 (UART1). Wyboru używanego UART dokonujemy przez zalutowanie odpowiednich pól zwór PCB RX/TX.
Dioda AUX sterowana sygnałem aktywności modemu AUX wskazuje aktywną komunikację. Układ U1 buforuje wyjście AUX modemu. Modem wyposażony jest w gniazdo antenowe do bezpośredniego podłączenia anteny o impedancji 50 Ω pracującej w paśmie 868 MHz, zakończonej wtykiem żeńskim uFL. Do sterowania trybem pracy modemu wymagane są dwa sygnały sterujące M0 i M1 podłączone do GPIO2, GPIO3. Znaczenie sygnałów M0, M1 opisano w tabeli 1. Dodatkowo do złącza I²C doprowadzono magistralę I²C0, która umożliwia podłączenie zewnętrznych czujników, gdy modem zajmuje UART0.
Montaż i uruchomienie
Układ zmontowany jest na dwustronnej płytce drukowanej zgodnej rozmiarami z Raspberry Pi Pico, której schemat został pokazany na rysunku 2. Montaż nie wymaga opisu, zmontowane urządzenie pokazuje fotografia tytułowa.
Dla sprawdzenia modułu konieczne jest przygotowanie Raspberry Pi Pico oraz drugiego modemu E32, czy to w formie Xbee, czy nakładki na Raspberry Pi. Domyślnie port szeregowy modemu jest skonfigurowany do transmisji z parametrami 9600, 8N1 i taką należy ustawić podczas testów. W przypadku nakładki XbeeUSB (AVT5513) podłączonej do PC, wybieramy port, pod którym zgłosi się konwerter UART/USB. Fabryczna konfiguracja przewiduje pracę modemów jako jednokanałowy link radiowy dla portu szeregowego.
from machine import UART, Pin
import time
M0 = Pin(2, Pin.OUT)
M1 = Pin(3, Pin.OUT)
M0.value(0)
M1.value(0)
uart0 = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))
txData = b’Test E32Lora TX Hello IoTworld\n\r’
uart0.write(txData)
time.sleep(1)
Dla sprawdzenia działania nakładki uruchamiamy środowisko Thonny, dla którego przygotowałem dwa proste skrypty: serialTX.py (listing 1) nadający sekwencję testową i serialRX.py (listing 2) odbierający znaki z modemu. Uruchamiamy terminal szeregowy w PC oraz środowisko Thonny i uruchamiamy skrypt serialTX.py. Po uruchomieniu skryptu, w terminalu PC powinien pojawić się ciąg znaków testowych, a transmisja powinna być sygnalizowana diodą AUX. Dla sprawdzenia transmisji w odwrotnym kierunku uruchamiamy skrypt serialRX.py. W tym przypadku znaki wpisywane w terminalu PC powinny pojawiać się w konsoli Thonny, a transmisja powinna być sygnalizowana świeceniem LED AUX.
from machine import UART, Pin
import time
from time import sleep
M0 = Pin(2, Pin.OUT)
M1 = Pin(3, Pin.OUT)
M0.value(0)
M1.value(0)
uart0 = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))
b = None
while True:
sleep(1)
if uart0.any():
b = uart0.read()
print(b)
Jeżeli modemy działają prawidłowo w konfiguracji fabrycznej, można przejść do utworzenia własnej aplikacji. W pierwszej kolejności należy pamiętać o wprowadzeniu modemów w tryb konfiguracji, ustawiając stany M0=1, M1=1 (GPIO2, GPIO3) i parametry portu szeregowego 9600, 8N1. Obsługiwane są instrukcje konfiguracyjne, zestawione w tabeli 2.
Znaczenie poszczególnych parametrów konfiguracyjnych przedstawiono w tabeli 3. Jeżeli modemy ustawione zostaną w tryb adresacji, tylko modem ze zgodnym kanałem i adresacją będzie odbierał transmitowane dane. Jeżeli adres zostanie ustawiony na 65535, modem będzie pracował w trybie rozgłoszeniowym Broadcast i wszystkie moduły ze zgodnym kanałem będą odbierały dane.
W przypadku użycia modemu E32 należy pamiętać, że oprócz sprawdzania FEC, nie jest zapewniona żadna inna metoda zabezpieczania transmisji. Transmisja jest „otwarta” i możliwa do podsłuchania dowolnym innym modemem E32 pracującym z taką samą konfiguracją. Autoryzacja urządzeń i szyfrowanie przesyłanych danych muszą być wykonane w aplikacji sterującej.
Adam Tatuś, EP
- R1: 47 kΩ
- R2: 1 kΩ
- C1: 10 μF 10 V (SMD0603)
- CE1: 22 μF/10 V tantalowy (SMD3216)
- C2, C3: 0,1 μF (SMD0603)
- LD: LED czerwona (SMD0603)
- U1: 74V1G04 (SC70-5)
- I²C: złącze JST 1 mm
- M1: złącza Pi Pico żeńskie 2, 8 pinów, 2 kpl
- RM: radiomodem Ebyte E32-868T20S