嘉立创产业服务站群
发作品签到
专业版

ESP32C3_传感器主控

工程标签

97
0
0
0

简介

采用ESP32-C3-MINI-1-N4模块的传感器主控板,配合TI TPS63802DC-DC电源芯片,实现1.8~5.2V宽电压供电和超低待机功耗。

简介:采用ESP32-C3-MINI-1-N4模块的传感器主控板,配合TI TPS63802DC-DC电源芯片,实现1.8~5.2V宽电压供电和超低待机功耗。
复刻成本:15

开源协议

GPL 3.0

创建时间:2025-06-03 03:19:54更新时间:2025-06-03 08:26:56

描述

项目简介

本项目是基于ESP32-C3-MINI-1-N4的传感器主控模块,可接入1-Wire和I2C等单总线/两线接口传感器,比如SHT/AHT/DS18B20/DHT22等。
串口和Boot/EN管脚通过SH1.0端子接出,用于烧录和接入其它设备。

项目功能

通过编程,比如ESP Home等,读取传感器数据,并上传至MQTT服务器或配合HomeAssistant使用。

原理解析(硬件说明)

原理图很简单,自行查阅电路图。

软件代码 (适用于ESPHome的yaml)

substitutions:
  default_run_duration: 5s
  gpio_wakeup_run_duration: 1min
  sleep_duration: 180s
  update_interval: 10s
  # default: battery min votage is 2.0V; 3.0V is full battery;
  battery_voltage_min: "3.0"
  battery_voltage_full: "4.2"

esphome:
  name: zthink-sensors-sht
  name_add_mac_suffix: true
  friendly_name: "zThink Sensors"
  project:
    name: "zthink.sensors_sht"
    version: "1.0.0"

esp32:
  board: esp32-c3-devkitm-1
  variant: esp32c3
  framework:
    type: esp-idf
 
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  # output_power: 8.5dB
  fast_connect: true
  manual_ip:
    static_ip: 192.168.2.202
    gateway: 192.168.2.1
    subnet: 255.255.255.0
    dns1: 192.168.2.1
  # ap:
  #   password: "12345678"

# captive_portal:

# api:
#   reboot_timeout: 0s

# ota:
#   platform: esphome

# web_server:
  # port: 80
  # js_include: "./v2/www.js"
  # js_url: ""
  # version: 2

logger:
  # hardware_uart: UART0
  # hardware_uart: USB_SERIAL_JTAG
  # baud_rate: 115200
  level: NONE

mqtt:
  broker: !secret mqtt_broker
  port: !secret mqtt_port
  username: !secret mqtt_user
  password: !secret mqtt_password
  certificate_authority: !secret ssl_ca
  skip_cert_cn_check: true
  clean_session: true
  publish_nan_as_none: true
  discovery: true
  discovery_retain: true
  discover_ip: true
  keepalive: 60s
  # topic_prefix: "homeassistant/living_room/sensors"
  discovery_prefix: "homeassistant"
  discovery_unique_id_generator: mac
  idf_send_async: false
  birth_message:
    topic: null
    payload: online
  will_message:
    topic: null
    payload: offline
  log_topic: null
  # on_connect: 
  #   then:
  #     - deep_sleep.prevent: deep_sleep_auto

light:
  - platform: status_led
    name: "Working Light"
    internal: true
    pin: GPIO20

text_sensor:
  - platform: version
    name: "ESPHome Version"
    
# 配置I2C总线
i2c:
  - id: bus_a
    scl: GPIO7
    sda: GPIO8
    scan: false
    frequency: 400kHz
    sda_pullup_enabled: true
    scl_pullup_enabled: true
    # timeout: 1ms

sensor:
  - platform: shtcx
    i2c_id: bus_a
    address: 0x70
    id: th_sensor
    temperature:
      name: "Temperature"
    humidity:
      name: "Humidity"
    update_interval: $update_interval


  # - platform: aht10
  #   i2c_id: bus_a
  #   variant: AHT20
  #   address: 0x38
  #   temperature:
  #     name: "Temperature"
  #   humidity:
  #     name: "Humidity"
  #   update_interval: $update_interval

  # - platform: dht
  #   id: dht_sensor
  #   pin: GPIO8
  #   temperature:
  #     name: "Temperature"
  #   humidity:
  #     name: "Humidity"
  #   update_interval: $update_interval

  - platform: adc
    name: "Battery Voltage"
    id: battery_voltage
    pin: GPIO0
    accuracy_decimals: 2
    update_interval: $update_interval
    attenuation: 0db
    samples: 1
    # sampling_mode: max
    icon: "mdi:battery-check"
    filters:
      - multiply: 11.0  # The voltage divider requires us to multiply by x;
  
  - platform: copy
    name: "Battery Level"
    source_id: battery_voltage
    id: battery_level
    accuracy_decimals: 0
    device_class: "battery"
    state_class: "measurement"
    icon: ""
    unit_of_measurement: "%"
    # below lambda function is used to convert the voltage to battery level
    filters:
      - filter_out: nan
      - lambda: |-
          ESP_LOGD("battery", "Voltage: %f", x);
          float voltage_level;
          if (isnan(x)) {
            return {};
          } else {
            if (x >= $battery_voltage_full) {
              return 100;
            } else if (x >= $battery_voltage_min && x < $battery_voltage_full) {
              return (x - $battery_voltage_min) * 100.0/($battery_voltage_full - $battery_voltage_min);
            } else {
              return 0;
            }
          }

  - platform: wifi_signal
    name: "WiFi Signal dB"
    id: wifi_signal_db
    update_interval: $update_interval
    internal: true
    filters:
      - filter_out: nan

  - platform: copy # Reports the WiFi signal strength in %
    source_id: wifi_signal_db
    name: "WiFi Signal"
    unit_of_measurement: "%"
    device_class: "signal_strength"
    entity_category: ""
    icon: "mdi:wifi"
    filters:
      - lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
      - filter_out: nan
    # on_value: 
    #   then:
    #     - deep_sleep.allow: deep_sleep_auto
      
# http_request:
#   useragent: esphome/tagreader
#   timeout: 10s
#   verify_ssl: true

# ota:
#   platform: http_request
#   on_begin:
#     then:
#       lambda: 'ESP_LOGD("ota", "started");'
#   on_progress:
#     then:
#       lambda: 'ESP_LOGD("ota", "OTA progress %0.1f%%", x);'
#   on_end:
#     then:
#       lambda: 'ESP_LOGD("ota", "OTA ended");'
#   on_error:
#     then:
#       lambda: 'ESP_LOGD("ota", "OTA update error %d", x);'
#   on_state_change:
#     then:
#       lambda: 'ESP_LOGD("ota", "State %d", state);'

# update:
#   - platform: http_request
#     name: Firmware Update
#     source: https://www.zexun.ltd/update/zthink.json

# 配置深度睡眠模式
deep_sleep:
  id: deep_sleep_auto
  run_duration:
    default: $default_run_duration
    gpio_wakeup_reason: $gpio_wakeup_run_duration
  sleep_duration: $sleep_duration
  wakeup_pin: GPIO3
  wakeup_pin_mode: KEEP_AWAKE
  # wakeup_pin_mode: INVERT_WAKEUP

注意事项

焊接模块和电源芯片需要一定的经验和技巧。

ESPHome+MQTT+HomeAssistant显示效果

一个采用CR123A电池,一个为锂电池

image.png

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
暂无数据
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航