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

基于STM32的智能宿舍管理系统设计与实现

一、项目概述1.1 项目背景与目标高校宿舍管理场景看起来简单实际是一个典型的“多因素、强实时、低成本”系统。传统方式主要依赖人工巡查和经验判断存在几个明显问题宿舍温湿度、光照、烟雾等环境参数无法持续采集异常情况发现滞后用电统计粗放缺少实时功率、累计电量和超额预警能力学生离开宿舍后设备仍长时间运行存在明显能源浪费管理数据零散缺少历史记录与趋势分析后续追溯困难基于这些痛点可以把宿舍管理系统拆成三类需求环境监测实时采集温湿度、烟雾、光照、人体在位状态能源管理实时采集电压、电流、功率并做电费估算与超额提醒远程可视化通过无线链路把数据上传到上位机做图形化展示和历史存储本文整理一套适合毕业设计展示的完整方案以STM32F103C8T6为核心控制器集成DHT11、INA226、MQ-2、TEMT6000、PIR等传感器使用ESP8266-01S搭建 AP 模式无线链路最后由Python PyQt5上位机完成实时界面展示、SQLite 入库与异常报警。1.2 技术栈选型技术领域具体选型选择理由主控芯片STM32F103C8T6成本低、开发资料多、GPIO/ADC/I2C/UART 资源足够温湿度检测DHT11接口简单、成本低适合宿舍场景演示电流功率检测INA226I2C 接口、精度高可直接测电流/电压/功率烟雾检测MQ-2成熟常见适合做火灾隐患预警演示光照检测TEMT6000模拟量输出接 STM32 ADC 即可人体检测PIR 红外人体模块低成本、逻辑清晰适合联动节能控制无线通信ESP8266-01S成本低、AT 指令成熟、WiFi 部署方便网络模式AP TCP本地直连上位机便于宿舍场景演示和调试上位机Python PyQt5开发效率高适合毕业设计可视化展示数据存储SQLite轻量级、零部署适合本地历史数据管理1.3 系统功能实时采集温度、湿度、光照、烟雾浓度、人体检测状态实时采集电压、电流、功率并估算累计电费OLED 本地显示关键参数断网时仍可查看本地状态ESP8266 建立热点并通过 TCP 向上位机周期性发送数据上位机实时刷新监测界面支持历史数据存储与查询当功率超阈值、烟雾异常或环境异常时触发本地和上位机双重报警基于人体在位状态做简单节能联动为后续智能控制预留接口二、系统架构设计2.1 整体架构系统采用“采集端 通信端 上位机”的三端协同结构适合毕业设计答辩时讲清楚分层思路。感知层STM32 负责采集宿舍环境与用电参数并做本地阈值判断传输层ESP8266 负责无线接入建立 AP 热点和 TCP 服务器应用层PyQt5 上位机负责数据接收、界面展示、日志记录、SQLite 存储推荐在 CSDN 中插入系统架构图![系统架构图](architecture.png)2.2 数据流向本系统的数据链路比较直观可以概括为控制思路也可以进一步扩展上位机下发阈值参数STM32 更新本地阈值后续可扩展风扇、继电器、照明等联动执行器推荐在正文中插入数据流向图![数据流向图](dataflow.png)2.3 设计指标为了让毕业设计更像工程项目建议在文章中加入量化指标指标项目标值说明数据采集周期2s与上位机刷新周期保持一致报警响应时间≤1s功率超限、烟雾异常时快速提示WiFi 通信延迟100ms宿舍内本地 AP 场景下可实现连续稳定运行≥24h满足毕设演示和可靠性测试硬件成本100 元体现方案的低成本可落地性三、硬件设计与连接3.1 硬件清单组件型号数量说明MCU 主控STM32F103C8T6 最小系统板1系统核心控制器温湿度传感器DHT111宿舍温湿度采集电流功率模块INA2261电压、电流、功率测量烟雾传感器MQ-21火灾隐患预警光照传感器TEMT60001宿舍亮度采集人体检测模块PIR1人体在位检测WiFi 模块ESP8266-01S1本地热点与 TCP 传输显示模块0.96 寸 OLED1本地数据显示LED 指示灯红色 LED1超额预警/告警电源模块5V/3.3V 稳压1给系统供电3.2 引脚连接说明模块STM32 引脚接口类型备注DHT11 DATAPA7GPIO 单总线外接 4.7K 上拉INA226 SCL/SDAPB6 / PB7I2C1监测电压电流功率MQ-2 AOPA0ADC1_CH0模拟量采集MQ-2 DOPB1GPIO 输入数字阈值告警TEMT6000 AOPA1ADC1_CH1光照模拟量采集PIR OUTPB12GPIO 输入检测人体活动OLED SCL/SDAPB6 / PB7I2C1与 INA226 共总线ESP8266 TX/RXPA10 / PA9USART1交叉连接预警 LEDPB13GPIO 输出超额或异常告警3.3 关键硬件注意事项⚠️重要提醒ESP8266-01S 必须使用稳定的 3.3V 供电峰值电流可达 300mA不能直接从 STM32 板载 3.3V 弱供电口硬拖。MQ-2 模拟输出可能接近 5V进入 STM32 ADC 前必须做分压处理。DHT11 的采样周期不要太快建议 1 秒以上否则容易读到重复数据或校验失败。INA226 的分流电阻选型会直接影响测量精度建议使用低阻值、高精度分流电阻。如果后续接入继电器控制大功率负载必须做好电源隔离和反灌保护。3.4 软件开发环境# STM32 端STM32CubeIDE / Keil MDK# 上位机端pipinstallPyQt5 pyqtgraph matplotlib四、代码实现详解4.1 主程序整体思路STM32 端采用“前后台”结构最容易讲清楚初始化 GPIO、ADC、I2C、USART、定时器初始化 DHT11、INA226、OLED、ESP8266主循环按顺序采集各类传感器将采集结果刷新到 OLED每 2 秒打包一帧文本数据通过 ESP8266 发送给上位机根据阈值判断是否触发 LED 预警核心主循环可以写成下面这种形式while(1){Read_DHT11(temp,humi);powerINA226_GetPower();smokeMQ2_ReadValue();lightTEMT6000_ReadLux();motionPIR_ReadState();OLED_ShowData(temp,humi,power,smoke,light,motion);if(send_flag){SendSensorData(temp,humi,power,smoke,light,motion);send_flag0;}Alarm_Check(power,smoke);HAL_Delay(200);}4.2 DHT11 温湿度采集DHT11 适合毕业设计入门实现成本低、逻辑简单核心是单总线时序控制。头文件示例// dht11.h#ifndef__DHT11_H#define__DHT11_H#includestm32f1xx_hal.huint8_tDHT11_ReadData(uint8_t*temp,uint8_t*humi);#endif实现示例// dht11.c#includedht11.huint8_tDHT11_ReadData(uint8_t*temp,uint8_t*humi){uint8_tbuf[5]{0};// 这里省略详细时序核心是启动信号、响应检测、40位数据读取和校验// 成功后返回温湿度整数部分*humibuf[0];*tempbuf[2];if((uint8_t)(buf[0]buf[1]buf[2]buf[3])buf[4]){return0;}return1;}4.3 INA226 电流/功率采集INA226 是这个项目里比较加分的模块因为它不仅能看电流还能算功率和总线电压更容易体现“能源管理”而不只是“环境监测”。// ina226.h#ifndef__INA226_H#define__INA226_H#includestm32f1xx_hal.hfloatINA226_GetVoltage(void);floatINA226_GetCurrent(void);floatINA226_GetPower(void);#endif// ina226.c#includeina226.hexternI2C_HandleTypeDef hi2c1;floatINA226_GetVoltage(void){uint16_traw0;// 读取总线电压寄存器换算为实际电压returnraw*1.25f/1000.0f;}floatINA226_GetCurrent(void){uint16_traw0;// 读取分流电压寄存器并结合分流电阻换算电流returnraw*5.9f;}floatINA226_GetPower(void){returnINA226_GetVoltage()*INA226_GetCurrent();}4.4 MQ-2 与 TEMT6000 模拟量采集这两个模块都可以直接走 ADC代码思路很清晰采样、滤波、换算。uint16_tADC_ReadChannel(uint32_tchannel){ADC_ChannelConfTypeDef sConfig{0};sConfig.Channelchannel;sConfig.RankADC_REGULAR_RANK_1;sConfig.SamplingTimeADC_SAMPLETIME_55CYCLES_5;HAL_ADC_ConfigChannel(hadc1,sConfig);HAL_ADC_Start(hadc1);HAL_ADC_PollForConversion(hadc1,10);returnHAL_ADC_GetValue(hadc1);}floatTEMT6000_ReadLux(void){uint16_tadcADC_ReadChannel(ADC_CHANNEL_1);returnadc*0.5f;}floatMQ2_ReadValue(void){uint16_tadcADC_ReadChannel(ADC_CHANNEL_0);return(adc/4095.0f)*100.0f;}4.5 PIR 人体检测与节能联动PIR 模块输出的是数字量非常适合做简单联动。比如检测到长时间无人时标记宿舍为空闲状态后续扩展控制照明、风扇、插座继电器结合功率数据做“有人/无人”用电行为分析uint8_tPIR_ReadState(void){returnHAL_GPIO_ReadPin(GPIOB,GPIO_PIN_12)GPIO_PIN_SET?1:0;}4.6 ESP8266 AP 模式通信这个系统没有强依赖外网最适合毕业设计现场演示的方式就是让 ESP8266 直接开热点上位机连它的热点然后走 TCP 收数。初始化流程AT测试模块是否在线设置工作模式为 AP配置 SSID 和密码开启多连接建立 TCP Server// esp8266.cvoidESP8266_Init(void){ESP_SendCmd(AT\r\n,OK,1000);ESP_SendCmd(ATCWMODE2\r\n,OK,1000);ESP_SendCmd(ATCWSAP\SmartDorm\,\12345678\,5,3\r\n,OK,3000);ESP_SendCmd(ATCIPMUX1\r\n,OK,1000);ESP_SendCmd(ATCIPSERVER1,8080\r\n,OK,1000);}数据发送建议使用文本协议调试最方便voidSendSensorData(floattemp,floathumi,floatpower,floatsmoke,floatlight,uint8_tmotion){chartx_buf[128];sprintf(tx_buf,Temp:%.1fC,Humi:%.1f%%,Power:%.2fmW,GasConc:%.2f,Light:%.2f,Motion:%s\r\n,temp,humi,power,smoke,light,motion?YES:NO);ESP8266_SendData(tx_buf);}4.7 PyQt5 上位机接收与可视化上位机建议采用多线程主线程负责界面网络线程负责 TCP 接收定时器负责界面刷新和数据库写入TCP 接收核心示例importsocketfromPyQt5.QtCoreimportQThread,pyqtSignalclassDataReceiver(QThread):data_receivedpyqtSignal(dict)defrun(self):socksocket.socket(socket.AF_INET,socket.SOCK_STREAM)sock.connect((192.168.4.1,8080))whileTrue:rawsock.recv(1024).decode(utf-8).strip()ifraw:dataself.parse_data(raw)self.data_received.emit(data)defparse_data(self,raw):result{}foriteminraw.split(,):if:initem:k,vitem.split(:,1)result[k]vreturnresultUI 层可以做以下几个区域温湿度卡片功率/电费卡片烟雾和人体状态卡片系统日志窗口历史数据查询窗口如果追求展示效果可以再加一块实时曲线区域用pyqtgraph刷功率或温度变化趋势。4.8 SQLite 历史数据存储SQLite 足够支撑毕设演示而且实现简单。importsqlite3 connsqlite3.connect(sensor_data.db)curconn.cursor()cur.execute( CREATE TABLE IF NOT EXISTS sensor_data ( id INTEGER PRIMARY KEY AUTOINCREMENT, ts TEXT, temp REAL, humi REAL, power REAL, smoke REAL, light REAL, motion INTEGER ) )conn.commit()建议每 60 秒存一次或者每接收一帧就写一次。前者更轻后者数据更完整。五、调试与优化5.1 常见问题排查ESP8266 无法稳定连接先确认供电是否稳定再确认串口波特率和 AT 固件版本最后用串口助手单独测试 AT 指令是否正常DHT11 偶发读取失败检查上拉电阻降低采样频率避免中断或串口发送打断关键时序MQ-2 数据波动大预热时间不足模拟量受电源噪声影响建议增加多次采样平均滤波上位机界面卡顿不要在 UI 主线程里直接做阻塞式recv把网络接收和界面刷新拆开5.2 工程优化建议传感器数据增加滑动平均滤波减少抖动通信协议增加帧头和校验字段提高容错性上位机增加断线重连机制提升演示稳定性阈值参数做成可配置项而不是写死在代码里把 AP 模式升级为 STA MQTT可以进一步接入云平台六、项目总结与扩展6.1 项目成果这套系统的价值不在于“模块多”而在于把环境监测、能源管理、安全预警、上位机可视化这四块真正串起来了。对毕业设计来说它有几个明显优势软硬件链路完整容易形成“系统设计与实现”的叙事既有嵌入式采集也有上位机界面展示效果好场景贴近校园宿舍选题容易被老师理解成本可控硬件容易采购调试门槛不高6.2 可扩展方向增加继电器做照明/插座的节能联动控制接入 CO2、甲醛等空气质量传感器提升环境监测维度将 AP TCP 升级为 MQTT 云平台架构引入语音模块实现语音播报和语音查询基于历史数据做异常检测或用电行为分析6.3 写在最后如果你现在正准备 STM32 相关毕业设计这类“宿舍管理/环境监测/用电预警”方向是比较稳的选题硬件复杂度适中、工程链路完整、可视化效果强答辩时也比较容易讲清楚。如果这篇文章对您有帮助请点赞支持如有问题或建议欢迎在评论区交流。

