# python-cc1101
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![CI Pipeline Status](https://github.com/fphammerle/python-cc1101/workflows/tests/badge.svg)](https://github.com/fphammerle/python-cc1101/actions)
[![Coverage Status](https://coveralls.io/repos/github/fphammerle/python-cc1101/badge.svg?branch=master)](https://coveralls.io/github/fphammerle/python-cc1101?branch=master)
[![Last Release](https://img.shields.io/pypi/v/cc1101.svg)](https://pypi.org/project/cc1101/#history)
[![Compatible Python Versions](https://img.shields.io/pypi/pyversions/cc1101.svg)](https://pypi.org/project/cc1101/)
[![DOI](https://zenodo.org/badge/292333844.svg)](https://zenodo.org/badge/latestdoi/292333844)
Python Library & Command Line Tool to Transmit RF Signals via [CC1101 Transceivers](https://www.ti.com/product/CC1101)
## Setup
```sh
$ pip3 install --user --upgrade cc1101
```
On Raspbian / Raspberry Pi OS, dependencies can optionally be installed via:
```sh
$ 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](https://github.com/SpaceTeddy/CC1101/blob/0d0f011d3b808e36ad57fab596ed5e1db9516856/README.md#hardware-connection),[2](https://allgeek.de/2017/07/31/cc1101-spi-raspberry-adapter-fuer-homegear-homematicmax/),[3](https://securipi.co.uk/cc1101.pdf)\] |
|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](https://github.com/raspberrypi/documentation/blob/d41d69f8efa3667b1a8b01a669238b8bd113edc1/hardware/raspberrypi/spi/README.md#hardware))
Raspberry Pi GPIO docs: https://www.raspberrypi.org/documentation/usage/gpio/
## Usage
### Library
See [examples](https://github.com/fphammerle/python-cc1101/blob/master/examples/).
```python
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
```sh
$ 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
Raw data
{
"_id": null,
"home_page": "https://github.com/fphammerle/python-cc1101",
"name": "cc1101",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "ISM,SPI,automation,radio-frequency,raspberry-pi,transceiver,transmission,wireless",
"author": "Fabian Peter Hammerle",
"author_email": "fabian+python-cc1101@hammerle.me",
"download_url": "https://files.pythonhosted.org/packages/73/be/c566a76d14741acb76861c49141688a4200ffbb7955851c3e0c31b35321d/cc1101-3.0.0.tar.gz",
"platform": null,
"description": "# python-cc1101\n\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![CI Pipeline Status](https://github.com/fphammerle/python-cc1101/workflows/tests/badge.svg)](https://github.com/fphammerle/python-cc1101/actions)\n[![Coverage Status](https://coveralls.io/repos/github/fphammerle/python-cc1101/badge.svg?branch=master)](https://coveralls.io/github/fphammerle/python-cc1101?branch=master)\n[![Last Release](https://img.shields.io/pypi/v/cc1101.svg)](https://pypi.org/project/cc1101/#history)\n[![Compatible Python Versions](https://img.shields.io/pypi/pyversions/cc1101.svg)](https://pypi.org/project/cc1101/)\n[![DOI](https://zenodo.org/badge/292333844.svg)](https://zenodo.org/badge/latestdoi/292333844)\n\nPython Library & Command Line Tool to Transmit RF Signals via [CC1101 Transceivers](https://www.ti.com/product/CC1101)\n\n## Setup\n\n```sh\n$ pip3 install --user --upgrade cc1101\n```\n\nOn Raspbian / Raspberry Pi OS, dependencies can optionally be installed via:\n```sh\n$ sudo apt-get install --no-install-recommends python3-spidev\n```\n\n### Wiring Raspberry Pi\n\nConnect the following pins directly:\n\n|CC1101 |Raspberry Pi |\n|-------|--------------------|\n|VDD | 3.3V (Pin 1 or 17) |\n|SI | MOSI (Pin 19) |\n|SO | MISO (Pin 21) |\n|CSn | CE0 (Pin 24) |\n|SCLK | SCLK (Pin 23) |\n|GDO2\\* | Any GPIO pin, commonly GPIO25 (Pin 22) \\[[1](https://github.com/SpaceTeddy/CC1101/blob/0d0f011d3b808e36ad57fab596ed5e1db9516856/README.md#hardware-connection),[2](https://allgeek.de/2017/07/31/cc1101-spi-raspberry-adapter-fuer-homegear-homematicmax/),[3](https://securipi.co.uk/cc1101.pdf)\\] |\n|GDO0\\* | Any GPIO pin, GPIO24 (Pin 18) recommended |\n|GND | Ground |\n\nNo resistors required.\nConnection of pins marked with \\* is optional.\nGDO2 stays \"high until power and crystal have stabilized\" (see `CHIP_RDYn` in docs).\nGDO0 is used by `.asynchronous_transmission()` for data input.\n\nIf some of these pins are already in use,\nselect a different SPI bus or chip select:\nhttps://www.raspberrypi.org/documentation/hardware/raspberrypi/spi/README.md\n([permalink](https://github.com/raspberrypi/documentation/blob/d41d69f8efa3667b1a8b01a669238b8bd113edc1/hardware/raspberrypi/spi/README.md#hardware))\n\nRaspberry Pi GPIO docs: https://www.raspberrypi.org/documentation/usage/gpio/\n\n## Usage\n\n### Library\n\nSee [examples](https://github.com/fphammerle/python-cc1101/blob/master/examples/).\n\n```python\nimport cc1101\n\nwith cc1101.CC1101() as transceiver:\n transceiver.set_base_frequency_hertz(433.92e6)\n print(transceiver)\n transceiver.transmit(b\"\\x01\\xff\\x00 message\")\n```\n\nIn case CC1101 is connected to a different SPI bus or chip select line\nthan `/dev/spidev0.0`,\nuse `CC1101(spi_bus=?, spi_chip_select=?)`.\n\n### Command Line\n\n```sh\n$ printf '\\x01\\x02\\x03' | cc1101-transmit -f 433920000 -r 1000\n```\n\nSee `cc1101-transmit --help`.\n\n### Troubleshooting\n\nIn case a `PermissionError` gets raised,\ncheck the permissions of `/dev/spidev*`.\nYou'll probably need `sudo usermod -a -G spi $USER`,\nfollowed by a re-login.\n\nConsult CC1101's offical docs for an in-depth explanation of all options:\nhttps://www.ti.com/lit/ds/symlink/cc1101.pdf\n\n\n",
"bugtrack_url": null,
"license": "GPLv3+",
"summary": "Python Library & Command Line Tool to Transmit RF Signals via C1101 Transceivers",
"version": "3.0.0",
"project_urls": {
"Changelog": "https://github.com/fphammerle/python-cc1101/blob/master/CHANGELOG.md",
"Homepage": "https://github.com/fphammerle/python-cc1101"
},
"split_keywords": [
"ism",
"spi",
"automation",
"radio-frequency",
"raspberry-pi",
"transceiver",
"transmission",
"wireless"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "f20e7b45b408eda6ce4711d14b88085896c1fb01a91c2ac82f789460adf374c8",
"md5": "b96706d7242b86c7791c4c36adf5f620",
"sha256": "1ccc76f4fc8d5cbac6ecc47b21bb1b184a6a32ab79d8f94ee99e81d9a10a8a39"
},
"downloads": -1,
"filename": "cc1101-3.0.0-py3-none-any.whl",
"has_sig": true,
"md5_digest": "b96706d7242b86c7791c4c36adf5f620",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 32989,
"upload_time": "2023-05-04T07:38:31",
"upload_time_iso_8601": "2023-05-04T07:38:31.665813Z",
"url": "https://files.pythonhosted.org/packages/f2/0e/7b45b408eda6ce4711d14b88085896c1fb01a91c2ac82f789460adf374c8/cc1101-3.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "73bec566a76d14741acb76861c49141688a4200ffbb7955851c3e0c31b35321d",
"md5": "9c71c5dc675fb30236bd3440999e1ecc",
"sha256": "75b59a837f6a26258e55be7de554e69deffc871ba19a9cda689cfb8b767a8e02"
},
"downloads": -1,
"filename": "cc1101-3.0.0.tar.gz",
"has_sig": true,
"md5_digest": "9c71c5dc675fb30236bd3440999e1ecc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 68155,
"upload_time": "2023-05-04T07:38:34",
"upload_time_iso_8601": "2023-05-04T07:38:34.351483Z",
"url": "https://files.pythonhosted.org/packages/73/be/c566a76d14741acb76861c49141688a4200ffbb7955851c3e0c31b35321d/cc1101-3.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-05-04 07:38:34",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "fphammerle",
"github_project": "python-cc1101",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "cc1101"
}