
ESP32C3_传感器主控
简介
采用ESP32-C3-MINI-1-N4模块的传感器主控板,配合TI TPS63802DC-DC电源芯片,实现1.8~5.2V宽电压供电和超低待机功耗。
简介:采用ESP32-C3-MINI-1-N4模块的传感器主控板,配合TI TPS63802DC-DC电源芯片,实现1.8~5.2V宽电压供电和超低待机功耗。开源协议
:GPL 3.0
描述
项目简介
本项目是基于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电池,一个为锂电池
设计图

BOM


评论