相关文章:

基于STM32的智能宿舍管理系统设计与实现

一、项目概述 1.1 项目背景与目标 高校宿舍管理场景看起来简单,实际是一个典型的“多因素、强实时、低成本”系统。传统方式主要依赖人工巡查和经验判断,存在几个明显问题: 宿舍温湿度、光照、烟雾等环境参数无法持续采集,异常情况…...

Pearcleaner终极指南:5分钟彻底清理Mac残留文件,免费开源更安心

Pearcleaner终极指南:5分钟彻底清理Mac残留文件,免费开源更安心 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 还在为Mac存储空间不…...

腾讯朱雀开源AI安全平台A.I.G:一站式红队测试与漏洞扫描实战

1. 项目概述与核心价值如果你正在构建或使用基于大语言模型(LLM)的智能体(Agent),或者在公司内部部署了像 Ollama、vLLM、ComfyUI 这样的 AI 基础设施,那么一个无法回避的问题正变得越来越紧迫:…...

京东自动下单工具终极指南:告别手动刷新,让Node.js帮你抢购心仪商品

京东自动下单工具终极指南:告别手动刷新,让Node.js帮你抢购心仪商品 【免费下载链接】jd-happy [DEPRECATED]Node 爬虫,监控京东商品到货,并实现下单服务 项目地址: https://gitcode.com/gh_mirrors/jd/jd-happy 还在为京东…...

