news 2026/8/20 5:12:32

Sonoff Basic改造:刷Tasmota固件实现MQTT干接点继电器与5V供电

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Sonoff Basic改造:刷Tasmota固件实现MQTT干接点继电器与5V供电

1. 项目缘起:从“智能开关”到“万能遥控器”的蜕变

几年前,我为了给家里的老式台灯和风扇加上远程控制,入手了几个Sonoff Basic。这玩意儿在智能家居DIY圈子里名气不小,说白了就是个带Wi-Fi的继电器模块,能让你通过手机App控制电路的通断。它确实解决了“开关”的问题,但用久了,我发现它的潜力远不止于此。官方固件和App虽然方便,但限制也多,比如必须依赖厂商的云服务,网络一断就抓瞎,自动化逻辑也比较基础。

后来接触到MQTT和Home Assistant这类本地化智能家居平台,我才意识到,Sonoff Basic真正的价值在于它是一块绝佳的“硬件画布”。刷上开源固件,它就能从一个受制于人的“智能开关”,变身成一个完全由你掌控、可以通过网络协议(MQTT)与任何智能系统对话的“万能遥控器”。这个项目,就是要把一个最基础的Sonoff Basic,改造成一个支持MQTT协议的“干接点继电器”,并且额外引出稳定的5V电源。改造完成后,它不仅能控制灯,还能联动你的NAS在深夜自动备份、让咖啡机在清晨准时启动,甚至作为传感器信号的触发开关——只要你敢想,它几乎能介入任何低压直流或交流电器的控制回路。

2. 核心改造目标与硬件原理拆解

在动手之前,我们必须彻底搞清楚两件事:我们要把它变成什么,以及它原本是什么。

2.1 什么是“MQTT干接点继电器”?

这听起来有点专业,拆开看就明白了:

  • MQTT:一种极其轻量级的发布/订阅消息协议。你可以把它理解为一个“消息中转站”或“群聊”。你的智能家居服务器(如Home Assistant)在“群聊”里发布一条消息:“打开书房灯”。改造后的Sonoff Basic“订阅”了这个“书房灯”话题,收到消息后,就执行对应的动作——闭合继电器。整个过程在局域网内完成,无需外网,响应快,隐私好。
  • 干接点 (Dry Contact):这是继电器输出的专业叫法。意思是,继电器模块内部提供的只是一组纯粹的、物理的开关触点(就像普通墙壁开关里的那两个铜片)。这组触点与Sonoff自身的电路是电气隔离的。它不输出电压,也不决定电流方向。你可以用它去控制一个24V的工业电磁阀,也可以去接通一个220V的照明电路。控制什么、怎么控制,完全由你外部连接的电路决定,赋予了它极大的灵活性。
  • 5V输出:Sonoff Basic内部有一个开关电源模块,将输入的100-240V交流电(AC)转换为3.3V直流电(DC)供其主控芯片(ESP8266)运行。我们的改造之一,就是从其电源部分稳妥地引出一个5V直流电。这个5V电源可以用来给需要它供电的外部设备供电,比如一个温湿度传感器、一个红外接收头,或者另一个微控制器,从而实现“一线供电,一体控制”,无需再外接一个电源适配器。

所以,改造的终极目标,是得到一个可以通过MQTT指令控制、带有一组通用开关触点、并能提供5V/1A左右辅助电源的智能继电器模块

2.2 Sonoff Basic R2 硬件探秘

我手头这个是市面上最常见的Sonoff Basic R2版本。撬开外壳,可以看到一块紧凑的PCB板。

  • 核心大脑 (ESP8266):板子中央那个小小的方形芯片是核心。这是一颗集成了Wi-Fi功能的微控制器,性能强大,正是其可玩性的基础。我们后续刷写的第三方固件,就是运行在它里面。
  • 电力心脏 (开关电源模块):交流电从L、N输入端进入后,首先经过一个整流桥堆,然后通过一个型号为OB2500CP的开关电源芯片及其周边电路(电感、电容、二极管),将高压直流转换为低压直流。这部分电路原本输出约3.3V给整个系统供电。我们需要从中找到合适的点位,引出5V电压。
  • 执行机构 (继电器):一个蓝色的塑封继电器,型号通常是HF32F/5-Z或类似。它有一组线圈(接受芯片控制)和一组转换触点(COM, NO, NC)。COM是公共端,NO(常开)和COM在继电器不动作时是断开的,动作后闭合;NC(常闭)则相反。我们通常使用COMNO作为控制触点。
  • 控制接口 (GPIO):ESP8266芯片的引脚被引出了若干到板子的焊盘上。其中,GPIO0GPIO14等关键引脚的状态,决定了芯片的启动模式(正常启动还是刷机模式)。GPIO12通常被用来控制继电器。这些焊盘是我们刷机时需要接触,以及未来可能用于扩展功能的地方。

