CC1101 Linux 设备驱动程序的 Python 接口
项目描述
cc1101-蟒蛇
该项目为CC1101 Linux 驱动程序提供了一个接口,以允许从 Python 接收和传输数据包。
设置
pip3 install cc1101-python
命令行
python3 -m cc1101 {tx,rx,config,reset}
配置
从驱动程序中检索当前配置。
rx并tx打印人类可读的配置选项。
rx_raw并tx_raw打印当前 RX 和 TX 配置的 CC1101 的寄存器值。
dev_raw打印硬件的当前寄存器值。
重置
清除 RX 和 TX 配置并重置无线电硬件。
发送/接收
发送或接收数据包。
常用选项
device
/dev/cc1101.x.x驱动程序提供的接口的路径。
frequency
接收/发送的频率。有效值为 300-348、387-464 和 779-928 MHz。
modulation
要使用的调制方案。有效值为 OOK、FSK_2、FSK_4、GFSK、MSK。
baud_rate
以 kBaud 为单位接收/发送数据包的数据速率。有效值在 0.6-500 范围内,取决于调制:
| 调制 | 波特率 |
|---|---|
| OOK / GFSK | 0.6 - 250 |
| 2FSK | 0.6 - 500 |
| 4FSK | 0.6 - 300 |
| 斯隆 | 26 - 500 |
--sync_word
要使用的同步字,指定为两个或四个字节的十六进制值(例如0f0f)。如果使用四个字节,则高低两个字节必须相同(例如0f0f0f0f)
在 RX 中,设备搜索指定的同步字以开始接收。设置0x00为禁用同步字。
在 TX 中,同步字被预先添加到每个数据包中。
--deviation
使用 FSK 调制时,以 kHz 为单位设置所提供频率任一侧的偏差以用于调制。
rx选项
packet_length
通过同步字或载波侦听阈值触发 RX 后无线电将接收的字节数。
--bandwidth
以 kHz 为单位设置接收带宽。有效值为
58,67,81,101,116,135,162,203,232,270,325,406,464,541,650,812
--carrier-sense
设置开始 RX 所需的载波侦听阈值(以 dB 为单位)。载波意义可以设置为相对值或绝对值。当提供同步字时,RX 仅在载波检测高于阈值并且已接收到同步字时才开始。
不指定值会禁用载波侦听。
相对值为+6和。当接收信号强度指示器 (RSSI) 突然增加该值时,这些会导致无线电开始接收。这是用于基本 RX 的最简单模式。+10+14
绝对值-7以7dB 为单位。--magn-target当 RSSI 超过+/- 载波侦听值指定的绝对值时,这些值会导致无线电开始接收。使用绝对载波侦听可能需要通过实验调整--magn-target和直到达到所需--max-lna-gain的--max-dvga-gainRSSI 范围。--out-format rssi可以用来帮助找到这个。有关示例,请参见CC1101 数据表的第 17.4 节。
--magn-target
以 dB 为单位设置目标通道滤波器幅度。有效值为:
24, 27, 30, 33, 36, 38, 40, 42
--max-lna-gain
将最大 LNA 增益降低大约指定的 dB 量。
有效值为:
0, 3, 6, 7, 9, 12, 15, 17
--max-dvga-gain
将最大 DVGA 增益降低大约指定的 dB 量。
有效值为:
0, 6, 12, 18
--block
接收时保持设备手柄打开。这可以防止另一个进程使用或重新配置设备,但会防止两个进程之间的单个设备上的 RX/TX 多路复用。
--out-format
设置输出格式。
info打印接收到的数据包计数、接收信号强度指示符 (RSSI) 和每个接收到的数据包的十六进制表示。
hex将数据包打印为十六进制。
bin将原始数据包字节输出到标准输出。这对于管道到其他工具很有用。
rssi持续输出RSSI的当前值。
tx选项
frequency
发射频率。在 TX 模式下,频率默认限制为 315/433/868/915 MHz +/- 1MHz,这允许将 TX Power 指定为TI DN013中列出的 dBm 值之一。可以使用该--raw标志禁用此检查。
tx_power
用于传输的功率(dBm)。值必须与TI DN013的相应频率表中的值之一匹配。
packet
使用 CC1101 传输的十六进制字节序列。
--raw
在--raw模式下,tx_power以十六进制的单个字节的形式提供,将直接在 CC1101 的PATABLE. 可以使用任何有效的频率值。
接收示例
python3 -m cc1101 rx /dev/cc1101.0.0 433 OOK 1 64
TX 示例
python3 -m cc1101 tx /dev/cc1101.0.0 433 OOK 1 1.4 0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
Python 库
这些示例展示了如何将 CC1101 集成到 Python 程序中。
收到
from time import sleep
from binascii import hexlify
from cc1101.config import RXConfig, Modulation
from cc1101 import CC1101
rx_config = RXConfig.new(frequency=434, modulation=Modulation.OOK, baud_rate=1, sync_word=0x0000, packet_length=64)
radio = CC1101("/dev/cc1101.0.0", rx_config, blocking=True)
while True:
packets = radio.receive()
for packet in packets:
print(f"Received - {hexlify(packet)}")
sleep(0.1)
发送
from binascii import unhexlify
from cc1101.config import TXConfig, Modulation
from cc1101 import CC1101
tx_config = TXConfig.new(frequency=434, modulation=Modulation.OOK, baud_rate=1, tx_power=0.1)
radio = CC1101("/dev/cc1101.0.0")
radio.transmit(tx_config, unhexlify("0f0f0f0f0f0f0f0f0f0f0f"))
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
cc1101_python -1.3.1-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 66606575757603528fa18b190d9c38477d24d7cbc9626f3f99813c227045b589 |
|
| MD5 | eee8886c006c5be25f2851f50a3a7653 |
|
| 布莱克2-256 | f9886e335587f08dfb438fe3ed8265e7a6a835d37e509993d923841e4b6b4500 |