基于ESP32-C3与SHT31打造双模低功耗桌面气象站

ESP32-C3低功耗设计SHT31
于 2026-05-28 13:25:20 修改
·本内容遵循CC 4.0 BY-SA版权协议

1. 项目概述:打造你的桌面级智能气象站

几年前,我还在用手机App查看天气,直到一次露营,手机没电让我彻底抓瞎。从那时起,我就琢磨着做一个不依赖手机、能独立运行且足够省电的微型气象站。经过几轮迭代,最终定型为这个基于ESP32-C3和SHT31的方案。它不仅仅是一个显示温湿度的“电子表”,而是一个融合了本地传感、网络数据获取和智能功耗管理的完整物联网节点。

这个项目的核心价值在于其“双模”设计思路。在室内模式下,它就是一个高精度的温湿度计,依靠本地的SHT31传感器工作,响应快、数据准。切换到室外模式,它则化身为一个迷你气象台,通过WiFi从全球最可靠的气象数据源之一——挪威气象研究所(met.no)的免费API——获取你所在位置的实时天气、预报、风速、气压等信息,并显示在1.8英寸的OLED屏幕上。更重要的是,为了让它能塞进任何角落并用一块小电池驱动数周,我为其设计了深度睡眠机制:闲置20秒后自动进入“冬眠”,功耗降至微安级,仅需轻按按钮即可瞬间唤醒,这背后是ESP32-C3芯片强大的低功耗管理能力在支撑。

无论你是刚接触Arduino和物联网的新手,想通过一个完整项目练手,还是有一定经验的开发者,希望找到一个结构清晰、兼顾传感器应用、网络通信和电源管理的参考案例,这个项目都能提供一条明确的路径。你最终得到的,不仅是一个实用的桌面摆件,更是一套可复用于其他低功耗物联网设备(如土壤监测、门窗感应器)的代码框架和设计思想。

2. 核心硬件选型与设计思路解析

为什么是ESP32-C3和SHT31这个组合?这背后是一系列针对成本、性能、功耗和易用性的权衡。市面上MCU和传感器选择众多,但这个搭配在当下这个时间点,对于个人DIY项目而言,性价比和完成度几乎是最优解。

2.1 微控制器:ESP32-C3为何是“甜点”

ESP32系列芯片选择很多,经典的ESP32、ESP32-S3性能更强,但ESP32-C3对于本项目来说是“恰到好处”的甜点。首先,它基于RISC-V架构,功耗控制天生有优势。在深度睡眠模式下,其电流可以低至5μA左右,这对于依赖电池供电的设备是决定性因素。其次,它集成了WiFi和蓝牙5.0(本项目虽未用蓝牙,但为未来扩展留了可能),单芯片解决通信问题,避免了外接模块的复杂度和额外功耗。最后,也是很重要的一点,ESP32-C3的“SuperMini”开发板尺寸极小(约24mm x 18mm),引脚间距友好,非常适合这种追求紧凑的作品。相比更早的ESP8266,ESP32-C3的内存更大,支持更现代的TLS加密,连接像met.no这样的HTTPS API更加稳定可靠。

注意:购买ESP32-C3开发板时,请确认其USB转串口芯片型号。CH340/CH341芯片在主流操作系统上驱动兼容性较好,而某些使用非标芯片的板子可能在Mac或Linux上遇到识别问题,给新手带来不必要的麻烦。

2.2 传感器:SHT31的精度与稳定性

温湿度传感器从几块钱的DHT11到上百元的工业级产品都有。我选择SHT31,是因为它在精度、稳定性、响应速度和价格之间取得了很好的平衡。SHT31是Sensirion公司的明星产品,典型精度可达±2%RH(湿度)和±0.3°C(温度),并且具有优异的长期稳定性。它采用标准的I2C接口,与ESP32-C3的通信只需两根线(SDA, SCL),接线简单,且Arduino社区有成熟稳定的库(Adafruit_SHT31)支持,几乎无需操心底层驱动。

为什么不选更便宜的DHT11?DHT11的湿度精度在±5%RH,温度±2°C,且响应慢,在快速变化的环境中数据滞后明显。对于希望获得可靠环境参考数据的项目,这点投资是值得的。为什么不选更贵的SHT40?SHT40精度更高,但价格也上了一个台阶。对于室内环境监测,SHT31的精度已经绰绰有余,是性价比之选。

2.3 显示与交互:OLED屏与单按钮哲学

显示部分选用1.8英寸、128x160分辨率的TFT屏(驱动芯片多为ST7735)。这个尺寸在桌面上清晰可见,又不会显得笨重。选择TFT而非单色OLED,主要是为了更好的视觉效果,可以显示图标(如晴天、雨云)和更多信息(温度曲线)。ST7735有成熟的GFX库(如TFT_eSPI或LovyanGFX)支持,图形渲染效率高。

整个设备的交互遵循“极简”哲学:仅一个按钮。短按用于切换室内/室外模式,长按用于进入深度睡眠(或从睡眠中唤醒)。这种设计减少了硬件复杂度,也迫使软件逻辑必须清晰——所有状态切换都围绕这一个输入展开。按钮选择6x6mm的贴片轻触开关,便于焊接在紧凑的板子上或固定在壳体上。

2.4 供电设计:小电池的长续航秘诀

供电部分是低功耗设计的核心。我选择了一块从废弃电子烟中拆出的450mAh 3.7V锂离子电池。这种电池体积小、易获得,但关键是如何用好它。ESP32-C3的工作电压范围是3.0V-3.6V,而锂电池满电4.2V,放完电约3.0V。因此,一个高效的降压稳压电路(LDO或DC-DC)是必须的,大多数ESP32-C3开发板已经集成了这个电路。

长续航的秘诀在于软件与硬件的协同:1. 在不操作时,迅速降低屏幕背光至几乎看不见的2%;2. 在无任何操作20秒后,让MCU进入深度睡眠(Deep Sleep)。此时,只有RTC(实时时钟)模块和用于唤醒的GPIO(连接按钮)保持极低功耗的运行,整机电流可降至50μA以下。按此计算,450mAh的电池理论上可待机超过一年(450mAh / 0.05mA ≈ 9000小时)。当然,每次唤醒联网获取天气数据会消耗较多电量(约几十到一百毫安,持续几秒),但得益于高效的睡眠,即使每天唤醒几十次,续航数周也毫无压力。

3. 电路连接与实体搭建详解

“没有PCB”是本项目倡导的灵活性的体现,但也对动手能力提出了要求。正确的连接是后续一切工作的基础,这里我会详细拆解每一步,并分享让焊接更可靠、布局更美观的技巧。

3.1 引脚定义与接线图

首先,我们必须明确每个元件需要连接到ESP32-C3的哪个引脚。以下是经过验证的稳定连接方案:

元件 引脚/接口 连接到 ESP32-C3 说明
SHT31 传感器 VCC 3.3V 绝对禁止接5V,会烧毁传感器
GND GND 共地
SDA GPIO4 (默认I2C SDA) 数据线,需上拉电阻
SCL GPIO5 (默认I2C SCL) 时钟线,需上拉电阻
ST7735 TFT屏 VCC 3.3V 屏幕电源
GND GND 共地
SCLK GPIO6 SPI时钟
MOSI GPIO7 SPI数据主出从入
RESET GPIO10 复位引脚,低电平有效
DC (A0) GPIO8 数据/命令选择
CS GPIO2 片选,低电平有效
BLK 3.3V (或通过GPIO控制) 背光,常亮或PWM调光
轻触开关 一端 GPIO9 配置为上拉输入
另一端 GND 按下时,GPIO9被拉低
锂电池 正极 开发板 BAT+ 或 VIN 注意板子是否有充放电管理
负极 开发板 GND