注意:操作涉及220V强电,即使断电后,板子上的大电容也可能储存有高压电。务必在操作前断开电源,并等待几分钟,或者用万用表确认电容放电完毕。安全永远是第一位的。

3. 固件刷写:赋予它“新灵魂”

要让Sonoff Basic听懂MQTT指令,必须替换掉它的原厂固件。这里我选择Tasmota,因为它成熟、稳定、社区支持强大,对MQTT的支持是原生级的。

3.1 刷机前的硬件准备

你需要一个USB转TTL串口模块(推荐CP2102或CH340G芯片的),以及几根杜邦线(母对母)。

  1. 连接串口模块:将串口模块的3.3V引脚连接到Sonoff板子上标有3.3V的焊盘(切勿接5V或VIN,会烧芯片!)。GNDGNDRX接Sonoff的TXTX接Sonoff的RX(交叉连接)。
  2. 进入刷机模式:这是关键一步。Sonoff Basic的GPIO0引脚需要在上电时被拉低到GND,才能进入固件烧录模式。你需要用一根杜邦线,一头接在GPIO0焊盘上,另一头准备在通电瞬间接触GND焊盘。也可以焊一个轻触开关在两者之间,方便操作。
  3. 软件准备:在电脑上安装串口驱动(根据你的模块芯片型号安装),并下载Tasmota固件。我推荐使用Tasmota WebInstaller这个工具,它把下载和刷写过程集成在了一起,非常方便。

3.2 使用 Tasmota WebInstaller 一键刷机

  1. 访问 Tasmota 官方安装工具页面。
  2. 将Sonoff Basic通过串口模块连接到电脑,在工具中选择正确的串口号。
  3. 工具会自动检测设备类型。对于Sonoff Basic,它通常能正确识别。
  4. 在固件选择页面,选择最新稳定版的tasmota.bin(基础版本即可,功能最全)。
  5. 点击“Install”(安装)。此时,先给Sonoff Basic上电(插上220V电源),同时确保GPIO0已接地。工具会显示连接并开始擦除、烧写。整个过程大约30秒。
  6. 刷写成功后,工具会提示。此时,断开Sonoff的电源,移除GPIO0GND之间的短接线

3.3 初次配置与网络连接

重新上电后,Sonoff会创建一个名为tasmota_XXXXXX的Wi-Fi热点。用手机或电脑连接这个热点。

  1. 连接后,通常会自动弹出配置页面。如果没有,在浏览器打开192.168.4.1
  2. 在配置页面,找到你的家庭Wi-Fi网络(SSID),输入密码,然后点击保存。
  3. Sonoff会自动重启并尝试连接你的路由器。连接成功后,你需要到路由器的管理界面(或使用Fing这类网络扫描App)查看DHCP客户端列表,找到名为tasmota-XXXXXX的设备,记下它的IP地址。
  4. 在浏览器中输入这个IP地址,就能看到Tasmota的Web管理界面了!至此,固件刷写成功。

4. Tasmota深度配置:从连接到自动化

进入Web界面,我们开始进行核心的MQTT和继电器功能配置。

4.1 MQTT服务器连接配置

这是让Sonoff与智能家居大脑对话的关键。

  1. 在Tasmota网页,点击Configuration -> Configure MQTT
  2. Host:填写你的MQTT服务器地址。如果你在树莓派上安装了Mosquitto,就填树莓派的局域网IP,例如192.168.1.100
  3. Port:默认1883,如果改了就用改后的端口。
  4. Client:可以自定义,如sonoff_basic_01,用于在服务器端识别。
  5. UserPassword:如果你的MQTT服务器设置了认证,就填写。
  6. Topic:这是最重要的设置。我建议使用%prefix%/%topic%/的默认格式。它会生成像tele/sonoff_basic_01/STATEcmnd/sonoff_basic_01/POWER这样的主题。%topic%默认是你的设备名。你可以修改Full topichomeassistant/%prefix%/%topic%以更好地融入HA。
  7. 点击“Save”,设备会重启并尝试连接MQTT服务器。在Console标签页输入Status 0,查看输出中MQTT是否显示为Connected

4.2 继电器与按钮功能配置

