一 本章简介
本章介绍如何使用 MicroPython 控制筑基学习板上的板载继电器。继电器是嵌入式系统中最常见的强电控制元件之一,通过单片机输出一个简单的高低电平信号,就能控制外部负载(灯泡、风扇、电磁阀等)的通断。筑基学习板上的继电器经过光耦隔离设计,安全可靠,非常适合学习和实验。
1.1 学习目标
| 序号 | 学习目标 | 重要程度 |
|---|---|---|
| 1 | 了解继电器的工作原理和应用场景 | ⭐⭐⭐⭐⭐ |
| 2 | 掌握使用 GPIO 控制继电器吸合与释放的方法 | ⭐⭐⭐⭐⭐ |
| 3 | 理解光耦隔离的作用和意义 | ⭐⭐⭐⭐ |
| 4 | 能够实现定时开关、按键联动等实用功能 | ⭐⭐⭐⭐ |
1.2 重点提示
- 筑基学习板上的继电器控制引脚为 PA4,低电平吸合(接通负载),高电平释放(断开负载)。
- 继电器通过光耦隔离驱动,单片机侧和继电器侧的电源完全隔离,即使继电器侧出现异常,也不会影响天空星核心板及筑基学习板的安全。
- 本学习板定位为学习用途,继电器对外接口请只连接 36V 以下的直流负载,严禁连接市电(220V)。
- 继电器吸合时会有明显的"咔嗒"声,这是正常的机械动作声音,同时板上的继电器指示 LED 也会亮起(就在继电器左上方)。
1.3 基础概念与术语
- 继电器(Relay):一种电磁开关,通过小电流控制线圈产生磁场,驱动机械触点闭合或断开,从而控制大电流回路的通断。
- 光耦隔离(Optocoupler Isolation):利用光电耦合器件实现信号传递,输入侧和输出侧之间没有电气连接,能有效防止强电侧的干扰或故障传导到单片机侧。
- 吸合:继电器线圈通电,触点闭合,外部负载接通。
- 释放:继电器线圈断电,触点断开,外部负载断开。
二 硬件说明

2.1 继电器电路原理
筑基学习板上的继电器驱动电路采用了光耦隔离设计,信号传递路径如下:
天空星 PA4 引脚 → 光耦(EL357N) → 继电器线圈 → 触点闭合/断开 → 外部负载工作原理:
- 当 PA4 输出低电平时,光耦内部的 LED 导通发光,光照到次级侧的三极管使其导通,继电器线圈得电,触点吸合,外部负载接通。
- 当 PA4 输出高电平时,光耦内部的 LED 熄灭,次级侧三极管截止,继电器线圈失电,触点释放,外部负载断开。
NOTE
为什么是低电平吸合?这是由光耦的接法决定的。光耦输入侧的 LED 阳极接电源,阴极接 PA4,当 PA4 为低电平时,LED 两端有压差,电流流过 LED 发光,驱动次级侧导通。
2.2 继电器资源汇总
| 参数 | 说明 |
|---|---|
| 控制引脚 | PA4 |
| 吸合电平 | 低电平(0) |
| 释放电平 | 高电平(1) |
| 隔离方式 | 光耦隔离(EL357N) |
| 继电器供电 | 隔离电源(与单片机侧电气隔离) |
| 对外接口 | 带盖板栅栏式接线端子(7.62mm 间距) |
| 负载限制 | 36V 以下直流(学习板定位,请勿连接市电) |
| 继电器指示灯 | 板载 LED 指示灯(吸合时亮起) |
2.3 实物位置
继电器位于筑基学习板的边缘位置,旁边有一个带盖板的绿色栅栏式接线端子,用于连接外部负载。继电器吸合时,旁边的 LED 指示灯会亮起,方便观察当前状态。