重要提示:I2C总线(SDA, SCL)上通常需要连接上拉电阻(通常为4.7kΩ或10kΩ)到3.3V,以确保信号稳定。许多ESP32开发板内部已启用上拉,但若通信不稳定,请务必在外部焊接这两个电阻。

3.2 焊接与布局实战技巧

对于这种“飞线”项目,焊接质量和布局合理性直接决定了成品的稳定性和美观度。

  1. 先规划,后焊接:在动手前,用纸笔画一个简单的布局图。将ESP32-C3板子放在中心,屏幕和传感器围绕其布置。考虑好走线路径,尽量让电源线(3V3, GND)和信号线分开,避免平行长距离走线以减少干扰。
  2. 使用合适的线材:如果想做“裸露线材美学”风格,可以使用不同颜色的单芯硬线(如AWG22),它们能自己保持形状,营造出一种结构感。如果想最终放进外壳,则使用多股细丝的硅胶线,它们更柔软,便于在壳内排布。
  3. 焊接顺序:建议先焊接GND(地线),建立一个共同的参考点。然后焊接3.3V电源线。最后焊接信号线(SDA, SCL, MOSI等)。焊接每个点时,确保烙铁温度足够(约350°C),使用含松芯的焊锡,让焊点饱满呈圆锥形,避免虚焊或冷焊。
  4. 关于电池:如果电池没有保护板,强烈建议外接一个锂电池保护板(带过充、过放、短路保护)。这能极大提高安全性,防止电池因过度放电而损坏。将保护板串联在电池和ESP32开发板的电源输入之间。

3.3 功能测试与排错

全部连接完成后,先不要急着组装或放入外壳,进行上电前测试和初步功能测试。

  1. 上电前检查:用万用表蜂鸣档,仔细检查3.3V和GND之间是否短路。确认电池极性没有接反。
  2. 上电观察:连接电池或USB线。观察ESP32-C3板上的电源指示灯是否正常亮起。触摸主要芯片(ESP32-C3、稳压芯片)是否异常发烫。如有异常,立即断电。
  3. 串口信息:通过USB连接电脑,打开Arduino IDE的串口监视器,设置波特率为115200。如果程序已烧录,你应该能看到启动日志,包括连接WiFi的尝试、传感器初始化成功与否等信息。这是最直接的调试窗口。

如果屏幕不亮,检查背光(BLK)是否已供电。如果传感器读数失败,检查I2C地址(SHT31默认0x44)是否正确,并用I2C扫描程序确认总线是否能发现设备。

4. 软件环境配置与固件深度定制

硬件是骨架,软件是灵魂。这部分我们将深入代码,不仅告诉你“怎么填”,更解释“为什么这么填”,以及如何根据你的需求进行个性化调整。

4.1 开发环境与核心库安装

首先,确保你的Arduino IDE已安装ESP32开发板支持。

  1. 打开Arduino IDE,进入“文件”->“首选项”,在“附加开发板管理器网址”中输入:https://espressif.github.io/arduino-esp32/package_esp32_index.json
  2. 打开“工具”->“开发板”->“开发板管理器”,搜索“esp32”,安装“Espressif Systems”提供的ESP32开发板包。
  3. 安装完成后,在“工具”->“开发板”中选择“ESP32C3 Dev Module”。根据你的具体板子,可能需要调整“Flash Size”和“Partition Scheme”。

接下来,安装必要的库。打开“项目”->“加载库”->“管理库...”,搜索并安装以下库:

  • Adafruit SHT31 Library:用于驱动SHT31传感器。
  • LovyanGFX:一个非常高效且功能强大的图形库,支持ST7735等多种屏幕。它比传统的Adafruit_GFX + ST7735组合性能更好,功能更丰富。
  • 此外,项目可能还需要 ArduinoJson(用于解析API返回的天气数据)和 WiFi(ESP32内置)等库。

4.2 核心配置文件 settings.h 逐行解读

项目代码中最重要的就是settings.h文件,它是设备连接世界的“身份证”和“住址簿”。

CPP
// WiFi 配置 - 设备的网络通行证
constexpr char SSID[] = "Your_WiFi_SSID"; // 你的WiFi名称,区分大小写
constexpr char PASSWORD[] = "Your_WiFi_Password"; // WiFi密码
 
// 地理位置配置 - 获取天气数据的坐标
constexpr double LATITUDE = 39.9042; // 你的纬度,例如北京
constexpr double LONGITUDE = 116.4074; // 你的经度
 
// 显示与UI配置
constexpr int SCREEN_WIDTH = 160; // 屏幕宽度(像素)
constexpr int SCREEN_HEIGHT = 128; // 屏幕高度(像素)
constexpr int DEFAULT_BRIGHTNESS = 255; // 初始亮度 (0-255)
constexpr int SLEEP_BRIGHTNESS = 5; // 休眠前调暗的亮度 (约2%)
 
// 功耗管理配置
constexpr unsigned long ACTIVE_TIMEOUT_MS = 5000; // 5秒后调暗亮度
constexpr unsigned long SLEEP_TIMEOUT_MS = 20000; // 20秒后进入深度睡眠

配置要点与避坑指南:

  • WiFi加密类型:确保你的路由器使用的是WPA2或WPA3加密。古老的WEP加密可能无法连接。
  • 坐标精度:经纬度建议使用小数点后4-6位,这足以精确定位到一个街区。在Google Maps上右键点击你的位置,选择“这是什么?”即可看到坐标。
  • 亮度设置SLEEP_BRIGHTNESS设为5(约最大亮度的2%)而不是0,是因为有些屏幕在亮度为0时可能会完全关闭,难以判断设备是否仍在运行。保留微光是一个更好的用户体验设计。
  • 超时时间ACTIVE_TIMEOUT_MSSLEEP_TIMEOUT_MS可以根据你的使用习惯调整。如果你希望它常亮更久,就增大这两个值。

4.3 主程序逻辑与模式切换剖析

主程序(*.ino文件)的结构体现了状态机思想,清晰处理了设备的不同工作状态。

CPP
void loop() {
unsigned long currentMillis = millis(); // 获取当前运行时间
 
// 1. 检查按钮状态,处理模式切换和睡眠唤醒
handleButton();
 
// 2. 根据当前模式更新显示内容
if (currentMode == MODE_INDOOR) {
updateIndoorDisplay(); // 读取SHT31并显示
} else if (currentMode == MODE_OUTDOOR) {
// 检查是否需要更新网络天气数据(例如每10分钟一次)
if (currentMillis - lastWeatherUpdate > WEATHER_UPDATE_INTERVAL) {
fetchWeatherData(); // 连接WiFi,调用API,解析数据
lastWeatherUpdate = currentMillis;
}
updateOutdoorDisplay(); // 显示获取到的天气信息
}
 
// 3. 闲置超时管理
if (currentMillis - lastActiveTime > ACTIVE_TIMEOUT_MS) {
dimDisplay(); // 调暗屏幕
}
if (currentMillis - lastActiveTime > SLEEP_TIMEOUT_MS) {
enterDeepSleep(); // 进入深度睡眠
}
}

handleButton()函数的细节:这里需要实现防抖(Debounce)和长短按识别。简单的防抖可以在检测到按键按下后,延迟20-50毫秒再次读取引脚状态,确认按下有效。长短按识别则通过计时实现:按下时间超过500毫秒视为长按,触发睡眠;短于500毫秒视为短按,触发模式切换。

fetchWeatherData()函数的关键这是与met.no API交互的核心。你需要使用WiFiClientSecure建立安全的HTTPS连接,向类似 https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=YOUR_LAT&lon=YOUR_LON 的地址发送GET请求。服务器返回的是JSON格式的数据,你需要使用ArduinoJson库来解析出你需要的字段,如air_temperature(气温)、relative_humidity(湿度)、wind_speed(风速)、symbol_code(天气图标代码,如clearsky_day)。

