这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 行业应用 » 汽车电子 » EEPW-SCD41 过程贴——使用 ESP32-C3-DevKitM-1 读取

共1条 1/1 1 跳转至

EEPW-SCD41 过程贴——使用 ESP32-C3-DevKitM-1 读取传感器数据完成功能性验证

菜鸟
2025-10-18 17:45:54     打赏

进入Home Assistant 面板

       上一节我们安装 Home Assistant OS 后进入的界面的是 Home Assistant CLI 界面,Home Assistant CLI 为我们提供了一种通过命令行 (CLI) 与 HA 交互的方法。现在我们可以通过同一局域网下的设备的浏览器输入 homeassistant.local:8123/,即可进入 Home Assistant 网页界面,又称为 Home Assistant 前端集成。

HA_welcome.png

    创建新用户(新用户默认具有管理员权限)

HA_creat_user.png

 

[Tip]

Home Assistant 前端是 渐进式 Web 应用


这意味着你可以将 Home Assistant 的网页界面像一个独立的手机或电脑应用程序一样安装和使用,并且它具备了许多原生应用才有的优点,比如离线工作、快速加载和推送通知。


    比如在 macOS 上,通过 Chrome 浏览器将 Home Assistant 作为应用安装

HA_install.png

    安装后可以直接通过聚焦搜索打开 Home Assistant


image.png

 使用 ESP32-C3-DevKitM-1 读取传感器数据  

      在实际应用中,我们不可能使用树莓派这样的设备来读取 SCD41 传感器数据,更合适的解决方案是使用 ESP32 这样成本较低的微控制器平台作主控读取传感器数据并上传。本节将通过 ESP32-C3-DevKitM-1 读取 SCD41 传感器数据并通过 MQTT 协议上传至 Home Assistant。

参考文章:Easily read out Sensirion sensor measurements on ESP32 - Hackster.io


      和文章中有所不同的是,我使用的是 ESP32-C3-DevKitM-1 开发套件(文章中是 ESP32-DevKitC),相比之下 GPIO 更少一些。SCD41 使用 I²C 进行通信,地址为 `0x62`。

软件设置

      使用 PlatformIO IDE 开发 ESP32-C3-DevKitM-1 有两种方式,其一是使用 `esp-idf`框架,另一个就是使用 `arduino`框架,这里我们选择 `arduino`框架,PlatformIO IDE 通过配置文件`platformio.ini`设置开发环境和管理依赖,设置如下:

[env:esp32-c3-devkitm-1]
platform = espressif32
board = esp32-c3-devkitm-1
framework = arduino

monitor_speed = 115200
upload_speed = 921600

lib_deps =
Sensirion I2C SCD4x
knolleary/PubSubClient @ ^2.8
bblanchon/ArduinoJson @ ^6.21.3

build_flags =
-DCORE_DEBUG_LEVEL=0


硬件设置

ESP32-C3-DevKitM-1 (with the ESP32-C3-MINI-1 module, click to enlarge)ESP32-DevKitC (click to enlarge)
ESP32-C3-DevKitM-1ESP32-DevKitC V4


      起初我觉得硬件不同应该不是什么大问题,不过当我找 ESP32-C3-DevKitM-1 I²C 引脚时有点懵,引脚图上没有标 I²C,这哪个才是呢?

      别急,来看看 ESP 官方文档 怎么写的。

       ESP32 架构包括将一些外围设备配置到任何 GPIOs 引脚的能力,由 IO MUX GPIO 管理。从本质上讲,此功能意味着我们可以使用 IO MUX 和 GPIO 矩阵将内部外围设备路由到不同的物理引脚。

      官方还给出了一个 Arduino 中改变 I²C 接口的使用示例:

      对于 ESP32,I2C 的默认引脚是 SDA (GPIO21) 和 SCL (GPIO22)。如果您需要更改引脚,可以使用其他引脚替代默认引脚。要更改引脚,我们必须在调用 Wire.setPins(int sda, int scl); 之前调用 Wire.begin(); 函数。
int sda_pin = 16; // GPIO16 as I2C SDA
int scl_pin = 17; // GPIO17 as I2C SCL

void setup()
{
    Wire.setPins(sda_pin, scl_pin); // Set the I2C pins before begin
    Wire.begin(); // join i2c bus (address optional for master)
}

      也就是说在 ESP32 中,除了一些特殊 GPIO 引脚(比如:被复用为 SPI Flash 的 GPIO 引脚,本例中为 GPIO12~17,被复用为串口的 GPIO 引脚,本例中为 GPIO20~GPIO21)需要特殊的配置。其余的都可以通过上述软件配置的方式指定为 I2C 引脚。

SCD41 传感器引脚ESP32 开发板引脚连接说明备注
VCC
3.3 V

电源正极   

2.4 V 至 5.5 V
GNDGND电源地线   共地连接

SDA

GPIO 18I2C数据线代码中指定:Wire.begin(18, 19)
SCLGPIO 19I2C时钟线代码中指定:Wire.begin(18, 19)


ESP32 此处指 ESP32-C3-DevKitM-1







关键词: SCD41     开箱     测试    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]