Skip to main content

CC1101 Linux 设备驱动程序的 Python 接口

项目描述

cc1101-蟒蛇

该项目为CC1101 Linux 驱动程序提供了一个接口,以允许从 Python 接收和传输数据包。

设置

pip3 install cc1101-python

命令行

python3 -m cc1101 {tx,rx,config,reset}

配置

从驱动程序中检索当前配置。

rxtx打印人类可读的配置选项。

rx_rawtx_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

绝对值-77dB 为单位。--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.tar.gz (18.7 kB 查看哈希

已上传 source

内置分布

cc1101_python-1.3.1-py3-none-any.whl (17.8 kB 查看哈希

已上传 py3