实操心得:解析JSON时,务必先在串口监视器打印出完整的API响应,然后用ArduinoJson Assistant(在线工具)帮你生成解析代码。这能避免因JSON结构理解错误导致的程序崩溃。另外,对网络请求一定要设置超时(例如10秒),并做好异常处理,防止一次网络失败导致设备长时间卡死。

5. 低功耗与电源管理深度优化

让一个联网设备靠小电池长期工作,是本项目的一大挑战和亮点。低功耗设计是一个系统工程,需要硬件、固件和软件策略协同。

5.1 ESP32-C3的睡眠模式解析

ESP32-C3提供了多种睡眠模式,本项目使用的是最省电的深度睡眠模式(Deep Sleep)

  • 工作原理:在此模式下,CPU、大部分RAM以及所有由APB_CLK时钟驱动的外设都会断电。仅保留RTC控制器、RTC外设(如GPIO、UART)以及RTC快速内存(一小块用于保存唤醒后恢复运行的数据)处于工作状态。
  • 唤醒源:可以被多种方式唤醒,如定时器、外部引脚(EXT0/EXT1)、触摸引脚等。本项目采用外部引脚(GPIO)唤醒,即通过按钮将指定的GPIO(如GPIO9)拉低来唤醒芯片。
  • 功耗表现:深度睡眠下,整机电流(包括必要的稳压电路损耗)可以控制在50μA以下,甚至更低。

在代码中,进入深度睡眠非常简单:

CPP
esp_deep_sleep_enable_gpio_wakeup(BIT(GPIO_NUM_9), ESP_GPIO_WAKEUP_LEVEL_LOW);
esp_deep_sleep_start();

第一行代码配置了从深度睡眠中被唤醒的条件:当GPIO9被拉低(即按钮按下)时唤醒。第二行代码则让芯片立即进入深度睡眠。

5.2 外设功耗控制策略

MCU睡了,如果外设还在耗电,那就前功尽弃。

  1. 屏幕功耗:在进入深度睡眠前,除了调暗背光,最好通过代码将屏幕的复位引脚(RESET)拉低,或者通过片选(CS)将其彻底置于非活动状态。有些库提供了sleep()powerOff()函数。最彻底的方法是直接断开屏幕的电源,但这需要额外的MOSFET开关电路,增加了复杂度。对于本项目,将背光调到极暗并让MCU进入深度睡眠后,屏幕本身的功耗已经微乎其微。
  2. 传感器功耗:SHT31传感器在空闲时功耗本身就很低(约2μA)。我们可以在进入睡眠前,通过I2C发送一个命令让其进入休眠模式(如果支持),或者直接忽略,其功耗在整体中占比很小。
  3. WiFi与射频:这是耗电大户。在每次完成网络数据获取后,务必调用WiFi.disconnect(true)WiFi.mode(WIFI_OFF)来彻底关闭WiFi射频。这比仅仅断开连接要省电得多。

5.3 软件层面的省电技巧

  1. 快速工作,尽快睡觉:主循环loop()要高效。读取传感器、更新显示、检查网络这些操作,完成后如果没有其他事情,不要让程序空转。可以适当加入delay(10)让出CPU时间,但更好的做法是使用非阻塞式定时器,让MCU在等待期间可以处理其他任务或进入轻睡眠。
  2. 降低CPU频率:ESP32-C3默认运行在160MHz。在不需要高速处理时(例如仅更新显示时),可以通过setCpuFrequencyMhz(80)将频率降至80MHz,能显著降低动态功耗。
  3. 优化网络请求
    • 减少请求频率:天气数据变化不会那么快,将更新间隔设置为10分钟、甚至30分钟是完全合理的。
    • 精简数据包:请求API时,可以只请求你需要的字段(如果API支持),减少数据传输量和解析时间。
    • 重试策略:网络请求失败后,不要立即无限重试。实现一个指数退避的重试机制,比如失败后等待1秒重试,再失败等2秒,最多重试3次后就放弃,等待下一个周期。这能避免因网络临时故障导致设备长时间处于高功耗的联网状态。

6. 外壳设计与个性化制作

一个精致的项目离不开得体的“外衣”。外壳不仅保护内部电路,更是作品质感的体现。这里提供三种思路,从简到繁。

6.1 方案A:3D打印现成外壳

这是最快捷的方式。你可以在开源模型社区(如Thingiverse, Printables)搜索“ESP32-C3 enclosure”或“mini weather station”,找到适配你屏幕尺寸和主板的外壳模型。下载STL文件后,用3D打印机(PLA或PETG材料)即可打出。通常这类外壳由前盖、后盖和可能的内部支架组成,通过螺丝或卡扣固定。

打印与后处理建议

  • 层高:选择0.2mm层高以获得较好的表面质量。
  • 填充率:15%-20%即可保证强度,又节省材料和时间。
  • 支撑:如果外壳有悬空部分(如按钮孔上方的顶盖),需要生成支撑。
  • 打磨与上色:打印完成后,可以用砂纸打磨去除层纹,然后喷上底漆和喜欢的颜色漆,质感会提升好几个档次。

6.2 方案B:利用现成容器改造

充满创意且低成本的方法。一个透明的亚克力小盒子、一个复古的胶卷盒、甚至一个精心挑选的茶叶罐,都可以成为气象站的家。

  1. 测量与规划:精确测量内部元件的尺寸和位置。用铅笔在容器上标记出屏幕开窗、按钮孔和充电孔的位置。
  2. 开孔:对于塑料或薄木片,可以用手钻或电钻配合合适尺寸的钻头开孔。对于亚克力或玻璃,则需要使用专门的开孔器,或者送到有激光切割服务的地方进行精准切割。
  3. 固定与布局:内部元件可以使用热熔胶、双面泡棉胶或尼龙柱进行固定。注意将电池放置在容易更换的位置,并确保所有连接线不会被挤压。

6.3 方案C:裸露线材的工业美学

如果你喜欢硬核的、赛博朋克风格,完全可以不做外壳,将电路本身作为视觉主体。

  1. 线材整理:使用不同颜色的单芯硬线,并精心规划走线路径,让电源线、地线、信号线平行且整齐地排列,形成一种“电路雕塑”的美感。
  2. 结构强化:可以用一小块洞洞板(Perfboard)作为“基板”,将ESP32-C3、屏幕和传感器用铜柱固定在上面,飞线则在背面进行。这样既稳固,又保持了开放式的视觉效果。
  3. 底座制作:为这个“电路雕塑”设计一个简洁的底座,可以用一块木头、一块亚克力板,甚至是一个手机支架,让它可以稳定地立在桌面上。

无论选择哪种方案,都要考虑散热(虽然本项目发热很小)、防尘以及可能的电池更换口。一个用心设计的外壳,会让整个项目的完成度和满足感倍增。

7. 进阶功能扩展与创意玩法

基础功能实现后,这个气象站平台还有巨大的潜力可供挖掘。这里分享几个我实践过或构思过的扩展方向。

7.1 数据上传与可视化

让数据不再局限于本地屏幕,上传到云端进行记录和可视化。

  • 平台选择:国内可用阿里云物联网平台、OneNET;国外可用Blynk、ThingSpeak或自建的MQTT服务器(如EMQX)。
  • 实现方法:在fetchWeatherData()函数中,除了解析数据显示,再添加一段代码,将传感器数据(室内温湿度)和获取的天气数据打包成一个JSON字符串,通过MQTT协议或HTTP POST请求发送到你的云平台。
  • 可视化:在云平台或通过Grafana等工具,创建仪表盘,绘制温湿度变化曲线图,显示历史最高/最低值等。你甚至可以设置报警规则,当室内温度超过30°C时,给你手机发送一条通知。

7.2 增加更多传感器

