宿舍智能开关控制系统开发日记:从SG90到MG996的升级之路
一盏灯,一个想法,一套我亲手搭起来的系统。
AI提示:本文章使用了AI辅助润色,但是作者可以保证情节的真实性(作者只是懒得自己手写所有字所以把我的历程告诉了AI,做好了审阅和修改后便有了现在的版本,请放心观看。
起因:一盏灯与一个念头
一切的起点其实很简单:我只是想要一个可以远程控制宿舍灯的方式。在习惯了智能手机和智能家居的便利之后,每次伸手去够那个开关的瞬间,我总觉得“这事应该可以自动化”。很多个晚上,我们上了床之后才发现灯还没关,于是还得吭哧吭哧下来关灯,这样的次数久了,我突然有一天忍不了了,觉得我应该有能力自己搞一套只能开关灯系统来造福宿舍。(果然懒才是人类进步的最大动力lol)
这个想法一冒出来,我立刻跑到B站上搜了一圈类似的视频,看别人的实现有没有什么可参考的思路。B站上不少人都用舵机去按墙壁开关,大多是用小巧的SG90,配合面包板、树莓派或者其他开发板。那一刻我突然就下定决心:这事我也能试试!
初代方案:SG90、面包板,还有一堆电线
我并不是一上来就把所有零件买齐的。事实上,在最初构想的阶段,我花了很长时间去查资料、对比模块参数,思考兼容性和电源设计,因为我想要做一个自己想要的系统,而不是直接照抄别人视频里面的架构。等到确定初代方案各模块基本能协同工作之后,我才集中把所有元件一起买下。
初代方案其实是基于一个很朴素但清晰的目标搭建的:只用常见的模块,在不改造开关原有结构的前提下,实现无线控制宿舍灯的开与关。
我的整体架构思路大致如下:
核心控制单元:ESP8266
负责所有指令的接收、处理和执行。
支持 Wi-Fi 模块,日后方便通过网页控制。
交互模块:HC-06 蓝牙模块
提供手机蓝牙端口交互,用于初期调试,也做为 Wi-Fi 失联时的备用控制通道。
执行单元:两个 SG90 舵机
每个舵机分别负责按动一个开关,实现物理上的“手动开关灯”动作。
供电方案:面包板电源模块统一供电
提供 5V/3.3V 选择,直接供给 ESP8266、HC06 以及 SG90。
我当时设想这个系统只需要一个小小的面包板就能搭建完毕。舵机动作不复杂,单次只需拨动开关一次;控制逻辑写在 ESP8266 上,通过串口接收蓝牙指令或网页指令,然后发出 PWM 信号控制 SG90。理论上简单、可行,而且网上很多类似例子也都是这么做的。
那时我真心以为,只要模块间能连起来,这套系统就能跑起来。
于是,我信心满满地下单了两颗 SG90,还想着一左一右配合控制两个灯,既美观又不影响我手动操作。
最初选用的是两颗 SG90 舵机,因为我查资料时发现一个 SG90 的扭矩可能不足以推动宿舍的两个实体开关。我一开始没有意识到,直到后来才想到如果一左一右搞两个舵机的话,我正常用手关灯反而变得很麻烦了。
而且我们宿舍的墙壁开关真的很硬,稍微还是需要多使一些劲才可以拨动的那种。后来调试的时候发现别人B站视频里的SG90可以轻松拨动开关,我这边甚至还会出现拨不动的情况。
于是我开始意识到,SG90 或许并不是我的最终答案。
升级:MG996 的暴力美学与电源噩梦
转机来自于对 SG90 的绝望 —— 于是我果断转向更大扭矩的 MG996 舵机。MG996 扭矩达到了惊人的 9.4kg·cm(相比 SG90 的 1.6kg·cm 简直是碾压),但代价就是:它的电压和电流要求也高得多(5V/2.5A 以上)。
我刚开始抱着试一下能不能凑活用的态度用面包板电源模块直接给 MG996 供电,结果果然出问题了。舵机一通电就抖,转不动,ESP8266 开始花式重启,连带着蓝牙模块 HC06 也时断时连。我就觉得,可能是舵机启动时拉动电流太大,电压瞬间跌落,其他模块的电压稳不住了。
于是不得已,我又去买了一个 USB 供电模块,准备单独给 MG996 供电。这样一来,舵机高电流不会干扰核心逻辑部分,系统终于稳定了下来。
当然,稳定之前还烧坏过一个 MG996。当时我调试时电压接反,舵机莫名开始高频异响,发热严重,然后直接废了——这也是我人生中第一个烧掉的电机,纪念意义相当深远(但是主要是浪费了很多时间等物流啊!!)。
安装:从墙皮掉落到热熔胶登场
解决完供电问题,我把所有模块装在一个面包板上,用双面胶贴在墙上,通电、运行,一切正常!
然而 MG996 的扭矩太大了……当它旋转时,面包板直接带着模块把墙皮掀了下来。
舵机与面包板之间的固定也是一筹莫展。一开始我尝试用AB胶固定,但粘合效果不佳,一使劲就会脱落;又试了双面胶,效果也不够强力。最后,我搜索到了热熔胶枪 —— 我到现在还放着这个东西因为真香。它一步到位,同时解决了面包板和开关之间的固定问题,还解决了舵机和面包板之间的固定问题,十分带劲。
我直接把 MG996 粘到了开关外壳上,整个模块与开关一体化固定,安装牢固且不影响人手操作。这一步解决了所有机械结构问题,至此,整个硬件系统就基本定型了。
控制核心:ESP8266 的主页、蓝牙双通道控制
项目的中枢是 ESP8266。我通过 Arduino 平台编程,写好逻辑并烧录到芯片上。
这个过程对我来说其实是一次回忆与重启。我上一次接触嵌入式开发,还是在电子实习课上,用 C++ 写了个简单的流水灯程序,烧录后观察灯一闪一闪的成就感依然记忆犹新,这也是我当时冒出“我也可以搞定这一套系统”的决心所在。
这一次,我用的是 Arduino 平台,搭配 ESP8266,整个编写和烧录过程更加集成化、易操作。我在网上查了大量资料、逛了无数经验帖,还认真翻了几遍 ESP8266 和 HC06 的手册,最终配置好了烧录环境,调好了串口通信,写好了整个逻辑流程。
控制端我也没闲着,我写了一个小型网页主页,部署在 ESP8266 上。我又将这个服务端口通过路由器中转了一下,这样,只要在校园网下输入 IP 地址和端口,就可以打开控制界面。网页上有按钮可以控制灯的开与关,后续我还预留了更多功能扩展。
另外,考虑到 Wi-Fi 可能不稳定,我也引入了 HC06 蓝牙模块。通过蓝牙连接手机蓝牙串口助手,也可以发送控制指令,ESP8266 会接收到并解析指令执行对应动作。虽然我当时选择在系统中加一个蓝牙模块是考虑到蓝牙模块的待机耗电量很低,而ESP8266的耗电量相比要高很多。
虽然ESP8266提供了深睡眠模式,能够将待机电流减到微安级别——这已经很够了,但是缺点是我们必须需要外界信号对RST引脚进行触发才可以唤醒系统。另外一种通过代码进入睡眠模式的浅睡眠状态只能将电流降到15-20mA的级别。于是我就萌生了使用耗电量更小的蓝牙模块来自动对RST引脚进行触发,从而在例如放假或者系统不需要开启的时候可以通过进入深睡眠,然后使用蓝牙从深睡眠中唤醒(但是后来我发现这样好蠢hhh不如直接把电断了,反正蓝牙的连接范围也就是那附近一段距离之内)。至于平常白天那种不需要用到这套系统的时候(因为当时这套系统只有开关灯这一个作用),就可以通过代码进入浅睡眠状态,这样就算是最大化地进行省电了。
但是后来我拿到HC06才发现我的HC06并没有引出那个引脚,要想要实现蓝牙对8266的RST触发有一些困难。再加之后来意识到了这个想法的愚蠢,于是HC06就单纯地变成了一个备用信息通道。对系统功能进行调试的时候还是很有用的。
供电优化:从桌面供电到“背着走”的终极形态
我最初调试时用的是传统的 5V/2A 电源适配器,插在插线板上,非常不便。因为我一开始就设想这个系统最终是要贴在墙上运行的,如果还拖个插头出来,整套系统就不再“智能”了,只剩下“杂乱”。
所以我考虑用充电宝作为供电来源。然而新问题又来了:大多数主流充电宝都有低电流断电保护机制。这种微电流设备(如 ESP8266 空闲状态)很容易被识别为“漏电”,导致充电宝自动断电,系统随即失效。
好在我手上刚好有一个“三无”充电宝,没有这种机制,完美适配这套低功耗系统,也终于让我完成了理想中“无插线、移动供电、自主运行”的版本。
舵机对比:SG90 vs MG996R(实战总结) (这部分参数是AI生成的我懒得审阅了,在这篇文章中不是很重要,感兴趣的朋友们可以再上网搜索一下,很容易搜索到)
| 参数 | SG90 | MG996R |
|————–|——————-|————————–|
| 扭矩 | 1.6 kg·cm | 9.4 kg·cm |
| 工作电压 | 4.8V–6V | 4.8V–7.2V |
| 空载电流 | 100mA | 500mA |
| 启动电流 | 250mA(短时) | 2.5A(瞬时最大) |
| 优点 | 轻便、易调试 | 力量大、响应强 |
| 缺点 | 力量不足 | 功耗高、电源难匹配 |
MG996 真牛逼
HC-06 vs HC-05:为什么我选了 HC-06?
| 参数 | HC-05 | HC-06 |
|————–|—————-|—————|
| 主从一体 | ✅ 支持 | ❌ 仅从模式 |
| 配置灵活性 | ✅ 可设置角色 | ❌ 固定为从机 |
| 调试命令 | AT指令齐全 | 功能较少 |
| 价格 | 稍贵 | 稍便宜 |
没啥大的原因,只是因为觉得不需要主从一体,只需要做信号接收端就可以了。
项目成果与展望
现在,这个系统已经可以稳定地控制宿舍的两个灯开关,支持网页和蓝牙双通道操作,供电来自小型充电宝,安装方式也稳固美观。
但这还只是开始,我还打算加上温湿度检测、语音识别控制,甚至接入微信小程序做通知联动(倒是可以很简单地搞一个语音识别)。写到这里我都已经开始期待后续版本的迭代了。(但是目前学业繁忙,已经好久没有机会继续扩展这个小系统了,权当是一次计算机学生勇闯嵌入式的冒险之旅吧hhh)
代码仓库
本项目的全部源码、原理图和网页控制页面我正在整理并准备开源,欢迎大家参考:
👉 点击查看完整代码
写在最后
这套系统远远称不上“工业级”,但它有一种很真实的满足感:是我一步步搭出来、烧坏过、推翻过、重新优化过的东西。
它不是“最好”的方案,但是“最属于我的”那个版本。
如果你也对动手做点什么感兴趣,不妨从一盏灯开始。