Un programme Python pour des SMS à 2 voies avec le module Lora® de la bande de 33 cm RYLR998, soit avec: soit avec:
Il n'y a pas de fils ici, seulement des appels d'E / S non bloquants asynchrones.
Remarque: Je recommande de connecter le RYLR998 à l'USB Reyax Ryls135 à 1,8 V / 3,3 V / 5V TTL UART Bridge, disponible sur Amazon. Avec ce matériel et un Raspberry Pi 4 (ou 5 - pas encore testé), le logiciel est compatible avec le logiciel d'appliance DiGIPI sans modification de /boot/config.txt .
AVERTISSEMENT: Windows nécessite windows-curses , qui n'implémente pas curses.set_escdelay() à partir de Python 3.11. Commentez cur.set_escdelay(1) dans display.py et exécutez à vos propres risques. La gestion du texte est irrégulière dans Windows, avec la fonction set_escdelay() manquante. Si vous exécutez sous Ubuntu ou Debian sous WSL2 dans Windows, vous n'aurez pas ce problème.
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 et ainsi de suite devraient fonctionner.
Les connexions GPIO sont les suivantes:
AVERTISSEMENT: vous tromper et vous pouvez faire frire votre Raspberry Pi 4 et votre module Reyax RylR998 Lora®. Je n'ai pas eu de problèmes, Knock Wood, mais la licence du MIT est livrée sans garantie. Vérifiez vos connexions! En aucun cas, n'appliquez 5V au module RYLR998 LORA®. Seulement 3,3 V.
Assurez-vous que le shell de connexion sur le port série est désactivé, mais le port série est activé. Dans sudo raspi-config , sélectionnez les options d'interfaçage, puis sélectionnez Serial. Répondez "Non" à "Souhaitez-vous qu'un shell de connexion soit accessible sur SERIAL?" et répondre "oui" à "si vous aimez l'activation du matériel de port série?".
Désactiver Bluetooth dans /boot/config.txt en ajoutant
disable-bt=1
enable-uart=1 Désactiver le service Bluetooth avec
sudo systemctl disable hciuart.serviceuart1 avec l'installation de superposition d'arborescence de périphérique avant d'exécuter le code. Je fais cela dans /etc/rc.local avec sudo dtoverlay uart1Je recommande l'USB Reyax Ryls135 à 1,8 V / 3,3 V / 5V TTL UART Bridge, disponible auprès d'Amazon et d'autres fournisseurs.
Semblable au GPIO, seul VDD passe à la sortie 3,3 V du convertisseur; Rx et Tx sont échangés, comme d'habitude; Et GND va à GND. Voir les photos ci-dessous.


asyncio.BoundedSemaphore() par un drapeau booléen.waitForReply est suffisant.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(). et immédiatement avant de raise KeyboardInterrupt dans l'appel xcvr(...)
uloop . stop ()xcvr(stdscr) , un caractère d' entrée à la fois, en fonction de l'état et du caractère d'entrée actuel.refresh() Lorsqu'une fenêtre change, nous appelons win.noutrefresh() et définissez un peu sale.curses.doupdate() est appelé et le bit sale est réinitialisé. Il s'agit d'une optimisation.Brownlee, J., Ph.D. (2022). Python Asyncio Jump-Start: Programmation asynchrone et E / S non bloquante avec Coroutines (Vol. 7, 7 Vols., Série de coups de démarrage de Python). Extrait le 22 janvier 2023 de https://superfastpython.com/python-asyncio-jump-start/ ISBN-13 979-8361197620
malédictions - Gestion des terminaux pour les affichages de cellules de caractère
"Reyax Rylr998 RyLR498 LORA® au guide de commande" (C) 2021 Reyax Technology CO., Ltd. Extrait le 22 janvier 2023 de https://reyax.com//upload/products_download/download_file/lora_at_command_rylr998_rylr498_en.pdf
La marque et le logo Lora® sont des marques de Semtech Corporation ou de ses affiliés.

Cette capture d'écran montre une session MobaxTerm exécutant le programme rlyr998.py . Le texte jaune est celui de l'expéditeur. Le texte reçu est magenta. Lorsque rylr998.py détecte le texte reçu, l'indicateur "LORA" clignote en vert si le message est assez long; La transmission du texte clignote l'indicateur "LORA" rouge. Les valeurs ADDR (adresse), RSSI et SNR du dernier message reçu sont affichées. Les messages texte sont limités à 40 caractères (dans cette version).
Ceci est un travail en cours. Je prends mon temps à ajouter des fonctions d'affichage de type IRC avec la bibliothèque Python Indies lentement et délibérément avec tous les paresseux, si lentement que je serais licencié et mis sur liste noire si je le faisais professionnellement; a échoué et expulsé sans diplôme et une cargaison de prêts d'étudiants privés prédateurs à des taux d'intérêt usuraires si j'étais au collège; et financé et défroqué si j'étais académicien. Je ne suis pas affilié à Semtech Corporation.