ESP32-C3的GPIO和接口资源还有富余,可以轻松集成更多传感器。

  • 大气压强传感器(BMP280/BME280):BME280本身也包含温湿度传感器,且能测量气压。气压数据对于天气预测(气压下降通常预示天气转坏)很有价值。你可以同时连接SHT31和BME280,对比两者的温湿度读数,或者用BME280替换SHT31。
  • 空气质量传感器(SGP30, CCS811):监测室内CO2和TVOC(总挥发性有机物)含量,让气象站升级为环境质量监测站。
  • 光照传感器(BH1750):感知环境光强度,可以用于自动调节屏幕亮度。

添加新传感器时,需要注意I2C地址冲突(每个设备需要有唯一地址),并考虑功耗。通常这些传感器都有低功耗模式。

7.3 优化用户交互

单按钮虽然简洁,但功能切换有限。可以考虑增加交互方式。

  • 旋转编码器:替换或增加一个旋转编码器,可以用于更流畅地切换显示页面、调整参数(如亮度、刷新频率)。
  • 光线感应自动亮度:增加一个光敏电阻或数字环境光传感器,实现屏幕亮度随环境光自动调节,更智能也更省电。
  • 蜂鸣器提示:增加一个无源蜂鸣器,在按钮操作、数据更新完成或异常报警时提供声音反馈。

这些扩展不仅增加了功能,更让你深入理解如何在一个资源有限的嵌入式系统中进行外设管理、任务调度和功耗权衡,是极好的学习过程。

8. 常见问题排查与维护指南

即使按照指南操作,也可能会遇到一些“坑”。这里汇总了我和其他制作者遇到过的一些典型问题及其解决方法。

8.1 编译与上传问题

问题现象 可能原因 解决方案
编译错误:fatal error: Adafruit_SHT31.h: No such file or directory 库未安装或安装路径不正确 在Arduino IDE中通过库管理器重新安装。检查#include <>语句拼写是否正确。
上传失败:Failed to connect to ESP32: Timed out waiting for packet header 1. 板子型号选错
2. 串口被占用
3. 板子未进入下载模式
1. 确认选择“ESP32C3 Dev Module”。
2. 关闭其他可能占用串口的软件(如串口监视器)。
3. 对于某些板子,需要按住“BOOT”或“IO0”按钮再按一下“RST”进入下载模式,然后点击上传。
上传后程序不运行,屏幕无显示 1. 引脚定义错误
2. 屏幕初始化失败
3. 电源不足
1. 仔细核对settings.h和接线图中的每一个引脚号。
2. 打开串口监视器,查看启动日志,是否有屏幕初始化错误。
3. 尝试使用USB供电,排除电池电量不足或接触不良的问题。

8.2 硬件与连接问题

问题现象 可能原因 解决方案
屏幕花屏、闪烁或显示不全 1. SPI时钟频率过高
2. 电源干扰
3. 接线虚焊或过长
1. 在屏幕初始化代码中尝试降低SPI频率(如从27MHz降到20MHz)。
2. 在屏幕的VCC和GND之间并联一个100μF的电解电容,滤除电源噪声。
3. 检查并重新焊接屏幕排线,尤其是时钟和数据线。
SHT31传感器读数全为0或NaN 1. I2C地址错误
2. 上拉电阻缺失
3. 传感器损坏
1. 运行一个I2C扫描程序,确认总线上设备的地址。SHT31默认是0x44,也有可能是0x45。
2. 在SDA和SCL线上各接一个4.7kΩ电阻到3.3V。
3. 更换传感器测试。
按钮反应不灵或误触发 1. 按键消抖未做好
2. 上拉电阻未启用
1. 在代码中实现软件消抖逻辑(检测到按下后延迟20ms再判断)。
2. 确认按钮连接的GPIO在代码中设置为INPUT_PULLUP模式。
电池续航远低于预期 1. 深度睡眠未成功进入
2. 屏幕背光未关闭
3. WiFi未彻底关闭
1. 用万用表测量深度睡眠时的整机电流,应低于100μA。检查enterDeepSleep()函数是否被正确调用。
2. 确保在睡眠前调暗或关闭屏幕背光。
3. 在进入睡眠前,调用WiFi.disconnect(true); WiFi.mode(WIFI_OFF);

8.3 软件与网络问题

问题现象 可能原因 解决方案
无法连接到WiFi 1. SSID/密码错误
2. 路由器设置了MAC过滤或隐藏SSID
3. 信号太弱
1. 仔细检查settings.h中的配置,注意大小写和特殊字符。
2. 检查路由器设置,或将ESP32的MAC地址加入白名单。
3. 将设备靠近路由器测试。
无法从met.no获取天气数据 1. 网络连接问题
2. API请求格式错误或坐标无效
3. 服务器暂时不可用
1. 先在串口监视器查看WiFi是否连接成功。
2. 将浏览器中生成的API URL(含你的坐标)粘贴到串口输出中,看是否能返回JSON。检查坐标值是否在合理范围(纬度-90~90,经度-180~180)。
3. 等待一段时间再试,或检查met.no的服务状态页面。
设备运行一段时间后死机或重启 1. 内存泄漏
2. 看门狗超时
3. 电源波动
1. 检查代码中动态内存分配(如String类的大量拼接),尽量使用静态缓冲区或StringReserve
2. 在长时间循环或网络操作中,适时调用yield()delay(0)喂狗。
3. 在电池供电时,确保电池电压充足,或在电源输入端并联一个大电容(如1000μF)缓冲。

长期维护建议:定期检查电池电压,当续航明显缩短时考虑更换电池。如果设备放置在窗边或阳台,注意防潮和灰尘。软件上,可以关注met.no API的更新(虽然其v2.0版本非常稳定),以及所使用的Arduino核心库和第三方库的更新,适时升级以获得更好的稳定性和新功能。

