Ein Python-Programm für 2-Wege-SMS mit dem 33-cm-Band Reyax Rylr998 LORA®-Modul, entweder mit:
Hier gibt es keine Themen, nur asynchrone, nicht blockierende E/A-Anrufe.
HINWEIS: Ich empfehle, den Rylr998 mit dem Reyax RYLS135 USB mit 1,8 V/3,3 V/5 V TTL UART Bridge zu verbinden, die von Amazon erhältlich sind. Mit dieser Hardware und einem Raspberry Pi 4 (oder 5-noch nicht getestet) ist die Software mit der Digipi Appliance-Software ohne Änderung von /boot/config.txt kompatibel.
WARNUNG: Windows erfordert windows-curses , die keine curses.set_escdelay() implementieren. Kommentieren Sie cur.set_escdelay(1) in display.py und laufen Sie auf eigenes Risiko aus. Die Textbehandlung ist in Windows unregelmäßig, wobei die Funktion set_escdelay() fehlt. Wenn Sie unter Ubuntu oder Debian unter WSL2 in Windows laufen, haben Sie dieses Problem nicht.
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 und so weiter sollte funktionieren.
Die GPIO -Verbindungen sind wie folgt:
Warnung: Verstehen Sie das falsch und Sie könnten Ihr Raspberry Pi 4 und Ihr Reyax Rylr998 Lora® -Modul braten. Ich hatte keine Probleme, klopfe Holz, aber die MIT -Lizenz ist ohne Garantie geliefert. Überprüfen Sie Ihre Verbindungen! Unter keinen Umständen gelten 5 V für das RYLR998 LORA® -Modul. Nur 3,3 V.
Stellen Sie sicher, dass die Anmeldeschale über dem seriellen Port deaktiviert ist, der serielle Port jedoch aktiviert ist. Wählen Sie in sudo raspi-config die Schnittstellenoptionen aus und wählen Sie dann seriell. Antwort "Nein" zu "Möchten Sie, dass eine Anmeldeberichtungshülle über die Serie zugänglich ist?" und antworten Sie "Ja", "worum Ihnen die serielle Port -Hardware aktiviert wird?".
Deaktivieren Sie Bluetooth in /boot/config.txt indem Sie Anhänge anhängen
disable-bt=1
enable-uart=1 Deaktivieren Sie den Bluetooth -Service mit
sudo systemctl disable hciuart.serviceuart1 mit der Device Tree Overlay -Einrichtung, bevor Sie den Code ausführen. Ich mache das in /etc/rc.local mit sudo dtoverlay uart1Ich empfehle den Reyax RYLS135 USB auf 1,8 V/3,3 V/5V TTL UART Bridge, erhältlich von Amazon und anderen Lieferanten.
Ähnlich wie beim GPIO geht nur VDD zum 3,3 -V -Ausgang des Konverters. RX und TX werden wie immer getauscht; und GND geht zu GND. Siehe die Bilder unten.


asyncio.BoundedSemaphore() durch eine booleale Flagge.waitForReply ist ausreichend.xcvr(...) verwendet werden: 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(). und unmittelbar vor raise KeyboardInterrupt innerhalb von xcvr(...) aufrufen
uloop . stop ()xcvr(stdscr) , einem Eingangszeichen jeweils statt, als Funktion des Zustands und des aktuellen Eingangszeichens.refresh() aufzurufen, wenn sich ein Fenster ändert, nennen wir win.noutrefresh() und setzen ein schmutziges Stück.curses.doupdate() aufgerufen und das schmutzige Bit wird zurückgesetzt. Dies ist eine Optimierung.Brownlee, J., Ph.D. (2022). Python Asyncio Jump-Start: Asynchrones Programmieren und nicht blockierende I/O mit Coroutinen (Bd. 7, 7 Bd., Python Concurrency Jump-Start-Serie). Abgerufen am 22. Januar 2023 von https://superfastpython.com/python-asyncio-jump-start/ isbn-13 979-8361197620
Flüche-Terminalbehandlung für Zeichenzellenanzeigen
"Reyax Rylr998 Rylr498 LORA® AT Command Guide" (C) 2021 Reyax Technology Co., Ltd. Abgerufen am 22. Januar 2023 von https://reyax.com//upload/products_download/download_File/lora_at_command_ylr998_ylr498_en.pdf
Das Lora® Mark und das Logo sind Marken der Semtech Corporation oder seiner verbundenen Unternehmen.

Dieser Screenshot zeigt eine Mobaxterm -Sitzung mit dem Programm rlyr998.py . Der gelbe Text ist der des Absenders. Der empfangene Text ist Magenta. Wenn rylr998.py den empfangenen Text erkennt, blinkt die Anzeige "Lora" grün, wenn die Nachricht lang genug ist. Die Übertragung von Text blinkt den "Lora" -Anzeigungskontakt rot. Die ADDR (Adresse), RSSI- und SNR -Werte der letzten empfangenen Nachricht werden angezeigt. Die Textnachrichten sind auf 40 Zeichen begrenzt (in dieser Version).
Dies ist eine laufende Arbeit. Ich nehme mir Zeit, IRC-ähnliche Display-Funktionen mit der Python Curse Library langsam und absichtlich mit allen fälligem Faultier hinzuzufügen, so langsam, dass ich gefeuert und auf die schwarze Liste gesetzt werde, wenn ich dies professionell tun würde. ohne einen Abschluss und eine Bootsladung räuberischer privater Studentenkredite zu wuschlichen Zinsen ausgestoßen und ausgewiesen, wenn ich im College war; und entschieden und entdeckt, wenn ich Akademiker wäre. Ich bin nicht mit der Semtech Corporation verbunden.