终极Switch手柄PC连接指南:BetterJoy完整配置与优化教程

终极Switch手柄PC连接指南:BetterJoy完整配置与优化教程 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode.co…...

《QGIS快速入门与应用基础》323:社区打卡分享(CSDN博客/社群)

作者:翰墨之道,毕业于国际知名大学空间信息与计算机专业,获硕士学位,现任国内时空智能领域资深专家、CSDN知名技术博主。多年来深耕地理信息与时空智能核心技术研发,精通 QGIS、GrassGIS、OSG、OsgEarth、UE、Cesium、OpenLayers、Leaflet、MapBox 等主流工具与框架,兼具…...

使用 Taotoken 后如何通过用量看板清晰掌握 API 成本

使用 Taotoken 后如何通过用量看板清晰掌握 API 成本 1. 用量看板的核心功能 Taotoken 控制台提供的用量看板是成本管理的核心工具。登录后,用户可在「用量分析」页面查看实时和历史 token 消耗数据。系统默认按日聚合数据,支持切换至小时级或周维度观…...

通过审计日志功能追踪和管理团队的 API Key 使用情况

通过审计日志功能追踪和管理团队的 API Key 使用情况 1. 审计日志的核心价值 在团队协作使用大模型 API 的场景中,管理员需要清晰掌握每个成员或项目的资源消耗情况。Taotoken 提供的审计日志功能能够记录每一次 API 调用的关键信息,包括调用时间、使用…...

