1. 项目目标

利用 ESP8266 (3.3V) 无线控制 12V 汽车继电器 (JD1914) 的通断,进而控制 逆变器 的电源开启与关闭。

2. 硬件清单 (BOM)

元件名称 规格/型号 数量 作用
主控板 ESP8266 (NodeMCU / D1 Mini) 1 发出控制信号
继电器 JD1914 (5脚 12V 40A) 1 物理开关,隔离强弱电
MOS管 IRL8721 (N沟道 逻辑电平) 1 信号放大,驱动继电器线圈
二极管 SS34 (肖特基) 1 续流保护,防止反向电压烧毁电路
电阻 10kΩ (1/4W) 1 下拉电阻,防止上电误动作
电源 12V 直流电源 1 专门给继电器供电
被控设备 逆变器 1 负载

3. 元件引脚速查图

在接线前,请务必确认元件方向:

  • MOS管 (IRL8721)

    • 字面朝自己,引脚朝下
    • 1脚 (左)G (Gate/栅极) -> 信号输入。
    • 2脚 (中)D (Drain/漏极) -> 接继电器。
    • 3脚 (右)S (Source/源极) -> 接 GND。
  • 二极管 (SS34)

    • 有横杠端:负极 (-)。
    • 无横杠端:正极 (+)。
  • 继电器 (JD1914)

    • 85 & 86:控制线圈 (12V 输入)。
    • 30:公共端 (开关入口)。
    • 87:常开端 (常开比常闭承受更大电流)。

4. 详细接线步骤

第一阶段:控制回路 (让继电器听话)

这一步接错会导致 ESP8266 烧毁或继电器不动作。

  1. 共地处理 (核心步骤)

    • 12V 电源的负极 (-)ESP8266 的 GND 必须连在一起。
    • 同时连接到 MOS管的 3脚 (右)
  2. MOS管与电阻

    • 10k 电阻 直接焊接在 MOS管的 1脚 (左)3脚 (右) 之间。
    • MOS 1脚 (左):连接 ESP8266 的 D1 (GPIO 5)。
    • MOS 2脚 (中):连接继电器的 85脚
  3. 继电器与保护二极管

    • SS34 二极管 焊在继电器的 85脚86脚 之间。
    • 重要方向:SS34 的 横杠端 (负极) 对着 86脚;无横杠端对着 85脚。
    • 继电器 86脚:连接 12V 电源的正极 (+)

第二阶段:负载回路 (控制逆变器)

这一步决定了逆变器如何开关。

  • 场景 A:直接切断逆变器正极线 (仅限功率 < 400W)

    1. 剪断逆变器的红色正极输入线。
    2. 电源侧线头 -> 接继电器 30脚
    3. 逆变器侧线头 -> 接继电器 87a脚
    • (注:负极线直连,不经过继电器)
  • 场景 B:控制逆变器自带的开关 (推荐,适用于大功率)

    1. 引出逆变器“船型开关”背后的两根线。
    2. 一根线接继电器 30脚,另一根接 87a脚
    3. 将逆变器原开关打到“开”的位置。

5. 软件代码 (Arduino IDE)

此代码逻辑为:默认断开,ESP 输出高电平时吸合(逆变器启动)。

/*
 * 项目:ESP8266 控制 JD1914 继电器 (逆变器开关)
 * 硬件:NodeMCU/D1 Mini, IRL8721, SS34, JD1914
 * 
 * 接线定义:
 * ESP D1 (GPIO 5) -> MOS管 Gate
 */

const int relayPin = 5; // D1 对应 GPIO 5

void setup() {
  Serial.begin(115200);
  
  // 1. 初始化前先强制拉低,确保上电瞬间逆变器是关闭的 (安全第一)
  digitalWrite(relayPin, LOW);
  
  // 2. 设置引脚模式
  pinMode(relayPin, OUTPUT);
  
  Serial.println("--- 系统就绪 ---");
  Serial.println("状态:逆变器已关闭 (Relay OFF)");
}

void loop() {
  // 这里演示自动循环开关。
  // 实际使用时,你可以接入 Blynk, MQTT 或 Home Assistant 来控制
  
  // --- 开启逆变器 ---
  Serial.println("操作:启动逆变器...");
  digitalWrite(relayPin, HIGH); // MOS导通 -> 继电器吸合 -> 30接通87a
  delay(5000); // 运行5秒

  // --- 关闭逆变器 ---
  Serial.println("操作:关闭逆变器...");
  digitalWrite(relayPin, LOW);  // MOS截止 -> 继电器断开 -> 逆变器断电
  delay(5000); // 停止5秒
}

6. 工作原理解析 (面试/吹牛专用)

  1. 信号输出:ESP8266 的 D1 脚输出 3.3V 高电平
  2. 信号放大IRL8721 MOS管 感受到 3.3V 电压,内部通道完全打开 (导通),将继电器的 85脚 直接连通到 GND。
  3. 电磁吸合:12V 电流流过继电器线圈 (86 -> 85 -> GND),产生磁场,吸动衔铁,“咔哒”一声。
  4. 负载通电:继电器的 30脚87a脚 物理接触,逆变器电路接通,开始工作。
  5. 关断保护:当 ESP 输出低电平,MOS 管关闭。继电器线圈断电瞬间产生反向高压,SS34 二极管 瞬间导通吸收这个高压,保护 MOS 管不被击穿。

7. 安全注意事项 (必读)

  1. 关于功率:JD1914 虽然标称电流大,但插脚接触电阻限制了其能力。如果你控制逆变器主线,建议功率不要超过 400W。超过此功率请使用“控制开关线”的方法。
  2. 关于发热:继电器吸合时线圈会发热,这是正常的。
  3. 关于默认状态:本教程使用 87a脚 (87脚常开, 87a脚常闭)。这意味着如果 ESP8266 死机、断电或线断了,逆变器会自动关机。这是最安全的配置,防止电瓶过放。