ESP32读取sht30代码
本文提供了ESP32读取SHT30温湿度传感器的示例代码。代码使用Adafruit_SHT31库初始化传感器,并在串行控制台中打印温度和湿度值。示例中还提到了如何检查传感器初始化是否成功,并对代码进行了简单解释。
SHT30 esp32
本文介绍了如何使用ESP32微控制器通过I2C接口与SHT30温湿度传感器进行通信。首先需要将SHT30连接到ESP32的I2C总线,并使用库函数进行初始化和数据读取。文章提供了一个示例代码,展示了如何读取温度和湿度数据。
weixin_52835480
Stattion-meteo-SHT31
“Stattion-meteo-SHT31”是一个基于SHT31温湿度传感器的气象监测系统项目,主要用于环境参数的实时采集监控。该项目融合了嵌入式系统设计、传感器技术、I2C通信协议以及物联网应用等多个关键技术领域,适用于农业环境监测、智能建筑、工业自动化、气候研究等实际应用场景。从标题和描述可以看出,该系统的核心功能是利用SHT31传感器实现对周围环境中温度湿度的高精度测量,并通过微控制器进行数据采集处理,最终可将数据上传至云端或本地显示设备,实现远程监控。SHT31是一款由Sensirion公司生产的数字温湿度传感器,具有高精度、低功耗、响应速度快等特点。其典型温度测量精度可达±0.2°C,相对湿度测量精度为±2%RH,在宽温范围内(-40°C至+125°C)均能保持良好的稳定性。该传感器采用CMOSens技术,将传感器元件信号处理电路集成在单一芯片上,能够直接输出经过校准的数字信号,避免了传统模拟传感器需要外部ADC转换的复杂性。此外,SHT31支持多种工作模式,包括周期性测量模式和单次触发模式,用户可根据具体应用需求灵活配置采样频率功耗等级。在硬件架构方面,“Stattion-meteo-SHT31”系统通常以一个主流微控制器(如STM32、ESP32、Arduino系列或Raspberry Pi Pico)作为主控单元。微控制器通过I2C总线与SHT31传感器进行通信。I2C(Inter-Integrated Circuit)是一种两线式串行通信协议,仅需SDA(数据线)和SCL(时钟线)即可实现多设备之间的双向数据传输。SHT31默认使用I2C接口,其标准地址为0x44或0x45(取决于ADDR引脚电平),允许在同一总线上挂载多个同类或不同类传感器,便于构建多节点环境监测网络。软件层面,系统需编写相应的固件程序来初始化I2C外设、发送命令读取SHT31寄存器数据,并对原始数据进行解析补偿计算。SHT31的数据输出遵循特定的格式:首先发送测量命令(如0x2C06表示高重复性周期测量),然后等待一定转换时间后读取6字节数据包,其中包括两个字节的温度值、两个字节的湿度值以及各一个字节的CRC校验码。通过对温度和湿度原始数据应用线性化公式,可以得到实际物理量。例如,温度计算公式为T = -45 + 175 × (raw_temp / 65535),湿度为RH = 100 × (raw_humidity / 65535)。CRC校验用于确保数据完整性,防止因噪声干扰导致误读。考虑到“物联网”这一标签的存在,该系统很可能具备无线通信能力,比如通过Wi-Fi(ESP32)、LoRa、NB-IoT或蓝牙模块将采集到的温湿度数据上传至云平台(如阿里云IoT、ThingsBoard、Blynk或MQTT服务器)。这样用户可以通过手机App或Web界面实时查看环境状态,设置报警阈值,甚至实现数据分析历史记录查询。这种架构体现了典型的物联网边缘节点设计思想:感知层(SHT31)→ 控制层(MCU)→ 网络层(无线模块)→ 应用层(云服务/客户端)。此外,项目名称中的“main”子目录表明该工程采用模块化结构组织代码,可能包含初始化函数、传感器驱动、通信协议封装、数据处理算法及主循环逻辑等独立文件。良好的代码结构不仅提升可维护性,也便于后续功能扩展,例如增加光照强度、大气压、PM2.5等其他环境传感器,构建更全面的多功能气象站。综上所述,“Stattion-meteo-SHT31”不仅仅是一个简单的温湿度测量装置,而是集成了现代嵌入式开发技术、传感器融合、低功耗设计物联网通信于一体的综合性环境监测解决方案。它展示了如何将高性能传感器微控制器结合,通过标准化通信接口实现可靠的数据采集,并借助网络技术实现远程智能化管理,具有广泛的应用前景和技术推广价值。
温暖如故
SHT31官方驱动程序
SHT31是瑞士Sensirion公司推出的一款高精度、低功耗数字温湿度传感器,广泛应用于工业控制、环境监测、智能楼宇、医疗设备及消费类电子产品中。其核心优势在于±0.2℃的温度测量精度±2%RH的相对湿度测量精度(在20–80%RH范围内),同时具备出色的长期稳定性(年漂移<0.1%RH)、快速响应时间(<8s达到90%响应)以及集成的I²C数字接口,无需外部ADC或信号调理电路,极大简化了系统设计。所谓“SHT31官方驱动程序”,并非传统意义上的操作系统级设备驱动(如Linux内核模块或Windows WDM驱动),而是由Sensirion原厂提供的一套面向嵌入式微控制器平台的标准化固件支持包(Firmware Support Package, FSP),专为在资源受限的MCU(如STM32系列)上实现对SHT31传感器的可靠初始化、配置、数据采集、校验错误处理而设计。该驱动程序本质上是一组高度可移植、模块化、经过充分验证的C语言源码,严格遵循嵌入式开发最佳实践:采用分层架构——底层硬件抽象层(HAL)封装I²C总线读写时序时序容错逻辑;中间协议层实现SHT31特有的命令集解析(如0x2C06单次高周期测量、0x2400周期性测量启动、0xE000软复位、0x30A2读取序列号等);上层应用接口层提供简洁API函数,如SHT3x_Init()、SHT3x_MeasurePolling()、SHT3x_ReadTempHumidity()等,使开发者无需深入理解I²C底层时序细节或SHT31寄存器映射即可完成功能集成。从压缩包文件结构可清晰看出其工程完整性专业性:SHT3x_Samplecode_Structure.pdf 是Sensirion官方提供的详尽技术文档,系统阐述了示例代码的整体框架、各模块职责、内存布局、状态机设计逻辑、错误码定义(如SHT3X_STATUS_CRC_ERROR、SHT3X_STATUS_TIMEOUT)以及关键性能参数的测试方法;Readme.txt 则作为项目入口指南,明确说明开发环境要求(Keil µVision 5.x及以上版本)、目标芯片型号(典型为STM32F103C8T6或STM32F407VG等主流ARM Cortex-M系列)、I²C引脚配置建议(PB6/PB7或PB8/PB9)、编译选项(需启用浮点运算支持以处理温度/湿度浮点转换)、以及首次烧录前必须修改的硬件适配参数(如I²C外设句柄、GPIO端口/引脚定义、延时函数实现方式);SHT3x_SampleCode.uvproj.uvopt分别是Keil µVision的工程配置文件用户选项文件,完整保存了编译器路径、优化等级(通常设为-O2兼顾性能体积)、宏定义(如SHT3X_ADDRESS_44或SHT3X_ADDRESS_45用于选择I²C地址)、头文件包含路径及链接脚本信息;Sensirion_Humidity_Sensors_SHT3x_Sample_Code为根目录,内部按标准嵌入式项目规范组织:/Source目录下包含核心驱动源码(sht3x.c/sht3x.h)、I²C底层驱动(i2c_master.c/i2c_master.h,通常需用户根据所用MCU HAL库重写)、CRC16校验算法(crc16.c)、数据转换工具函数(temperature_conversion.c/humidity_conversion.c,将原始16位ADC值通过查表法或多项式拟合转换为物理量);此外还包含完整的主应用例程(main.c),演示了上电自检、周期性测量、数据滤波(滑动平均或卡尔曼滤波预留接口)、异常告警(如湿度超限触发LED闪烁)等典型场景。整个驱动严格遵循Sensirion发布的《SHT3x Datasheet》《SHT3x Communication Protocol Specification》及《SHT3x Application Note AN_SHT3x》,确保在-40℃~+125℃宽温域0~100%RH全量程内输出符合NIST可溯源标准的数据。特别值得注意的是,该驱动内置多重鲁棒性机制:I²C通信失败后自动重试(最多3次)、CRC校验失败时丢弃数据并返回错误码、测量超时强制退出避免死锁、电源电压波动时的内部稳压补偿逻辑,以及针对SHT31内部加热元件(用于抗冷凝)的独立控制接口。对于STM32平台开发者而言,此驱动可无缝对接STM32CubeMX生成的HAL库,仅需将sht3x.c加入工程、在stm32fxxx_hal_conf.h中使能HAL_I2C_MODULE_ENABLED,并在I²C回调函数中注入SHT3x_I2cErrorCallback()即可实现即插即用。更进一步,该驱动架构具备极强的跨平台迁移能力——只需替换i2c_master.c中的HAL_I2C_TransmitHAL_I2C_Receive为ESP32的i2c_master_write_read、nRF52的nrf_twim_tx_rx或RISC-V GD32的gd32_i2c_transfer,即可在数十种主流MCU上复用90%以上代码,显著降低多平台产品开发成本认证风险。因此,“SHT31官方驱动程序”不仅是一组代码,更是Sensirion多年传感器算法积累嵌入式系统工程经验的结晶,是构建高可靠性环境感知系统的基石性技术资产。
qq_35351005
SHT31.zip温湿度传感器SHT3X
SHT31是一种高精度数字温湿度传感器,属于Sensirion公司推出的SHT3x系列传感器家族中的核心成员之一。该传感器广泛应用于环境监测、工业控制、智能家居、医疗设备、气象站以及嵌入式系统等领域,因其具备高可靠性、长期稳定性以及出色的抗干扰能力而受到开发者和工程师的青睐。SHT31通过I2C(Inter-Integrated Circuit)数字接口进行通信,支持标准和高速两种I2C模式,工作电压范围通常在2.4V至5.5V之间,适用于多种低功耗应用场景。其内部集成了高精度的电容式湿度传感元件和能带间隙温度传感元件,能够同时测量环境中的相对湿度和温度,并以数字信号形式输出,避免了模拟信号传输过程中可能引入的噪声误差。SHT31的核心优势在于其极高的测量精度和长期稳定性。在相对湿度测量方面,典型精度可达±2%RH,在整个0%至100%RH的测量范围内保持良好线性响应;在温度测量方面,典型精度为±0.3°C,覆盖-40°C至+125°C的工作温度范围,满足绝大多数工业消费类电子产品的使用需求。此外,SHT31内置了信号调理电路、模数转换器(ADC)以及数字接口控制器,所有数据处理均在芯片内部完成,用户只需通过I2C总线读取已校准的温湿度数值即可,极大简化了系统设计复杂度。从硬件接口角度来看,SHT31采用紧凑型表面贴装封装(如DFN封装),引脚数量少,主要包括VDD(电源)、GND(接地)、SDA(I2C数据线)、SCL(I2C时钟线),部分型号还提供ADDR引脚用于设置I2C设备地址,允许多个SHT31传感器挂载在同一I2C总线上而不发生地址冲突。默认I2C地址通常为0x44或0x45,具体取决于ADDR引脚的电平状态(接高或接地)。这种灵活的地址配置机制使得系统可以扩展多个温湿度传感器以实现多点环境监测功能。在软件层面,使用SHT31需要遵循其规定的I2C通信协议。常见的操作模式包括单次测量模式(Single Shot Mode)和周期性测量模式(Periodic Mode)。在单次模式下,主控MCU发送命令启动一次测量,传感器完成采集后将结果存储在内部寄存器中,主机再通过读取命令获取数据,适合低功耗间歇性采样场景;而在周期性模式下,SHT31可按照预设的时间间隔(如0.5Hz、1Hz、2Hz等)自动连续采集数据并缓存至片上FIFO中,适用于需要实时监控的应用。此外,SHT31支持多种加热器模式,可通过指令开启片内加热器以防止冷凝或清除水汽,提升在高湿环境下的工作稳定性。SHT3X系列(包括SHT30、SHT31SHT35等)之间的主要区别体现在精度等级和成本定位上。例如,SHT35具有更高的测量精度(湿度±1.5%RH,温度±0.2°C),常用于实验室级仪器,而SHT31则定位于高性能成本效益之间的平衡点,广泛用于商业和工业产品中。SHT30则是入门级版本,适用于对精度要求不极端但追求小型化和低成本的应用场景。在嵌入式系统开发中,集成SHT31通常需要结合具体的微控制器(如STM32、ESP32、Arduino、Raspberry Pi Pico等)编写驱动程序。开发者需根据数据手册定义正确的I2C通信速率(标准模式100kHz或高速模式400kHz)、命令字格式(如0x2C06用于高重复率单次测量)、以及数据解析逻辑。原始返回值为16位无符号整数,需通过特定公式转换为物理量:湿度 = RH / 65535 × 100%,温度 = T / 65535 × 175 - 45。同时,为提高测量准确性,建议在实际部署中进行外部校准或温度补偿处理,尤其是在极端环境条件下。除了基本的温湿度采集功能外,SHT31还具备良好的EMC(电磁兼容性)性能和抗化学腐蚀能力,能够在恶劣环境中长期稳定运行。其封装结构具有防尘防水特性,配合适当的PCB布局设计(如远离热源、避免机械应力集中),可显著延长使用寿命。此外,SHT31支持低功耗待机模式,静态电流低于1μA,非常适合电池供电的物联网终端设备,如无线温湿度记录仪、LoRa环境节点、NB-IoT智能传感器等。综上所述,SHT31作为SHT3X系列中的主流数字温湿度传感器,凭借其高精度、数字化输出、易于集成、宽工作范围和低功耗特性,已成为现代环境监测系统中不可或缺的关键组件。无论是用于室内空气质量检测、温室大棚监控、冷链运输追踪,还是数据中心温控管理,SHT31都能提供可靠的数据支撑,是嵌入式开发者实现精准环境感知的理想选择。
斩华
温湿度sht31在液晶OLED(128*64小屏)上显示
SHT31是一款由Sensirion公司推出的高精度数字温湿度传感器,采用I²C总线接口(支持标准模式100kHz快速模式400kHz),具备±0.2℃的温度测量精度和±2%RH的相对湿度测量精度,同时拥有出色的长期稳定性、低功耗特性(典型待机电流仅0.5μA)以及抗污染、抗凝露设计,广泛应用于环境监测、智能农业、工业控制、HVAC系统及物联网终端设备中。在本项目“温湿度SHT31在液晶OLED(128×64小屏)上显示”中,SHT31作为核心感知单元,通过标准I²C协议Arduino主控板(如Uno、Nano、ESP32等)进行通信,完成对环境温湿度数据的周期性采集;其物理连接仅需四根线:VCC(3.3V或5V,注意SHT31支持宽电压供电但推荐3.3V以保障精度)、GND、SCL(时钟线)、SDA(数据线),且通常需在SCLSDA线上各加装一个4.7kΩ上拉电阻至VCC,以确保I²C总线信号完整性通信可靠性。Arduino作为嵌入式主控平台,在本系统中承担着传感器驱动、数据解析、OLED图形渲染人机交互调度等多重任务。其底层依赖Wire.h库实现I²C硬件通信抽象,而高层逻辑则完全依托于第三方开源库cactus_io_SHT31——该库由GitHub社区开发者维护,封装了SHT31全部寄存器操作、CRC校验、重复启动时序、加热器控制、测量模式切换(周期/单次)、数据读取单位转换等复杂底层细节,用户仅需调用如`mySHT31.getTemperature()``mySHT31.getHumidity()`两个高级API即可获得浮点型温湿度数值,极大降低了开发门槛出错概率。值得注意的是,该库并非Arduino官方IDE内置库,必须手动解压至Arduino IDE的“libraries”目录下(路径通常为:文档/Arduino/libraries/cactus_io_SHT31),并重启IDE后方可被Sketch识别;若未正确安装,编译阶段将报错“fatal error: cactus_io_SHT31.h: No such file or directory”,这是初学者最常见的配置失误之一。OLED显示屏选用0.96英寸单色SSD1306驱动芯片的128×64像素模块,其优势在于自发光、高对比度(>10000:1)、超广视角、宽温工作范围(-40℃~+80℃)、低功耗(无背光电路)及极快响应时间(微秒级)。该屏同样采用I²C接口,与SHT31共享同一组SCL/SDA总线,因此需特别注意I²C地址冲突问题:SHT31默认地址为0x44(ADDR引脚接地)或0x45(ADDR接VCC),而SSD1306默认地址为0x3C(SA0接地)或0x3D(SA0接VCC),二者地址不重叠,可共用总线;但若系统中接入多个I²C设备,必须通过硬件跳线或软件扫描(使用I2CScanner示例程序)确认各设备地址唯一性。显示驱动方面,项目通常采用Adafruit SSD1306Adafruit GFX联合库组合,前者负责底层显存映射I²C写入,后者提供drawPixel、drawString、drawRect、setTextSize等丰富绘图函数,使开发者能灵活构建字符界面、进度条、图标化UI甚至简易波形图。在实际代码中,需先初始化OLED(`display.begin(SSD1306_SWITCHCAPVCC, 0x3C)`),再清屏、设置字体(如`display.setFont(&FreeMono9pt7b)`)、定位光标(`display.setCursor(x,y)`)、输出格式化字符串(如`display.print("Temp: "); display.print(temp, 1); display.println(" C");`),最后调用`display.display()`刷新显存至物理屏幕。整个系统的工作流程为:Arduino上电复位后执行setup(),依次初始化Wire总线、SHT31传感器(含软复位测量模式配置)、OLED屏幕;进入loop()后,以固定间隔(如500ms或2s)调用SHT31读取函数获取最新温湿度值,经有效性判断(排除NaN或超限值)后,将数值格式化为带一位小数的字符串,并在OLED指定坐标位置动态刷新显示;同时可扩展添加单位标识(℃/%RH)、状态图标(如水滴符号表示湿度)、历史极值标记、报警阈值提示(如温度>35℃时文字变红或闪烁)等功能。此外,cactus_io_SHT31库还支持SHT31的Heater功能(用于除湿或冷凝防护)、Clock Stretching使能、Alert引脚中断配置等进阶特性,虽本项目未启用,但为后续功能升级预留了硬件软件接口。综上,该项目不仅是基础传感器显示模块的简单拼接,更是嵌入式系统中多外设协同、I²C总线资源管理、实时数据可视化、Arduino库生态集成工程化调试能力的综合体现,是学习物联网终端开发不可多得的典型范例。
湿度传感器SHT30-31-35 Sensirion_Humidity_Sensors-综合文档
湿度传感器SHT30、SHT31与SHT35是由瑞士著名传感器制造商Sensirion(盛思锐)推出的一系列高精度数字温湿度传感器,广泛应用于环境监测、智能家居、工业自动化、医疗设备、暖通空调(HVAC)、物联网(IoT)终端等领域。该系列传感器基于CMOSens技术,将高精度的湿度感应元件温度感应元件集成于单一芯片之上,具备出色的长期稳定性、低功耗特性以及优异的抗干扰能力。本文档《SHT30-31-35 Sensirion_Humidity_Sensors.pdf》作为综合技术文档,全面涵盖了这三款传感器的技术参数、电气特性、通信协议、封装形式、应用指南及校准信息,是开发人员进行系统设计和集成的重要参考资料。首先,从核心功能来看,SHT30、SHT31与SHT35均采用数字输出方式,通过标准I2C接口主控MCU(如STM32、ESP32、Arduino等)进行通信,支持标准模式(100kHz)和快速模式(400kHz),部分型号还支持高达1MHz的快速模式Plus,极大提升了数据传输效率。I2C接口的引入使得这些传感器在嵌入式系统中易于集成,仅需两条信号线(SDA数据线和SCL时钟线)即可完成通信,并支持多设备挂载在同一总线上,通过地址引脚配置不同的I2C地址以实现设备区分。此外,所有型号均内置信号放大、模数转换(ADC)和数字信号处理单元,无需外部额外的信号调理电路,简化了硬件设计流程。在测量性能方面,三款传感器虽定位略有差异,但均表现出卓越的精度稳定性。SHT35作为高端型号,提供最高级别的测量精度:在25°C条件下,相对湿度测量精度可达±1.5%RH,温度测量精度为±0.1°C,适用于对环境参数要求极为严苛的应用场景,如实验室环境监控或精密气候箱控制。SHT31则定位于中高端市场,其典型湿度精度为±2.0%RH,温度精度为±0.2°C,兼顾性能成本,适合商业级环境监测系统。而SHT30作为经济型产品,虽然精度略低(典型值±3.0%RH,±0.3°C),但仍远超多数传统模拟湿度传感器,且具有极低的功耗表现,特别适用于电池供电的便携式设备或无线传感节点。值得一提的是,该系列传感器均具备出色的长期稳定性,年漂移量极小,通常小于0.5%RH/年,这意味着用户在长时间运行过程中无需频繁重新校准,显著降低了维护成本。同时,它们对污染物(如灰尘、挥发性有机物VOCs)具有较强的耐受能力,得益于Sensirion独有的防护涂层技术,可在复杂环境中保持可靠工作。此外,传感器内部集成了多种可编程功能,包括周期性测量模式、单次触发模式、加热器功能(用于防止冷凝或自检)以及报警阈值设置,极大增强了系统的灵活性智能化水平。在物理封装上,SHT30常采用紧凑的DFN封装(如2.5mm × 2.5mm × 0.9mm),非常适合空间受限的应用;SHT31SHT35则多使用稍大的封装形式,便于散热和提高长期可靠性。所有型号均支持表面贴装(SMT)工艺,便于大规模自动化生产。文档中还详细列出了引脚定义、推荐焊盘布局、PCB设计注意事项以及防潮存储建议,帮助工程师优化电路板设计并确保焊接质量。此外,《SHT30-31-35 Sensirion_Humidity_Sensors.pdf》还深入介绍了命令集结构,例如如何发送测量启动指令、读取数据序列、执行软复位、查询状态寄存器等。每个测量结果附带一个16位CRC校验码,用于验证数据完整性,防止因噪声或总线干扰导致的数据错误,从而提升整个系统的鲁棒性。文档还提供了典型应用电路图、电源去耦建议、I2C上拉电阻选型指导以及不同工作模式下的电流消耗数据,为低功耗设计提供了有力支持。综上所述,SHT30、SHT31与SHT35不仅是当前市场上最具代表性的数字温湿度传感器之一,更是体现了现代传感器向智能化、微型化、高精度化发展的趋势。通过对本综合文档的深入研读,开发者可以全面掌握其技术细节,合理选型并高效集成到各类环境感知系统中,构建出稳定、精准、可靠的传感解决方案。
weixin_38629801
基于 ESP32-S3 的温湿度 光照 人体存在传感器和红外发射器.zip
温湿度传感器: 温湿度传感器通常使用DHT系列(如DHT11、DHT22或AM2302)或SHT系列(如SHT31-DIS)等。
博士僧小星
379
基于ESP32与SHT31传感器的智能新风控制系统设计实现
小小造数君
基于esp32单片机的锂电池智能监控系统中的温湿度传感器推荐
本文针对基于ESP32单片机的锂电池智能监控系统,推荐了适合的温湿度传感器。分析了DHT11、DHT22和SHT30三种传感器的特性、成本、精度、功耗和通信接口,并提供了电路连接和代码示例。同时,给出了电源稳定性和低功耗策略的建议。
Yjiajiajia
基于ESP32-C3与SHT30的低功耗物联网气象站DIY全攻略
本文详细介绍了基于ESP32-C3主控与SHT30温湿度传感器的低功耗物联网气象站设计实现。涵盖硬件选型(ESP32-C3SHT30、磁簧开关风速/电位器风向方案)、低功耗电路设计(深度睡眠、RTC唤醒、电源管理)、嵌入式固件开发(传感器读取、Wi-Fi快速上报、中断计数)、以及本地服务器集成(Node-RED API、Home Assistant可视化自动化触发)。重点突出深度睡眠控制、户外校准方法续航优化策略。
weixin_30561177
581
「“芯”想事成,造物无敌」用 ESP32-S3 打造「掌上气象站」:从想法到 PCB 全流程开源
本文详细介绍如何使用ESP32-S3设计并实现一款手掌大小、支持锂电池供电和本地TinyML体感预测的开源气象站。涵盖从需求分析、KiCad原理图PCB设计、ESP-IDF嵌入式开发、低功耗优化到3D打印外壳组装的全流程,并提供完整的开源资源,适合物联网嵌入式爱好者学习二次开发。
进哥聊编程
11780
ESP32-C3低功耗气象站实战:SHT40温湿度数据采集云端上报(Arduino篇)
本文详解基于ESP32-C3与SHT40构建低功耗气象站的技术实践,涵盖μA级深度睡眠配置、软件I2C驱动优化、SHT40高精度采集(含预热/校准)、CBOR+MQTT云端上报及异常容错机制。重点突出22nm RISC-V芯片的超低功耗特性、SHT40防漂移处理,并验证两节AA电池续航达14个月。
weixin_30872337
494
ESP32设备驱动-SHT31温度湿度传感器驱动
本文介绍了如何在ESP32 NodeMCU V3开发板上驱动SHT31温度湿度传感器,详细讲解了SHT31传感器的特点、硬件连接、软件准备以及驱动实现,使用了Adafruit_SHT31库,并提供了初始化和数据读取的代码示例。
视觉与物联智能
1159
物联网开发123 - Micropython ESP32 C3连接SHT30温湿度传感器模块
教程介绍了如何利用ESP32C3开发板和MicroPython环境,通过I2C连接SHT30传感器读取温湿度数据,并在12864点阵屏(ST7567驱动)上显示。代码中包含了错误处理和屏幕显示函数。,
魔都飘雪
2623
ESP32-C3入门教程 基础篇(四、I2C总线 — 与SHT21温湿度传感器通讯)
本文详细介绍了ESP32-C3单I2C主机模式下的初始化配置读写操作流程,并基于ESP-IDF框架完成SHT21温湿度传感器的驱动移植实测。重点涵盖GPIO引脚分配(SDA: GPIO3, SCL: GPIO10)、I2C参数结构体配置、寄存器时序控制及HTU21D兼容性适配,验证了RISC-V架构下I2C外设通信的可靠性。
矜辰所致
7161
ESP32 调试SHT20踩的坑
本文详细介绍了ESP32双核处理器及其在物联网领域的应用,探讨了SHT20温湿度传感器的工作原理及与ESP32通过I2C协议通信的具体实现。针对SHT20数据读取问题,提供了有效的解决方案。
徐满华
2546
【导航】ESP32-C3 入门教程目录 【快速跳转】
本文档带你逐步探索ESP32-C3开发环境、硬件配置、基础功能到Wi-Fi和蓝牙应用,实战案例涵盖MQTT蓝牙控制。跟随博主学习,轻松掌握物联网项目开发。
矜辰所致
26345
ESPHome气象站项目:监测温度、湿度、气压风速
本文介绍如何使用ESPHome搭建气象站,集成SHT3xD温湿度、BME280气压和TX20风速风向传感器,通过YAML配置实现数据采集,并Home Assistant集成进行远程监控,具备低功耗、易扩展等特点。
蒙丁啸Sharp
924
ESP32-C3SHT21做个迷你气象站:手把手教你读取温湿度并串口打印
本文基于ESP32-C3微控制器与SHT21数字温湿度传感器,构建本地气象监测系统。重点涵盖I2C通信配置、SHT21驱动移植、CRC校验实现、温度/湿度数据转换算法、滑动平均滤波、I2C总线错误恢复及串口结构化输出。所有实践均依托ESP-IDF开发框架,在RISC-V架构下完成软硬协同优化。
编程之翼
327
ESP32-C6物联网开发:低功耗传感器联动方案
本文围绕ESP32-C6芯片展开物联网低功耗传感器联动方案介绍。阐述芯片特性开发环境搭建,涵盖低功耗设计、传感器选型集成、无线通信协议选型等内容。还提及数据优化传输、固件开发、安全防护等策略,列举典型应用场景及疑难问题解决办法,展望未来技术演进。
知识产权13937636601
1855
基于 ESP32低功耗远程气象站设计 MQTT 协议实战
本文设计基于ESP32-WROOM-32的低功耗远程气象站,集成SHT30、BMP280、BH1750等传感器采集温湿度、气压、光照等数据;通过深度睡眠(~15μA)、可控电源管理、ULP协处理器及优化电路实现超低功耗;采用MQTT协议以标准化JSON格式上传至云平台,并支持OTA升级、数据补传BLE配网。适用于农业、野外及智能家居等物联网场景。
编码追梦人
14
ESP32-C3双模温湿度传感节点设计实现
本文介绍一款基于ESP32-C3双模温湿度传感节点,支持AHT20/SHT30双I²C传感器、WS2812B状态指示、双供电(USB+锂电池)及巴法云MQTT接入。硬件涵盖主控、传感、人机交互电源管理四子系统;软件采用Arduino框架,重点实现I²C总线重映射(GPIO5/6)、RMT驱动WS2812B及时序优化、低功耗稳定云通信。
Nate Hillick
220
Arduino开发ESP32 S3(二):使用库读取SHT40温湿度
本文介绍了如何使用SHT40传感器与ESP32S3开发板配合,通过Adafruit_SHT4x库实现温湿度数据的读取。包括硬件连接、库安装、示例程序和运行过程,展示了Arduino开发环境的便捷性。
wirelesroom
4665
ESP32-C3+SHT40打造低成本智能温湿度计:从硬件选型到数据上传云平台全流程
本文详细阐述基于ESP32-C3微控制器与SHT40高精度温湿度传感器构建物联网环境监测系统的全流程,涵盖硬件选型(RISC-V架构、Wi-Fi 4、低功耗特性)、软件I2C驱动实现、Blinker云平台数据上传、深度睡眠低功耗优化及数据可视化报警功能,适用于阳台植物监测等边缘传感场景。
weixin_30338481
435
基于ESP32C6蓝牙的低功耗温度传感器DIY指南
本文介绍基于Xiao ESP32C6主控DS18B20/SHT41传感器的低功耗蓝牙温度监测设备设计。重点涵盖硬件选型(突出ESP32C6的BLE 5.0深度睡眠优势)、GPIO控制传感器供电的功耗优化策略、BLE广播协议实现(含伪装心率设备对接Strava)、以及配套Kelvyn App的数据可视化方案。项目支持100mAh电池续航数周,适用于环境监测运动场景温度记录。
weixin_30216561
444
使用XIAO ESP32C6, XIAO扩展板和SHT31温湿度传感器构建温湿度计
博主分享使用XIAO ESP32C6、XIAO扩展板和SHT31温湿度传感器构建DIY温湿度计的项目。该设备可监测室内温湿度,通过Zigbee协议HomeAssistant集成。介绍了所用部件,展示了HomeAssistant界面效果,还给出程序代码,最后提及未来添加显示、多传感器等功能的计划。
jj95962934
538
基于ESP32-C3与SHT40的立创墨水屏温湿度检测仪DIY全攻略
本文详细介绍基于ESP32-C3主控、SHT40高精度温湿度传感器及2.13英寸三色电子墨水屏的低功耗物联网终端设计实现。涵盖硬件电路(I2C传感器接口、ME6211 LDO电源管理)、PlatformIO软件开发环境搭建、墨水屏驱动(GxEPD2库)、SHT40数据采集、心知天气API集成,以及PCB设计3D打印外壳组装全流程。
Amarantine Lee
104
基于ESP32-C3低功耗墨水屏温湿度监测终端设计
本文介绍一款基于ESP32-C3-MINI-1-N4的低功耗嵌入式环境监测终端,集成SHT40温湿度传感器2.13英寸三色E-Ink墨水屏,支持深度睡眠(5μA)、Wi-Fi按需唤醒及断电图像保持。硬件采用双层PCB、LDO稳压FPC屏驱设计;软件基于Arduino-ESP32实现传感器驱动、墨水屏全刷渲染轻量HTTP天气查询,整机BOM成本约50元,适用于家庭/办公静态场景。
love彤彤
218
ESP32-C3入门教程 基础篇(四、I2C总线 — 与SHT21温湿度传感器通讯)_sht 21原理图(1)
文章介绍了适合不同水平的学习者关于物联网嵌入式系统中ESP32-C3的I2C通信,包括基础设置、SHT21驱动移植示例和全套学习资料,包括面经、源码、实战项目等,旨在提供体系化的学习路径。
2401_85015059
1053