โปรแกรม Python สำหรับการส่งข้อความแบบ 2 ทางด้วยโมดูล Reyax Rylr998 Lora®ขนาด 33 ซม
ไม่มีเธรดที่นี่เฉพาะการโทร I/O ที่ไม่ปิดกั้นแบบอะซิงโครนัส
หมายเหตุ: ฉันขอแนะนำให้เชื่อมต่อ RYLR998 กับ Reyax Ryls135 USB กับ 1.8V/3.3V/5V TTL UART BRIDGE ซึ่งมีให้บริการจาก 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®ของคุณ ฉันไม่ได้มีปัญหาเคาะไม้ แต่ใบอนุญาต MIT นั้นไม่มีการรับประกัน ตรวจสอบการเชื่อมต่อของคุณ! ไม่มีสถานการณ์ใดที่ใช้ 5V กับโมดูล RYLR998 LORA® เพียง 3.3V
ตรวจสอบให้แน่ใจว่าเชลล์เข้าสู่ระบบเหนือพอร์ตอนุกรมถูกปิดใช้งาน แต่เปิดใช้งานพอร์ตอนุกรม ใน sudo raspi-config ให้เลือกตัวเลือกการเชื่อมต่อจากนั้นเลือกอนุกรม ตอบ "ไม่" ถึง "คุณต้องการให้เปลือกเข้าสู่ระบบสามารถเข้าถึงได้มากกว่าอนุกรมหรือไม่" และตอบ "ใช่" ถึง "คุณชอบเปิดใช้งานฮาร์ดแวร์พอร์ตอนุกรมหรือไม่?"
ปิดการใช้งานบลูทู ธ ใน /boot/config.txt โดยท้าย
disable-bt=1
enable-uart=1 ปิดใช้งานบริการบลูทู ธ ด้วย
sudo systemctl disable hciuart.serviceuart1 ด้วยอุปกรณ์ซ้อนทับแผนผังอุปกรณ์ก่อนเรียกใช้รหัส ฉันทำสิ่งนี้ใน /etc/rc.local ด้วย sudo dtoverlay uart1ฉันขอแนะนำ Reyax Ryls135 USB ถึง 1.8V/3.3V/5V TTL UART Bridge ที่มีให้จาก 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 vols., ซีรีย์ Jump-Start ของ Python พร้อมกัน) สืบค้น 22 มกราคม 2566 จาก https://superfastpython.com/python-asyncio-jump-start/ isbn-13 979-8361197620
คำสาป-การจัดการเทอร์มินัลสำหรับจอแสดงผล
"Reyax Rylr998 RylR498 LORA®ที่คู่มือคำสั่ง" (C) 2021 Reyax Technology Co., Ltd. สืบค้น 22 มกราคม 2566 จาก https://reyax.com//upload/products_download/download_file/lora_at_command_rylr998_rylr498_en.pdf
LORA® Mark and Logo เป็นเครื่องหมายการค้าของ Semtech Corporation หรือ บริษัท ในเครือ

ภาพหน้าจอนี้แสดงเซสชัน mobaxterm ที่ใช้โปรแกรม rlyr998.py ข้อความสีเหลืองเป็นของผู้ส่ง ข้อความที่ได้รับคือสีม่วงแดง เมื่อ Rylr998.py ตรวจพบข้อความที่ได้รับตัวบ่งชี้ "Lora" จะกะพริบเป็นสีเขียวถ้าข้อความยาวพอ การส่งข้อความกะพริบตัวบ่งชี้ "LORA" สีแดง ค่า ADDR (ที่อยู่), RSSI และ SNR ของข้อความที่ได้รับล่าสุดจะแสดงขึ้น ข้อความถูก จำกัด ไว้ที่ 40 อักขระ (ในเวอร์ชันนี้)
นี่คืองานที่กำลังดำเนินการ ฉันใช้เวลาในการเพิ่มฟังก์ชั่นการแสดงผลเหมือน IRC ด้วยห้องสมุด Python Curses อย่างช้าๆและจงใจด้วยความเฉื่อยชาที่ครบกำหนดทั้งหมดดังนั้นฉันจะถูกไล่ออกและขึ้นบัญชีดำถ้าฉันทำสิ่งนี้อย่างมืออาชีพ flunked และถูกไล่ออกโดยไม่มีการศึกษาระดับปริญญาและเรือของสินเชื่อนักเรียนส่วนตัวที่กินสัตว์อื่นในอัตราดอกเบี้ยที่ไร้เดียงสาถ้าฉันอยู่ในวิทยาลัย และ defunded และ defrocked ถ้าฉันเป็นนักวิชาการ ฉันไม่ได้เป็นพันธมิตรกับ Semtech Corporation