版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河北理工大学信息学院 摘要 1绪论1.1研究背景和目的现代医疗技术发展与人口老龄化现象相互交织,医护人员的工作压力不断上升,而新生儿照护正面临人手匮乏的困境。新生儿作为医疗护理中最脆弱的群体之一,需要全天候的精心监护,这类群体需全天候监护,包括体温监测、环境湿度调控以及安抚性摇晃等多项琐碎任务。传统护理模式中,这些任务完全依赖护理人员手工完成,护理人员需要定时巡查、手动测量体温、依靠经验判断环境状况,这种工作方式不仅劳动强度大,而且容易因人为疏忽造成护理不及时。据医疗机构统计数据显示,一名新生儿护理人员平均每天需要完成超过200次的观察记录,其中体温测量占据了大量时间。同时,夜间值班的护理人员往往需要同时照顾多名新生儿,响应哭声和处理突发状况的压力极大。这种高强度的工作模式不仅影响护理质量,还容易导致护理人员职业倦怠,形成恶性循环。新生儿自身的生理特点决定了其护理的特殊性和复杂性。新生儿体温调节系统发育尚未完善,皮下脂肪薄,散热面积相对较大,极易受外界温度影响,室温波动哪怕只有1-2℃都可能导致新生儿体温失衡。体温过低会导致新生儿能量消耗增加、血糖下降、呼吸困难等并发症,而体温过高则可能引发脱水、惊厥等风险。因此,新生儿的环境温度必须维持在适宜且稳定的范围内,传统的人工调节方式难以达到这种精确控制的要求。新生儿的皮肤特别娇嫩,长时间接触湿润环境极易导致皮肤损伤。尿液和粪便中含有的刺激性物质如尿素、氨等,若不及时清理会导致尿布皮炎、红臀等皮肤问题,严重时甚至可能引发细菌感染。传统的巡查方式难以做到实时监测,往往需要等到新生儿哭闹或定时检查时才能发现,这种滞后性给新生儿健康带来潜在风险。新生儿的啼哭是其表达需求的主要方式,但持续啼哭不仅消耗新生儿体力,还可能引发呼吸不畅、颅内压升高等生理问题。研究表明,及时的安抚干预能够显著减少新生儿的啼哭时间,有助于其生长发育。然而,在护理人员配备不足的情况下,往往难以做到即时响应,特别是在夜间值班时段,一名护理人员要同时照看多名新生儿,难免顾此失彼。医疗智能化的发展为解决这些问题提供了新的可能。物联网技术、传感器技术、自动控制技术的成熟应用,使得构建智能化的新生儿护理系统成为可能。通过集成多种传感器实时监测新生儿状态,利用自动控制算法精确调节环境参数,配合远程监控平台让医护人员随时掌握情况,不仅能够大幅提升护理质量,还能有效减轻医护人员的工作负担。智能化系统的数据记录和分析功能,能够为新生儿护理积累宝贵的数据资源。通过对大量护理数据的分析,可以发现新生儿生理规律,优化护理方案,为个性化护理提供科学依据。这种基于数据的护理模式,将推动新生儿护理从经验型向科学型转变。基于上述背景,本研究旨在设计一套完整的医用婴儿床监控与控制平台系统,该系统能够实现新生儿体温、环境湿度、哭声等关键指标的实时监测,并根据监测结果自动调节环境参数,必要时启动安抚机制。通过WiFi网络实现远程监控功能,让医护人员能够随时随地掌握新生儿状态。该系统的应用将有效解决传统新生儿护理中存在的问题,提升护理质量,减轻医护负担,为新生儿创造更加安全、舒适的成长环境。1.2国内外发展现状放眼国际医界,智能婴儿床研发已然踏入新阶段,欧美发达国家早早将传感器网络与物联网技术应用于婴儿床之中,体温、呼吸、心率等生命体征数据实现即刻监控与迅速解析,比如GEHealthcare和Philips这类医疗设备领域的翘楚,推出的婴儿监护系统融合多样感应元件与智能化算法,遇到突发状况可快速发出警报。而日本的智能婴儿床除了具备生命体征感应能力外,还额外叠加了一层类似情感抚慰的元素设计,能够模拟母体的心跳与呼吸节拍,形成一种独特的陪伴体验效果隐约嵌套其间。国内智能婴儿床研究虽起步稍晚,但前进的步伐颇为矫健,不少医疗器械企业已投入到研发之中,初期产品侧重功能实用性,偏向于监测功能基础款,而高端型号还能实现远程监控和数据上传支持;上海交通大学联合儿童医院开创性地推出新生儿智能监护系统,此系统与算法结合紧密可精细化处理生理数据,在捕捉异常情况时展现出更强的精准性;北京协和医院应用的国产设备经过改进升级湿度传感技术,还可做到自动反馈提醒;技术水平的确有进步迹象,在总体对比中仍无法抗衡进口尖端产品在综合指标、智能化分级以及技术稳定度等方面所具备的优势且彼此间的差距较为醒目,后续需投入更大的努力探索更广范的研究与创新来弥补这一鸿沟现象才能逐步达到理想状态。1.3研究内容本研究探讨医用婴儿床监控及控制平台的设计与实践,涉及系统功能需求分析、硬件架构布局以及软件控制系统开发,并通过测试加以验证,借助STM32F103芯片打造出具备综合智能性能的婴儿床系统。使用DS18B20进行体温检测时能够根据结果启动加热装置或者风扇运转,湿度传感组件可全程监测床垫状态进而杜绝尿床问题,拾音设备捕捉到哭声后摇篮即开始摆动同时回放安抚性乐曲,而WiFi模块ESP8266实现了远距离通信和控制的可能性,医护团队可以选择通过自动方式操作设备也可以依靠手机客户端或实物按键完成手动调适操作,在保障婴童健康安全前提下力求融合智能技术、操控便利性以及人本理念间的协调目标。1.4本章小结本章论述医用婴儿床监控与控制平台的背景、意义以及国内外研究动态,使整体研究轮廓更明朗,智能婴儿床作为新生儿护理的一大助力,既能优化护理质量,也可减轻医护人员负担,此项研究意在构建一套功能完备且操作简易的系统,为新生儿提供安全又舒适的护理环境。2功能与设计方案2总体方案设计2.1系统的功能要求智医用婴儿床监控与控制平台需满足以下功能要求:婴儿哭声监测与安抚功能的设计核心在于,系统要敏锐捕捉啼哭信号,并在接收信号后迅速启动摇篮摆动以及内置摇篮曲的播放模块,当婴啼停止时,则应及时关闭摇篮运动和音频输出,防止对安静环境造成不必要的干扰。系统不仅要实时显示婴儿的体温,还需依据体温变化自动调整周遭环境温度,当体温滑落至35℃以下时,加热装置需迅速开启;若体温介于安静范围的35-36℃之间,则环境应维持现有状态不作改变;一旦升入象征不安定态的37-38℃区域,风扇就应及时介入以驱散热量;假如进一步攀升突破警戒点38℃,风扇必须停止工作,并同步激活报警装置,借此削减对婴儿感官体系潜在的影响冲击。系统负责监控床垫湿度,判定婴儿是否尿床,湿度异常升高时系统就会发出报警提示,方便护理人员迅速介入处理。在远程监控与控制功能模块中,系统通过WiFi连入网络,将婴儿的状态信息上传至云端数据库,护理人员可利用手机APP实时查看体温、湿度以及哭声检测等相关数据,并且能够对婴儿床的工作模式进行调整,包含摇篮运行、加热装置启停及风扇转速等功能的远程调节,这种设计大大提升了使用便利性与响应效率。系统配备自动与手动两种运行方式,自动状态下检测数据可以直接影响系统功能的调整幅度;手动模式下护理人员可通过按键或APP操控干预具体功能,这种设计未拘泥于单一操作形式来掌控平台的核心运转,而是根据不同应用场景灵活切换方式,并且这些方式各自对应不同情形、彼此之间互不干扰,进而提升了管理效用以及适应能力,使应用过程更为贴近实际需求。本地显示与警报功能上,OLED显示屏把婴儿的状态信息实时铺展在系统里,这些信息包括工作模式、体温数据、是否有尿床情形以及哭声检测的结果,碰到异常情况时系统便会通过声光报警让护理人员察觉到状况。2.2系统设计方案本系统的设计方案如图2.1所示,医用婴儿床的监控与控制平台采用分层设计思路,包括硬件、驱动、控制和应用部分,其中硬件部分包含多个核心组件,例如以STM32F103单片机为代表的主控元件,外加各类功能性设备,其中包括温度感应用的DS18B20传感器、湿度检测模块以及声音捕捉单元,另外还有完成动作调节的步进电机、负责电路管控的继电器、呈现数据信息的OLED显示屏,以及实现网络连接的ESP8266WiFi模块,各司其职共同构建了硬件生态。至于驱动层面,作用是为这些设备打好程序基础,诸如支持ADC数据采样、协助单总线或I2C信号交流、保障步进电机及UART交互正常运转等功能性任务都被逐一覆盖。控制层负责系统核心控制逻辑,涉及模式调整、数据采样处理、阈值分析与执行管控等内容,应用层则偏重用户交互和信息可视化,涵盖按键操控、显示屏刷新、联网通讯以及云端数据交换等功能,采用模块化理念设计,各功能彼此独立成块,给开发和维保都带来便利,TIM1定时器用于生成周期为1ms的基础时钟信号,在这个基础时钟上扩展出数据取样、电机驱动以及数据传递等多任务时间次序管理,从而维护系统整体的有序运作。图2.1系统硬件模块工作框图2.3器件方案对比2.3.1单片机的选择方案一:STC12C5A60S2作为一款改进版的8051单片机,主频最高达到35MHz,且具备低能耗和较强的抗干扰特性,这款芯片自带60KFlash存储空间以及1280字节内存容量,同时拥有8组10位ADC输入通道并支持多种数据通信方式如UART与SPI协议,丰富的内置外围模块包含了多达5个计时单元及多路通用输入输出管脚,足以适应一般的控制场景需求。指令集仍延续了传统8051风格,开发者学习门槛较低,成熟工具链确保了代码移植过程中的高效率与稳定性。STC12C5A60S2作为一款国产单片机,价格便宜还能稳定获取,非常适合低成本敏感的应用方向,处理能力偏弱、缺少丰富的外设资源,也难扩展是主要的短板所在,尤其是系统一旦要求完成复杂计算或者支持众多传感器接入时,局限立刻暴露无遗,手头能调动的存量显得非常紧张。再加上高级调试功能缺失导致调程序变得格外麻烦甚至磨人,直接拖累了开发生命周期的流畅性;更尴尬的是,这款芯片并不覆盖FPU浮点运算模块,在需要频繁进行高精度数值解析的情况下明显有些力不从心。方案二:STM32基于ARMCortex-M3内核,是一款32位微控制器,拥有最高72MHz的主频,运算性能突出且集成程度可观,配备诸如3个USART、2个SPI、2个I2C之类的通信单元,以及精度达12位、含16通道的模数转换器,定时器种类繁多,其中部分高级功能涵盖PWM波形生成能力,存储上提供尺寸从64K至128K范围内的闪存空间,同时随机存取存储区具备多达20K的空间容量,能够胜任复杂代码加载与动态运行中临时数据缓存的工作需求,此芯片内置DMA部件担任高速传输职责,缓解中央计算模块压力的效果颇为显著。STM32F103同时支持JTAG和SWD调试接口,还能无缝对接Keil或者IAR等集成开发环境,这让开发调试更加高效,芯片生态系统相对健全,能够轻松获取丰富的开源代码资源及技术支持,低功耗表现同样是其亮点之一,多级睡眠模式体现了在电池驱动情境下的高度适配性,不过与STC12C5A60S2相比,成本上提升了近五成,入门门槛也不算低,毕竟掌握ARM架构的相关知识几乎是绕不开的前提条件。医用婴儿床的监控控制平台,需要消化多路感知数据、跑控制算法还要能接通网络交流,鉴于系统不简单的复杂特性和往后可能增加的新功能需求,选用了STM32充当核心芯片,这款STM32带着强劲的数据处理劲头且自带不少外设法宝,既能稳住当前的各项功能要求,又能给后续添新花样留下宽敞地带。2.3.2温度传感器的选择方案一:HC-05蓝牙模块运行于2.4GHzISM频段,遵循蓝牙V2.0+EDR标准,支持串口协议,外形精巧仅为27mm×13mm,功耗较低待机状态不到2mA,在空旷区域通信范围约达10米,设置方便依靠AT指令能够轻松完成参数调整,经UART接口直接和单片机相连后数据传输速度最高可达3Mbps,主从角色灵活转换自如,无论是主导连接其余蓝牙设备还是作为被连接的一方等待搜寻建立连接皆可胜任。HC-05模块单价约20元,成本低廉且应用广泛,相关资源配置也较为完善,开发起来相对简易,但其局限性无法忽视,像传输距离偏短、不具备直接联网能力以及防护性能薄弱等问题都十分突出,蓝牙信号不仅易受遮挡,穿墙时衰减显著,在需要远程监视的医疗环境中显得不够实用,此模块仅支持点对点传输,不能应对多设备远端监管需求,同时因其缺乏数据加密手段,传输期间安全水准较低,难以有效防止患者隐私外泄的风险。方案二:ESP8266WiFi模块整合了32位低功耗处理器、多类数字外设接口、信号调理单元以及微型天线开关等组件,这枚高度集成的小型无线通讯芯片遵循IEEE802.11b/g/n规范,无缝对接局域网与广域互联网环境,广泛应用于远程数据交互场景,支持STA、AP及双模式运行状态以适应多样需求。内置完整TCP/IP协议栈且兼容HTTP、MQTT等多种传输协议,不仅能大幅简化云端对接步骤,还便于开展跨平台传播测试与网络验证工作。ESP8266的开发可以选AT指令操控或SDK层面编码调整,灵活性突出,这种模块覆盖范围让人满意,室内通常三十到五十米,开阔地带更可突破百米,墙体对信号削弱较小,支持WPA/WPA2协议为通信安全性添了保障,相较HC-05蓝牙模块价格稍高约在三十元左右,却依旧展示出较好的经济性与功能平衡收益,不过传输时耗流近70mA且启动周期略长稳定性还有提升余地,实际使用因这些特性面临诸多挑战也有了更多抉择考量的空间。医用婴儿床监控系统得有远程监控和云端存储的功能,所以ESP8266通信模块被选中,这个模块的WiFi连接特点让系统轻松接入互联网,实现远程数据交互与控制,这正好符合医护人员随时查看婴儿状态的需求。2.4本章小结本章重点探讨医用婴儿床监控与控制平台,深入陈述功能需求与系统设计思路,并围绕主控芯片、通信模块及显示模块的选择逻辑展开分析,最终确认STM32F103为主控核心,ESP8266负责WiFi连接,0.96英寸OLED用于界面显示,此技术方案在性能平衡、稳定性和成本节约之间表现出适配性。设计方案采用分层理念,让各个功能模块保持独立又形成协同关系,从而为后续的开发扩容与长期维护创造了空间,而硬件具体实现部分则会放在接下来的内容中逐步细讲。3系统的硬件设计PAGE23PAGE233系统硬件选型以及电路设计3.1单片机硬件设计STM32单片机在医用婴儿床监控与控制平台里充当核心控制单元,协调各功能模块的运行并执行控制算法,本设计选用的是STM32F103C8T6型号,这款芯片基于ARMCortex-M332位处理器架构,主频达72MHz,具备64KB程序存储空间和20KB数据内存容量,电路设计采用了常见的最小系统方案,包含电源、复位、时钟与下载调试等基础部分,供电通过USB接口实现,经过AMS1117-3.3V降压器件转换得到3.3伏工作电压,与滤波元件配合确保电源输出稳定,外部晶体振荡器使用8MHz元器件作为基准信号发生器,通过内部锁相技术生成高频工作脉冲,为便于编程与诊断验证操作,设置有兼容串行线协议(SWD)的人机连接座子,仅两条数据线即可达成与ST-Link型工具通信的目的。单片机的I/O资源分配如下:PA0和PA1接入继电器,分别负责风扇与加热设备的操作,PA2、PA3配置为USART2接口用于连接ESP8266WiFi模块,PA4输入到ADC端,承担湿度传感器数据采集任务,PA6接收声音检测器输出用以辨别婴儿哭声,PA8接入DS18B20温度芯片,而PA15控制由LED与蜂鸣器构成的声光报警部件。PB3、PB4以及PB5接通独立按键,服务于模式选择和执行命令输入,PB8至PB11连接ULN2003驱动步进电机实现摇篮运转,PB14与PB15形成I2C总线支持OLED屏互动,在设计电路的过程中特意在关键信号通道上选择了短路径布线,针对易受外界影响的部分增加了电源或信号线路滤波电容,通过这些做法强化整体系统的稳定性表现并改善实际性能参数特性,最终达到较好的抗干扰能力提升效果使其符合目标环境要求。图3.1STM32F103单片机接线情况图3.1展示了该芯片作为医用婴儿床监控与控制平台核心处理器的硬件接口布局。图中芯片呈黄色矩形,标注为"STM32F103最小系统",周围整齐排列着三组引脚接口:顶部的J1接口(编号1-20)、底部的J3接口(编号1-20)和右侧的J2接口,其中J2标注为USB接口。特别值得注意的是,引脚21至24作为关键系统引脚单独标出,其中21脚为地线(GND),22脚为串行调试时钟(SWCLK),23脚为串行调试输出(SWO),24脚为3.3V电源供电。从引脚分布可以清晰看到,该芯片配置了丰富的GPIO端口(包括PA0-PA15和PB0-PB15系列)、多个电源管理引脚(3V3、GND、VB)以及通信接口(RX、TX),这样的硬件配置完全满足了医用婴儿床监控系统中温度传感器、湿度检测、声音监测、步进电机控制、WiFi通信、OLED显示等多个功能模块的连接需求,充分体现了STM32F103作为ARMCortex-M3架构处理器在嵌入式医疗设备应用中的灵活性和可扩展性。3.2无线模块硬件设计ESP8266WiFi模块在医用婴儿床监控平台中担当网络通信的重要职责,成为系统连接云平台进行数据交换的关键枢纽。设计采用了ESP-01S型号,此款模块体积轻巧仅为24.8mm×14.3mm,脚位配置简洁适于多场景集成,依托TensilicaL10632位RISC框架运行主频最高达80MHz且自带TCP/IP全功能支持,内置贴合802.11b/g/n规范的无线传输单元可实现稳定的数据联通此外兼容多种WiFi运行模式如SoftAP及WiFiDirect等扩展能力充分满足个性化需求同时为复杂环境提供了可靠的交互选项,紧凑性与灵活性结合使得性能最大化得以体现整体参数优化显著增强了系统的适应能力。ESP8266电路设计围绕电源和信号稳定性展开,模块采用3.3V独立供电方式,这种结构有效规避了WiFi信号发射时对单片机系统的干扰风险,为确保模块正常通信功能,ESP8266的电源输入部分配置了一种并联电容组合——100μF电解电容搭配0.1μF陶瓷电容——以应对可能引发问题的电源噪声及瞬态波动,模块中的串口引脚(TX与RX)直接连至STM32F103的USART2接口(PA2/PA3),波特率设置在通用的115200bps,而在ESP8266中CH_PD经由一只10KΩ接到3.3V维持高电平,实现硬件使能要求,RST复位端则增加了必要的周边设计,使得单片机可以灵活地通过软件控制ESP8266的重启,增强模块工作的可靠性。ESP8266凭借AT指令集实现网络连接和数据传输,设备上电后单片机通过UART发送AT指令串,将模块设置为Station模式并接入指定WiFi,随后与阿里云IoT平台建立MQTT连接,系统按协议周期性上传婴儿体温、湿度、哭声状态等实时数据,并接收云端下发的控制指令,该设计让医护人员能借助手机APP随时掌握婴儿动态并进行远程操作,极大优化了护理反应速度和工作效率。图3.2ESP8266无线模块实际接线图3.3湿度传感器设计湿度传感器模块在医用婴儿床监控平台中扮演湿度检测的角色,重点捕捉床垫上的湿度变化,进而推测婴儿是否有尿床情况,方案选取电阻式液滴传感器,核心机制与电导特性相挂钩,液体接触传感器表面后高阻状态会出现显著下滑,由此借助对阻值变化的监测即可反馈湿度状态,传感器铜质部分经过蚀刻工艺加工成梳状交叉图案,常态下两组梳状电极间表现出较强的阻抗,在有水分参与的情况下则会触发低阻路径生成。传感器电路设计借鉴电阻分压原理,采用一只标称10KΩ的固定电阻与传感器协同搭建分压框架,其分压节点直接连通STM32F103的ADC端口PA4,在3.3V供电的工作状态下,借助采集此节点电压便可反映传感器阻抗的动态改变,出于提升数据采样信噪比的实际考量,特意在输入端植入RC低通滤波器配置,平行焊接一颗容量为0.1μF的电容以压制高频杂波的潜在干扰,规避信号漂移情况的发生从而确保采样的稳定性。软件处理环节中,系统通过ADC对传感器分压点的电压进行采样,每隔500毫秒运作一次,每次采样包含多次模数转换而后取均值,以此稀释随机误差的影响,获得的数值再经计算输出为百分比形式的湿度值,若湿度高出预设范围五分之一,系统将判别为婴儿发生尿床状态,并迅速激活报警机制提示看护者介入处置,OLED屏幕持续滚动展现即时湿度数值,相关数据亦会同步存入云端以支持远程调阅查看,此设计意图在于推动早期察觉及解决尿床状况的效果,以期避免湿滞久留对于孩童皮肤构成潜在负面影响。图3.3湿度传感器模块实际接线图3.4OLED显示模块设计OLED显示模块在医用婴儿床监控与控制平台中担当人机交互界面的角色,主要任务是呈现系统运行状态和各路监测数据,具体选用了一块0.96英寸单色蓝色OLED屏幕,分辨率达到了128×64像素,依托SSD1306芯片实现驱动支撑,这块屏幕以有机发光材料为基础无需背光源协助,表现出卓越的对比度特性,无论处于低照度室内还是高亮强光环境下,画面依然能够稳定地传递清晰的信息输出效果,为医疗场景的实际应用需求注入匹配度较高的性能支持。OLED模块与STM32F103通过I2C接口对接,信号线仅有SCL(PB15)和SDA(PB14),显著提升了单片机I/O资源的利用效率,电路设计中为SCL与SDA各配置了4.7KΩ上拉电阻,从而确保信号稳定传输,OLED模块采用3.3V供电直接融入单片机电源系统,电平自然匹配无需额外转换逻辑,其分辨率被设定为128×64像素,并依据内部结构划分为8页每页由8行共64行构成,而列数据覆盖128个位置点,控制每个像素单元启闭即可灵活生成字符与图形内容。软件设计时构建了一套OLED驱动函数库,包含初始化、清屏、像素调整、字符与中文显示等函数模块,显示屏被分为四个部分,分别用于展示工作模式(“自动”或“手动”)、婴儿体温(精确到0.1℃)、尿床检测状态(“是”或“否”,再加上湿度百分比)以及哭声检测情况(“有”或“无”),屏幕每500ms刷新一次,以保数据即时同步,这个简明清晰的操作界面为医护人员呈现了所需的各种动态参数,既优化了系统的操控体验,也让医护信息获取变得更为迅速和直观。图3.4OLED实际接线图3.5温度检测模块设计DS18B20温度检测模块在医用婴儿床监控平台中充当体温监测的关键部件,为温控系统注入必不可少的数据血液,这款数字温度传感器依托Dallas半导体的1-Wire协议实现通信,测温范围扩展至-55℃至+125℃,其测温精度在±0.5℃范围内表现出色,分辨率可从9位灵活调节至12位,在最高分辨率状态下能够呈现0.0625℃的精密读数水平,精准捕获微小温差变化,满足高要求的医疗场景需求。DS18B20的电路设计简洁到极致,只需VDD、GND与DQ这三个引脚便能支持整个功能运作,在此次系统内VDD通过接入3.3V完成供电任务,GND直连至地端,而DQ直接牵手STM32F103对应的PA8引脚位置,并且为了防止通信环节中出现可靠性折扣,4.7KΩ上拉电阻安放到了DQ线上边,虽说寄生电源模式在DS18B20身上属于选项之一但权衡系统的稳定性指标以及能耗均衡因素之后,外部供电方案最终胜出并成功启用。软件设计中系统完整实现了DS18B20的驱动部分,涵盖单总线通信的函数、初始化操作的函数、控制温度转换的函数以及数据读出功能的函数等内容,测温流程大致如下:起始以一个复位脉冲作为开端,紧接着跨过ROM发出指令(0xCC),而后下达温度转换指令(0x44),需等待转换完成才行,在此之后给出另一个复位脉冲,再次越过ROM传入指令,继而发出读暂存器指令(0xBE),末了将温度数据读取出来,系统每经过500ms便展开一次温度采集工作。这里所得到的数据会被放大十倍以便于保存,这种处理方式让小数处理起来更为简便一些,例如37.2℃就能用整数372去表征。系统依据采集的温度数值执行温控决策,体温跌破35℃则加热装置介入工作同时关停风扇,落在35-36℃区间便视作合理范围不再启用加热或风扇设备,而处于37-38℃区域时调用风扇实现热量疏散,倘若体温超越38℃即中断风扇运行且激活声光警报通知护理人员,这般精细的温测与灵巧的调控机制,为婴儿构建出一个恒定且适宜的微环境气候氛围,在降低低体温或发烧概率上有一定优势且规避了健康隐患可能出现的局面,从某种程度上说也是给成长之路添加一层保护膜。图3.5温度检测模块接线图3.6步进电机硬件设计步进电机模块在医用婴儿床监控与控制平台中充当自动摇篮的执行单元,当婴儿哭闹时可提供轻柔晃动以达到安抚目的,设计选用了28BYJ-48型5V步进电机,属于四相八拍永磁式类型,具有5.625°/64的步距角和1:64的减速比,凭借低噪音、高转矩以及精准控制的优势,在需要精细运动的低速场景中展现不可替代的价值。步进电机的驱动需借助ULN2003这款达林顿管阵列芯片,其内部集成7组达林顿放大通道,各通道可承载高达500mA的最大电流,用于驱动28BYJ-48这样的步进电机显得毫不费力,接线模式中,STM32F103微控制器的PB8到PB11端口对应连接ULN2003的IN1至IN4输入端,而输出端则把OUT1至OUT4线路接入电机四相连线。为应对反向电动势威胁,ULN2003内置续流二极管结构从而有效削减换相信号时可能引发电压波动的问题,供能部分通过一独立的5V电源模块提供动力源泉以保障电机运作过程中启停瞬间产生的大幅电流震荡不会波及系统的稳定性单片机运行状态更加牢靠。软件端设定电机步数数组为{0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09},利用四相八拍控制模式,定时器按每毫秒触发中断输出相应相序从而保障电机平稳运行,婴儿哭声状态是步进电机启停的核心参照:检测到哭声即启动电机驱使摇篮摆动,一旦哭声消失或持续时长超过预定值比如3s,电机随即停止工作,同时系统支持手动调节功能,按键与APP均可完成启停操作,以往靠人工如今转为自动化不仅减少了看护者体力支出,并且对婴儿情绪变化快速响应,在实际护理当中发挥了优化效能的功能。图3.6步进电机模块实际接线图3.7本章小结本章详细阐述了医用婴儿床监控与控制平台的硬件设计,包括STM32单片机主控模块、WiFi通信模块、液滴传感器湿度检测模块、OLED显示模块、DS18B20温度检测模块和步进电机模块。各功能模块紧密协作,构成了一个完整的监控与控制系统。硬件设计充分考虑了稳定性、可靠性和电磁兼容性,确保系统在医疗环境中长期稳定工作。通过精心的电路设计和模块选择,系统实现了婴儿体温监测、湿度检测、哭声识别、自动摇篮和远程监控等核心功能,为婴儿提供了安全、舒适的护理环境,为医护人员提供了便捷、高效的监控工具。工程学院毕业设计4系统的软件设计4系统的软件设计4.1软件介绍Keil5是ARM公司推出的一款面向ARMCortex-M系列微控制器的集成开发环境(IDE),在嵌入式开发圈子里应用极为普遍,Keil5MDK整合了项目管理、代码编辑等功能不说,还支持代码编译和程序调试及仿真操作,整个过程对开发者而言相当方便,尤其针对多语言编程提供了坚实后盾,C或C++甚至汇编语言统统兼容,加之配套高效的ARM-CC编译器生成的执行文件不仅运行流畅体积也显得格外小巧紧凑。Keil5自带丰富的开发资源入场,像器件数据库、外设驱动库以及示例代码全都覆盖到,针对STM32系列微控制器的设计需求,该平台整合了STM32CubeMX工具,借助图形化界面完成外设配置并生成初始化代码,从而将繁琐的开发流程大幅度缩减,其调试功能更是颇具亮点,JTAG与SWD这类主流调试接口得到支持,断点标记、逐行执行等工具应有尽有,观察变量或监控存储器的状态也毫不含糊,助力开发者迅速定位异常并进行处理。医用婴儿床监控与控制系统软件开发采用Keil5MDK为核心环境,辅以STM32CubeMX实现硬件初始化,具体流程中首先运用STM32CubeMX完成时钟、GPIO、ADC及USART等外设的配置并生成相应的初始化代码,再转入Keil5进行应用程序的编写,完成后经编译下载至目标设备展开调试验证;在代码组织方面,基于模块化设计将各个功能模块的驱动和应用部分归置于独立源文件,从而保障了良好的可读性并优化了后期维护性能。图4.1Keil_5软件界面4.2软件程序的设计4.2.1主程序流程图4.2智能婴儿床控制系统逻辑流程图如图4.2所示,医用婴儿床监控与控制系统的主程序设计遵循顺序执行原则,主要包含初始化和循环两环节,设备通电后优先落实硬件层面的基础部署工作,例如将系统时钟调整到72MHz、配置ADC模数转换和USART串口通信,并完成定时器的参数设置等基本操作,这些步骤相互嵌套却又井然有序,随后逐级启动不同功能模块,依次唤醒OLED显示屏幕、挂载DS18B20测温传感器并加载ESP8266WiFi组件,而在处理WiFi模块时引入AT指令对其行为模式进行指定,使其能够快速接入既定WiFi网络的同时,尝试创建一条对接云平台的MQTT数据通道,实现联网能力的基本构建。整个过程看似环环相扣实际却夹杂些许信息缝隙,需要在实践中弥合各阶段之间的模糊过渡区域才能确保稳定流转,这并非全然线性的完美链条而是充满了随机性试探与即时反馈修正的结果。系统初始化结束后直接进入主循环,主循环中按键处理、监测、显示刷新和网络通信等函数轮流被调用,由于采用非阻塞逻辑,各个模块依据标志位确定其工作状态,从而维持系统的灵敏反应,1毫秒的基础时钟由定时器中断服务程序创建,步进电机的动作随之展开,多个时间计数器基于这一节奏推进,同时承担起协调周期性事务的责任。4.2.2按键程序流程按键程序流程如图4.3所示;按键子程序的核心功能聚焦于捕捉用户输入并执行对应任务,堪称实现人机交互的关键纽带设计上运用状态机理念对按键情况进行周期性扫描的同时加入消抖操作保障检测结果的可靠度,系统针对三个按键的作用分别作出明确划分:按键1担当自动与手动模式切换的任务;按键2负责加热装置启停的手动操控;按键3专司风扇开关的控制逻辑启动时程序先调用扫描函数获取数值由此触发响应分支,为了避免误触发按键2和按键3仅允许在手动模式生效按下瞬间即转入手动形态逻辑层面采用翻转设计思想单次按键促使目标控制器的状态完成0到1或反向变化以达成开启关闭的实际需求,并随着该动作同步更新至系统的运行态势之中再借助标志位的变化引发监测机制作出判断并指导后续流程的调整最终通过这种联动形式驱动硬件外围元件产生相应变动。图4.3按键模块逻辑流程图4.2.3处理程序流程处理程序流程如图4.4所示,处理子程序在系统中扮演着逻辑控制要角,融合了数据收集、状态评估和执行调控等关键模块,每隔500ms促发一次传感器信息获取操作,提取婴儿的实时体温和床垫湿度,其中DS18B20设备借单总线协议抓取温度数据后再加以校验筛除异常干扰;湿度数据则借助ADC技术完成采集,并通过计算进一步呈现为更为直观的百分比形式,基于运行模式与获取的数据系统做出多种响应方案,在自动模式下依托体温波动去调整加热或通风功能的工作强度,转入手动档时,则完全依循用户设置锁定环境参数不变,且需额外关注的是,若检测到哭声信号将联动安抚机制触发床体摆动或轻柔曲目播放;此外该主程还需要定时推送监测结果至云数据库以确保看护端可以随时追溯动态记录,如此多项环节相互协力共同维系适于休憩的安定空间并做到突发情况及时上报相关照护者。图4.4处理函数逻辑流程图4.3本章小结本章详细介绍了医用婴儿床监控与控制系统的软件设计,包括开发环境Keil5的特点和应用,系统主程序、按键子程序和处理子程序的设计与实现。软件设计采用模块化、结构化编程思想,将系统功能清晰划分为不同模块,便于开发和维护。程序结构合理,采用非阻塞设计和基于时间的任务调度,确保系统响应及时,运行稳定。系统软件实现了婴儿状态监测、智能温控、自动摇篮和远程数据传输等核心功能,为医用婴儿床提供了智能化的控制能力。下一章将对系统进行综合测试,验证各项功能的正确性和可靠性。工程学院毕业设计5系统的测试5系统的测试5.1软硬件调试医用婴儿床的监控与控制系统调试涵盖单元测试和集成测试两块内容,单元测试更侧重对各模块独自运行状态的检查为整体功能搭建框架,例如测试DS18B20温度传感器时通过调整环境温度然后参照标准仪表来校准误差控制在±0.5℃范围内以符合医疗护理的要求,液滴传感部分则是靠调节水滴流量从而验证湿度检测反应的敏锐性与数据准确度,声检模块借助改变哭声强度选定合适的阈值,在保证精准捕捉能力的前提下尽量排除杂音干扰减少误判率,步进驱动环节重点考察电机运转是否稳当流畅以及开关切换性能是否有高可靠性,ESP8266WiFi模组则围绕在不同环境下网络接入表现进行测试确保通讯稳定且数据传输无差错等各指标均达成初始设计标准。集成测试阶段聚焦系统整体功能的验证,重点考察各模块间的协同能力,自动模式测试时通过调节环境温度观察系统能否随着温度变化自主切换加热或风扇控制,而手动模式用来审视按键及远程APP指令操控下组件的工作精准度,异常处理则模拟诸如体温异常、尿床感应触发、WiFi断连等情况以检测其应对机制与修复效能,耐久性测试方面持续运行72小时过程中设备呈现出较好稳定性,且对资源占用保持在合理范围,调试阶段解决了如传感器信号波动、网络交互卡顿、OLED屏幕偶发异常等系列隐性问题,调整结束后系统的可靠性和容错表现均有显著增强。5.2实物运行演示经过仔细的软件和硬件的调试,智能婴儿床控制系统将进行上电测试,实物如图5.1所示:图5.1医用婴儿床控制系统实物图上图中OLED分别显示的是控制模式,温度值,是否尿床提示,是否听到哭声提示。下图为手机APP默认显示界面,连接无线以后就可以进行设备的连接。如图5.2所示:图5.2APP默认界面对于声音检测哄睡模式的演示,需要模拟哭声,当传感器检测到就会进行报警,同时还可以通过按键进行音乐安抚和摇床功能的控制。如图5.3所示。图5.3哄睡模式如图5.4所示,现在本智能婴儿床控制系统监测到了婴儿的哭声,系统自动开启了摇晃婴儿床以及播放音乐安抚的功能。图5.4检测到尿床5.3本章小结本章细致考察了医用婴儿床的监控与控制系统,软硬件调节、实物运行等内容无一遗漏,利用分模块检测功能和整体联调方式审视了每个环节的表现及其协调模式,结果表明该系统在体温、床垫湿度以及哭声探测上表现可靠。结论结论结论医用婴儿床的监控与控制平台设计算是电子技术在医疗圈中的巧妙应用,研究紧扣实际需求捣鼓出一个集体温监测、湿度感知、哭声辨别、自动摇篮以及远程查看功能为一体的智能化系统,成果展示这种拼接而成的小装置不仅能抬高新生儿护理的质量,还顺带削减了医务人员的工作负担,同时优化了资源分配的经济性。系统以STM32为核心控制单元,融合多种传感器与通信技术实现智能监控调节功能,DS18B20担纲精确获取婴儿体温信息的任务,随后加热装置和风扇依序实现自动开关,构造适宜的温度场景,液滴传感器始终紧盯床垫湿度动向,尿床事发瞬时便会拉动警报索求关注,声音传感元件则负责捕捉婴儿哭泣信号,并同步驱动摇篮运行配以柔缓音乐提供心理安慰,同时ESP8266WiFi模块承担数据的云端输送和设备遥控职责,医疗工作者随时随地皆能查询婴幼儿的各项数据流,在软件体系构筑中注入了模块化与层次化的开发思想模式,手动或自主两种运行形态各具千秋,在保证智能化运转轨迹之时亦不排斥人工干预流程嵌入其内。后续研究可朝着系统功能延伸的方向演进,像把呼吸监测、心率监测这类核心体征数据纳入思考范畴,同步加深人工智能算法的应用程度,如此一来能让系统拥有更高的智慧度并提升预测的精准性,界面设计方面要向着人性化靠拢进行改良,给使用者更惬意的体验感受,还得思考如何与医院信息系统无缝对接的问题,达到医疗数据一体化管理的目的。工程学院毕业设计参考文献参考文献[1]杜宝强,朱传奇,武涛.基于物联网的智能婴儿床远程监控系统[J].物联网技术,2023,13(2):4.[2]钱意佐,郑志伟.一种智能婴儿床:,CN115299743A[P].2022.[3]吴冬雨.基于ATmega328P单片机的智能婴儿床系统设计[J].数字技术与应用,2021.[4]穆壹澜,李芷薇,谭瑶,等.婴儿床智能风扇[J].物联网技术,2019(2):3.[5]陈栋.改良型智能婴儿床:,CN205285726U[P].2016.[6]高南孙晨曦钟承宏.一种智能看护婴儿床的设计[J].电子产品世界,2022,29(11):28-32.[7]张开心,张梦瑶,刘梦然,等.基于嵌入式平台的智能婴儿床设计与实现[J].河南科技,2022(008):041.[8]多泽华,王明申,赵宇,等.基于树莓派的婴儿床智能监护系统设计与实现[J].计算机应用文摘,2022(006):038.[9]罗聪,李辉,彭旺,等.基于STM32的智能安全监护系统设计[J].仪表技术,2022(5):5.[10]谢成豪,贾卓男,董淑婧,等.一种基于物联网的智能婴儿床:,CN215650209U[P].2022.[11]孔德因.温度传感器DS18B20简介[J].家电维修,2023(2):1.[12]冯乔春,陈武,杨子力,等.一种DS18B20数字温度传感器快速测温的方法:,CN115237474A[P].2022.[13]王同珍,黄明炜,黄宏安,等.基于GA-BP神经网络的温度传感器校准系统[J].2021.[14]祝加雄.基于ESP8266主控器的智慧实验室的监控设计[J].电子制作,2023,31(2):4.[15]文丹.基于Android的智能家居交互系统设计与开发[J].电子制作,2023,31(1):5.[16]郑燕红.一种采用ESP8266为核心单元的无线节能开关:,CN216389129U[P].2022.[17]赵志鹏,王猛,欧为军.C3级列控系统无线通信协议引起的无线通信超时优化建议[J].中国铁路,2023(1):6.[18]于宝珠.无线通信系统时延和可靠性分析与保障研究[D].吉林大学,2022.[19]左旭涛.地铁信号系统无线通讯传输的抗干扰措施[J].运输经理世界,2022(7):3.[20]金志虎,汪澜,唐佛南,等.一种对无线通讯产品样机测试写值的方法和系统:,CN107426719B[P].2020.[21]侯丽红.基于STM32的智能婴儿床系统设计[J].科学技术创新,2023(25):225-228.[22]杨千慧,唐浩煜,邹枫奕,等.基于STM32单片机的智能家居设计[J].电子制作,2023,31(14):59-63.[23]谢福,王振省,李俊,等.基于STM32单片机的智能书桌设计与实现[J].电子产品世界,2022,29(1):82-85.[24]李文杰,脱慧.基于STM32的教室智能照明系统设计[J].中国设备工程,2022(13):3.[25]王勋,康荣显,王玥,等.基于STM32单片机的智能鱼缸设计[J].赤峰学院学报:自然科学版,2022,38(5):5.附录B附录A工程学院毕业设计附录B主程序:uint8_tkey_num,flag_display; //按键与显示变量uint16_ttime_1ms,time_500ms;//计时变量1ms,500msuint8_tMotor_Status; //步进电机状态变量uint16_tMotor_Num; //步进电机计数变量uint16_tMotor_Time; //步进电机计时变量uint8_tconstMotor_Buf[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//步进电机步数数组uint8_tflag_moto; //标志位uint16_tbody_temp; //体温uint16_tadc_value,humi; //ADC值湿度变量uint8_tmode,hot_flag,fan_flag;uint8_tcrib_flag;//婴儿床标志位uint8_tbeep_temp,beep_humi;uint16_ttime_1,flag_1,time_2,flag_2;//计时变量//按键设置函数voidKey_function(void){ key_num=Chiclet_Keyboard_Scan(); //按键扫描 if(key_num!=0) //有按键按下 { switch(key_num) { case1: //按键1切换模式mode==0?mode=1:(mode=0); break; case2: //按键2手动控制是否加热mode=1;hot_flag==0?hot_flag=1:(hot_flag=0); break; case3: //按键3手动控制是否打开风扇Èmode=1;fan_flag==0?fan_flag=1:(fan_flag=0); break; } }}//监测函数voidMonitor_function(void){uint16_ttemp_init; if(time_500ms==1) { time_500ms=0;if(body_temp<1000)temp_init=body_temp; body_temp=Ds18b20_Read_Temp();if(body_temp>1000)body_temp=temp_init;//单通道数据获取HAL_ADC_Start(&hadc1); if(HAL_ADC_PollForConversion(&hadc1,999)==HAL_OK) adc_value=HAL_ADC_GetValue(&hadc1); HAL_ADC_Stop(&hadc1); humi=(adc_value/4095.00)*100; //获取值 } if(flag_1==1) //给阿里云发送数据 { flag_1=0;Ali_MQTT_Publish_1(); } if(flag_2==1) //给阿里云发送数据 { flag_2=0;Ali_MQTT_Publish_2(); }if(voice==0||(crib_flag==1&&mode==1))//手动控制或检测到哭声的标志位为1,婴儿床自动摇晃{if((Motor_Status&0x01)==0x00){if(flag_moto==0){flag_moto=1;if((Motor_Status&0x01)==0x00) { Motor_Status|=0x81;}}}}if(voice==0)//检测到哭声播放摇篮曲lullabuy(0);elselullabuy(1);if(humi>20)//湿度值大于20为尿床beep_humi=1;elsebeep_humi=0;if(mode==0)//自动模式{if(body_temp<35*10)//体温小于35进行加热{hot_flag=1;fan_flag=0;beep_temp=0;}else//ÌåδóÓÚµÈÓÚ35{hot_flag=0;if(body_temp>37*10&&body_temp<=38*10)//{fan_flag=1;beep_temp=0;}if(body_temp>38*10)//体温大于38进行报警{fan_flag=0;beep_temp=1;}}}else{beep_temp=0;}if(beep_humi==1||beep_temp==1)alarm(1);elsealarm(0);relay_fan(fan_flag);relay_hot(hot_flag);}//显示函数voidDisplay_function(void) //显示体温模式是否听到哭声是否尿床{ Oled_ShowCHinese(0,0,(uint8_t*)"模式"); Oled_ShowString(32,0,(uint8_t*)":"); if(mode==0) Oled_ShowCHinese(40,0,(uint8_t*)"自动"); else Oled_ShowCHinese(40,0,(uint8_t*)"手动"); Oled_ShowCHinese(0,2,(uint8_t*)"体温"); Oled_ShowString(32,2,(uint8_t*)":"); OLED_Show_Temp(40,2,body_temp); Oled_ShowCHinese(0,4,(uint8_t*)"是否尿床"); Oled_ShowString(64,4,(uint8_t*)":"); if(beep_humi==1) Oled_ShowCHinese(72,4,(uint8_t*)"是"); else Oled_ShowCHinese(72,4,(uint8_t*)"否"); OLED_ShowNum(96,4,humi,3); Oled_ShowCHinese(0,6,(uint8_t*)"是否听到哭声"); Oled_ShowString(96,6,(uint8_t*)":"); if(voice==0) Oled_ShowCHinese(104,6,(uint8_t*)"是"); else Oled_ShowCHinese(104,6,(uint8_t*)"否");}通信程序:#include"./HAL/AliESP8266/AliESP8266.h"unsignedcharESP8266_buf[1024];unsignedshortESP8266_cnt,ESP8266_cntPre;unsignedcharUSARTWIFI_TX_BUF[1024];unsignedcharuartwifi_value; //串口2接收缓存变量#defineuwifi_printf(...)HAL_UART_Transmit(&Huart_wifi,USARTWIFI_TX_BUF,sprintf((char*)USARTWIFI_TX_BUF,__VA_ARGS__),0xffff)//串口数据发送voidUsart_SendString(unsignedchar*str,unsignedshortlen){ unsignedshortcount=0; for(;count<len;count++) { HAL_UART_Transmit(&Huart_wifi,str++,1,999); }}//清空缓存voidESP8266_Clear(void){ memset(ESP8266_buf,0,sizeof(ESP8266_buf)); ESP8266_cnt=0;}//等待接收完成_BoolESP8266_WaitRecive(void){ if(ESP8266_cnt==0) //如果接收计数为0则说明没有处于接受数据中,所以直接跳出,结束函数 returnREV_WAIT; if(ESP8266_cnt==ESP8266_cntPre) //如果上一次的值和这次相同,则说明接收完毕Ï { ESP8266_cnt=0; //清0接受计数 returnREV_OK; //返回接受完成标志 } ESP8266_cntPre=ESP8266_cnt; //置位相同 returnREV_WAIT; //返回接受未完成标志}//发送命令_BoolESP8266_SendCmd(char*cmd,char*res){ unsignedshorttimeOut=200; Usart_SendString((unsignedchar*)cmd,strlen((constchar*)cmd)); while(timeOut--) { if(ESP8266_WaitRecive()==REV_OK) //如果收到数据 { if(strstr((constchar*)ESP8266_buf,res)!=NULL) //如果检索到关键词 { ESP8266_Clear(); //清空缓存 return0; } } DelayXms(10); } return1;}//连接网络和设置格式voidESP8266LinkAp(void){charWIFI_buf[50]; while(ESP8266_SendCmd("AT+RESTORE\r\n",""))DelayXms(1000);while(ESP8266_SendCmd("AT+CIPSNTPCFG=1,8,\"\"\r\n","OK"))DelayXms(1000);while(ESP8266_SendCmd("AT+CWMODE=1\r\n","OK"))DelayXms(1000);while(ESP8266_SendCmd("AT+CIPSNTPCFG=1,8,\"\"\r\n","OK"))DelayXms(1000);sprintf(WIFI_buf,"AT+CWJAP=\"%s\",\"%s\"\r\n",SSID,PASS); //发送客户端ID、用户名、密码while(ESP8266_SendCmd(WIFI_buf,"WIFIGOTIP"))DelayXms(1000);while(ESP8266_SendCmd("ATE0\r\n","OK"))DelayXms(1000);//连接阿里云voidESP8266LinkloT(void){charsend_buf[512];//发送客户端ID、用户名、密码sprintf(send_buf,"AT+MQTTUSERCFG=0,1,\"NULL\",\"%s&%s\",\"%s\",0,0,\"\"\r\n",DeviceName,ProductKey,Password); while(ESP8266_SendCmd(send_buf,"OK")) DelayXms(500);//发送客户端IDsprintf(send_buf,"AT+MQTTCLIENTID=0,\"%s\"\r\n",ClientId); while(ESP8266_SendCmd(send_buf,"OK")) DelayXms(500);//连接阿里云服务器 sprintf(send_buf,"AT+MQTTCONN=0,\"%s\",%s,1\r\n",mqttHostUrl,port); while(ESP8266_SendCmd(send_buf,"OK")) DelayXms(500); //订阅主题 sprintf(send_buf,"AT+MQTTSUB=0,\"/sys/%s/%s/thing/service/property/set\",1\r\n",ProductKey,DeviceName); while(ESP8266_SendCmd(send_buf,"OK")) DelayXms(500); }//向阿里云发布消息externuint8_tmode,hot_flag,fan_flag;externuint8_tcrib_flag;//婴儿床标志位externuint8_tbeep_temp,beep_humi;//externuint8_trelay_o;voidAli_MQTT_Publish_1(void){ charbuf[200]; chartxt[512]; memset(txt,0,sizeoftxt); /*数据点整合*/ sprintf(buf,"AT+MQTTPUB=0,\"/sys/%s/%s/thing/event/property/post\",",ProductKey,DeviceName); strcat(txt,buf); strcat(txt,"\"{\\\"method\\\":\\\"perty.set\\\"\\,\\\"id\\\":\\\"2012934115\\\"\\,\\\"params\\\":{");sprintf(buf,"\\\"mode\\\":%d\\,",mode); strcat(txt,buf);sprintf(buf,"\\\"hot_flag\\\":%d\\,",hot_flag); strcat(txt,buf);sprintf(buf,"\\\"fan_flag\\\":%d",fan_flag); strcat(txt,buf); strcat(txt,"}\\,\\\"version\\\":\\\"1.0.0\\\"}\",1,0\r\n"); //发送数据 uwifi_printf("%s",txt);}voidAli_MQTT_Publish_2(void){ charbuf[200]; chartxt[512]; memset(txt,0,sizeoftxt); /*数据点整合*/ sprintf(buf,"AT+MQTTPUB=0,\"/sys/%s/%s/thing/event/property/post\",",ProductKey,DeviceName); strcat(txt,buf); strcat(txt,"\"{\\\"method\\\":\\\"perty.set\\\"\\,\\\"id\\\":\\\"2012934115\\\"\\,\\\"params\\\":{");sprintf(buf,"\\\"crib_flag\\\":%d\\,",crib_flag); strcat(txt,buf);sprintf(buf,"\\\"beep_temp\\\":%d\\,",beep_temp); strcat(txt,buf);sprintf(buf,"\\\"voice\\\":%d\\,",voice); strcat(txt,buf);sprintf(buf,"\\\"beep_humi\\\":%d",beep_humi); strcat(txt,buf); strcat(txt,"}\\,\\\"version\\\":\\\"1.0.0\\\"}\",1,0\r\n"); //发送数据 uwifi_printf("%s",txt);}//接受阿里云下发的消息voidAli_MQTT_Recevie(void){char*Start;Start=strstr((char*)ESP8266_buf,"crib_flag");if(Start!=NULL){Start=strstr(Start,":")+1;crib_flag=atoi((constchar*)Start);ESP8266_Clear();}Start=strstr((char*)ESP8266_buf,"mode");if(Start!=NULL){Start=strstr(Start,":")+1;mode=atoi((constchar*)Start);ESP8266_Clear();}Start=strstr((char*)ESP8266_buf,"hot_flag");if(Start!=NULL){Start=strstr(Start,":")+1;hot_flag=atoi((constchar*)Start);ESP8266_Clear();}Start=strstr((char*)ESP8266_buf,"fan_flag");if(Start!=NULL){Start=strstr(Start,":")+1;fan_flag=atoi((constchar*)Start);ESP8266_Clear();}}OLED程序:#include"./HAL/OLED/OLED_NEW.H"#include"./HAL/OLED/OLED_TAB.H"voidOLED_GPIO_Init(void){GPIO_InitTypeDefGPIO_InitStruct;//引脚时钟功能OLED_SCL_GPIO_CLK_ENABLE();OLED_SDA_GPIO_CL_ENABLE();/*GPIO引脚配置以及初始化*/GPIO_InitStruct.Pin=OLED_SDA_PIN;GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull=GPIO_PULLUP; GPIO_InitStruct.Speed=GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(OLED_SDA_PORT,&GPIO_InitStruct);GPIO_InitStruct.Pin=OLED_SCL_PIN;GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull=GPIO_PULLUP; GPIO_InitStruct.Speed=GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(OLED_SCL_PORT,&GPIO_InitStruct);}voidys(unsignedinti){while(i--);}//OLEDIIC开始函数voidOLED_IIC_Start(){scl(1);ys(4);sda(1);ys(4);sda(0);ys(4);scl(0);}//IICSTOPvoidOLED_IIC_Stop(){sda(0);ys(4);scl(1);ys(4);sda(1);}//IICWritebyteunsignedcharOLED_Write_IIC_Byte(unsignedcharIIC_Byte){ unsignedchari; unsignedcharAck_Bit;//应答信号 for(i=0;i<8;i++) { if(IIC_Byte&0x80) {sda(1);} else { sda(0); } ys(4); scl(1); ys(4); scl(0); ys(4); IIC_Byte<<=1; //loop } sda(1); // 释放IICSDA总线为主器件接受从器件产生应答信号 ys(4); scl(1);//第9个时钟周期 ys(4); Ack_Bit=HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_13); //读取应答信号 scl(0); returnAck_Bit; }voidOLED_write_iic_com(unsignedcharIIC_Command){OLED_IIC_Start();OLED_Write_IIC_Byte(0x78);//Slaveaddre.ss,SA0=0OLED_Write_IIC_Byte(0x00); //writecommandOLED_Write_IIC_Byte(IIC_Command);OLED_IIC_Stop();}voidOLED_write_iic_dat(unsignedcharIIC_Data){OLED_IIC_Start();OLED_Write_IIC_Byte(0x78); OLED_Write_IIC_Byte(0x40); //writedataOLED_Write_IIC_Byte(IIC_Data);OLED_IIC_Stop();}voidOLED_Set_Pos(unsignedcharx,unsignedchary){ OLED_write_iic_com(0xb0+y); OLED_write_iic_com(((x&0xf0)>>4)|0x10); OLED_write_iic_com((x&0x0f)|0x01);}voidOLED_Clear(void){ unsignedchari,n; for(i=0;i<8;i++) { OLED_write_iic_com(0xb0+i); OLED_write_iic_com(0x00); OLED_write_iic_com(0x10); for(n=0;n<128;n++)OLED_write_iic_dat(0); }}voidOLED_Init(void){ OLED_GPIO_Init();//引脚初始化 OLED_write_iic_com(0xae);//--turnoffoledpanel OLED_write_iic_com(0x00);//setlowcolumnaddress OLED_write_iic_com(0x10);//sethighcolumnaddress OLED_write_iic_com(0x40);//--setstartlineaddressSetMappingRAMDisplayStartLine(0x00~0x3F)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理质控组长护理质量控制效果评价
- 护理警示教育:常见事故案例分析
- 山东省济宁市2026年5月九年级道德与法治中考模拟冲刺试卷(含答案)
- 民间工艺品制作工安全素养能力考核试卷含答案
- 旅游团队领队安全理论测试考核试卷含答案
- 2026年新科教版高中高一数学上册第一单元集合关系运算卷含答案
- 2026年新科教版高中高一地理下册第一单元人口结构问题分析卷含答案
- 玉米收获机操作工岗前安全文明考核试卷含答案
- 煤制烯烃生产工岗前基础效率考核试卷含答案
- 拜耳法溶出工操作能力评优考核试卷含答案
- 2026山西晋城市城区城市建设投资经营有限公司招聘15人备考题库含答案详解(考试直接用)
- 2026陕西紫光辰济药业有限公司招聘5人笔试备考题库及答案解析
- 2026年注册消防工程师继续教育通关试题库附答案详解(满分必刷)
- 2026年信息处理和存储支持服务行业分析报告及未来发展趋势报告
- (二模)太原市2026年高三年级模拟考试(二)语文试卷(含答案及解析)
- 2026年度职业病防治宣传周培训课件
- 2026食品安全抽查考试试题与答案
- 特种设备考核奖惩制度
- 2026春统编版三年级下册道德与法治每课知识点清单
- 2025浙江温州建设集团有限公司面向社会招聘38人笔试历年难易错考点试卷带答案解析2套试卷
- 油漆车间安全培训
评论
0/150
提交评论