资讯动态

告别DHT11!用3.5元的AHT10和STC8单片机,做个更小巧的桌面温湿度计(附完整源码)

发布时间:2026/8/20 3:22:49 来源:尧图企业网站定制
3.5元AHT10温湿度传感器实战用STC8打造迷你桌面环境监测仪在智能家居和创客项目中温湿度传感器一直是基础但关键的组件。传统DHT11虽然价格低廉但其较大的体积和相对落后的性能指标越来越难以满足现代小型化设备的需求。今天我们要介绍的AHT10传感器不仅价格低至3.5元体积更是缩小了60%精度却提升了一个数量级。1. 为什么选择AHT10替代DHT111.1 参数对比小身材大能量让我们先看一组关键数据对比参数DHT11AHT10提升幅度温度精度±2℃±0.3℃566%湿度精度±5%RH±2%RH150%响应时间2秒8秒-75%工作电压3-5.5V2.2-5.5V-尺寸(mm)15.5×12×5.53×3×1.0体积减少85%接口类型单总线I2C-典型价格4元3.5元12.5%从表格可以看出AHT10在几乎所有关键指标上都碾压DHT11特别是体积和精度这两个对现代电子设备至关重要的参数。唯一的不足是响应时间稍长但对于大多数环境监测应用来说8秒的间隔完全在可接受范围内。1.2 实际应用场景优势AHT10的微型化设计带来了几个实际优势PCB布局更灵活3mm×3mm的尺寸可以轻松塞入任何角落低功耗设计2.2V的最低工作电压更适合电池供电设备数字接口I2C总线节省GPIO资源简化布线表面贴装可直接焊接在PCB上无需额外的连接器注意AHT10的I2C地址固定为0x38无法修改这意味着在同一I2C总线上不能挂载其他设备。这是选择AHT10时需要特别注意的设计约束。2. 硬件设计与连接2.1 元器件清单制作这个迷你温湿度计需要以下材料STC8A8K64S4A12单片机或其他STC8系列AHT10温湿度传感器模块0.96寸OLED显示屏I2C接口10kΩ电阻×2I2C上拉100nF电容×2电源滤波微型按键×1功能切换3.7V锂电池可选充电管理模块可选总成本可以控制在20元以内如果使用开发板而非最小系统成本会略高但开发更方便。2.2 电路连接示意图// 硬件连接示意代码 #define I2C_SCL P1_5 // STC8的I2C时钟线 #define I2C_SDA P1_4 // STC8的I2C数据线 // AHT10连接方式 // VCC - 3.3V // GND - GND // SCL - P1.5 (需接10k上拉电阻) // SDA - P1.4 (需接10k上拉电阻) // OLED连接方式 // 由于AHT10独占I2C总线OLED需要连接到另一组I2C接口 // 或者使用软件I2C模拟对于STC8单片机如果硬件I2C被AHT10占用我们可以用任意两个GPIO口模拟I2C驱动OLED。这种方案虽然会占用更多CPU资源但解决了总线冲突问题。3. 软件实现与驱动开发3.1 AHT10驱动移植AHT10的驱动相对简单主要需要实现以下几个功能传感器初始化触发测量读取数据数据转换以下是核心驱动代码片段// AHT10初始化 void AHT10_Init() { I2C_Start(); I2C_SendByte(0x38 1); // 器件地址写 I2C_SendByte(0xE1); // 初始化命令 I2C_SendByte(0x08); // 校准使能 I2C_SendByte(0x00); // 保留 I2C_Stop(); Delay_ms(300); // 等待校准完成 } // 读取温湿度数据 void AHT10_Read(float *temp, float *humi) { uint8_t buf[6]; // 触发测量 I2C_Start(); I2C_SendByte(0x38 1); I2C_SendByte(0xAC); I2C_SendByte(0x33); I2C_SendByte(0x00); I2C_Stop(); // 等待测量完成 Delay_ms(80); // 读取数据 I2C_Start(); I2C_SendByte((0x38 1) | 1); for(int i0; i5; i) buf[i] I2C_RecvByte(); I2C_Stop(); // 数据转换 uint32_t humi_raw ((uint32_t)buf[1] 12) | ((uint32_t)buf[2] 4) | (buf[3] 4); uint32_t temp_raw (((uint32_t)buf[3] 0x0F) 16) | ((uint32_t)buf[4] 8) | buf[5]; *humi (float)humi_raw * 100 / 0x100000; *temp (float)temp_raw * 200 / 0x100000 - 50; }3.2 数据平滑处理由于环境温湿度通常不会突变我们可以对采样数据进行平滑处理使显示更加稳定#define SAMPLE_SIZE 5 float temp_history[SAMPLE_SIZE]; float humi_history[SAMPLE_SIZE]; uint8_t sample_index 0; void Smooth_Data(float temp, float humi) { temp_history[sample_index] temp; humi_history[sample_index] humi; sample_index (sample_index 1) % SAMPLE_SIZE; float temp_sum 0, humi_sum 0; for(int i0; iSAMPLE_SIZE; i) { temp_sum temp_history[i]; humi_sum humi_history[i]; } current_temp temp_sum / SAMPLE_SIZE; current_humi humi_sum / SAMPLE_SIZE; }4. 系统优化与功能扩展4.1 低功耗设计如果使用电池供电我们可以通过以下方式优化功耗调整采样频率将默认的1秒采样改为30秒或更长睡眠模式在采样间隔让MCU进入空闲或掉电模式显示控制添加光感或运动传感器无人时关闭显示电压监测检测电池电压低电量时提醒充电4.2 外壳设计与安装考虑到AHT10的超小尺寸我们可以设计非常迷你的外壳3D打印方案设计一个硬币大小的圆形外壳现成改造利用小型药盒或纽扣电池盒磁吸安装在外壳背面添加磁铁方便吸附在金属表面桌面支架用曲别针或乐高积木制作简易支架4.3 数据记录与上传通过简单的功能扩展可以实现更多实用功能// 伪代码示例数据记录功能 void Data_Logger() { static uint32_t record_time 0; if(Get_Tick() - record_time 3600000) { // 每小时记录一次 Save_To_SD(current_temp, current_humi); record_time Get_Tick(); } }如果需要联网功能可以搭配ESP-01S WiFi模块将数据上传到物联网平台或私人服务器。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价