如果你还不理解这三个端口的功能的话,你可以把它想象成一个带有三个接口的岔路口:
- COM (Common) - 公共端口:
- 它是电流的入口(或者是出口,取决于你的接线习惯,通常接电源线)。
- 动作逻辑: 无论继电器怎么动作,COM口永远是核心。它就像是一根可以来回摆动的导线,不是搭在 NO 上,就是搭在 NC 上。
- NO (Normally Open) - 常开端口:
- 平时断开,通电连通。
- 动作逻辑: 常 指的就是 默认状态(线圈没通电时) 。默认情况下,COM 和 NO 是断开的。只有当天空星开发板给继电器发信号让它 吸合(线圈通电) 时,COM 才会 啪 的一声连到 NO 上,电路导通。
- NC (Normally Closed) - 常闭端口:
- 平时连通,通电断开。
- 动作逻辑: 默认情况下,COM 和 NC 是吸合连在一起的。只有当天空星开发板发信号让继电器吸合时,COM 才会离开 NC,电路断开。
CAUTION
本学习板的继电器仅适用于 36V 以下直流负载的学习实验。严禁连接 220V 市电或其他高压电源,否则可能造成触电危险或设备损坏。
三 软件设计
3.1 基础部分
3.1.1 继电器吸合与释放
最基本的操作——控制继电器的通断:
# 继电器基本控制
from pyb import Pin
import time
# PA4 推挽输出,低电平吸合
relay = Pin('PA4', Pin.OUT_PP)
# 默认释放(高电平,断开负载)
relay.high()
# 吸合继电器(接通负载)
print("继电器吸合 - 负载接通")
relay.low()
time.sleep(2)
# 释放继电器(断开负载)
print("继电器释放 - 负载断开")
relay.high()2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
WARNING
PA4 是低电平吸合,low() 是接通,high() 是断开,与直觉可能相反。建议各位在实际工程代码中用有意义的函数名封装,避免混淆。
3.1.2 封装继电器控制函数
为了让代码更清晰,我们把继电器操作封装一下:
import time
from pyb import Pin
relay_pin = Pin('PA4', Pin.OUT_PP)
relay_pin.high() # 初始状态:释放
def relay_on():
"""吸合继电器(接通负载)"""
relay_pin.low()
def relay_off():
"""释放继电器(断开负载)"""
relay_pin.high()
def relay_state():
"""查询继电器状态,返回 True=吸合,False=释放"""
return relay_pin.value() == 0
# === 实战:循环控制 ===
print("开始执行继电器循环测试...")
while True:
relay_on()
print("继电器:已吸合 (状态:", relay_state(), ") -> 如果接了NO端,设备现在通电了")
time.sleep(2) # 保持吸合2秒
relay_off()
print("继电器:已释放 (状态:", relay_state(), ") -> 设备断电")
time.sleep(2) # 保持释放2秒2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
3.1.3 定时开关
每隔一段时间自动切换继电器状态,可用于定时灌溉、定时通风等场景,大部分场景我们都需要结合RTC来定时处理,而不是像下面这样几秒钟就切换一次,这里指示为了演示:
# 继电器定时开关
from pyb import Pin
import time
relay = Pin('PA4', Pin.OUT_PP)
relay.high() # 初始释放
ON_TIME = 3 # 吸合时间(秒)
OFF_TIME = 5 # 释放时间(秒)
print("定时开关模式启动,Ctrl+C 停止")
try:
while True:
relay.low()
print("ON - 负载接通")
time.sleep(ON_TIME)
relay.high()
print("OFF - 负载断开")
time.sleep(OFF_TIME)
except KeyboardInterrupt:
relay.high() # 退出时确保继电器释放
print("已停止,继电器已释放")2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
3.2 进阶部分
3.2.1 按键控制继电器
用 PA0 按键切换继电器状态,每按一次翻转一次:
# 按键控制继电器(PA0 切换,带消抖)
from pyb import Pin, LED
import pyb
btn = Pin('PA0', Pin.IN, Pin.PULL_DOWN)
relay = Pin('PA4', Pin.OUT_PP)
led = LED(1) # PB2 板载 LED 同步指示
relay.high() # 初始释放
led.off()
relay_is_on = False
last_press = 0
print("按 PA0 按键切换继电器状态")
while True:
if btn.value() == 1:
now = pyb.millis()
if now - last_press > 300: # 300ms 消抖
last_press = now
relay_is_on = not relay_is_on
if relay_is_on:
relay.low()
led.on()
print("继电器 ON")
else:
relay.high()
led.off()
print("继电器 OFF")
pyb.delay(10)2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
四 常见问题
Q: 代码运行了,但继电器没有动作?
- 确认筑基学习板已正确供电(继电器使用隔离电源供电,需要底板有电源输入)。仅靠 TYPE-C 供电时,如果供电不足的话隔离电源可能未工作,继电器无法动作。
- 观察继电器旁边的 LED 指示灯是否亮起,如果 LED 亮了但继电器没动作,可能是继电器本身出问题了,继电器也是有寿命的,不能长时间连续切换。
Q: 继电器吸合后有"咔嗒"声,正常吗?
正常。这是继电器内部电磁铁驱动机械触点闭合时发出的声音,是继电器正常工作的标志。
Q: 可以用继电器控制 220V 市电吗?
不可以。 本学习板的继电器和接线端子设计用于 36V 以下直流负载的学习实验。对于初学者来说连接市电存在严重的触电风险。