Um programa Python para mensagens de texto em duas vias com o módulo Lora® da banda de 33 cm Reyax Rylr998, com:
Não há threads aqui, apenas chamadas de E/S assíncronas sem bloqueio.
NOTA: Eu recomendo conectar o RYLR998 ao Reyax Ryls135 USB a 1,8V/3.3V/5V TTL Uart Bridge, disponível na Amazon. Com este hardware e um Raspberry Pi 4 (ou 5-ainda não testados), o software é compatível com o software Digipi Appliance sem modificação de /boot/config.txt .
Aviso: o Windows requer windows-curses , que não implementa curses.set_escdelay() A partir do Python 3.11. Comente cur.set_escdelay(1) no display.py e corra por sua conta e risco. O manuseio de texto é irregular no Windows, com a função set_escdelay() ausente. Se você correr no Ubuntu ou no Debian no WSL2 no Windows, não terá esse problema.
usage: rylr998.py [-h] [--debug] [--factory] [--noGPIO] [--addr [0..65535]] [--band [902250000..927750000]] [--pwr [0..22]]
[--mode [0 | 1 | 2,30..60000,30..60000]] [--netid [3..15 | 18]] [--parameter [7..11,7..9,1..4,4..24]] [--echo]
[--port [/dev/ttyS0../dev/ttyS999 | /dev/ttyUSB0../dev/ttyUSB999 | COM0..COM999]]
[--baud (300 | 1200 | 4800 | 9600 | 19200 | 28800 | 38400 | 57600 | 115200)]
options:
-h , --help show this help message and exit
--debug log DEBUG information
--factory Factory reset to manufacturer defaults. BAND: 915MHz, UART: 115200, Spreading Factor: 9, Bandwidth: 125kHz (7), Coding Rate:
1, Preamble Length: 12, Address: 0, Network ID: 18, CRFOP: 22
--noGPIO Do not use rPI.GPIO module even if available. Useful if using a USB to TTL converter with the RYLR998.
rylr998 config:
--addr [0..65535] Module address (0..65535). Default is 0
--band [902250000..927750000]
Module frequency (902250000..927750000) in Hz. NOTE: the full 33cm ISM band limits 902 MHz and 928 MHz are guarded by the
maximum configurable bandwidth of 500 KHz (250 KHz on either side of the configured frequency). See PARAMETER for bandwidth
configuration. Default: 915000000
--pwr [0..22] RF pwr out (0..22) in dBm. Default: FACTORY setting of 22 or the last configured value.
--mode [0 | 1 | 2,30..60000,30..60000]
Mode 0: transceiver mode. Mode 1: sleep mode. Mode 2,x,y: receive for x msec sleep for y msec and so on, indefinitely.
Default: 0
--netid [3..15 | 18] NETWORK ID. Note: PARAMETER values depend on NETWORK ID. Default: 18
--parameter [7..11,7..9,1..4,4..24]
PARAMETER. Set the RF parameters Spreading Factor, Bandwidth, Coding Rate, Preamble. Spreading factor 7..11, default 9.
Bandwidth 7..9, where 7 is 125 KHz (only if spreading factor is in 7..9) ; 8 is 250 KHz (only if spreading factor is in
7..10) ; 9 is 500 KHz (only if spreading factor is in 7..11). Default bandwidth is 7. Coding rate is 1..4, default 4.
Preamble is 4..25 if the NETWORK ID is 18 ; otherwise the preamble must be 12. Default: 9,7,1,12
--echo Retransmit received message
serial port config:
--port [/dev/ttyS0../dev/ttyS999 | /dev/ttyUSB0../dev/ttyUSB999 | COM0..COM999]
Serial port device name. Default: /dev/ttyS0
--baud (300 | 1200 | 4800 | 9600 | 19200 | 28800 | 38400 | 57600 | 115200)
Serial port baudrate. Default: 115200pi@raspberrypi: ~ /RYLR998-LoRa$ python3 rylr998.py --pwr 22 --port /dev/ttyS0 --band 902687500 --netid 6 pip install asyncio e assim por diante deve funcionar.
As conexões GPIO são as seguintes:
Aviso: entenda isso errado e você poderá fritar seu Raspberry Pi 4 e seu módulo Reyax Rylr998 Lora®. Não tive problemas, bata em madeira, mas a licença do MIT vem sem garantia. Verifique suas conexões! Sob nenhuma circunstância se aplica 5V ao módulo RYLR998 LORA®. Apenas 3,3V.
Verifique se o shell de login sobre a porta serial está desativado, mas a porta serial está ativada. No sudo raspi-config , selecione Opções de interface e selecione Serial. Responda "Não" a "Você gostaria que um shell de login fosse acessível em série?" e responda "sim" a "o que você gosta do hardware da porta serial a ser ativado?".
Desative o Bluetooth em /boot/config.txt anexando
disable-bt=1
enable-uart=1 Desative o serviço Bluetooth com
sudo systemctl disable hciuart.serviceuart1 com a instalação de sobreposição de árvores de dispositivos antes de executar o código. Eu faço isso em /etc/rc.local com sudo dtoverlay uart1Eu recomendo o Reyax Ryls135 USB a 1,8V/3.3V/5V TTL Uart Bridge, disponível na Amazon e em outros fornecedores.
Semelhante ao GPIO, apenas o VDD vai para a saída de 3.3V do conversor; RX e TX são trocados, como sempre; e GND vai para GND. Veja as fotos abaixo.


