No Description

dependabot[bot] 3c0b6953ad build(deps-dev): bump pytest-cov from 4.0.0 to 4.1.0 (#132) 1 year ago
.github 8d1d8bb0f2 pipeline: replace TheKevJames/coveralls-python with coverallsapp/github-action (fixing "422 Client Error: Unprocessable Entity for url: https://coveralls.io/api/v1/jobs") 1 year ago
cc1101 0f90b4ca39 add tests for "spi_max_speed_hz" argument of CC1101's constructor 1 year ago
examples cebeeb5207 rename set/get_output_power_levels to set/get_output_power as a higher patable setting does not necessarily imply a higher output power level (see table 39) 3 years ago
tests 0f90b4ca39 add tests for "spi_max_speed_hz" argument of CC1101's constructor 1 year ago
.gitignore f6fccfd243 pipeline: added pytest-cov 4 years ago
.pylintrc 706ead5c4c pylint: enable various optional checks/extensions 2 years ago
CHANGELOG.md 1aab767234 release v3.0.0 1 year ago
COPYING 994a9a5ede added GPLv3+ 4 years ago
Pipfile 3bb8b51971 dev env: add upper version constraint for isort to keep compatibility with python3.7 (has not reached end-of-life yet) 1 year ago
Pipfile.lock 3c0b6953ad build(deps-dev): bump pytest-cov from 4.0.0 to 4.1.0 (#132) 1 year ago
README.md bd9b03db92 readme: fix typo 3 years ago
mypy.ini 991cc935f0 mypy: ignore missing imports 4 years ago
setup.py f664ea7b00 test against python3.11 & declare compatibility 1 year ago

README.md

python-cc1101

CI Pipeline Status Coverage Status Last Release Compatible Python Versions DOI

Python Library & Command Line Tool to Transmit RF Signals via CC1101 Transceivers

Setup

$ pip3 install --user --upgrade cc1101

On Raspbian / Raspberry Pi OS, dependencies can optionally be installed via:

$ sudo apt-get install --no-install-recommends python3-spidev

Wiring Raspberry Pi

Connect the following pins directly:

CC1101 Raspberry Pi
VDD 3.3V (Pin 1 or 17)
SI MOSI (Pin 19)
SO MISO (Pin 21)
CSn CE0 (Pin 24)
SCLK SCLK (Pin 23)
GDO2* Any GPIO pin, commonly GPIO25 (Pin 22) [1,2,3]
GDO0* Any GPIO pin, GPIO24 (Pin 18) recommended
GND Ground

No resistors required. Connection of pins marked with * is optional. GDO2 stays "high until power and crystal have stabilized" (see CHIP_RDYn in docs). GDO0 is used by .asynchronous_transmission() for data input.

If some of these pins are already in use, select a different SPI bus or chip select: https://www.raspberrypi.org/documentation/hardware/raspberrypi/spi/README.md (permalink)

Raspberry Pi GPIO docs: https://www.raspberrypi.org/documentation/usage/gpio/

Usage

Library

See examples.

import cc1101

with cc1101.CC1101() as transceiver:
    transceiver.set_base_frequency_hertz(433.92e6)
    print(transceiver)
    transceiver.transmit(b"\x01\xff\x00 message")

In case CC1101 is connected to a different SPI bus or chip select line than /dev/spidev0.0, use CC1101(spi_bus=?, spi_chip_select=?).

Command Line

$ printf '\x01\x02\x03' | cc1101-transmit -f 433920000 -r 1000

See cc1101-transmit --help.

Troubleshooting

In case a PermissionError gets raised, check the permissions of /dev/spidev*. You'll probably need sudo usermod -a -G spi $USER, followed by a re-login.

Consult CC1101's offical docs for an in-depth explanation of all options: https://www.ti.com/lit/ds/symlink/cc1101.pdf