从零开始理解RISC-V:RV32I/RV64I基础指令集到底在做什么?

从零开始理解RISC-V:RV32I/RV64I基础指令集到底在做什么? 想象你是一个刚入职的仓库管理员,面前堆满了标着x0到x31的储物柜(寄存器),每天要处理数以万计的货物搬运(数据移动)、商品加…...

告别Web界面:用JFrog CLI命令行高效管理Artifactory仓库的5个实战场景

告别Web界面:用JFrog CLI命令行高效管理Artifactory仓库的5个实战场景 在DevOps的日常工作中,Artifactory作为二进制制品管理的核心枢纽,其Web界面虽然直观,但在批量操作和自动化场景下往往效率低下。上周处理一个紧急发布时&…...

ClawHarness:自动化测试与任务编排框架的设计与实践

1. 项目概述:一个为“爪子”设计的“缰绳”如果你在开源社区里混迹过一段时间,肯定会发现一个有趣的现象:很多项目的名字都充满了隐喻和想象力。最近我注意到一个叫ClawHarness的项目,它的仓库名是lusipad/ClawHarness。初看这个名…...

智慧医疗眼底图像视网膜病变检测数据集VOC+YOLO格式2183张9类别有增强

注意数据集中存在增强图片数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):2183标注数量(xml文件个数):2183标注数量(txt文件个数)…...

