mirror of
https://github.com/esphome/esphome.git
synced 2024-11-28 01:34:18 +01:00
got rid of gdo0/gdo2 for every board except esp8266, that needs to know which single pin to use bidirectionally
This commit is contained in:
parent
87c3896a50
commit
de51ae76f4
10 changed files with 30 additions and 100 deletions
|
@ -6,7 +6,13 @@
|
||||||
It can be compiled with Arduino and esp-idf framework and should support any esphome compatible board through the SPI
|
It can be compiled with Arduino and esp-idf framework and should support any esphome compatible board through the SPI
|
||||||
Bus.
|
Bus.
|
||||||
|
|
||||||
On ESP8266, you can use the same pin for GDO and GD2 (it is an optional parameter).
|
On ESP8266, you can use a single pin instead of GD0O and GD02 (gdo0 is an optional parameter). If assigned,
|
||||||
|
the pin direction will be reversed for the transfers.
|
||||||
|
|
||||||
|
On ESP32, this will not work, you must connect two separate pins. TX to GDO0, RX to GDO2.
|
||||||
|
If only TX works, they are probably switched.
|
||||||
|
|
||||||
|
Transferst must be surrounded with cc1101.begin_tx and cc1101.end_tx.
|
||||||
|
|
||||||
The source code is a mashup of the following github projects with some special esphome sauce:
|
The source code is a mashup of the following github projects with some special esphome sauce:
|
||||||
|
|
||||||
|
@ -48,7 +54,6 @@ static const uint8_t PA_TABLE_915[10]{0x03, 0x0E, 0x1E, 0x27, 0x38, 0x8E, 0x84,
|
||||||
|
|
||||||
CC1101::CC1101() {
|
CC1101::CC1101() {
|
||||||
this->gdo0_ = nullptr;
|
this->gdo0_ = nullptr;
|
||||||
this->gdo2_ = nullptr;
|
|
||||||
this->bandwidth_ = 200;
|
this->bandwidth_ = 200;
|
||||||
this->frequency_ = 433920;
|
this->frequency_ = 433920;
|
||||||
this->rssi_sensor_ = nullptr;
|
this->rssi_sensor_ = nullptr;
|
||||||
|
@ -80,14 +85,7 @@ CC1101::CC1101() {
|
||||||
this->pa_table_[1] = 0xc0;
|
this->pa_table_[1] = 0xc0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CC1101::set_config_gdo0(InternalGPIOPin *pin) {
|
void CC1101::set_config_gdo0(InternalGPIOPin *pin) { gdo0_ = pin; }
|
||||||
gdo0_ = pin;
|
|
||||||
|
|
||||||
if (gdo2_ == nullptr)
|
|
||||||
gdo2_ = pin;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CC1101::set_config_gdo2(InternalGPIOPin *pin) { gdo2_ = pin; }
|
|
||||||
|
|
||||||
void CC1101::set_config_bandwidth(uint32_t bandwidth) { bandwidth_ = bandwidth; }
|
void CC1101::set_config_bandwidth(uint32_t bandwidth) { bandwidth_ = bandwidth; }
|
||||||
|
|
||||||
|
@ -98,10 +96,10 @@ void CC1101::set_config_rssi_sensor(sensor::Sensor *rssi_sensor) { rssi_sensor_
|
||||||
void CC1101::set_config_lqi_sensor(sensor::Sensor *lqi_sensor) { lqi_sensor_ = lqi_sensor; }
|
void CC1101::set_config_lqi_sensor(sensor::Sensor *lqi_sensor) { lqi_sensor_ = lqi_sensor; }
|
||||||
|
|
||||||
void CC1101::setup() {
|
void CC1101::setup() {
|
||||||
|
if (this->gdo0_ != nullptr) {
|
||||||
this->gdo0_->setup();
|
this->gdo0_->setup();
|
||||||
this->gdo2_->setup();
|
this->gdo0_->pin_mode(gpio::FLAG_INPUT);
|
||||||
this->gdo0_->pin_mode(gpio::FLAG_OUTPUT);
|
}
|
||||||
this->gdo2_->pin_mode(gpio::FLAG_INPUT);
|
|
||||||
|
|
||||||
this->spi_setup();
|
this->spi_setup();
|
||||||
|
|
||||||
|
@ -184,7 +182,6 @@ void CC1101::dump_config() {
|
||||||
ESP_LOGCONFIG(TAG, "CC1101 partnum %02x version %02x:", this->partnum_, this->version_);
|
ESP_LOGCONFIG(TAG, "CC1101 partnum %02x version %02x:", this->partnum_, this->version_);
|
||||||
LOG_PIN(" CC1101 CS Pin: ", this->cs_);
|
LOG_PIN(" CC1101 CS Pin: ", this->cs_);
|
||||||
LOG_PIN(" CC1101 GDO0: ", this->gdo0_);
|
LOG_PIN(" CC1101 GDO0: ", this->gdo0_);
|
||||||
LOG_PIN(" CC1101 GDO2: ", this->gdo2_);
|
|
||||||
ESP_LOGCONFIG(TAG, " CC1101 Bandwith: %d KHz", this->bandwidth_);
|
ESP_LOGCONFIG(TAG, " CC1101 Bandwith: %d KHz", this->bandwidth_);
|
||||||
ESP_LOGCONFIG(TAG, " CC1101 Frequency: %d KHz", this->frequency_);
|
ESP_LOGCONFIG(TAG, " CC1101 Frequency: %d KHz", this->frequency_);
|
||||||
LOG_SENSOR(" ", "RSSI", this->rssi_sensor_);
|
LOG_SENSOR(" ", "RSSI", this->rssi_sensor_);
|
||||||
|
@ -646,7 +643,7 @@ void CC1101::split_mdmcfg4_() {
|
||||||
void CC1101::begin_tx() {
|
void CC1101::begin_tx() {
|
||||||
this->set_tx_();
|
this->set_tx_();
|
||||||
|
|
||||||
if (this->gdo0_ == this->gdo2_) {
|
if (this->gdo0_ != nullptr) {
|
||||||
#ifdef USE_ESP8266
|
#ifdef USE_ESP8266
|
||||||
#ifdef USE_ARDUINO
|
#ifdef USE_ARDUINO
|
||||||
noInterrupts(); // NOLINT
|
noInterrupts(); // NOLINT
|
||||||
|
@ -659,7 +656,7 @@ void CC1101::begin_tx() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CC1101::end_tx() {
|
void CC1101::end_tx() {
|
||||||
if (this->gdo0_ == this->gdo2_) {
|
if (this->gdo0_ != nullptr) {
|
||||||
#ifdef USE_ESP8266
|
#ifdef USE_ESP8266
|
||||||
#ifdef USE_ARDUINO
|
#ifdef USE_ARDUINO
|
||||||
interrupts(); // NOLINT
|
interrupts(); // NOLINT
|
||||||
|
|
|
@ -13,7 +13,6 @@ class CC1101 : public sensor::Sensor,
|
||||||
spi::DATA_RATE_1KHZ> {
|
spi::DATA_RATE_1KHZ> {
|
||||||
protected:
|
protected:
|
||||||
InternalGPIOPin *gdo0_;
|
InternalGPIOPin *gdo0_;
|
||||||
InternalGPIOPin *gdo2_;
|
|
||||||
uint32_t bandwidth_;
|
uint32_t bandwidth_;
|
||||||
uint32_t frequency_;
|
uint32_t frequency_;
|
||||||
sensor::Sensor *rssi_sensor_;
|
sensor::Sensor *rssi_sensor_;
|
||||||
|
@ -78,7 +77,6 @@ class CC1101 : public sensor::Sensor,
|
||||||
CC1101();
|
CC1101();
|
||||||
|
|
||||||
void set_config_gdo0(InternalGPIOPin *pin);
|
void set_config_gdo0(InternalGPIOPin *pin);
|
||||||
void set_config_gdo2(InternalGPIOPin *pin);
|
|
||||||
void set_config_bandwidth(uint32_t bandwidth);
|
void set_config_bandwidth(uint32_t bandwidth);
|
||||||
void set_config_frequency(uint32_t frequency);
|
void set_config_frequency(uint32_t frequency);
|
||||||
void set_config_rssi_sensor(sensor::Sensor *rssi_sensor);
|
void set_config_rssi_sensor(sensor::Sensor *rssi_sensor);
|
||||||
|
|
|
@ -16,7 +16,6 @@ from esphome.const import (
|
||||||
DEPENDENCIES = ["spi"]
|
DEPENDENCIES = ["spi"]
|
||||||
|
|
||||||
CONF_GDO0 = "gdo0"
|
CONF_GDO0 = "gdo0"
|
||||||
CONF_GDO2 = "gdo2"
|
|
||||||
CONF_BANDWIDTH = "bandwidth"
|
CONF_BANDWIDTH = "bandwidth"
|
||||||
# CONF_FREQUENCY = "frequency"
|
# CONF_FREQUENCY = "frequency"
|
||||||
CONF_RSSI = "rssi"
|
CONF_RSSI = "rssi"
|
||||||
|
@ -32,8 +31,7 @@ CONFIG_SCHEMA = (
|
||||||
cv.Schema(
|
cv.Schema(
|
||||||
{
|
{
|
||||||
cv.GenerateID(): cv.declare_id(CC1101),
|
cv.GenerateID(): cv.declare_id(CC1101),
|
||||||
cv.Required(CONF_GDO0): pins.gpio_output_pin_schema,
|
cv.Optional(CONF_GDO0): pins.gpio_output_pin_schema,
|
||||||
cv.Optional(CONF_GDO2): pins.gpio_input_pin_schema,
|
|
||||||
cv.Optional(CONF_BANDWIDTH, default=200): cv.uint32_t,
|
cv.Optional(CONF_BANDWIDTH, default=200): cv.uint32_t,
|
||||||
cv.Optional(CONF_FREQUENCY, default=433920): cv.uint32_t,
|
cv.Optional(CONF_FREQUENCY, default=433920): cv.uint32_t,
|
||||||
cv.Optional(CONF_RSSI): sensor.sensor_schema(
|
cv.Optional(CONF_RSSI): sensor.sensor_schema(
|
||||||
|
@ -73,11 +71,9 @@ async def to_code(config):
|
||||||
await cg.register_component(var, config)
|
await cg.register_component(var, config)
|
||||||
await spi.register_spi_device(var, config)
|
await spi.register_spi_device(var, config)
|
||||||
|
|
||||||
|
if CONF_GDO0 in config:
|
||||||
gdo0 = await cg.gpio_pin_expression(config[CONF_GDO0])
|
gdo0 = await cg.gpio_pin_expression(config[CONF_GDO0])
|
||||||
cg.add(var.set_config_gdo0(gdo0))
|
cg.add(var.set_config_gdo0(gdo0))
|
||||||
if CONF_GDO2 in config:
|
|
||||||
gdo2 = await cg.gpio_pin_expression(config[CONF_GDO2])
|
|
||||||
cg.add(var.set_config_gdo2(gdo2))
|
|
||||||
cg.add(var.set_config_bandwidth(config[CONF_BANDWIDTH]))
|
cg.add(var.set_config_bandwidth(config[CONF_BANDWIDTH]))
|
||||||
cg.add(var.set_config_frequency(config[CONF_FREQUENCY]))
|
cg.add(var.set_config_frequency(config[CONF_FREQUENCY]))
|
||||||
if CONF_RSSI in config:
|
if CONF_RSSI in config:
|
||||||
|
|
|
@ -7,12 +7,6 @@ sensor:
|
||||||
- platform: cc1101
|
- platform: cc1101
|
||||||
id: transceiver
|
id: transceiver
|
||||||
cs_pin: GPIO10
|
cs_pin: GPIO10
|
||||||
gdo0:
|
|
||||||
number: GPIO3
|
|
||||||
allow_other_uses: true
|
|
||||||
gdo2:
|
|
||||||
number: GPIO4
|
|
||||||
allow_other_uses: true
|
|
||||||
bandwidth: 200
|
bandwidth: 200
|
||||||
frequency: 433920
|
frequency: 433920
|
||||||
rssi:
|
rssi:
|
||||||
|
@ -28,16 +22,12 @@ remote_transmitter:
|
||||||
- pin: GPIO21 # TX pin
|
- pin: GPIO21 # TX pin
|
||||||
carrier_duty_percent: 100%
|
carrier_duty_percent: 100%
|
||||||
id: dummytx
|
id: dummytx
|
||||||
- pin:
|
- pin: GPIO3 # GDO0
|
||||||
number: GPIO3 # GDO0
|
|
||||||
allow_other_uses: true
|
|
||||||
carrier_duty_percent: 100%
|
carrier_duty_percent: 100%
|
||||||
id: realtx
|
id: realtx
|
||||||
|
|
||||||
remote_receiver:
|
remote_receiver:
|
||||||
pin:
|
pin: GPIO4 # GDO2
|
||||||
number: GPIO4 # GDO0
|
|
||||||
allow_other_uses: true
|
|
||||||
dump:
|
dump:
|
||||||
- rc_switch
|
- rc_switch
|
||||||
# Settings to optimize recognition of RF devices
|
# Settings to optimize recognition of RF devices
|
||||||
|
|
|
@ -7,12 +7,6 @@ sensor:
|
||||||
- platform: cc1101
|
- platform: cc1101
|
||||||
id: transceiver
|
id: transceiver
|
||||||
cs_pin: GPIO10
|
cs_pin: GPIO10
|
||||||
gdo0:
|
|
||||||
number: GPIO3
|
|
||||||
allow_other_uses: true
|
|
||||||
gdo2:
|
|
||||||
number: GPIO4
|
|
||||||
allow_other_uses: true
|
|
||||||
bandwidth: 200
|
bandwidth: 200
|
||||||
frequency: 433920
|
frequency: 433920
|
||||||
rssi:
|
rssi:
|
||||||
|
@ -28,16 +22,12 @@ remote_transmitter:
|
||||||
- pin: GPIO21 # TX pin
|
- pin: GPIO21 # TX pin
|
||||||
carrier_duty_percent: 100%
|
carrier_duty_percent: 100%
|
||||||
id: dummytx
|
id: dummytx
|
||||||
- pin:
|
- pin: GPIO3 # GDO0
|
||||||
number: GPIO3 # GDO0
|
|
||||||
allow_other_uses: true
|
|
||||||
carrier_duty_percent: 100%
|
carrier_duty_percent: 100%
|
||||||
id: realtx
|
id: realtx
|
||||||
|
|
||||||
remote_receiver:
|
remote_receiver:
|
||||||
pin:
|
pin: GPIO4 # GDO2
|
||||||
number: GPIO4 # GDO0
|
|
||||||
allow_other_uses: true
|
|
||||||
dump:
|
dump:
|
||||||
- rc_switch
|
- rc_switch
|
||||||
# Settings to optimize recognition of RF devices
|
# Settings to optimize recognition of RF devices
|
||||||
|
|
|
@ -7,12 +7,6 @@ sensor:
|
||||||
- platform: cc1101
|
- platform: cc1101
|
||||||
id: transceiver
|
id: transceiver
|
||||||
cs_pin: GPIO5
|
cs_pin: GPIO5
|
||||||
gdo0:
|
|
||||||
number: GPIO32
|
|
||||||
allow_other_uses: true
|
|
||||||
gdo2:
|
|
||||||
number: GPIO33
|
|
||||||
allow_other_uses: true
|
|
||||||
bandwidth: 200
|
bandwidth: 200
|
||||||
frequency: 433920
|
frequency: 433920
|
||||||
rssi:
|
rssi:
|
||||||
|
@ -21,15 +15,11 @@ sensor:
|
||||||
name: LQI
|
name: LQI
|
||||||
|
|
||||||
remote_transmitter:
|
remote_transmitter:
|
||||||
- pin:
|
- pin: GPIO32 # GDO0
|
||||||
number: GPIO32 # GDO0
|
|
||||||
allow_other_uses: true
|
|
||||||
carrier_duty_percent: 100%
|
carrier_duty_percent: 100%
|
||||||
|
|
||||||
remote_receiver:
|
remote_receiver:
|
||||||
pin:
|
pin: GPIO33 # GDO2
|
||||||
number: GPIO33 # GDO0
|
|
||||||
allow_other_uses: true
|
|
||||||
dump:
|
dump:
|
||||||
- rc_switch
|
- rc_switch
|
||||||
# Settings to optimize recognition of RF devices
|
# Settings to optimize recognition of RF devices
|
||||||
|
|
|
@ -7,12 +7,6 @@ sensor:
|
||||||
- platform: cc1101
|
- platform: cc1101
|
||||||
id: transceiver
|
id: transceiver
|
||||||
cs_pin: GPIO34
|
cs_pin: GPIO34
|
||||||
gdo0:
|
|
||||||
number: GPIO8
|
|
||||||
allow_other_uses: true
|
|
||||||
gdo2:
|
|
||||||
number: GPIO9
|
|
||||||
allow_other_uses: true
|
|
||||||
bandwidth: 200
|
bandwidth: 200
|
||||||
frequency: 433920
|
frequency: 433920
|
||||||
rssi:
|
rssi:
|
||||||
|
@ -21,15 +15,11 @@ sensor:
|
||||||
name: LQI
|
name: LQI
|
||||||
|
|
||||||
remote_transmitter:
|
remote_transmitter:
|
||||||
- pin:
|
- pin: GPIO8 # GDO0
|
||||||
number: GPIO8 # GDO0
|
|
||||||
allow_other_uses: true
|
|
||||||
carrier_duty_percent: 100%
|
carrier_duty_percent: 100%
|
||||||
|
|
||||||
remote_receiver:
|
remote_receiver:
|
||||||
pin:
|
pin: GPIO9 # GDO2
|
||||||
number: GPIO9 # GDO0
|
|
||||||
allow_other_uses: true
|
|
||||||
dump:
|
dump:
|
||||||
- rc_switch
|
- rc_switch
|
||||||
# Settings to optimize recognition of RF devices
|
# Settings to optimize recognition of RF devices
|
||||||
|
|
|
@ -7,12 +7,6 @@ sensor:
|
||||||
- platform: cc1101
|
- platform: cc1101
|
||||||
id: transceiver
|
id: transceiver
|
||||||
cs_pin: GPIO34
|
cs_pin: GPIO34
|
||||||
gdo0:
|
|
||||||
number: GPIO8
|
|
||||||
allow_other_uses: true
|
|
||||||
gdo2:
|
|
||||||
number: GPIO9
|
|
||||||
allow_other_uses: true
|
|
||||||
bandwidth: 200
|
bandwidth: 200
|
||||||
frequency: 433920
|
frequency: 433920
|
||||||
rssi:
|
rssi:
|
||||||
|
@ -21,15 +15,11 @@ sensor:
|
||||||
name: LQI
|
name: LQI
|
||||||
|
|
||||||
remote_transmitter:
|
remote_transmitter:
|
||||||
- pin:
|
- pin: GPIO8 # GDO0
|
||||||
number: GPIO8 # GDO0
|
|
||||||
allow_other_uses: true
|
|
||||||
carrier_duty_percent: 100%
|
carrier_duty_percent: 100%
|
||||||
|
|
||||||
remote_receiver:
|
remote_receiver:
|
||||||
pin:
|
pin: GPIO9 # GDO2
|
||||||
number: GPIO9 # GDO0
|
|
||||||
allow_other_uses: true
|
|
||||||
dump:
|
dump:
|
||||||
- rc_switch
|
- rc_switch
|
||||||
# Settings to optimize recognition of RF devices
|
# Settings to optimize recognition of RF devices
|
||||||
|
|
|
@ -7,12 +7,6 @@ sensor:
|
||||||
- platform: cc1101
|
- platform: cc1101
|
||||||
id: transceiver
|
id: transceiver
|
||||||
cs_pin: GPIO5
|
cs_pin: GPIO5
|
||||||
gdo0:
|
|
||||||
number: GPIO32
|
|
||||||
allow_other_uses: true
|
|
||||||
gdo2:
|
|
||||||
number: GPIO33
|
|
||||||
allow_other_uses: true
|
|
||||||
bandwidth: 200
|
bandwidth: 200
|
||||||
frequency: 433920
|
frequency: 433920
|
||||||
rssi:
|
rssi:
|
||||||
|
@ -21,15 +15,11 @@ sensor:
|
||||||
name: LQI
|
name: LQI
|
||||||
|
|
||||||
remote_transmitter:
|
remote_transmitter:
|
||||||
- pin:
|
- pin: GPIO32 # GDO0
|
||||||
number: GPIO32 # GDO0
|
|
||||||
allow_other_uses: true
|
|
||||||
carrier_duty_percent: 100%
|
carrier_duty_percent: 100%
|
||||||
|
|
||||||
remote_receiver:
|
remote_receiver:
|
||||||
pin:
|
pin: GPIO33 # GDO2
|
||||||
number: GPIO33 # GDO0
|
|
||||||
allow_other_uses: true
|
|
||||||
dump:
|
dump:
|
||||||
- rc_switch
|
- rc_switch
|
||||||
# Settings to optimize recognition of RF devices
|
# Settings to optimize recognition of RF devices
|
||||||
|
|
|
@ -10,7 +10,6 @@ sensor:
|
||||||
gdo0:
|
gdo0:
|
||||||
number: D1 # GPIO5
|
number: D1 # GPIO5
|
||||||
allow_other_uses: true
|
allow_other_uses: true
|
||||||
# gdo2: not used with ESP8266
|
|
||||||
bandwidth: 200
|
bandwidth: 200
|
||||||
frequency: 433920
|
frequency: 433920
|
||||||
rssi:
|
rssi:
|
||||||
|
|
Loading…
Reference in a new issue