立创开源DIY基于AIR001单片机与275nm深紫外灯的衣柜杀菌灯设计与实现最近杭州这天气住背阴宿舍的朋友们应该深有体会衣柜里的衣服总感觉潮乎乎的还容易有霉味。为了解决这个问题我动手做了一个专门放在衣柜里用的紫外杀菌灯。它用275nm的深紫外灯珠来杀菌用AIR001单片机控制靠电池供电还能定时工作最关键的是整个项目在立创开源平台都公开了从电路图到3D打印外壳文件都有。今天我就把这个从想法到成品的完整制作过程分享给大家无论你是想自己做一个用还是想学习怎么做一个完整的嵌入式小项目这篇教程都能帮到你。咱们这个杀菌灯有几个核心特点杀菌核心用了8颗275nm波长的深紫外LED灯珠这个波段的紫外线杀菌效果很好。动力来源设计了两节21700锂电池的仓位支持22.5W的PD快充续航和充电都很方便。控制大脑主控是AIR001单片机和PY32F002A是同一颗芯片用它内置的低功耗定时器LPTIM来定时唤醒整机待机功耗非常低。工作逻辑我预设的固件是每休眠45分钟就唤醒工作3分钟进行杀菌这个周期可以根据需要调整。下面我就从硬件选型、电路设计、软件编程到外壳组装一步步带大家完成这个项目。1. 硬件设计与元器件选型做硬件项目第一步就是把需要的零件都搞清楚、选合适。咱们这个杀菌灯结构不复杂主要就是控制、供电和执行三部分。1.1 核心控制器AIR001单片机我选择AIR001作为主控芯片它其实就是PY32F002A的另一个品牌型号内核是ARM Cortex-M0价格非常便宜性能对于这个小项目绰绰有余。它的最大亮点是低功耗。我们这个灯大部分时间都在休眠只有定时到了才亮一会儿所以芯片的休眠电流至关重要。AIR001配合其低功耗定时器LPTIM可以在深度睡眠下保持定时同时消耗极少的电流这正是我们项目需要的。在编程环境上AIR001可以用Arduino来开发这对初学者和快速原型制作非常友好省去了配置复杂开发环境的麻烦。当然如果你习惯用Keil或标准库也一样可以。1.2 杀菌光源275nm深紫外LED紫外线杀菌不是所有波段都有效。UVC波段200-280nm的紫外线尤其是275nm左右的能直接破坏微生物的DNA/RNA使其失去繁殖能力杀菌效率很高。我选择了8颗275nm的灯珠。为什么不只用一颗因为单颗UVC LED的功率有限多颗并联可以增大照射面积和强度确保衣柜角落也能被覆盖到。这些灯珠在立创商城就能找到有时还能用优惠券性价比很高。注意UVC紫外线对人体皮肤和眼睛有伤害在调试和安装时绝对不要用眼睛直视点亮的灯珠也不要让皮肤长时间暴露在其照射下。我们的设计会把灯珠密封在外壳内只有安装在封闭的衣柜中时才工作以确保安全。1.3 供电系统21700电池与PD快充为了摆脱电线的束缚我决定采用电池供电。21700锂电池是目前容量和体积平衡得比较好的型号单节容量通常在4000-5000mAh。我设计了一个双电池仓位可以放入两节21700电池提供更长的续航。充电方面加入了支持22.5W PD功率传输协议的快充模块。这意味着你可以用常见的手机PD充电头比如18W、20W、30W的和Type-C线给它快速充电非常方便。关于电池的选择有两个思路追求高性能可以选择像LG M58LG INR21700-M58T这类容量大、放电性能好的电芯。追求极致性价比可以直接在电商平台寻找便宜的拆机电芯比如一些品牌的动力电池价格可能低至3、4元一节完全能满足我们这个低功耗项目的需求。1.4 其他关键部件微动开关安装在侧面用作“衣柜门检测开关”。当衣柜门关上时开关被压下系统进入正常工作模式定时杀菌。当衣柜门打开时开关弹起系统会立即停止紫外灯工作防止紫外线泄露这是重要的安全设计。Type-C接口用于充电和程序烧录。LED指示灯用于显示工作状态如充电中、杀菌中、低电量等。2. 电路设计要点与PCB制作电路原理图和PCB设计文件已经在立创EDA开源。这里我挑几个关键部分讲讲设计思路。整个电路的核心是AIR001最小系统包括晶振或使用内部RC振荡器、复位电路和调试接口。由于我们用了Arduino环境并且预留了串口烧录焊盘所以调试接口SWD不是必须的但留着 pads 以备不时之需总是好的。紫外LED驱动部分LED是电流型器件直接用单片机引脚驱动是不稳定且危险的。我们需要一个“驱动电路”。这里采用了一个简单的MOS管开关电路。单片机的一个GPIO引脚控制MOS管的通断从而控制8颗并联的UV LED的供电。需要在LED回路中串联一个合适阻值的限流电阻来计算这个电阻值我们需要知道单颗UV LED的正向电压Vf比如3.2V。单颗UV LED的工作电流If比如20mA。电池供电电压VBAT单节锂电满电约4.2V两节并联电压不变仍是4.2V。假设8颗并联总电流Itotal 8 * If。那么限流电阻R (VBAT - Vf) / Itotal。实际选择电阻时要选择功率足够的功率P Itotal^2 * R并略留余量。电池管理与充电这部分直接使用了现成的PD快充模块和锂电池保护板。PD模块负责从Type-C口取电并降压到给电池充电所需的电压通常4.2V。保护板则负责防止电池过充、过放和短路是安全必备。PCB布局时要把大电流路径如电池到LED驱动部分的走线加粗。模拟部分如果有传感器和数字部分适当分开。所有元器件的封装一定要核对准确特别是立创商城买的灯珠和Type-C座子。设计好后就可以在立创EDA下单打板了价格很便宜。3. 软件编程与低功耗逻辑软件是让硬件“活”起来的关键。我们的核心需求是低功耗定时、安全控制门开关检测、驱动LED。3.1 开发环境搭建首先我们需要在Arduino IDE中添加对AIR001的支持。打开Arduino IDE点击“文件” - “首选项”。在“附加开发板管理器网址”中添加AIR001的板支持地址这个地址需要在沁恒或开源社区查找通常是一个JSON文件的URL。点击“工具” - “开发板” - “开发板管理器”搜索“AIR001”并安装。安装后在“工具” - “开发板”列表中就能选择“AIR001”了。3.2 程序逻辑详解整个程序运行在一个状态循环里核心是使用LPTIM实现定时休眠与唤醒。#include Arduino.h // 引脚定义 #define UV_LED_PIN PA1 // 控制UV灯的MOS管引脚 #define DOOR_SW_PIN PA4 // 门开关检测引脚按下为低电平需根据实际硬件确定 #define CHARGE_STAT_PIN PA5 // 充电状态检测引脚可选 // 时间常量 (单位分钟) const unsigned long SLEEP_DURATION 45; // 休眠45分钟 const unsigned long WORK_DURATION 3; // 工作3分钟 void setup() { pinMode(UV_LED_PIN, OUTPUT); digitalWrite(UV_LED_PIN, LOW); // 初始关闭UV灯 pinMode(DOOR_SW_PIN, INPUT_PULLUP); // 门开关内部上拉 // 初始化串口用于调试可选 Serial.begin(115200); Serial.println(UV Sterilizer Boot); // 配置低功耗定时器 (LPTIM) // 注意AIR001的Arduino核心库可能已封装相关函数如LowPower.sleep() // 这里需要根据具体的库函数来写以下为逻辑示意 configure_LPTIM(SLEEP_DURATION * 60 * 1000); // 将分钟转换为毫秒传入 } void loop() { // 1. 检测衣柜门状态 if(digitalRead(DOOR_SW_PIN) HIGH) { // 假设开关弹起门开为高电平 // 门是开的立即关闭UV灯并进入深度休眠等待门关 digitalWrite(UV_LED_PIN, LOW); Serial.println(Door Open! UV OFF. Waiting...); enter_deep_sleep_until_pin_change(); // 进入一种能被引脚变化唤醒的睡眠模式 // 当门关上开关被按下引脚电平变化唤醒单片机程序会从这里继续 Serial.println(Door Closed. Resuming.); delay(100); // 简单防抖 return; // 返回loop开头重新检查状态并开始新周期 } // 2. 门是关的执行一个工作周期 Serial.println(Start Sterilizing Cycle); digitalWrite(UV_LED_PIN, HIGH); // 打开UV灯 delay(WORK_DURATION * 60 * 1000); // 工作3分钟 digitalWrite(UV_LED_PIN, LOW); // 关闭UV灯 Serial.println(Sterilization Done. Going to Sleep.); // 3. 进入定时休眠 enter_LPTIM_sleep(SLEEP_DURATION * 60 * 1000); // 休眠45分钟 // LPTIM时间到硬件自动唤醒单片机程序从下一行继续 Serial.println(Wake Up from Timer.); }程序逻辑梳理初始化设置好各个引脚的模式配置低功耗定时器。门状态检查安全第一每次醒来或启动先检查门开关。如果门开着立刻关灯并进入一种能被“门关闭”动作唤醒的深度睡眠。正常工作循环确认门关着后打开UV灯持续WORK_DURATION3分钟。休眠关闭UV灯调用低功耗函数让单片机休眠SLEEP_DURATION45分钟。定时唤醒依靠LPTIM单片机在45分钟后自动醒来回到第2步开始下一个循环。configure_LPTIM和enter_LPTIM_sleep这两个函数需要根据你所用的AIR001 Arduino库的具体API来实现。有些库可能直接提供了LowPower.sleep(milliseconds)这样的函数。3.3 程序烧录AIR001可以通过串口UART烧录程序。在PCB上找到串口烧录的焊盘通常是TX、RX、GND。用杜邦线连接一个USB转TTL串口模块。在Arduino IDE中选择正确的端口点击上传。如果一次不成功可能需要在上电瞬间让芯片进入烧录模式拉低某个引脚再复位具体操作要参考AIR001的数据手册。你也可以直接使用我提供的编译好的.bin文件通过专用的烧录工具软件直接写入芯片的Flash这样更快捷。4. 结构组装与安装指南硬件和软件都准备好了最后一步就是把它们装起来变成一个成品。4.1 3D打印外壳外壳的3D模型文件我会开源到MakerWorld等平台。设计软件是Fusion 360。打印材料建议推荐使用PETG材料进行FDM熔融沉积打印。PETG比PLA更耐潮湿和一定的温度变化更适合衣柜环境。如果使用SLA光固化打印虽然表面光滑但材料强度可能不如PETG如果觉得强度不够可以在关键连接处使用胶水加固。打印设置根据你的打印机进行常规设置即可。外壳设计时已经考虑了打印的便利性无需支撑。4.2 组装步骤焊接PCB将所有元器件焊接到PCB上。焊接UVC LED时要快避免过热损坏。焊接完成后务必先用万用表检查有无短路。安装电池将21700电池放入外壳的电池仓内注意正负极连接好导线。固定PCB将焊接好的主板放入外壳的卡槽内可能需要用螺丝或卡扣固定。合盖将外壳的上盖和下盖对齐用螺丝拧紧。确保门开关的按键位置对准外壳的开孔。4.3 安装到衣柜这是保证安全和效果的最后一步。位置选择将杀菌灯安装在衣柜的顶部中央位置这样紫外线可以向下均匀照射。安装方式强烈推荐使用“魔术贴”。在外壳背面和衣柜顶部各贴一片带背胶的魔术贴毛面和刺面。这样粘贴的好处是安装牢固。需要充电时可以轻松地将整个灯从衣柜上取下来充完电再贴回去非常方便。关键检查粘贴时务必确保外壳侧面的微动开关那一侧在衣柜门完全关上时能被门板压下去。你可以先关门测试一下确认开关能被触发。这是防止紫外线泄露的核心安全机制。全部完成后把灯贴好关上衣柜门它就会开始自动执行“休眠45分钟 - 杀菌3分钟”的循环了。你可以安心地把除湿防霉的任务交给它。需要充电时打开衣柜门灯会自动停止工作你把它取下来用Type-C线连接PD充电器即可红灯亮表示在充电绿灯亮表示充满。
立创开源DIY:基于AIR001单片机与275nm深紫外灯的衣柜杀菌灯设计与实现
立创开源DIY基于AIR001单片机与275nm深紫外灯的衣柜杀菌灯设计与实现最近杭州这天气住背阴宿舍的朋友们应该深有体会衣柜里的衣服总感觉潮乎乎的还容易有霉味。为了解决这个问题我动手做了一个专门放在衣柜里用的紫外杀菌灯。它用275nm的深紫外灯珠来杀菌用AIR001单片机控制靠电池供电还能定时工作最关键的是整个项目在立创开源平台都公开了从电路图到3D打印外壳文件都有。今天我就把这个从想法到成品的完整制作过程分享给大家无论你是想自己做一个用还是想学习怎么做一个完整的嵌入式小项目这篇教程都能帮到你。咱们这个杀菌灯有几个核心特点杀菌核心用了8颗275nm波长的深紫外LED灯珠这个波段的紫外线杀菌效果很好。动力来源设计了两节21700锂电池的仓位支持22.5W的PD快充续航和充电都很方便。控制大脑主控是AIR001单片机和PY32F002A是同一颗芯片用它内置的低功耗定时器LPTIM来定时唤醒整机待机功耗非常低。工作逻辑我预设的固件是每休眠45分钟就唤醒工作3分钟进行杀菌这个周期可以根据需要调整。下面我就从硬件选型、电路设计、软件编程到外壳组装一步步带大家完成这个项目。1. 硬件设计与元器件选型做硬件项目第一步就是把需要的零件都搞清楚、选合适。咱们这个杀菌灯结构不复杂主要就是控制、供电和执行三部分。1.1 核心控制器AIR001单片机我选择AIR001作为主控芯片它其实就是PY32F002A的另一个品牌型号内核是ARM Cortex-M0价格非常便宜性能对于这个小项目绰绰有余。它的最大亮点是低功耗。我们这个灯大部分时间都在休眠只有定时到了才亮一会儿所以芯片的休眠电流至关重要。AIR001配合其低功耗定时器LPTIM可以在深度睡眠下保持定时同时消耗极少的电流这正是我们项目需要的。在编程环境上AIR001可以用Arduino来开发这对初学者和快速原型制作非常友好省去了配置复杂开发环境的麻烦。当然如果你习惯用Keil或标准库也一样可以。1.2 杀菌光源275nm深紫外LED紫外线杀菌不是所有波段都有效。UVC波段200-280nm的紫外线尤其是275nm左右的能直接破坏微生物的DNA/RNA使其失去繁殖能力杀菌效率很高。我选择了8颗275nm的灯珠。为什么不只用一颗因为单颗UVC LED的功率有限多颗并联可以增大照射面积和强度确保衣柜角落也能被覆盖到。这些灯珠在立创商城就能找到有时还能用优惠券性价比很高。注意UVC紫外线对人体皮肤和眼睛有伤害在调试和安装时绝对不要用眼睛直视点亮的灯珠也不要让皮肤长时间暴露在其照射下。我们的设计会把灯珠密封在外壳内只有安装在封闭的衣柜中时才工作以确保安全。1.3 供电系统21700电池与PD快充为了摆脱电线的束缚我决定采用电池供电。21700锂电池是目前容量和体积平衡得比较好的型号单节容量通常在4000-5000mAh。我设计了一个双电池仓位可以放入两节21700电池提供更长的续航。充电方面加入了支持22.5W PD功率传输协议的快充模块。这意味着你可以用常见的手机PD充电头比如18W、20W、30W的和Type-C线给它快速充电非常方便。关于电池的选择有两个思路追求高性能可以选择像LG M58LG INR21700-M58T这类容量大、放电性能好的电芯。追求极致性价比可以直接在电商平台寻找便宜的拆机电芯比如一些品牌的动力电池价格可能低至3、4元一节完全能满足我们这个低功耗项目的需求。1.4 其他关键部件微动开关安装在侧面用作“衣柜门检测开关”。当衣柜门关上时开关被压下系统进入正常工作模式定时杀菌。当衣柜门打开时开关弹起系统会立即停止紫外灯工作防止紫外线泄露这是重要的安全设计。Type-C接口用于充电和程序烧录。LED指示灯用于显示工作状态如充电中、杀菌中、低电量等。2. 电路设计要点与PCB制作电路原理图和PCB设计文件已经在立创EDA开源。这里我挑几个关键部分讲讲设计思路。整个电路的核心是AIR001最小系统包括晶振或使用内部RC振荡器、复位电路和调试接口。由于我们用了Arduino环境并且预留了串口烧录焊盘所以调试接口SWD不是必须的但留着 pads 以备不时之需总是好的。紫外LED驱动部分LED是电流型器件直接用单片机引脚驱动是不稳定且危险的。我们需要一个“驱动电路”。这里采用了一个简单的MOS管开关电路。单片机的一个GPIO引脚控制MOS管的通断从而控制8颗并联的UV LED的供电。需要在LED回路中串联一个合适阻值的限流电阻来计算这个电阻值我们需要知道单颗UV LED的正向电压Vf比如3.2V。单颗UV LED的工作电流If比如20mA。电池供电电压VBAT单节锂电满电约4.2V两节并联电压不变仍是4.2V。假设8颗并联总电流Itotal 8 * If。那么限流电阻R (VBAT - Vf) / Itotal。实际选择电阻时要选择功率足够的功率P Itotal^2 * R并略留余量。电池管理与充电这部分直接使用了现成的PD快充模块和锂电池保护板。PD模块负责从Type-C口取电并降压到给电池充电所需的电压通常4.2V。保护板则负责防止电池过充、过放和短路是安全必备。PCB布局时要把大电流路径如电池到LED驱动部分的走线加粗。模拟部分如果有传感器和数字部分适当分开。所有元器件的封装一定要核对准确特别是立创商城买的灯珠和Type-C座子。设计好后就可以在立创EDA下单打板了价格很便宜。3. 软件编程与低功耗逻辑软件是让硬件“活”起来的关键。我们的核心需求是低功耗定时、安全控制门开关检测、驱动LED。3.1 开发环境搭建首先我们需要在Arduino IDE中添加对AIR001的支持。打开Arduino IDE点击“文件” - “首选项”。在“附加开发板管理器网址”中添加AIR001的板支持地址这个地址需要在沁恒或开源社区查找通常是一个JSON文件的URL。点击“工具” - “开发板” - “开发板管理器”搜索“AIR001”并安装。安装后在“工具” - “开发板”列表中就能选择“AIR001”了。3.2 程序逻辑详解整个程序运行在一个状态循环里核心是使用LPTIM实现定时休眠与唤醒。#include Arduino.h // 引脚定义 #define UV_LED_PIN PA1 // 控制UV灯的MOS管引脚 #define DOOR_SW_PIN PA4 // 门开关检测引脚按下为低电平需根据实际硬件确定 #define CHARGE_STAT_PIN PA5 // 充电状态检测引脚可选 // 时间常量 (单位分钟) const unsigned long SLEEP_DURATION 45; // 休眠45分钟 const unsigned long WORK_DURATION 3; // 工作3分钟 void setup() { pinMode(UV_LED_PIN, OUTPUT); digitalWrite(UV_LED_PIN, LOW); // 初始关闭UV灯 pinMode(DOOR_SW_PIN, INPUT_PULLUP); // 门开关内部上拉 // 初始化串口用于调试可选 Serial.begin(115200); Serial.println(UV Sterilizer Boot); // 配置低功耗定时器 (LPTIM) // 注意AIR001的Arduino核心库可能已封装相关函数如LowPower.sleep() // 这里需要根据具体的库函数来写以下为逻辑示意 configure_LPTIM(SLEEP_DURATION * 60 * 1000); // 将分钟转换为毫秒传入 } void loop() { // 1. 检测衣柜门状态 if(digitalRead(DOOR_SW_PIN) HIGH) { // 假设开关弹起门开为高电平 // 门是开的立即关闭UV灯并进入深度休眠等待门关 digitalWrite(UV_LED_PIN, LOW); Serial.println(Door Open! UV OFF. Waiting...); enter_deep_sleep_until_pin_change(); // 进入一种能被引脚变化唤醒的睡眠模式 // 当门关上开关被按下引脚电平变化唤醒单片机程序会从这里继续 Serial.println(Door Closed. Resuming.); delay(100); // 简单防抖 return; // 返回loop开头重新检查状态并开始新周期 } // 2. 门是关的执行一个工作周期 Serial.println(Start Sterilizing Cycle); digitalWrite(UV_LED_PIN, HIGH); // 打开UV灯 delay(WORK_DURATION * 60 * 1000); // 工作3分钟 digitalWrite(UV_LED_PIN, LOW); // 关闭UV灯 Serial.println(Sterilization Done. Going to Sleep.); // 3. 进入定时休眠 enter_LPTIM_sleep(SLEEP_DURATION * 60 * 1000); // 休眠45分钟 // LPTIM时间到硬件自动唤醒单片机程序从下一行继续 Serial.println(Wake Up from Timer.); }程序逻辑梳理初始化设置好各个引脚的模式配置低功耗定时器。门状态检查安全第一每次醒来或启动先检查门开关。如果门开着立刻关灯并进入一种能被“门关闭”动作唤醒的深度睡眠。正常工作循环确认门关着后打开UV灯持续WORK_DURATION3分钟。休眠关闭UV灯调用低功耗函数让单片机休眠SLEEP_DURATION45分钟。定时唤醒依靠LPTIM单片机在45分钟后自动醒来回到第2步开始下一个循环。configure_LPTIM和enter_LPTIM_sleep这两个函数需要根据你所用的AIR001 Arduino库的具体API来实现。有些库可能直接提供了LowPower.sleep(milliseconds)这样的函数。3.3 程序烧录AIR001可以通过串口UART烧录程序。在PCB上找到串口烧录的焊盘通常是TX、RX、GND。用杜邦线连接一个USB转TTL串口模块。在Arduino IDE中选择正确的端口点击上传。如果一次不成功可能需要在上电瞬间让芯片进入烧录模式拉低某个引脚再复位具体操作要参考AIR001的数据手册。你也可以直接使用我提供的编译好的.bin文件通过专用的烧录工具软件直接写入芯片的Flash这样更快捷。4. 结构组装与安装指南硬件和软件都准备好了最后一步就是把它们装起来变成一个成品。4.1 3D打印外壳外壳的3D模型文件我会开源到MakerWorld等平台。设计软件是Fusion 360。打印材料建议推荐使用PETG材料进行FDM熔融沉积打印。PETG比PLA更耐潮湿和一定的温度变化更适合衣柜环境。如果使用SLA光固化打印虽然表面光滑但材料强度可能不如PETG如果觉得强度不够可以在关键连接处使用胶水加固。打印设置根据你的打印机进行常规设置即可。外壳设计时已经考虑了打印的便利性无需支撑。4.2 组装步骤焊接PCB将所有元器件焊接到PCB上。焊接UVC LED时要快避免过热损坏。焊接完成后务必先用万用表检查有无短路。安装电池将21700电池放入外壳的电池仓内注意正负极连接好导线。固定PCB将焊接好的主板放入外壳的卡槽内可能需要用螺丝或卡扣固定。合盖将外壳的上盖和下盖对齐用螺丝拧紧。确保门开关的按键位置对准外壳的开孔。4.3 安装到衣柜这是保证安全和效果的最后一步。位置选择将杀菌灯安装在衣柜的顶部中央位置这样紫外线可以向下均匀照射。安装方式强烈推荐使用“魔术贴”。在外壳背面和衣柜顶部各贴一片带背胶的魔术贴毛面和刺面。这样粘贴的好处是安装牢固。需要充电时可以轻松地将整个灯从衣柜上取下来充完电再贴回去非常方便。关键检查粘贴时务必确保外壳侧面的微动开关那一侧在衣柜门完全关上时能被门板压下去。你可以先关门测试一下确认开关能被触发。这是防止紫外线泄露的核心安全机制。全部完成后把灯贴好关上衣柜门它就会开始自动执行“休眠45分钟 - 杀菌3分钟”的循环了。你可以安心地把除湿防霉的任务交给它。需要充电时打开衣柜门灯会自动停止工作你把它取下来用Type-C线连接PD充电器即可红灯亮表示在充电绿灯亮表示充满。