asyncio.BoundedSemaphore() por uma bandeira booleana.waitForReply booleana é suficiente.xcvr(...) : eloop = urwid . AsyncioEventLoop ( loop = asyncio . get_event_loop ())
uloop = urwid . MainLoop ( widget , event_loop = eloop )
uloop . start () # main_loop.py suggests using this instead of run(). e imediatamente antes de raise KeyboardInterrupt no xcvr(...)
uloop . stop ()xcvr(stdscr) , um caractere de entrada por vez, em função do estado e do caractere de entrada atual.refresh() quando uma janela muda, chamamos win.noutrefresh() e definimos um bit sujo.curses.doupdate() são chamadas e o bit sujo será redefinido. Esta é uma otimização.Brownlee, J., Ph.D. (2022). Python Asyncio Jump-start: programação assíncrona e E/S não bloqueando com coroutinas (Vol. 7, 7 vols., Python Concurrency Jump-Start Series). Recuperado em 22 de janeiro de 2023, de https://superfastpython.com/python-asyncio-jump-start/ isbn-13 979-8361197620
Malidades-Manuseio de terminais para displays de células de caracteres
"Reyax Rylr998 RYLR498 LORA® AT COMAND Guide" (C) 2021 Reyax Technology Co., Ltd. Recuperado em 22 de janeiro de 2023, de https://reyax.com//upload/products_download/download_file/lora_at_command_rylr998_rylr498_en.pdf
A marca Lora® e o logotipo são marcas comerciais da Semtech Corporation ou de suas afiliadas.

Esta captura de tela mostra uma sessão do Mobaxterm executando o programa rlyr998.py . O texto amarelo é o do remetente. O texto recebido é magenta. Quando o Rylr998.py detecta o texto recebeu o texto, o indicador "Lora" pisca verde se a mensagem for longa; A transmissão do texto pisca o indicador "Lora" vermelho. Os valores Addr (endereço), RSSI e SNR da última mensagem recebida são mostrados. As mensagens de texto são limitadas a 40 caracteres (nesta versão).
Este é um trabalho em andamento. Estou levando meu tempo adicionando funções de exibição do tipo IRC com a biblioteca de maldições de Python lenta e deliberadamente com toda a preguiça devida, tão lentamente que eu seria demitida e na lista negra se estivesse fazendo isso profissionalmente; reprovado e expulso sem um diploma e um barco de empréstimos predadores de estudantes particulares a taxas de juros usursas se eu estivesse na faculdade; e confundido e descongelado se eu fosse um acadêmico. Não sou afiliado à Semtech Corporation.