MCP3008 I/O Expander


This page is incomplete and could some work. If you want to contribute, please read the contributing guide. This page is missing:

  • An image for the front page.

  • Formal documentation of the mcp3008 sensor entry (parent, update_interval, number, etc.)

  • See Dallas sensor for reference model

The Microchip Technology Inc. MCP3008 devices are successive approximation 10-bit Analogto-Digital (A/D) converters with on-board sample and hold circuitry. Each pin will respond with a 0-1023 result depending on the voltage it is reading


The MCP3008 component allows you to use MCP3008 8-Channel 10-Bit A/D Converter (datasheet, Adafruit) in ESPHome. It uses the SPI Bus for communication.

Once configured, you can use any of the 8 pins as sensors for your projects.

# Example configuration entry
  cs_pin: D8

# Example config of sensors.
# This is a NTCB3950 10K thermocoupler attached to pin 0
# of the MCP3008 with a 10K resistor as a voltage divider.
# See `resistance` and `ntc` platorms for other options
  - platform: mcp3008             # Attached to pin 0 of the MCP3008.
                                  # The result will be a reading from 0-1023
    update_interval: 1s
    id: freezer_temp_source
    number: 0                     # pin number
  - platform: resistance
    id: freezer_resistance_sensor
    sensor: freezer_temp_source
    configuration: DOWNSTREAM
    resistor: 10kOhm
  - platform: ntc
    id: freezer_temp
    sensor: freezer_resistance_sensor
      b_constant: 3950
      reference_temperature: 25°C
      reference_resistance: 10kOhm
    name: Freezer Temperature

Configuration variables:

  • id (Required, ID): The id to use for this MCP3008 component.

  • cs_pin (Required, int): The SPI cable select pin to use