祝你的 DIY 项目运行稳定!这份文档可以保存下来,下次做类似项目时直接参考。

 

8. 故障排查与升级方案:从 87a 换成 87,并新增降压供电模块

8.1 问题复盘:为什么 87a 烧了两个继电器?

如果你和我一样,已经报销了两个 JD1914,先别急着骂继电器质量差——问题出在 87a 脚(常闭触点)的先天缺陷

对比项 87a(常闭) 87(常开)
默认状态 通路 断路
触点电流设计 较小(偶尔断开用) 最大额定电流(主力通路)
长期通大电流 触点发热 → 氧化 → 烧毁 正常工作
适合场景 断电保护逻辑 驱动逆变器主回路

根本原因: 87a 脚是继电器的"副触点",长期流过逆变器的启动涌入电流(瞬间可达额定的 3~5 倍),触点根本扛不住。87 脚才是继电器厂家重点设计的主触点,载流能力比 87a 强得多。


8.2 升级方案全览

本次升级做两件事,缺一不可:

① 控制回路新增 DC-DC 降压模块(12V → 5V),给 ESP8266 独立供电
② 负载回路从 87a 脚改接 87 脚,逻辑取反


8.3 新增元件

元件 规格 数量 作用
DC-DC 降压模块 输入 8~40V,输出 5V / 3A(如 MP1584LM2596) 1 从 12V 电源直接给 ESP8266 稳定供电

⚠️ 为什么不直接用 ESP8266 的 VIN 脚接 12V?
NodeMCU / D1 Mini 板载的 AMS1117 稳压芯片压差大散热差,长期输入 12V 会过热损坏。降压模块效率高(>85%),是正确做法。


8.4 降压模块接线

12V 电源正极 (+)  →  降压模块 IN+
12V 电源负极 (-)  →  降压模块 IN-

降压模块 OUT+  →  ESP8266 的 VIN 脚(或 5V 脚)
降压模块 OUT-  →  ESP8266 的 GND 脚

🔧 调压步骤(首次使用必做):
先不接 ESP8266,用万用表测量降压模块输出端,边量边旋转模块上的蓝色小电位器,直到输出电压稳定在 4.9V ~ 5.1V 之间,再连接 ESP8266。


8.5 负载回路改线:87a → 87

改线只需动继电器这一侧,MOS管/二极管/电阻部分完全不变

旧接法(87a,常闭):

继电器 30 脚  →  电源侧 / 开关线
继电器 87a 脚 →  逆变器侧 / 开关线  ← 拔掉这根

新接法(87,常开):

继电器 30 脚  →  电源侧 / 开关线(不变)
继电器 87 脚  →  逆变器侧 / 开关线  ← 插到这里

改完之后,继电器的开关逻辑反转了:

ESP 输出 MOS 管状态 继电器状态 87 脚(新) 逆变器
LOW(低电平) 截止 未吸合 断路 关闭
HIGH(高电平) 导通 吸合 通路 运行 ✅

逻辑和之前完全一致,代码无需修改,HIGH 开LOW 关,行为不变。


8.6 升级后的完整接线总览

【电源层】
12V 电源(+) ─┬─→ 降压模块 IN+  →  OUT+ → ESP8266 VIN
             ├─→ 继电器 86 脚
             └─→ 逆变器正极(经继电器 30→87 脚)

12V 电源(-) ─┬─→ 降压模块 IN-  →  OUT- → ESP8266 GND
             ├─→ MOS管 S 脚(3脚)
             └─→ 逆变器负极(直连)

【控制层】
ESP8266 D1 (GPIO5) → 10kΩ下拉电阻(另一端接GND)
                   → MOS管 G 脚(1脚)

MOS管 D 脚(2脚)  → 继电器 85 脚
SS34二极管(横杠端)→ 继电器 86 脚
SS34二极管(无杠端)→ 继电器 85 脚

【负载层】
继电器 30 脚  → 逆变器开关线 A(或正极来线)
继电器 87 脚  → 逆变器开关线 B(或正极去线)  ← 此处是新改动

8.7 升级后的安全逻辑变化(重要)

使用 87 脚之后,断电保护逻辑发生了变化,需要重新评估你的使用场景:

场景 87a 旧方案 87 新方案
ESP8266 正常运行 高电平 → 逆变器开 高电平 → 逆变器开(相同)
ESP8266 死机/断电 继电器断开 → 逆变器自动关 继电器断开 → 逆变器自动关(相同)
上电启动瞬间 有短暂闭合风险 天然断路,更安全

好消息:改用 87 脚之后,上电瞬间继电器默认断开,反而比 87a 更安全,彻底消除了上电误触发的隐患,代码里 setup() 中提前 digitalWrite(relayPin LOW) 的那行保险代码依然保留即可。


8.8 小结

项目 旧方案 新方案
ESP8266 供电 USB / 板载 AMS1117 接 12V 12V → 降压模块 → 5V 稳压供电
继电器触点 87a(常闭副触点) 87(常开主触点)
载流能力 弱,易烧 强,额定电流满载使用 ✅
逻辑代码 不变 完全不变
上电安全性 一般 更好

两个继电器的学费没白交——87a 适合低频切换的保护逻辑,87 才是跑主回路的正确姿势。 降压模块加进来之后,整个系统的供电稳定性也上了一个台阶,不再依赖电脑 USB 或者质量参差不齐的充电头。