当前位置: 首页 > article >正文

告别串口打印!用STM32F103C8T6和0.96寸OLED打造迷你温湿度计

用STM32F103C8T6和0.96寸OLED打造极简温湿度监测终端在创客圈里总有些小项目能让人眼前一亮——比如把枯燥的传感器数据变成桌面上的精致显示装置。今天我们要做的就是用一个STM32F103C8T6开发板、0.96寸OLED屏幕和DHT22传感器打造一个完全独立的温湿度监测终端。这不仅仅是简单的数据采集更是一次从原型到成品的完整实践包含低功耗优化、UI设计甚至外壳制作的思考。1. 硬件选型与系统架构1.1 核心组件解析选择STM32F103C8T6作为主控有几个关键优势性价比突出Cortex-M3内核72MHz主频20KB RAM完全够用丰富外设自带硬件I2C接口驱动OLED更高效低功耗潜力支持多种省电模式适合长期运行DHT22温湿度传感器相比DHT11有明显提升测量范围-40~80℃精度±0.5℃湿度范围0~100%RH精度±2%数字信号输出抗干扰能力强0.96寸OLEDSSD1306驱动的独特优势128×64分辨率超高对比度自发光无需背光功耗仅0.08W可视角度接近180度1.2 系统连接方案推荐使用四线制连接方式STM32F103C8T6 OLED DHT22 3.3V VCC VCC GND GND GND PB6 SCL - PB7 SDA - PB9 - DATA提示DHT22数据线建议接4.7K上拉电阻确保信号稳定2. 底层驱动开发要点2.1 DHT22驱动优化传统轮询方式会占用大量CPU资源我们可以采用状态机实现非阻塞读取typedef enum { DHT_IDLE, DHT_START, DHT_WAIT_RESPONSE, DHT_READ_DATA, DHT_COMPLETE } DHT_State; void DHT22_StateMachine(void) { static DHT_State state DHT_IDLE; static uint32_t timer 0; switch(state) { case DHT_IDLE: if(need_read) { DHT22_Rst(); state DHT_START; timer HAL_GetTick(); } break; case DHT_START: if(HAL_GetTick() - timer 1) { state DHT_WAIT_RESPONSE; timer HAL_GetTick(); } break; // 其他状态处理... } }2.2 OLED显示优化技巧避免频繁刷新整个屏幕采用差异刷新策略void OLED_PartialRefresh(uint8_t x, uint8_t y, uint8_t w, uint8_t h) { uint8_t page_start y / 8; uint8_t page_end (y h - 1) / 8; for(uint8_t p page_start; p page_end; p) { OLED_SetPos(x, p); for(uint8_t col x; col x w; col) { WriteDat(OLED_GRAM[col][p]); } } }3. 高级功能实现3.1 低功耗设计通过以下策略可将系统功耗降至150μA以下传感器采样优化将采样间隔从1秒延长至30秒使用RTC唤醒代替延时OLED控制技巧非刷新时段关闭显示命令0xAE降低对比度命令0x81 值STM32电源管理void Enter_StopMode(void) { HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); // 唤醒后需要重新初始化时钟 SystemClock_Config(); }3.2 增强型UI设计超越简单的数字显示我们可以实现多页面布局typedef enum { PAGE_MAIN, PAGE_HISTORY, PAGE_SETTINGS } DisplayPage; void Draw_MainPage(float temp, float humi) { OLED_DrawBMP(0, 0, 16, 2, temp_icon); // 温度图标 OLED_ShowNum(20, 0, (uint16_t)(temp*10), 3, 16); // 其他元素绘制... }简易趋势图实现#define HISTORY_SIZE 24 float temp_history[HISTORY_SIZE]; void Draw_TrendGraph(uint8_t x, uint8_t y) { float max_temp -40, min_temp 80; for(int i0; iHISTORY_SIZE; i) { if(temp_history[i] max_temp) max_temp temp_history[i]; if(temp_history[i] min_temp) min_temp temp_history[i]; } float scale 30.0 / (max_temp - min_temp); for(int i1; iHISTORY_SIZE; i) { uint8_t y1 y (uint8_t)((max_temp - temp_history[i-1]) * scale); uint8_t y2 y (uint8_t)((max_temp - temp_history[i]) * scale); OLED_draw_line(xi-1, y1, xi, y2, 1); } }4. 产品化进阶思考4.1 外壳设计与制作3D打印外壳设计要点预留传感器通风孔直径1-2mmOLED窗口建议比屏幕大1mm按键开口需考虑触觉反馈推荐打印参数参数项建议值备注层高0.2mm平衡质量与速度壁厚1.2mm保证结构强度填充率15%蜂窝结构最佳4.2 数据记录与导出添加MicroSD卡扩展实现数据记录void Save_To_SD(float temp, float humi) { FIL file; char buffer[64]; sprintf(buffer, %lu,%.1f,%.1f\r\n, HAL_GetTick(), temp, humi); if(f_open(file, datalog.csv, FA_WRITE | FA_OPEN_APPEND) FR_OK) { UINT bytes_written; f_write(file, buffer, strlen(buffer), bytes_written); f_close(file); } }4.3 电源方案选型不同供电方式的对比供电方式续航时间成本适用场景USB供电持续供电低桌面固定使用18650电池30-60天中便携移动监测太阳能超级电容无限续航高户外长期部署对于电池供电方案建议添加电量监测功能float Read_Battery_Voltage(void) { HAL_ADC_Start(hadc1); HAL_ADC_PollForConversion(hadc1, 10); uint16_t adc_val HAL_ADC_GetValue(hadc1); return adc_val * 3.3 / 4096 * (R1 R2) / R2; // 分压电路计算 }5. 项目扩展方向这个基础框架可以衍生出多种实用变体多节点组网监测添加NRF24L01实现无线传输构建Mesh网络覆盖多个房间智能联动控制当湿度超过阈值自动开启除湿机温度异常触发报警通知历史数据分析通过Python脚本可视化长期趋势识别环境变化规律工业级应用改造改用SHT30等工业级传感器增加4-20mA输出接口在实际部署中我发现OLED在阳光直射下可视性会打折扣这时可以考虑改用反射式LCD或电子墨水屏。另外DHT22的响应速度在极端环境下会变慢对于需要快速检测的场景DS18B20BME280的组合可能更合适。

相关文章:

告别串口打印!用STM32F103C8T6和0.96寸OLED打造迷你温湿度计

用STM32F103C8T6和0.96寸OLED打造极简温湿度监测终端 在创客圈里,总有些小项目能让人眼前一亮——比如把枯燥的传感器数据变成桌面上的精致显示装置。今天我们要做的,就是用一个STM32F103C8T6开发板、0.96寸OLED屏幕和DHT22传感器,打造一个完…...

告别命令行手敲:用Python脚本自动化你的第一个OpenFOAM腔体流动模拟

用Python脚本解放双手:OpenFOAM腔体流动模拟自动化实战 每次打开终端,重复输入相同的OpenFOAM命令,修改几乎雷同的参数文件,这种机械操作是否让你感到效率低下?作为CFD工程师,我们真正应该投入时间的是分析…...

Linux下CST8XX触摸屏驱动调试实战:从I2C波形异常到内核崩溃的完整解决记录

Linux下CST8XX触摸屏驱动调试实战:从I2C波形异常到内核崩溃的完整解决记录 在嵌入式Linux开发中,触摸屏驱动的调试往往是最具挑战性的环节之一。本文将详细记录CST8XX系列电容触摸屏在Linux平台上的完整调试过程,涵盖从硬件信号异常到内核崩溃…...

你的Spring Boot项目安全吗?快速排查并修复Fastjson2历史版本(<=2.0.26)的隐藏风险

Spring Boot项目安全自查:Fastjson2历史版本(≤2.0.26)风险排查与修复指南 最近在帮几个客户做代码审计时,发现不少Spring Boot项目还在使用Fastjson2的老版本。说实话,这个问题比想象中普遍——很多团队甚至不知道自…...

OpenClaw(小龙虾)Windows 避坑安装指南

最近“小龙虾”(OpenClaw)可以说是 AI 圈最火的话题之一,这个能真正执行任务的 AI 智能体让无数人看到了自动化的无限可能。作为一个热衷于折腾各种 AI 工具的开发者,我也第一时间在 Windows 上尝试部署,结果一上来就被…...

台湾大学最新研究:大语言模型也能像人类一样“拐弯思考“了?

在人工智能的世界里,让机器像人类一样思考一直是个巨大挑战。当我们遇到复杂问题时,会自然地分步骤思考,比如解数学题时会先分析条件、再列方程、最后求解。但对于能理解声音的AI模型来说,这种"拐弯思考"能力还不够强。…...

几何精度因子(GDOP)在GNSS定位中的关键作用与优化策略

1. 什么是几何精度因子(GDOP)? 当你用手机导航时,有没有遇到过定位漂移的情况?明明站在十字路口,地图上的小蓝点却在周围乱跳。这种现象很大程度上与GDOP值有关。简单来说,GDOP就像是一个"…...

在VMware Workstation上实战部署华为eSight网络管理平台

1. 环境准备:从零搭建虚拟化实验平台 第一次接触华为eSight时,我完全被它的企业级功能震撼了——但随之而来的问题是:如何在个人电脑上搭建测试环境?经过多次实践,我发现VMware Workstation是最理想的实验平台。这里分…...

【配网可靠性评估】含可再生能源的配电网可靠性评估方法Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。👇 关注我领取海量matlab电子书和数学建模资料🍊个人信条:格物致知,完整Matl…...

【电池容量提取+锂电池寿命预测】 基于Transformer-BiGRU的锂电池剩余寿命预测Matlab代码(单变量)

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。👇 关注我领取海量matlab电子书和数学建模资料🍊个人信条:格物致知,完整Matl…...

保姆级教程:手把手教你理解电力线载波通信的MAC帧与MPDU(附避坑指南)

电力线载波通信MAC帧与MPDU实战解析:从协议规范到调试避坑 电力线载波通信(PLC)技术凭借其"无需额外布线"的天然优势,在智能电网、智能家居等领域持续渗透。但当你真正打开协议文档准备调试时,那些密密麻麻的…...

【电池特征提取+SOH估计】基于PINN物理信息神经网络的锂电池SOH估计 Matlab代码(多输入单输出)

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。👇 关注我领取海量matlab电子书和数学建模资料🍊个人信条:格物致知,完整Matl…...

【顶刊复现】跟网型逆变器小干扰稳定性分析与控制策略优化Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。👇 关注我领取海量matlab电子书和数学建模资料🍊个人信条:格物致知,完整Matl…...

苍穹外卖需要注意的地方

公共字段自动填充自定义注解AutoFill公共字段自动填充和反射有很大的关系公共字段填充中自定义注解AutoFill ->反射在查找给某个方法进行公共字段填充的时候的标识反射与注解认识注解属性名后面要加()在使用的时候把注解写在方法上,括号内…...

从零搭建AI开发环境:Python 3.10.11、CUDA 12.1与PyTorch一站式配置指南

1. 环境准备:从零开始的硬件与软件检查 在开始搭建AI开发环境之前,我们需要确保硬件和基础软件都满足要求。我遇到过很多新手朋友因为忽略了这个步骤,导致后续安装过程频频出错。首先确认你的电脑配备了NVIDIA显卡,这是使用CUDA加…...

华为ENSP OSPF实验避坑指南:配置Stub区域、路由聚合与DR选举的常见错误

华为ENSP OSPF实验避坑指南:配置Stub区域、路由聚合与DR选举的常见错误 在华为ENSP模拟环境中进行OSPF多区域配置时,即使是经验丰富的网络工程师也难免会遇到各种"坑"。本文将从实际排错角度出发,深入剖析Stub区域配置、路由聚合计…...

Python+AI:自动分析财报数据的5个实战技巧

总共28小时,整整3天半! 而且这还只是季报,如果是年报更厚。更崩溃的是,有些公司财报格式不统一,找数据像大海捞针。 我当时的想法是:这活儿能不能自动化? 一、解决方案:PythonAI自动…...

IDEA鲜亮配色方案实战:Java/Mapper.xml/yml文件高亮配置指南(附下载)

IDEA鲜亮配色方案实战:Java/Mapper.xml/yml文件高亮配置指南(附下载) 长时间面对单调的代码编辑器界面容易导致视觉疲劳,而一套精心设计的配色方案不仅能提升编码愉悦度,还能通过色彩区分显著提高代码阅读效率。本文将…...

【声纳与人工智能融合——从理论前沿到自主系统实战(进阶篇)】第十五章 条件正规化流(CNF)的AUV风险敏感路径规划

目录 15.1 未知环境下的概率占据补全 15.1.1 时空图表征声纳、惯导与海流先验的边可行性与风险 15.1.2 基于连续正规化流的未探测区域多假设采样 15.1.3 将模型不确定性耦合至条件风险价值与机会约束规划 Ch15_1_3_CNF_PathPlanner.py 15.1 未知环境下的概率占据补全 15.1…...

如何降低seo关键字价格

如何降低SEO关键字价格 在当今竞争激烈的互联网市场中,搜索引擎优化(SEO)已经成为企业提升网站流量和品牌知名度的重要手段。其中,关键字的选择和优化直接影响到SEO的效果。关键字的价格往往高昂,特别是竞争度较高的关…...

低成本搭建方案:树莓派运行OpenClaw连接千问3.5-9B云接口

低成本搭建方案:树莓派运行OpenClaw连接千问3.5-9B云接口 1. 为什么选择树莓派OpenClaw组合 去年冬天,我在整理个人知识库时被重复的文件归档工作折磨得苦不堪言。当时尝试过各种自动化工具,要么需要昂贵的云服务订阅,要么对硬件…...

seo网站推广与社交媒体营销的结合_seo网站推广的投资回报率如何计算

SEO网站推广与社交媒体营销的结合:如何计算SEO网站推广的投资回报率 在当今的数字营销时代,SEO网站推广和社交媒体营销是两个不可或缺的组成部分。它们的结合可以帮助企业更好地吸引潜在客户,提高品牌知名度,并最终推动销售增长。…...

seo网站诊断需要哪些资料_seo网站诊断的重要性是什么

SEO网站诊断需要哪些资料 网站的关键字分析资料 关键字分析是SEO网站诊断中的核心部分之一。你需要收集关于网站当前使用的关键字的数据,包括关键字的搜索量、竞争程度、点击率和转化率等信息。可以使用工具如Google关键字规划师、Ahrefs或SEMrush来获取这些数据。…...

梦幻动漫魔法工坊实战:用LoRA轻松打造专属动漫风格

梦幻动漫魔法工坊实战:用LoRA轻松打造专属动漫风格 1. 为什么你需要这个动漫生成工具 想象一下,你脑海中浮现出一个可爱的猫耳少女形象,粉色长发在微风中飘动,穿着精致的洛丽塔裙子站在糖果色的背景前。传统方式下,你…...

5分钟搞定GLM-4.7-Flash:Web界面+API调用,小白也能轻松上手

5分钟搞定GLM-4.7-Flash:Web界面API调用,小白也能轻松上手 1. 前言:为什么选择GLM-4.7-Flash 如果你正在寻找一个强大且易于使用的中文大语言模型,GLM-4.7-Flash绝对值得考虑。作为智谱AI最新推出的开源模型,它采用了…...

2026届毕业生推荐的六大降重复率神器推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 基于人工智能产出内容越来越普遍的当前状况,文本里常常出现的模式化表达形态&…...

AO3镜像站终极访问指南:3步解决同人作品访问难题

AO3镜像站终极访问指南:3步解决同人作品访问难题 【免费下载链接】AO3-Mirror-Site 项目地址: https://gitcode.com/gh_mirrors/ao/AO3-Mirror-Site Archive of Our Own(AO3)作为全球最大的同人作品平台,为无数创作者和读…...

2026最权威的五大降AI率网站推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 使AIGC检测率降低的关键之处在于把机器生成的规律性特征给消除,首先,…...

Multus-CNI快速部署教程:5分钟搞定多网络接口配置

Multus-CNI快速部署教程:5分钟搞定多网络接口配置 【免费下载链接】multus-cni A CNI meta-plugin for multi-homed pods in Kubernetes 项目地址: https://gitcode.com/gh_mirrors/mu/multus-cni 在当今复杂的云原生环境中,Kubernetes Pod通常需…...

2026届必备的十大降AI率平台实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 旨在降低AIGC检测率的工具,其发挥功效的途径多种多样。其一,借助对词…...