默认情况下,Tasmota已经将继电器映射好了。但我们需要理解并优化其行为。

  1. 继电器控制:在Console输入Power onPower off,应该能听到继电器清脆的吸合与释放声,同时网页上的按钮状态会变化。对应的MQTT命令主题就是cmnd/<你的设备名>/POWER,发送ONOFF的payload即可控制。
  2. 物理按钮功能:Sonoff Basic上那个白色按钮默认被设置为:短按切换继电器状态,长按进入配网模式。这很合理,通常无需更改。你可以在Configuration -> Configure Module里查看和修改按钮对应的GPIO引脚关系(Button1通常对应GPIO0)。
  3. 状态反馈:Tasmota会定期向tele/<设备名>/STATE主题发布设备状态(JSON格式),包含继电器开关状态、Wi-Fi信号强度等。这对于Home Assistant等平台自动发现设备至关重要。

4.3 集成到Home Assistant (HA)

这是体验自动化魅力的时刻。如果HA中已经安装了Mosquitto add-on并正确配置。

  1. 在Tasmota设备正确连接MQTT后,重启HA。
  2. HA的MQTT自动发现功能很可能已经找到了它。在“设备与服务”中,你应该能看到一个来自MQTT的新设备。
  3. 点击“配置实体”,HA会自动为其创建一个名为switch.sonoff_basic_01的开关实体。
  4. 现在,你可以在HA的仪表盘上添加这个开关卡片,进行手动控制。更重要的是,你可以编写自动化:例如,“当人体传感器检测到卫生间有人移动时,打开这个开关(即打开灯)”;或者“在日出前30分钟,打开这个开关(即打开咖啡机)”。

5. 硬件改造实战:引出5V电源与干接点

软件部分搞定后,我们来实施硬件改造,让它真正成为“万能”模块。

5.1 定位并安全引出5V电源

Sonoff Basic的原始电源输出是3.3V,我们需要找到开关电源电路中电压稍高的点。经过测量和社区验证,在开关电源芯片OB2500CP附近,有一个滤波电容(通常是C7,一个较大的贴片电容,可能标有106226),其正极对地(GND)的电压在5V到5.5V之间。这个电压是未经过LDO稳压的,但驱动一些小电流设备足够稳定。

操作步骤:

  1. 断电并放电:确保设备完全断电,并用万用表确认高压电容两端无电压。
  2. 定位测试点:找到C7电容(或类似的大贴片电容)。用万用表直流电压档,黑表笔接一个已知的GND点(如USB串口模块的GND焊盘),红表笔轻轻触碰该电容的正极(有极性标识的一端)。上电,确认电压在5V左右。
  3. 焊接引线:确认点位后,断电。使用细导线(如AWG24硅胶线),一端焊接在电容正极,另一端准备引出。同样,从任意GND点焊接一根地线。
  4. 过孔与绝缘:在Sonoff外壳上合适的位置钻一个小孔,将两根导线穿出。务必确保导线与内部高压部分(交流输入侧、继电器触点引脚)有充分的物理隔离,必要时使用热缩管或绝缘胶带包裹。可以在导线的外部端焊接一个标准的2.54mm排针母座,方便插拔。

重要警告:这个5V电源是从主电源直接变换而来,与市电没有隔离。绝对禁止用这个5V去给任何需要与人体接触或接地的设备(如手机、平板)充电。它仅适用于同样“浮地”的、完全封闭在绝缘外壳内的低压电路供电,例如同一个控制箱里的传感器。

5.2 明确与使用干接点

这部分其实无需改造,只需要正确理解和使用。

  1. 识别触点:继电器上通常有标识。COM(公共端)、NO(常开端)、NC(常闭端)。我们使用COMNO
  2. 接线示例
    • 控制一盏灯:将市电的火线接入Sonoff的L-INL-OUT接到灯的一端。灯的零线直接接市电零线。这是Sonoff的标准用法。
    • 作为一个低压开关:假设你有一个12V的直流水泵,由单独的12V适配器供电。将适配器正极输出接到继电器的COM端,将水泵的正极接到继电器的NO端。水泵的负极直接接适配器负极。这样,当Tasmota控制继电器闭合时,12V电路导通,水泵工作。这里的继电器触点就是纯粹的“干接点”,只负责通断,不提供电源。

6. 进阶应用与避坑指南

改造完成后,它的玩法就只受你的想象力限制了。

