Program Python untuk SMS 2 arah dengan band 33cm REYAX RYLR998 LORA® Module, baik dengan:
Tidak ada utas di sini, hanya panggilan I/O non-blocking asinkron.
CATATAN: Saya sarankan menghubungkan RYLR998 ke REYAX RYLS135 USB ke Jembatan 1.8V/3.3V/5V TTL UART, tersedia dari Amazon. Dengan perangkat keras ini dan Raspberry Pi 4 (atau 5-belum diuji), perangkat lunak ini kompatibel dengan perangkat lunak alat DIGIPI tanpa modifikasi /boot/config.txt .
PERINGATAN: Windows membutuhkan windows-curses , yang tidak mengimplementasikan curses.set_escdelay() pada Python 3.11. Komentar keluar cur.set_escdelay(1) di display.py dan jalankan dengan risiko Anda sendiri. Penanganan teks tidak menentu di Windows, dengan fungsi set_escdelay() hilang. Jika Anda berlari di bawah Ubuntu atau Debian di bawah WSL2 di Windows, Anda tidak akan memiliki masalah ini.
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 dan sebagainya harus berfungsi.
Koneksi GPIO adalah sebagai berikut:
PERINGATAN: Lakukan salah ini dan Anda bisa menggoreng Raspberry Pi 4 Anda dan modul REYAX RYLR998 LORA® Anda. Saya belum memiliki masalah, mengetuk kayu, tetapi lisensi MIT datang tanpa jaminan. Periksa koneksi Anda! Dalam keadaan apa pun berlaku 5V ke modul RYLR998 LORA®. Hanya 3.3V.
Pastikan bahwa cangkang login di atas port serial dinonaktifkan, tetapi port serial diaktifkan. Dalam sudo raspi-config , pilih opsi antarmuka, lalu pilih Serial. Jawab "Tidak" untuk "Apakah Anda ingin shell login dapat diakses daripada serial?" dan jawab "ya" untuk "apakah Anda menyukai perangkat keras port serial yang diaktifkan?".
Nonaktifkan Bluetooth di /boot/config.txt dengan menambahkan
disable-bt=1
enable-uart=1 Nonaktifkan layanan Bluetooth dengan
sudo systemctl disable hciuart.serviceuart1 dengan fasilitas overlay pohon perangkat sebelum menjalankan kode. Saya melakukan ini di /etc/rc.local dengan sudo dtoverlay uart1Saya merekomendasikan Jembatan RYYAX RYLS135 USB hingga 1.8V/3.3V/5V TTL UART, tersedia dari Amazon dan pemasok lainnya.
Mirip dengan GPIO, hanya VDD yang masuk ke output 3.3V dari konverter; RX dan TX ditukar, seperti biasa; dan GND pergi ke GND. Lihat gambar di bawah ini.


asyncio.BoundedSemaphore() dengan bendera boolean.waitForReply boolean sudah cukup.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(). dan segera sebelum raise KeyboardInterrupt dalam panggilan xcvr(...)
uloop . stop ()xcvr(stdscr) , satu karakter input pada satu waktu, sebagai fungsi dari keadaan dan karakter input saat ini.refresh() saat jendela berubah, kami memanggil win.noutrefresh() dan mengatur bit kotor.curses.doupdate() dipanggil dan bit kotor diatur ulang. Ini adalah optimasi.Brownlee, J., Ph.D. (2022). Python Asyncio Jump-Start: Pemrograman asinkron dan I/O non-blocking dengan coroutines (vol. 7, 7 vol., Seri lompatan python concurrency). Diperoleh 22 Januari 2023, dari https://superfastpython.com/python-asyncio-jump-start/ ISBN-13 979-8361197620
Kutukan-Penanganan Terminal untuk Tampilan Sel Karakter
"REYAX RYLR998 RYLR498 LORA® AT Command Guide" (C) 2021 REYAX TECHNOLOGN CO., Ltd. Diperoleh 22 Januari 2023, dari https://reyax.com//upload/products_download/download_file/lora_at_command_rylr998_rylr498_en.pdf
Tanda dan logo Lora® adalah merek dagang dari Semtech Corporation atau afiliasinya.

Tangkapan tangkapan layar ini menunjukkan sesi Mobilaxter yang menjalankan program rlyr998.py . Teks kuning adalah pengirimnya. Teks yang diterima adalah Magenta. Ketika rylr998.py mendeteksi teks yang diterima, indikator "Lora" berkedip hijau jika pesannya cukup panjang; Transmisi teks memalsukan indikator "lora" merah. Nilai addr (alamat), RSSI dan SNR dari pesan yang diterima terakhir ditampilkan. Pesan teks dibatasi hingga 40 karakter (dalam versi ini).
Ini adalah pekerjaan yang sedang berlangsung. Saya meluangkan waktu saya menambahkan fungsi tampilan seperti IRC dengan perpustakaan Python Curses secara perlahan dan sengaja dengan semua sloth, jadi lambat sehingga saya akan dipecat dan daftar hitam jika saya melakukan ini secara profesional; gagal dan dikeluarkan tanpa gelar dan satu kapal pinjaman mahasiswa swasta predator dengan suku bunga renang jika saya masih kuliah; dan digunduli dan dicabut jika saya seorang akademisi. Saya tidak berafiliasi dengan SEMTECH Corporation.