-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
CC1101 docs #5614
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
lygris
wants to merge
13
commits into
esphome:next
Choose a base branch
from
lygris:cc1101-docs
base: next
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+198
−0
Draft
CC1101 docs #5614
Changes from 7 commits
Commits
Show all changes
13 commits
Select commit
Hold shift + click to select a range
7e9ddf7
Add CC1101 docs
lygris e94a724
lint fixes
lygris 193427e
More lint fixes
lygris db07657
final lint fixes
lygris ae1a4e5
fix img to be standard html
lygris 88c3871
update with settings name changes
lygris bcdd7d6
Update Docs to match latest commit.
lygris 623264f
Requested Fixes
lygris 39f3e19
missed these ones
lygris 8d07632
lint fixes
lygris 8059126
moar lint fixes
lygris f6a156c
add begin/end tx actions to examples
lygris 9488c62
Remove some commented lines and fix lint error
lygris File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,143 @@ | ||
| --- | ||
| title: CC1101 Low-Power Sub-1 GHz RF Transceiver | ||
| description: Instructions for setting up CC1101 RF Transceiver in ESPHome. | ||
| image: cc1101.webp | ||
| keywords: [cc1101] | ||
| --- | ||
|
|
||
| The **CC1101** component provides a driver for the **Texas Instruments CC1101** Sub-1 GHz RF Transceiver. | ||
| It allows you to transmit and receive raw RF signals (ASK/OOK, FSK, etc.) using the standard | ||
| [Remote Transmitter](remote_transmitter.md) and [Remote Receiver](remote_receiver.md) components. | ||
|
|
||
| This component requires the [SPI Component](spi.md) to be enabled. | ||
|
|
||
| <img src="cc1101.webp" alt="Image" width="50.0%" class="align-center"> | ||
|
|
||
| ## Component Configuration | ||
|
|
||
| ```yaml | ||
| # Minimal Example | ||
| cc1101: | ||
| cs_pin: GPIOXX | ||
| gdo0_pin: GPIOXX | ||
| frequency: 433.92MHz | ||
| ``` | ||
| ## Configuration Variables | ||
| ### Hardware Settings | ||
| - **cs\_pin** (**Required**, [Pin](pin.md)): The SPI Chip Select (CSN) pin connected to the module. | ||
| - **gdo0\_pin** (**Required**, [Pin](pin.md)): The pin connected to **GDO0** on the CC1101. | ||
| - **Note:** On ESP32, `remote_transmitter` **must** use the pin connected to **GDO0** to transmit successfully. | ||
|
|
||
| ### General Settings | ||
|
|
||
| - **frequency** (*Optional*, frequency): The operating frequency. Range: `300MHz` to `928MHz`. Default: `433.92MHz`. | ||
| - **output\_power** (*Optional*, float): The transmission power in dBm. Range: `-30` to `11`. Default: `10`. | ||
| - **modulation\_type** (*Optional*, enum): The modulation format. Options: `ASK/OOK` (default), `2-FSK`, `4-FSK`, `GFSK`, `MSK`. | ||
| - **symbol\_rate** (*Optional*, int): The symbol rate in Baud. Range: `600` to `500000`. Default: `5000`. | ||
| - **rx\_attenuation** (*Optional*, enum): Internal RX attenuation. Options: `0dB`, `6dB`, `12dB`, `18dB`. Default: `0dB`. | ||
| - **dc\_blocking\_filter** (*Optional*, boolean): Enable the digital DC blocking filter. Default: `True`. | ||
|
|
||
| ### Tuner Settings | ||
|
|
||
| - **filter\_bandwidth** (*Optional*, frequency): The receive filter bandwidth. Range: `58kHz` to `812kHz`. Default: `203kHz`. | ||
| - **fsk\_deviation** (*Optional*, frequency): Frequency deviation for FSK/GFSK modulation. | ||
| <!-- - **msk\_deviation** (*Optional*, int): Phase shift deviation for MSK modulation. --> | ||
| - **channel** (*Optional*, int): Channel number (added to base frequency). | ||
| - **channel\_spacing** (*Optional*, frequency): Spacing between channels. | ||
| - **if\_frequency** (*Optional*, frequency): Intermediate Frequency. Default is optimized for 433MHz usage. | ||
| <!-- - **sync\_mode** (*Optional*, enum): Sync word qualifier mode. --> | ||
| <!-- - **manchester** (*Optional*, boolean): Enable Manchester encoding. --> | ||
| <!-- - **num\_preamble** (*Optional*, int): Minimum number of preamble bytes. --> | ||
| <!-- - **sync1** (*Optional*, hex): High byte of sync word. --> | ||
| <!-- - **sync0** (*Optional*, hex): Low byte of sync word. | ||
| - **pktlen** (*Optional*, int): Packet length config. --> | ||
|
|
||
| ### AGC (Automatic Gain Control) Settings | ||
|
|
||
| Advanced users can fine-tune the AGC dynamics. | ||
|
|
||
| - **magn\_target** (*Optional*, dB): Target signal amplitude. Range: `24dB` to `42dB` in increments of 3(eg. `33dB`). | ||
| - **max\_lna\_gain** (*Optional*, dB): Maximum LNA gain reduction. Options: `Default`, `2.6dB`, `6.1dB`, `7.4dB`, `9.2dB`, `11.5dB`, `14.6dB`, `17.1dB`. | ||
| - **max\_dvga\_gain** (*Optional*, enum): Maximum Digital Variable Gain reduction. Options: `Default`, `-1`, `-2`, `-3`. | ||
| - **lna\_priority** (*Optional*, boolean): If true, decrease LNA gain before DVGA gain. | ||
| - **carrier\_sense\_abs\_thr** (*Optional*, int): Absolute RSSI threshold for Carrier Sense. | ||
| - **carrier\_sense\_rel\_thr** (*Optional*, enum): Relative RSSI threshold for Carrier Sense. | ||
| - **filter\_length\_fsk\_msk** (*Optional*, enum): Averaging length for FSK/MSK. | ||
| - **filter\_length\_ask\_ook** (*Optional*, enum): Averaging length for ASK/OOK. | ||
| - **freeze** (*Optional*, enum): AGC gain freeze behavior. | ||
| - **wait\_time** (*Optional*, enum): AGC wait time. | ||
| - **hyst\_level** (*Optional*, enum): AGC hysteresis level. | ||
|
|
||
| ## Actions | ||
|
|
||
| This component provides actions to control the radio state, primarily used for coordinating transmission. | ||
|
|
||
| - **cc1101.begin\_tx**: Wakes the radio and forces it into TX mode. This **must** be called before `remote_transmitter` starts sending data. | ||
| - **cc1101.end\_tx**: Puts the radio back into RX mode and resets the pin configuration to safe defaults. | ||
| - **cc1101.reset**: Resets the CC1101 chip and re-applies configuration. | ||
|
|
||
| ### Example Transmit Button | ||
|
|
||
| ```yaml | ||
| button: | ||
| - platform: template | ||
| name: "Send Signal" | ||
| on_press: | ||
| # 1. Wake up radio and enter TX mode (Blocking wait) | ||
| - cc1101.begin_tx: | ||
| # 2. Send data using standard Remote Transmitter | ||
| - remote_transmitter.transmit_raw: | ||
| code: [1000, -1000, 1000, -1000] | ||
| repeat: 5 | ||
| # 3. Return to RX mode | ||
| - cc1101.end_tx: | ||
| ``` | ||
|
|
||
| ## Integration with Remote Receiver/Transmitter | ||
|
|
||
| ### Wiring for ESP32 (Split Pins) | ||
|
|
||
| The ESP32 RMT peripheral requires exclusive access to the TX pin. You cannot share a single pin for both RX and TX easily. | ||
|
|
||
| * **GDO0 (Pin 3)**: Connect to the pin used by `remote_transmitter`. | ||
| * **GDO2 (Pin 8)**: Connect to the pin used by `remote_receiver`. | ||
|
|
||
| ```yaml | ||
| cc1101: | ||
| gdo0_pin: GPIOXX # CC1101 GDO0 | ||
| remote_transmitter: | ||
| pin: GPIOXX # Must match GDO0 | ||
| carrier_duty_percent: 100% | ||
| remote_receiver: | ||
| pin: GPIOXX2 # CC1101 GDO2 | ||
| dump: all | ||
| ``` | ||
|
|
||
| ### Wiring for ESP8266 (Single Pin) | ||
|
|
||
| On ESP8266, you can wire **GDO0** to a single GPIO and use it for both TX and RX. | ||
|
|
||
| ## Troubleshooting | ||
|
|
||
| ### "FF0F was found" Error | ||
|
|
||
| If you see a log entry stating `FF0F`, `0000`, or `FFFF` during setup, this indicates an SPI communication failure. Check your wiring (MISO/MOSI/CS). | ||
|
|
||
| ### No Signal during Transmit | ||
|
|
||
| 1. **Check Pinout:** Ensure `remote_transmitter` is assigned to the pin physically connected to **GDO0**. The CC1101 **only** supports transmission via GDO0. | ||
|
|
||
| ## See Also | ||
|
|
||
| - [I²C Bus](/components/i2c) | ||
| - [Remote Receiver](/components/remote_receiver) | ||
| - [Remote Transmitter](/components/remote_transmitter) | ||
| - [SPI Component](/components/spi) | ||
| - [CC1101 Datasheet](https://www.ti.com/lit/ds/symlink/cc1101.pdf) | ||
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.