人机协同新范式:基于MCP协议的Human-in-the-loop AI工具调用实践

1. 项目概述:当AI助手学会“动手”最近在折腾AI Agent和工具调用时,发现了一个让我眼前一亮的开源项目:mrgoonie/human-mcp。简单来说,这是一个**“人类即服务”的MCP(Model Context Protocol)服务器**。你…...

彻底告别开机烦恼:TranslucentTB任务栏透明工具自启动完全指南

彻底告别开机烦恼:TranslucentTB任务栏透明工具自启动完全指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB TranslucentTB…...

透明底图制作方法大全:2026年最实用的AI抠图工具推荐

最近有个朋友找我帮忙制作证件照,说要换个背景色。我就想,与其手把手教她用PS,不如直接分享一些更方便的透明底图制作方法。折腾了一番之后,我发现现在的AI抠图工具真的省事儿,甚至比想象中还要智能。今天我就把自己的…...

抠图工具有哪些?2026年最全对比指南,找到适合你的一键抠图方案

前几天有个朋友问我,她需要给几百张商品图换背景,手工PS要花一周时间。我给她推荐了几个工具后,她用了不到半小时就搞定了。这让我意识到,很多人其实不知道现在的抠图工具已经这么智能了。今天我就来整理一份2026年最实用的抠图工…...

长期使用中Taotoken聚合端点的连接稳定性与响应速度体验

长期使用中Taotoken聚合端点的连接稳定性与响应速度体验 1. 测试环境与调用背景 在过去的三个月里,我们团队持续使用Taotoken作为大模型API的统一接入层,主要调用场景包括日常开发调试、自动化测试以及部分生产环境流量。调用频率保持在日均2000-3000次…...

OpenAPI目录与MCP协议:构建AI驱动的API知识库与智能查询系统

1. 项目概述:当OpenAPI目录遇见MCP如果你和我一样,长期在API开发、集成和自动化领域摸爬滚打,那你一定对OpenAPI规范(Swagger)又爱又恨。爱的是它提供了一种标准化的方式来描述API,让前后端协作、文档生成、…...

AI智能体后端服务框架agentserver:架构设计与生产部署指南