6.1 应用场景拓展

  1. 智能鱼缸/植物灌溉:用5V电源给一个土壤湿度传感器供电,传感器数据通过另一个GPIO口回传给ESP8266(需额外编程)。Tasmota支持规则(Rule),可以设定当湿度低于阈值时,自动闭合继电器打开水泵浇水。
  2. 车库门状态监控与控制:将干接点并联到车库门控制器的按钮开关上。再通过一个门磁传感器连接到ESP8266的另一个GPIO。这样,你不仅可以用手机遥控车库门,还能在HA里看到车库门的实时状态(开/关)。
  3. 传统家电红外遥控:如果你有一个支持红外学习的智能插座(或单独的红外模块),可以用这个5V电源给它供电。然后编写HA自动化:“当Sonoff继电器闭合(比如由‘离家模式’触发)时,向红外模块发送‘电视关机’的指令。”实现全屋联动断电。

6.2 常见问题与排查心得

  1. 刷机失败,电脑无法识别串口

    • 检查驱动:确保安装了正确的USB转TTL驱动。
    • 检查接线:确保3.3VGNDTXRX连接正确且牢固。尤其注意,一定是3.3V,不是5V
    • 检查GPIO0:确保在上电瞬间,GPIO0是持续稳定地接地。接触不良是失败主因。焊一个轻触开关是最可靠的方法。
  2. Tasmota无法连接Wi-Fi或MQTT

    • Console信息:在Tasmota的Web Console里输入Status 0Wifi查看详细状态。
    • Wi-Fi信号:如果信号弱(RSSI值低于-70),考虑调整设备位置或增加中继。
    • MQTT连接:检查服务器IP、端口、用户名密码是否正确。在服务器端使用mosquitto_sub命令监听#主题,看设备是否在尝试连接和发布消息。
  3. 5V电源带载能力差或不稳定

    • C7电容引出的5V电源,其输出电流能力有限,估计在300-500mA左右。如果连接设备后电压被拉低,说明负载太重。建议仅用于传感器、小功率单片机等。
    • 如果需要更大功率的5V电源,更安全的做法是使用一个独立的、与市电隔离的5V开关电源模块,将其输入并联在Sonoff的交流输入端(L, N)之前,利用Sonoff的继电器来控制这个独立电源的通断。
  4. 继电器状态与预期相反

    • 有些设备的控制逻辑是“低电平触发”。你可以在Tasmota的Console里使用SetOption0命令来反转继电器的控制逻辑。SetOption0 1会将其设为“开关接通时继电器断开”,根据你的实际接线和设备需求调整。

这个项目最让我着迷的地方在于,它用极低的成本和一定的动手门槛,打破了消费级智能硬件和工业控制之间的壁垒。当你看到自己改造的小模块,稳稳地执行着你编写的自动化指令,控制着家里大大小小的设备时,那种成就感和掌控感,是购买成品无法比拟的。它不再是一个“Sonoff开关”,而是你智能家居系统中一个可靠、透明的神经元节点。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/20 5:10:59

MobileForge:免标注分层反馈优化,打造自适应移动端GUI智能体

1. 项目概述&#xff1a;当GUI智能体遇上移动端 最近在折腾移动端自动化测试和智能交互代理的朋友&#xff0c;可能都绕不开一个核心痛点&#xff1a; 标注数据太贵了 。无论是想训练一个能自动操作App的智能体&#xff0c;还是想构建一个能理解复杂UI界面并执行任务的系统&a…

作者头像 李华
网站建设 2026/8/20 5:09:07

软件测试求职避坑指南:从简历优化到面试实战的全流程拆解

这类求职复盘&#xff0c;最值得先看的不是他拿了几个offer&#xff0c;而是他踩了哪些坑&#xff0c;以及这些坑是不是你也会遇到。一个软件测试求职者&#xff0c;投了两周简历&#xff0c;约了三家面试&#xff0c;最后只拿到一个offer&#xff0c;他自己总结是“准备没到位…

作者头像 李华
网站建设 2026/8/20 5:08:37

软件测试面试核心:方法论、自动化与性能测试实战

1. 软件测试面试的底层逻辑与考察重点 软件测试岗位的面试本质上是在考察候选人的"质量保障思维体系"。面试官通过技术问题、场景模拟和行为问答&#xff0c;评估候选人是否具备完整的测试方法论和工程化思维。不同于开发岗位更关注"如何构建"&#xff0c;…

作者头像 李华
网站建设 2026/8/20 5:08:32

构建高精度训练计时器:从状态机设计到PWA性能优化

1. 项目概述&#xff1a;一个为自律者打造的精准训练计时器如果你和我一样&#xff0c;是个健身爱好者&#xff0c;或者正在尝试通过规律训练来改变自己&#xff0c;那你一定对“训练计时器”这个概念不陌生。无论是力量训练中的组间休息&#xff0c;还是高强度间歇训练&#x…

作者头像 李华