做网站页面的软件无形资产 网站建设
2025/12/26 22:15:43 网站建设 项目流程
做网站页面的软件,无形资产 网站建设,今天出入上海最新通知,手机网站开发建设方案Chaos-nano 在手持式 VOC 检测设备上的应用 Chaos-nano 在手持式 VOC 检测设备上的应用Chaos-nano 在手持式 VOC 检测设备上的应用产品开发背景VOC 的危害产品开发的必要性产品介绍产品结构核心优势#xff1a;极致便携性设计核心芯片#xff1a;STM8L151F3 详细介绍系统整体…Chaos-nano在手持式VOC检测设备上的应用Chaos-nano 在手持式 VOC 检测设备上的应用Chaos-nano 在手持式 VOC 检测设备上的应用产品开发背景VOC 的危害产品开发的必要性产品介绍产品结构核心优势极致便携性设计核心芯片STM8L151F3 详细介绍系统整体框架产品系统实现分析工作流程软件实现任务分类与优先级设定核心任务代码逻辑解析Chaos-nano 在开发中带来的优势新旧软件代码对比传统开发模式带来的问题使用 Chaos-nano 操作系统后的代码优势Chaos-nano 带来的核心价值总结1. 提升产品易用性2. 降低开发与维护成本加速产品迭代3. 释放硬件潜力保障核心产品特性产品视频产品开发背景VOC的危害VOC挥发性有机化合物是常温下易挥发的有机化学物质广泛存在于室内装修材料甲醛、苯、家具板材、汽车内饰、日用化学品清洁剂、香水等场景中对人体健康具有显著危害。尤其对老人与孕妇这两类特殊群体VOC危害更为突出孕妇孕期免疫力较低长期接触VOC可能影响胎儿正常发育增加胎儿畸形、早产、流产的风险其中甲醛、苯等物质已被证实具有明确的生殖毒性老人身体机能衰退呼吸系统、心血管系统及肝脏肾脏功能较弱VOC刺激易引发呼吸道感染、头晕胸闷、血压波动等症状长期暴露可能加重慢性疾病如哮喘、冠心病。此外VOC还会导致室内空气质量下降引发眼睛干涩、皮肤瘙痒等不适影响特殊群体的日常生活质量。产品开发的必要性随着居民对健康重视程度的提升老人与孕妇的居住环境安全成为家庭核心关注点但传统VOC检测存在明显痛点专业检测机构服务价格高昂单次检测费用数百至数千元且检测周期长无法满足日常高频监测需求大型实验室仪器体积庞大、操作复杂老人与孕妇难以独立使用更无法随身携带普通家用检测工具体积大多数续航较短无法支撑长时间外出检测;针对老人与孕妇群体的使用需求需要一款可以随身携带、可以长时间工作的VOC检测设备同时需要具备操作极简、数据直观、安全无辐射等核心特性。基于该思路开发面向老人与孕妇的手持式VOC检测设备具有极强的现实必要性与社会价值。产品介绍该产品以“极致便携长续航”为核心设计目标为了能够满足便携在外观设计上采用了这种直径 4 cm 的圆形的外观设计为了能够长时间工作在器件选择上选用了低功耗的 8 位单片机STM8L151F3并且在系统软件设计上采用了Chaos-nano操作系统——该系统是轻量级的异步协作式操作系统可以在任务不执行的时候阻塞任务且可以在合适的时候进入到低功耗状态——进一步降低了产品的功耗。产品结构手持式VOC检测设备基于Chaos-nano操作系统与STM8L151F3芯片构建针对老人与孕妇的使用习惯采用“极简设计核心功能聚焦”的模块化结构核心组成包括硬件层控制核心STM8L151F3微控制器小巧封装降低设备体积传感模块高精度低功耗VOC传感器温湿度传感器 SHT21显示模块0.95 英寸OLED显示屏操作模块一键式操作按键仅保留开机/唤醒、显示切换 2 个核心按键简化操作电源模块限于产品体积该产品采用了150 mAh并采用usb-micro接口支持 5V 充电适配家庭常用充电器系统层搭载Chaos-nano操作系统提供轻量化任务调度、中断处理、低功耗管理等核心功能适配STM8L151F3的硬件资源限制确保设备运行稳定、续航持久。应用层聚焦老人与孕妇的核心需求包含快速检测、数据精准显示、安全报警、一键校准等功能模块简化冗余操作同时通过深度功耗优化确保150 mAh电池支撑持续工作 8 小时以上。核心优势极致便携性设计依托150 mAh紧凑锂电池与STM8L151F3芯片的小巧封装以及轻量级的Chaos-nano操作系统设备实现“口袋级便携”尺寸长 40 mm × 宽 40 mm × 厚 10 mm并配有钥匙孔便于老人与孕妇可轻松放入口袋、手提包或随身悬挂几乎无携带负担材质外壳采用 ABS 塑料表面防滑处理手感舒适便于握持边角圆润无棱角避免磕碰伤害与铝合金铝块结合使整体不显单调续航适配usb-micro接口支持充电宝、手机充电器、电脑 USB 口等多种充电方式外出时可随时补充电量配合 8 小时以上持续工作能力满足全天外出检测需求如就医、购物、探访亲友等场景。核心芯片STM8L151F3详细介绍STM8L151F3是意法半导体推出的超低功耗 8 位微控制器基于STM8内核架构专为电池供电的便携式智能设备设计其特性与“150 mAh 电池8 小时续航”的产品定位及老人、孕妇的使用需求高度适配是设备的理想控制核心内核与主频采用STM8增强型内核最高工作频率 16 MHz支持 16 位乘法指令与硬件除法指令执行效率高可快速响应传感器数据采集、按键操作等实时任务确保设备“开机即测、数据秒出”无需老人与孕妇长时间等待。存储资源内置 8 KB Flash 与 1 KB RAM与Chaos-nano操作系统的轻量化设计完美匹配——内核仅占用 500 余字节 RAM剩余内存可充分支撑传感器数据处理、报警逻辑等核心功能无需额外扩展存储芯片既降低设备体积与成本又减少故障风险。运行模式持续检测状态16 MHz 主频下芯片自身功耗仅 240 μA/MHz约 3.8 mASTM8L151F3集成多种实用外设无需额外扩展芯片既简化设备结构、缩小体积又降低功耗芯片封装小巧UFQFPN20 封装尺寸 4 mm × 4 mm可大幅缩小设备体积为 150mAh电池的紧凑布局提供硬件基础。系统整体框架系统采用“硬件驱动-操作系统-应用层”三层架构底层驱动层由STM8L15x_StdPeriph_Driver驱动库与自定义设备驱动组成实现STM8L151F3芯片外设ADC、I2C、GPIO等及VOC传感器、显示模块、按键等硬件的底层控制重点优化低功耗驱动逻辑与数据采集精度对应代码中的devices目录及stm8l15x_it.c/stm8l15x_it.h中断处理文件。操作系统层即Chaos-nano内核kernel目录负责任务调度如“采集-处理-显示”任务优先级管理、低功耗管理核心功能通过精简设计确保在STM8L151F3的 1 KB RAM 中高效运行同时优化任务切换延迟与功耗控制策略平衡续航与响应速度。应用层优化核心逻辑包括传感器快速采集handle.c/handle.h数据直观显示操作逻辑简化仅 2 个按键开机自动检测无操作自动休眠;产品系统实现分析工作流程按下开机键之后系统进行初始化并启动开机键检测任务。当检测到开机键持续 3 s 按下后设置电源开机并显示第一屏内容按下切屏按键后会触发相应的中断在中断中启动切屏任务当从中断返回后调度器优先调度切屏任务在切屏任务中会切换显示内容上电后系统会按照一定的延迟进行数据采集每 1 s 启动温湿度任务采集一次温湿度当采集到数据后刷新显示每 1 s 启动VOC任务采集一次VOC数据当采集到数据后刷新显示每 2 s 启动电池任务采集一次电池的电量和充电状态然后刷新显示显示刷新显示刷新没有设定单独的任务因此显示刷新属于同步操作——这里没有采用单独的任务进行异步刷新显示通过全局标志来判断当前处于哪个屏幕显示当有当前屏幕的内容需要刷新时会对屏幕进行刷新否则直接返回电池标志在每个屏幕上都有所以当有电池数据需要刷新时会及时刷新该部分显示软件实现任务分类与优先级设定该软件基于IAR for STM8开发环境搭配Chaos-nano操作系统采用“任务化”设计将功能拆解为5个独立的任务电源按键检测任务切屏按键检测任务温湿度(SHT21)检测任务VOC检测任务电池状态与电量检测任务通过基于优先级调度实现高效协同工作。任务 ID任务名称核心功能优先级触发方式TASK_ID_POWER电源按键检测检测电源按键是否在规定的时间内保持按下状态0中断TASK_ID_KEY切屏按键检测切换显示屏幕1中断TASK_ID_SHT21温湿度检测获取温湿度检测数据2定时器TASK_ID_TVOCVOC检测获取VOC检测数据3定时器TASK_ID_BAT电池检测检测电池的充电状态与电池电量4定时器核心任务代码逻辑解析主调度逻辑主函数通过 “获取下一个高优先级任务→执行任务→状态重置” 的循环实现任务调度核心逻辑如下voidstart_kernel(void){board_init();task_init();time_init();device_on();while(1){switch(task_getNextPriority()){caseTASK_ID_POWER:powerOnHandle();break;caseTASK_ID_KEY:keyHandle();break;caseTASK_ID_SHT21:Get_TempHum();break;caseTASK_ID_TVOC:Get_Tvoc();break;caseTASK_ID_BAT:Check_Charge_Bat();break;caseTASK_ID_DISP://bat_pic(3,50, pow_bat[1]);break;default:task_restoreAll();if(IDLE_PRItask_getNextPriority()){sleep_cpu();}break;}}}电源键检测当按下电源按键后会通过中断触发TASK_ID_POWER任务如果在电源关闭的状态下按下该任务中会先延迟 3 s 后再次判断该按键是否保持按下状态如果保持按钮下状态则设置相应的引脚和标志位如果在电源开启的状态下按下该任务中会先延迟 5 s 后再次判断该按键是否保持按下状态如果保持按钮下状态则设置相应的引脚和标志位voidpowerOnHandle(void){staticbool flagfalse;if(!powerOn){if(!flag){if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)!RESET){time_create(TASK_ID_POWER,3000,flag,true);}else{time_cancel(TASK_ID_POWER);}}else{if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)!RESET){powerOntrue;GPIO_ResetBits(GPIOD,GPIO_Pin_0);GPIO_SetBits(GPIOA,GPIO_Pin_2);curDispPageNumberDISP_UPDATE_SHT21;update_disp(curDispPageNumber);}}}else{if(!flag){if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)!RESET){time_create(TASK_ID_POWER,5000,flag,true);}else{time_cancel(TASK_ID_POWER);}}else{if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)!RESET){powerOnfalse;GPIO_SetBits(GPIOD,GPIO_Pin_0);GPIO_ResetBits(GPIOA,GPIO_Pin_2);curDispPageNumberDISP_UPDATE_POWER_OFF;update_disp(curDispPageNumber);}}}task_setBlock(TASK_ID_POWER);flagfalse;return;}温度检测任务当温湿度传感器初始化时会启动一个定时器。当定时器计时结束时会触发TASK_ID_SHT21任务并在该任务中获取通过IIC从SHT21中获取温湿度数据更新屏幕显示且启动下一延迟。voidGet_TempHum(void){if(flag){flagfalse;Get_TempHum_1();update_disp(DISP_UPDATE_SHT21);time_create(TASK_ID_SHT21,DELAY_MS,flag,true);}task_setBlock(TASK_ID_SHT21);}Chaos-nano在开发中带来的优势由于使用的是 8 位单片机所以产品最初是使用的是传统的软件开发方式在Chaos-nano操作系统被开发后使用Chaos-nano操作系统对该项目进行了重构。新旧软件代码对比以下代码时传统模式开发中的按键处理部分voidKeyHandle(){OLED_CLS();while(1){if(Sleeping0){if(PowerStatusENABLE)//表示开机{Delay(3000);Check_Charge_Bat();Dis_Bat();if(page_nums0){//显示温度my_page3;Delay(1000);if(FlagChangeENABLE)//按下S2翻页{page_nums1;OLED_CLS();Dis_Uin();FlagChangeDISABLE;}Get_TempHum();Check_Charge_Bat();Dis_Bat();//OLED 显示Dis_Data(page_nums);}elseif(page_nums1){//显示RHmy_page0;Delay(1000);if(FlagChangeENABLE){page_nums2;OLED_CLS();Check_Charge_Bat();FlagChangeDISABLE;}Get_TempHum();Check_Charge_Bat();//OLED 显示Dis_Data(page_nums);}elseif(page_nums3){//显示TVOCmy_page2;Delay(1000);if(FlagChangeENABLE){page_nums0;OLED_CLS();FlagChangeDISABLE;}Get_Tvoc();//OLED 显示Dis_Data(page_nums);}elseif(page_nums2){//显示OC2my_page1;Delay(1000);if(FlagChangeENABLE){page_nums3;OLED_CLS();Check_Charge_Bat();FlagChangeDISABLE;}Check_Charge_Bat();Get_Tvoc();//OLED 显示Dis_Data(page_nums);}}elseif(PowerStatusDISABLE)//充电状态关机{Delay(3000);if(FlagSENABLE){FlagChangeDISABLE;page_nums0;FlagSDISABLE;//关闭OLED屏幕OLED_CLS();}}}ScreenDispose();}}使用Chaos-nano操作系统后的代码voidkeyHandle(void){if(!powerOn)return;curDispPageNumber(curDispPageNumberDISP_UPDATE_SHT21)?DISP_UPDATE_TVOC:DISP_UPDATE_SHT21;OLED_CLS();update_disp(DISP_UPDATE_BAT);update_disp(curDispPageNumber);task_setBlock(TASK_ID_KEY);}voidupdate_disp(enumdisp_update_tdisp_update_number){switch(disp_update_number){caseDISP_UPDATE_SHT21:{if(disp_update_number!curDispPageNumber)return;//显示温湿度......}break;caseDISP_UPDATE_TVOC:{uint16_tTvocmg_L0;uint16_teCO2PPM0;if(disp_update_number!curDispPageNumber)return;//显示甲醛和空气质量......}break;caseDISP_UPDATE_BAT:{if((curDispPageNumberDISP_UPDATE_SHT21)||(curDispPageNumberDISP_UPDATE_TVOC)){Dis_Bat(true);}else{Dis_Bat(false);}}break;caseDISP_UPDATE_POWER_OFF:{OLED_CLS();Dis_Bat(true);}break;}}传统开发模式带来的问题逻辑冗余且耦合度极高代码将按键检测、页面切换、数据采集温湿度、TVOC、OLED 显示、电池检测等功能 “堆叠” 在一个无限循环中各模块职责边界模糊。例如按键翻页逻辑与page_nums变量强绑定数据采集函数Get_TempHum()、Get_Tvoc()直接嵌入页面判断分支若需新增 “甲醛浓度单独显示” 页面需修改整个循环结构与多个判断条件牵一发而动全身。依赖Sleeping、PowerStatus、FlagChange等全局变量进行状态控制变量状态流转不透明排查问题时需追溯整个代码流程维护成本极高。阻塞式设计影响用户体验代码中大量使用Delay(1000)、Delay(3000)等阻塞延时函数期间 CPU 无法响应其他操作。对于用户而言按下按键后可能需等待 1-3 秒才能完成页面切换操作流畅度差若在延时期间触发其他按键如误触设备无任何响应易造成 “设备故障” 的误解。无限循环while(1)占用全部 CPU 资源即使设备处于无操作状态也无法进入低功耗模式直接导致电池的续航能力大幅缩水难以满足长时间工作的产品需求。扩展性差适配需求变更成本高页面切换逻辑通过page_nums的多分支if-else实现若需新增检测参数如温湿度、TVOC 之外增加 PM2.5 显示需新增page_nums枚举值、扩展判断分支、修改翻页逻辑代码量呈线性增长且容易引入逻辑错误。按键处理与显示、数据采集深度耦合若需优化操作逻辑如 “长按按键锁定数据”需在冗长的循环中插入新的判断条件破坏原有代码结构。使用Chaos-nano操作系统后的代码优势模块化拆分职责单一清晰将原代码拆分为 “按键处理keyHandle()” 与 “显示更新update_disp()” 两大独立模块按键仅负责触发页面切换显示仅负责根据页面类型更新内容数据采集可独立封装为任务各模块通过curDispPageNumber枚举变量通信职责边界明确。采用枚举enum disp_update_t定义显示类型DISP_UPDATE_SHT21、DISP_UPDATE_TVOC等新增页面时仅需扩展枚举值与update_disp()中的switch分支无需修改按键处理逻辑扩展性极强。例如新增 “甲醛显示” 页面仅需添加DISP_UPDATE_FORMALDEHYDE枚举项与对应的显示分支代码改动量不足 10 行。非阻塞式设计适配特殊群体操作需求彻底摒弃阻塞延时借助Chaos-nano的任务调度机制实现异步处理。按键按下后keyHandle()仅完成 “页面序号切换→触发显示更新→任务阻塞” 的核心逻辑无需等待数据采集、OLED 刷新等耗时操作可由独立任务异步执行用户按下按键后瞬间完成页面切换无延迟感操作体验更流畅。通过task_setBlock(TASK_ID_KEY)函数将按键任务阻塞避免短时间内重复触发同时释放CPU资源供其他任务如低功耗管理、数据校准使用。配合Chaos-nano的低功耗调度设备无操作时可快速进入休眠模式最大化延长电池的续航时间。状态管理透明维护效率大幅提升页面状态通过curDispPageNumber枚举变量统一管理取值范围明确仅对应已定义的显示类型避免了裸机代码中全局变量状态混乱的问题。例如update_disp()函数通过判断枚举值直接定位显示逻辑无需追溯全局变量的修改记录。逻辑分支从 4 个if-else简化为 1 个switch语句可读性极强。开发人员无需理解复杂的循环嵌套与延时逻辑即可快速定位问题或进行功能扩展大幅缩短产品迭代周期。低耦合设计适配产品功能迭代按键处理与数据采集、显示逻辑完全解耦。若需优化用户使用体验如 “默认显示 TVOC 浓度减少翻页操作”仅需修改curDispPageNumber的初始值若需调整电池显示逻辑仅需修改update_disp()中的DISP_UPDATE_BAT分支不影响其他功能模块。依托Chaos-nano的任务管理能力可轻松新增独立任务如 “低电量报警”“一键校准”无需担心与原有按键、显示逻辑冲突。例如新增 “校准任务” 时仅需创建新任务并添加新功能的代码原有代码无需改动。Chaos-nano带来的核心价值总结对于本项目而言Chaos-nano不仅是 “让代码更简洁”更是通过架构革新实现了三大核心价值1. 提升产品易用性非阻塞式设计消除了按键操作的延迟感模块化逻辑保障了设备运行的稳定性让老人与孕妇 “一键操作、即刻响应” 的核心需求得到充分满足降低了特殊群体的使用门槛。2. 降低开发与维护成本加速产品迭代简洁的代码结构、清晰的模块划分让开发人员无需花费大量时间梳理逻辑关系新增功能、修改需求时的代码改动量减少 60% 以上显著缩短产品开发周期与维护成本。3. 释放硬件潜力保障核心产品特性Chaos-nano的低功耗调度机制配合非阻塞式代码设计同时确保设备体积小巧、重量轻盈完美实现 “极致便携 长续航” 的产品定位。综上Chaos-nano操作系统通过对传统裸机代码的架构重构解决了逻辑冗余、耦合度高、扩展性差等痛点同时为开发团队提供了高效、灵活的开发框架成为产品核心竞争力的重要支撑。代码位置https://gitee.com/kongrong77/Chaos-nano/tree/main/examples/nose_chaos_nano产品视频https://gitee.com/kongrong77/Chaos-nano/blob/main/pic/voc.gif

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询