برنامج Python للرسائل النصية ثنائية الاتجاه مع وحدة REYAX RYLR998 LORA® 33 سم ، إما مع:
لا توجد مؤشرات ترابط هنا ، فقط مكالمات I/O غير متزامنة غير متزامنة.
ملاحظة: أوصي بتوصيل RYLR998 بجسر REYAX RYLS135 USB إلى جسر UART TTL TTL TTL/5V/5V ، المتاح من Amazon. مع هذا الجهاز و Raspberry PI 4 (أو 5-لم يتم اختباره بعد) ، فإن البرنامج متوافق مع برنامج DigiPi Appliance دون تعديل /boot/config.txt .
تحذير: يتطلب Windows windows-curses ، والتي لا تنفذ curses.set_escdelay() اعتبارًا من Python 3.11. التعليق على cur.set_escdelay(1) في display.py وقم بتشغيله على مسؤوليتك الخاصة. يعد معالجة النص غير منتظم في Windows ، مع مفقودة وظيفة set_escdelay() . إذا كنت تعمل تحت Ubuntu أو Debian بموجب WSL2 في Windows ، فلن تواجه هذه المشكلة.
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 وهلم جرا يجب أن تعمل.
اتصالات GPIO هي كما يلي:
تحذير: احصل على هذا الخطأ ويمكنك أن تقلى Raspberry Pi 4 ووحدة Reyax Rylr998 Lora®. لم أواجه مشاكل ، وضرب الخشب ، لكن رخصة معهد ماساتشوستس للتكنولوجيا لا تأتي بدون ضمان. تحقق من اتصالاتك! تحت أي ظرف من الظروف تطبيق 5V على وحدة RYLR998 LORA®. فقط 3.3 فولت.
تأكد من تعطيل قذيفة تسجيل الدخول على المنفذ التسلسلي ، ولكن يتم تمكين المنفذ التسلسلي. في sudo raspi-config ، حدد خيارات التواصل ، ثم حدد المسلسل. الإجابة "لا" إلى "هل ترغب في الوصول إلى قشرة تسجيل الدخول على المسلسل؟" والإجابة "نعم" على "Woud أنت تحب تمكين أجهزة المنفذ التسلسلي؟".
تعطيل Bluetooth في /boot/config.txt عن طريق الإلحاق
disable-bt=1
enable-uart=1 تعطيل خدمة Bluetooth
sudo systemctl disable hciuart.serviceuart1 مع مرفق تراكب شجرة الجهاز قبل تشغيل الكود. أفعل هذا في /etc/rc.local مع sudo dtoverlay uart1أوصي بجسر REYAX RYLS135 USB إلى جسر UART 1.8V/3.3V/5V TTL ، متاح من Amazon وغيرهم من الموردين.
على غرار GPIO ، يذهب فقط VDD إلى إخراج 3.3V للمحول ؛ يتم تبديل RX و TX ، كالعادة ؛ و GND يذهب إلى GND. انظر الصور أدناه.


asyncio.BoundedSemaphore() بعلم منطقي.waitForReply بغرافي كافٍ.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(). وقبل أن raise KeyboardInterrupt مباشرة ضمن مكالمة xcvr(...)
uloop . stop ()xcvr(stdscr) ، حرف إدخال واحد في وقت واحد ، كدالة للحالة وحرف الإدخال الحالي.refresh() عندما تتغير نافذة ، نسمي win.noutrefresh() ونضع جزءًا قذرًا.curses.doupdate() ويتم إعادة تعيين البت القذر. هذا هو التحسين.Brownlee ، J. ، Ph.D. (2022). Python Asyncio Jump-Start: البرمجة غير المتزامنة و I/O غير المحصورة مع Coroutines (المجلد 7 ، 7 مجلدات ، سلسلة Jump-Start Python Concurrency). تم الاسترجاع في 22 يناير 2023 ، من https://superfastpython.com/python-asyncio-jump-start/ ISBN-13 979-8361197620
لعنات-معالجة طرفية لعرض خلايا الأحرف
"REYAX RYLR998 RYLR498 LORA® AT Command Guide" (C) 2021 Reyax Technology Co. ، Ltd. تم استرجاعه في 22 يناير 2023 ، من https://reyax.com//upload/products_download/download_file/lora_at_command_rylr998_rylr498_en.pdff
يعد Lora® Mark and Logo علامات تجارية لشركة Semtech Corporation أو الشركات التابعة لها.

تعرض لقطة الشاشة هذه جلسة mobaxterm تدير برنامج rlyr998.py . النص الأصفر هو نص المرسل. النص المستلم هو أرجواني. عندما يكتشف Rylr998.py النص المستلم ، يومض مؤشر "Lora" باللون الأخضر إذا كانت الرسالة طويلة بما فيه الكفاية ؛ انتقال النص يومض مؤشر "Lora" الأحمر. يتم عرض قيم ADDR (العنوان) و RSSI و SNR لآخر رسالة مستلمة. تقتصر الرسائل النصية على 40 حرفًا (في هذا الإصدار).
هذا عمل مستمر. أنا آخذ وقتي في إضافة وظائف عرض تشبه IRC مع مكتبة Python Curses ببطء وعمد مع كل الكسلات المستحقة ، ببطء شديد لدرجة أنني سيتم إطلاقها وإدراجها في القائمة السوداء إذا كنت أفعل هذا بشكل احترافي ؛ غارقة وطرد دون شهادة وحمولة قارب من قروض الطلاب الخاصة بالفائدة بأسعار فائدة رائعة إذا كنت في الكلية ؛ و defunded و defrocked إذا كنت أكاديميا. أنا لست تابعًا لشركة Semtech Corporation.