1. 项目概述与核心价值最近在折腾一些自动化流程和智能体应用,发现一个挺有意思的开源项目,叫agentserver/agentserver。乍一看这个名字,可能觉得有点“套娃”,但它的定位其实非常清晰:一个专为AI智能体(Ag…...

终极免费视频水印去除神器:基于LAMA模型的智能批量处理方案

终极免费视频水印去除神器:基于LAMA模型的智能批量处理方案 【免费下载链接】WatermarkRemover 批量去除视频中位置固定的水印 项目地址: https://gitcode.com/gh_mirrors/wa/WatermarkRemover 你是否曾经为视频中的平台水印、版权标识而烦恼?现在…...

绿色协同发展新路径:同道联盟八周年江西点亮推动生态资源共享体系建设

绿色协同发展新路径:同道联盟八周年江西点亮推动生态资源共享体系建设在绿色发展理念持续深化的背景下,同道联盟八周年庆典点亮活动在江西举行。本次活动聚焦生态资源共享与协同发展,展现联盟在推动绿色协同方面的积极探索。活动当晚&#xf…...

AI驱动嵌入式开发-Harness-Engineering实践指南

给 AI 配上锤子和螺丝刀:嵌入式 AI 辅助开发的 Harness Engineering 实践 让 AI 写代码并不难,难的是让 AI 自己验证代码。这篇文章以 STM32F103C8T6 WS2812 项目为载体,记录了如何通过搭建 Harness(工具资料权限)&am…...

2025最权威的十大降重复率网站横评

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 要降低AIGC(人工智能生成内容)的占比,得从源头优化跟后期…...

从DFMEA到PPAP:手把手拆解APQP核心工具链,让质量策划不再是纸上谈兵

从DFMEA到PPAP:手把手拆解APQP核心工具链,让质量策划不再是纸上谈兵 在汽车零部件行业,每当新产品开发项目启动时,工程师们总会面临一个共同的挑战:如何确保从设计到量产的每个环节都能有效预防质量问题?传…...

数组和二叉树

数组的存储地址矩阵的压缩存储稀疏矩阵——三元组顺序表树定义树是n个节点的有限集。n0时称为空树。在任意一颗非空树中:有且仅有一个特定的称为根(root)的结点。当n>1时,其余结点可分为m(m>0)个互不…...

鲟龙科技冲刺港股:靠卖鱼子酱年营收7.7亿 王斌控制35%股权

雷递网 雷建平 5月6日杭州千岛湖鲟龙科技股份有限公司(简称:“鲟龙科技”)日前递交招股书,准备在港交所上市。鲟龙科技2023年、2024年及2025年分别宣派股息8160万元、零元及1.35亿元。截至最后实际可行日期,所有于往绩…...

skene-cookbook:700+AI技能库,一键部署Claude/Cursor提示词工程自动化

1. 项目概述:当AI技能库成为你的“瑞士军刀”如果你和我一样,每天都在和Claude、Cursor这类AI工具打交道,那你肯定遇到过这样的场景:想让它帮你分析一下营销数据,得先写一大段复杂的提示词;想让它检查代码安…...

什么是RWS责任羊毛认证?懂羊毛的人,都认准这枚「良心标识」

冬天我们买毛衣、羊毛被、羊绒制品时,总在纠结一件事:明明都是羊毛,为什么有的软糯亲肤、安心靠谱,有的却摸着手感粗糙,源头品质还说不清?很多人只看面料含量、价格高低,却忽略了一个核心关键&a…...

LLM在CUDA编程中的表现与优化实践

1. 项目概述:当LLM遇上CUDA编程在GPU加速计算领域,编写高效的CUDA代码一直是项极具挑战性的工作。传统上,这需要开发者具备以下核心能力:对GPU架构(如SM多级流水线、寄存器文件、共享内存)的深入理解并行算…...

STM32上电后第一行代码在哪?手把手带你读懂MAP文件里的启动秘密

STM32上电后第一行代码在哪?手把手带你读懂MAP文件里的启动秘密 当你的STM32项目突然无法启动,或者运行中出现难以解释的异常时,你是否曾盯着调试器陷入困惑?作为嵌入式开发者,我们常常把注意力集中在main函数之后的逻…...