Skip to content

Latest commit

 

History

History
202 lines (154 loc) · 6.45 KB

README.md

File metadata and controls

202 lines (154 loc) · 6.45 KB

Texas Instruments CC2500 Low-Power 2.4 GHz RF Transceiver component for ESPHome.

GitHub Release Licence Maintainer
GitHub Sponsors PayPal BuyMeCoffee Patreon

Introduction

This ESPHome External Component lets you transmit and receive data using a compatible CC2500 transceiver. Other components that depend on the CC2500 component can build on it.

This component doesn't let you send data nor interpret the received data, you need a separate component that implements the data format needed for your hardware. In debug and verbose logging mode it does log all incoming traffic on the default channel with the default settings.

The CC2500 build in temperature sensor is currently very crude implemented for ESP8266 based boards when GDO0 is connected to A0.

Hardware required

  • ESP8266, ESP32 or other ESPHome supported microcontroller
  • CC2500 transceiver module

Wiring

The solderpads of the CC2500 transceiver are just a bit closer spaced than the width of a ribbon cable, you need a steady hand to solder the wires.

But I've created a Wemos mini Shield that is tested with the D1 mini and C3 mini. Contact me if you like to buy one!

CC2500 NodeMcu V3 Wemos D1 mini
Shield V1
Wemos D1 mini
Shield V2
Wemos C3 mini
Shield V1
Wemos C3 mini
Shield V2
GND G GND GND GND GND
VDD 3V 3V3 3V3 3V3 3V3
SI D7/GPIO13 GPIO13 GPIO13 GPIO4 GPIO4
SCLK D5/GPIO14 GPIO14 GPIO14 GPIO2 GPIO2
SO D6/GPIO12 GPIO12 GPIO12 GPIO3 GPIO3
GDO2 (interrupt) D1/GPIO5 GPIO5 GPIO15 GPIO10 GPIO5
GDO0 (temperature) A0 NC A0 NC GPIO0
CSn D8/GPIO15 GPIO15 GPIO16 GPIO5 GPIO1

Configuration variables

  • cs_pin (Required): The pin to use for the chip select of the SPI bus.
  • gdo0_pin (Optional): The ESP pin the CC2500 GDO0 pin is connected to. Needed for receiving the CC2500 temperature.
  • gdo2_pin (Optional): The ESP pin the CC2500 GDO2 pin is connected to. Needed for receiving data.
  • output_power (Optional): The output power signals should be transmitted with.

ESPHome example configuration

To set up this CC2500 component you first need to place a top-level SPI component which defines the pins to use.

Example YAML for Wemos C3 mini and CC2500 Shield:

esphome:
  name: cc2500

external_components:
  - source:
      type: git
      url: https://github.com/rrooggiieerr/esphome-cc2500
      # ref: 0.0.3
    components: [cc2500]

esp32:
  board: lolin_c3_mini
  variant: esp32c3

# Enable logging
logger:
  level: DEBUG

# Enable Home Assistant API
api:
  encryption:
    key: ...

ota:
  - platform: esphome
    password: ...

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

CC2500 settings for Wemos D1 mini and CC2500 Shield V1.0

spi:
  clk_pin: GPIO14
  mosi_pin: GPIO13
  miso_pin: GPIO12

cc2500:
  cs_pin: GPIO15
  gdo2_pin: GPIO5 # Interrupt
  output_power: 0xFF

CC2500 settings for Wemos D1 mini and CC2500 Shield V2.0

spi:
  clk_pin: GPIO14
  mosi_pin: GPIO13
  miso_pin: GPIO12

cc2500:
  cs_pin: GPIO16
  gdo0_pin: A0
  gdo2_pin: GPIO15 # Interrupt
  output_power: 0xFF

sensor:
  - platform: cc2500
    temperature:
      name: "Temperature"
      update_interval: 5s

SPI settings for Wemos C3 mini and CC2500 Shield V1.0

spi:
  clk_pin: GPIO2
  mosi_pin: GPIO4
  miso_pin: GPIO3

cc2500:
  cs_pin: GPIO5
  gdo2_pin: GPIO10 # Interrupt
  output_power: 0xFF

SPI settings for Wemos C3 mini and CC2500 Shield V2.0

spi:
  clk_pin: GPIO2
  mosi_pin: GPIO4
  miso_pin: GPIO3

cc2500:
  cs_pin: GPIO1
  gdo0_pin: GPIO0
  gdo2_pin: GPIO5 # Interrupt
  output_power: 0xFF

Documentation:

Texas Instruments CC2500 datasheet

Credits:

Tor Røttum's ESPHome IKEA Ansluta component was very helpful for making this component.

Support my work

Do you enjoy using this ESPHome component? Then consider supporting my work using one of the following platforms, your donation is greatly appreciated and keeps me motivated:

GitHub Sponsors PayPal BuyMeCoffee Patreon

Hire me

If you're in need for a freelance ESP developer for your project please contact me, you can find my email address on my GitHub profile.