【开源日记】宿舍断电自动关灯设备(二):从机械臂到智能感知的升级之路

张开发
2026/5/24 14:52:09 15 分钟阅读
【开源日记】宿舍断电自动关灯设备(二):从机械臂到智能感知的升级之路
1. 从机械臂到智能感知的升级动机上次用机械臂光电二极管的方案解决了宿舍断电关灯问题后我发现这个初代设备存在三个明显痛点首先是光电二极管只能判断有光/无光的二元状态遇到阴雨天或台灯光线干扰就会误触发其次是固定角度的机械臂动作太死板有次把开关拨过了头导致接触不良最麻烦的是每次复电都需要手动按复位键有次周末回家后发现设备卡死在断电状态整整两天。这让我意识到需要更精细的环境感知能力。就像人类关灯时会根据室内明暗程度自然调整动作力度和时机理想的设备应该具备类似的环境适应能力。于是我开始研究如何用模拟量光线传感器替代原来的光电二极管通过ADC转换将光照强度量化为0-1024的数值这样就能识别从白天到黑夜的光线渐变过程。2. 传感器方案的迭代实验2.1 光线传感器的选型对比测试了三种常见方案光敏电阻成本最低单价0.3元但响应速度慢约200ms且线性度差BH1750数字光照传感器I2C接口即插即用但需要3.3V供电与现有5V系统不兼容TEMT6000模拟环境光传感器最终选择输出电流与光照强度呈线性关系实测在宿舍环境下能稳定输出1-800mV电压变化// TEMT6000典型应用电路 const int lightSensor A0; void setup() { Serial.begin(9600); } void loop() { int lightValue analogRead(lightSensor); Serial.println(lightValue); delay(500); }2.2 安装位置的优化初代设备把传感器直接装在电路板上结果发现两个问题一是电路板LED指示灯的光污染会影响读数二是不同床位的光照条件差异很大。后来改用1米长的双绞线将传感器独立引出固定在宿舍中央的窗帘杆上这个位置能兼顾四个床位的采光情况。实测显示傍晚自然光减弱时各床位照度差异可达200lux而中心位置的采样值更具代表性。3. 控制算法的智能化改造3.1 从阈值判断到趋势预测原来的二分法判断if光照值阈值 then 关灯在天气突变时经常误动作。新方案采用滑动窗口算法记录最近10分钟的光照曲线当检测到持续下降趋势且斜率超过阈值时才触发动作。这里用移动平均消除瞬时波动# 伪代码示例 window_size 10 # 10个采样点(约5分钟) threshold -15 # 每分钟照度下降超过15lux def check_trend(data): moving_avg [sum(data[i:iwindow_size])/window_size for i in range(len(data)-window_size1)] slopes [moving_avg[i1]-moving_avg[i] for i in range(len(moving_avg)-1)] return all(slope threshold for slope in slopes[-3:]) # 连续3个周期满足条件3.2 舵机控制的PID优化初代的固定角度控制会导致开关触点压力不均长期使用可能损坏物理开关。升级为PID控制后舵机会根据阻力实时调整扭矩通过电流检测模块监测舵机工作电流当检测到堵转电流约450mA时立即停止施力采用位置式PID算法动态调整PWM占空比// STC8G的PID控制核心代码 float PID_Control(float setpoint, float actual) { static float integral 0, last_error 0; float error setpoint - actual; integral error * dt; float derivative (error - last_error) / dt; last_error error; return Kp*error Ki*integral Kd*derivative; }实测发现比例系数Kp0.8、积分时间Ti0.5、微分时间Td0.1时开关动作最柔和。4. 无线通信模块的引入4.1 ESP8266的低功耗改造加入WiFi功能后遇到的最大挑战是功耗问题。原方案使用持续供电时ESP-01模块的待机电流就达70mA四节干电池只能撑3天。最终解决方案使用Deep Sleep模式每小时唤醒1次上报数据定制AT固件缩短连接时间从默认的2s优化到300ms采用脉冲供电电路仅在需要通信时接通模块电源// 深度睡眠配置 void setup() { ESP.deepSleep(3600e6); // 睡眠1小时 WiFi.forceSleepBegin(); // 关闭RF电路 }4.2 自建状态监控服务在树莓派上搭建了简易MQTT服务器实现以下功能实时记录光照强度和设备状态异常情况微信推送报警如多次重试仍失败生成作息规律热力图自动优化触发阈值横轴为24小时制时间纵轴为光照强度颜色越深表示出现频率越高5. 供电系统的重新设计5.1 电源方案对比测试方案成本续航可靠性备注4节AA电池低2周高需要定期更换18650锂电池充电模块中1个月中存在过放风险太阳能板超级电容高理论无限低阴雨天可能断电最终选择18650方案并加入以下保护措施TP4056充电管理芯片DW01电池保护电路电压检测自动进入省电模式5.2 动态功耗管理策略根据使用场景动态调整系统性能白天光照充足时关闭所有非必要外设仅保持RTC运行傍晚检测到光照下降唤醒主控启动采样间隔1分钟触发动作阶段全功率运行完成后立即进入深度睡眠实测整机平均电流从最初的12mA降至0.8mA续航时间延长15倍。6. 结构设计的改进初代的3D打印支架在潮湿季节出现了变形问题。第二代改用铝合金CNC加工主体框架关键部位做了这些优化舵机安装位增加硅胶减震垫开关拨杆改用聚甲醛树脂耐磨且自润滑整体重量从78g减轻到53g加入快拆结构方便维护左图为初代塑料支架右图为改进后的金属框架7. 实际部署中的经验在三个不同朝向的宿舍实测两个月后总结出这些实用技巧南向房间需要将触发阈值调高20%因为夕阳光照更强冬季建议每周检查电池触点低温容易导致接触不良遇到频繁误触发时先用酒精棉清洁光传感器窗口机械部件每学期加一次润滑脂防止齿轮磨损有个意外发现设备记录的光照数据竟然能反映宿舍楼的供电规律。数据显示每周二凌晨4:00-4:30会出现规律性电压波动后来向后勤求证得知这是备用电源自检时段。

更多文章