FastBond4挑战部分-基于ATOM Lite的RFID智能插座控制系统
该项目使用了M5Stack ATOM Lite开发板、ATOM SOCKET KIT继电器模块和Unit RFID2,实现了基于RFID身份识别的智能物联网插座控制系统的设计,它的主要功能为:RFID刷卡控制、继电器控制、自动设备检测、RGB状态指示、物理按键备用控制。
标签
物联网
RFID
智能插座
FastBond
ATOM
身份识别
把酒灵灵
更新2026-04-27
48







项目标题:FastBond4挑战部分-基于ATOM Lite的RFID智能插座控制系统

该项目 使用了 M5Stack ATOM Lite开发板、ATOM SOCKET KIT继电器模块和Unit RFID2,__实现了__ 基于RFID身份识别的智能物联网插座控制系统的设计,
它的主要功能为:RFID刷卡控制、继电器控制、自动设备检测、RGB状态指示、物理按键备用控制

项目标签:FastBond ATOM 物联网 智能插座 RFID 身份识别

1.1 项目背景

在智能家居和物联网应用场景中,基于身份识别的设备控制是一个常见需求。传统的插座控制方式需要手动开关或使用遥控器,不够便捷且缺乏身份验证。本项目使用M5Stack ATOM Lite开发板配合ATOM SOCKET KIT和Unit RFID2,实现一款支持RFID身份识别的智能物联网插座控制系统,可通过刷卡方式控制插座通断,为智能家居场景提供安全便捷的电源控制方案。

1.2 项目目标

本项目使用M5Stack ATOM Lite开发板配合ATOM SOCKET KIT继电器模块和Unit RFID2,实现一款智能物联网插座控制器,主要功能如下:

  1. RFID身份识别:支持Unit RFID2读取ISO/IEC 14443 Type A/B标准卡片
  2. 多卡片控制:不同RFID卡片执行不同操作(ON卡开启、OFF卡关闭)
  3. 继电器控制:通过ATOM SOCKET KIT控制插座电源通断
  4. 自动设备检测:启动时自动检测I2C设备是否连接
  5. RGB状态指示:实时显示系统状态(绿=开启、红=关闭、蓝=待机、黄=未知卡片)
  6. 物理按键备用:内置按键可作为备用控制方式
  7. 防抖处理:按键防抖设计,避免误触发
  8. 未知卡片识别:自动输出未注册卡片的UID,方便添加新用户

1.3 创新点

  1. RFID身份识别控制:使用RFID卡片进行身份验证,提高系统安全性
  2. 多卡片权限管理:不同卡片对应不同操作权限
  3. 智能降级:RFID模块异常时可使用物理按键作为备用控制
  4. 模块化设计:代码采用类封装,便于扩展和维护
  5. 实时反馈:控制台实时显示设备状态、操作日志和未知卡片UID
  6. RGB状态可视化:通过LED颜色直观显示系统状态

二、硬件介绍

2.1 主控设备

M5Stack ATOM Lite (SKU: K001)

ATOM Lite是一款袖珍型物联网开发板,采用ESP32-PICO-D4作为主控芯片,体积小巧,功能强大。板载RGB LED(WS2812C-2020)和按键,支持Wi-Fi和蓝牙连接,非常适合物联网应用开发。

核心参数

参数

规格

型号

K001 (ATOM Lite)

主控芯片

ESP32-PICO-D4

CPU

双核 Xtensa LX6,240MHz

Flash

4MB

Wi-Fi

2.4 GHz Wi-Fi

蓝牙

Bluetooth 4.2

USB

USB Type-C

人机交互

参数

规格

RGB LED

WS2812C-2020

按键

1个用户按钮 (G39)

尺寸

24 × 24 × 14 mm

扩展接口

参数

规格

Grove接口

1× HY2.0-4P

GPIO

可扩展多个外设

2.2 继电器模块

ATOM SOCKET KIT (SKU: K055)

ATOM SOCKET KIT是一款基于HLW8023的智能插座套件,集成了继电器控制功能,可直接控制家用电器的电源通断。

参数

规格

型号

K055

继电器控制引脚

G23

继电器类型

电磁继电器

最大负载

250VAC/10A

功率计量芯片

HLW8023

2.3 RFID读写器

Unit RFID2 (SKU: U031-B)

Unit RFID2是一款基于13.56MHz频率的射频识别读写单元。它内置WS1850S芯片,遵循ISO/IEC 14443 Type A/B标准,可支持MIFARE、NTAG等系列RFID卡的数据读写。单元通过I2C接口通信,读写距离小于20mm。

参数

规格

读写IC

WS1850S

工作频率

13.56MHz

通信接口

I2C (地址: 0x28)

支持协议

ISO/IEC 14443 Type A/Type B

读写距离

< 20mm

产品尺寸

48.0 x 24.0 x 8.0mm

2.4 硬件连接

ATOM引脚

模块引脚

功能

G32

SCL

I2C时钟线 (RFID2)

G26

SDA

I2C数据线 (RFID2)

G23

RELAY

继电器控制 (ATOM SOCKET KIT)

G39

BTN

ATOM内置按键

G27

RGB

WS2812 LED

5V

VCC

电源正极

GND

GND

电源地

2.5 硬件框图

┌─────────────────────────────────────────────────────────────────────────┐
ATOM Lite 主控板 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ESP32 │ │RGB LED │ │按键 │ │USB-C │ │Grove │ │
│ │主控芯片 │ │WS2812 │ │G39 │ │接口 │ │I2C接口 │ │
│ │ │ │G27 │ │ │ │ │ │G32/G26 │ │
│ └────┬────┘ └─────────┘ └─────────┘ └─────────┘ └────┬────┘ │
│ │ G23 │ │
│ │ │ │
└───────┼──────────────────────────────────────────────────────┼──────────┘
│ │
│ 继电器控制 │ I2C通信
│ │
▼ ▼
┌───────────────────┐ ┌─────────────────────┐
ATOM SOCKET KIT │ │ Unit RFID2
(继电器模块) (RFID读写器)
│ │ │ │
│ ┌─────────────┐ │ │ ┌───────────────┐ │
│ │继电器 │ │ │ │ WS1850S芯片 │ │
│ │HLW8023 │ │ │ │ I2C: 0x28 │ │
│ └─────────────┘ │ │ │ 13.56MHz │ │
└───────────────────┘ │ └───────────────┘ │
│ └─────────────────────┘
│ 控制插座电源 │
▼ │ 刷卡感应
┌───────────────────┐ │
│ 家用电器插座 │ ▼
(负载设备) │ ┌───────────────┐
└───────────────────┘ │ RFID卡片 │
(MIFARE/NTAG)
└───────────────┘

三、方案框图和项目设计思路

3.1 系统架构

def handle_unknown_card():
print("=" * 40)
print(">>> UNKNOWN CARD DETECTED <<<")
print(">>> RFID卡号:", current_uid_str, "<<<")
print("=" * 40)

3.2 设备启动流程

def is_pressed(self):
current_state = self.btn.value() == 0
current_time = time.ticks_ms()

if current_state and not self._last_state:
if time.ticks_diff(current_time, self._last_press_time) > self._debounce_ms:
self._last_press_time = current_time
return True

self._last_state = current_state
return False

3.3 RFID卡片识别流程

from base import ATOMSocketBase

class RelayController:
def __init__(self):
self.socket = ATOMSocketBase(1, port=(22, 33), relay=23)

def on(self):
self.socket.set_relay(True)

def off(self):
self.socket.set_relay(False)

3.4 按键防抖算法

采用时间戳防抖算法:

  1. 防抖间隔:200ms
  2. 检测逻辑:按键按下时检查距离上次触发的时间间隔
  3. 触发条件:时间间隔大于防抖间隔才触发动作

四、原理图和PCB展示及介绍

4.1 硬件连接原理图

本项目使用M5Stack官方硬件,设计PCB方便硬件连接,采用I2C总线方式。

# 设备检测
devices = i2c_0.scan()
if 0x28 in devices:
rfid_0 = RFIDUnit(i2c_0)
print("RFID module initialized")
else:
print("RFID module NOT FOUND!")
rgb_led.on_red()

4.2 I2C通信协议

Unit RFID2 I2C通信协议:

参数

I2C地址

0x28

工作频率

13.56MHz

通信协议

ISO/IEC 14443 Type A/B

==================================================
ATOM Lite RFID Relay Control
==================================================
I2C scan: ['0x28']
RFID module initialized
Relay module initialized
Button initialized
--------------------------------------------------
System Ready!
ON Card UID: BCB71007000000000000
OFF Card UID: 1C526C22000000000000
--------------------------------------------------

Card detected: BCB71007000000000000
>>> RELAY ON - Card: BCB71007000000000000
继电器: ON (通电)

Card detected: 1C526C22000000000000
>>> RELAY OFF - Card: 1C526C22000000000000
继电器: OFF (断电)

Card detected: A1B2C3D4000000000000
========================================
>>> UNKNOWN CARD DETECTED <<<
>>> RFID卡号: A1B2C3D4000000000000 <<<
========================================

五、软件流程图和关键代码介绍

5.1 主程序结构

def loop():
# 检测按键(手动切换继电器)
if btn.is_pressed():
relay.toggle()

# 扫描RFID卡片
if time.ticks_diff(current_time, last_scan_time) > SCAN_INTERVAL * 1000:
scan_rfid_card()

5.2 继电器控制器类

class RGBController:
"""ATOM Lite RGB LED控制器类"""

def on_green(self): # 继电器开启
def on_red(self): # 继电器关闭
def on_blue(self): # 待机状态
def on_yellow(self): # 未知卡片

5.3 RFID卡片处理

def handle_card_detected():
"""处理检测到的卡片"""
on_uid_str = uid_to_string(ON_CARD_UID)
off_uid_str = uid_to_string(OFF_CARD_UID)

if current_uid_str == on_uid_str:
handle_on_card() # 开启继电器
elif current_uid_str == off_uid_str:
handle_off_card() # 关闭继电器
else:
handle_unknown_card() # 输出未知卡片UID

5.4 RGB LED状态指示

class RelayController:
"""
使用官方ATOMSocketBase控制ATOM SOCKET KIT继电器模块
"""

def __init__(self, port=(22, 33), relay=23):
self.socket = ATOMSocketBase(1, port=port, relay=relay)
self._state = False
self.off()

def on(self):
"""打开继电器 (通电)"""
self.socket.set_relay(True)
self._state = True

def off(self):
"""关闭继电器 (断电)"""
self.socket.set_relay(False)
self._state = False

5.5 主循环逻辑

"""
@file rfid_atom_relay_control.py
@brief ATOM Lite RFID控制继电器系统
功能:使用不同RFID卡片控制ATOM SOCKET KIT继电器开关
- 卡片A (ON卡): 开启继电器
- 卡片B (OFF卡): 关闭继电器
"""
import M5
from hardware import Pin, I2C
from unit import RFIDUnit
from base import ATOMSocketBase

六、硬件功能展示图及说明

6.1 系统运行日志

# I2C初始化
i2c_0 = I2C(0, scl=Pin(32), sda=Pin(26), freq=100000)

# RFID模块初始化
rfid_0 = RFIDUnit(i2c_0)

# 检测新卡片
if rfid_0.is_new_card_present():
uid = rfid_0.read_card_uid()

6.2 RGB LED状态说明

LED颜色

状态

说明

蓝色

待机

系统正常运行,等待刷卡

绿色

开启

继电器已开启,插座通电

红色

关闭

继电器已关闭,插座断电

黄色

未知

检测到未注册卡片,短暂闪烁

6.3 RFID卡片配置

卡片类型

UID

功能

ON卡

BCB71007000000000000

开启继电器

OFF卡

1C526C22000000000000

关闭继电器

未知卡

输出卡号,不执行操作

七、设计中遇到的难题和解决方法

7.1 RFID模块初始化

问题描述:RFID模块初始化失败,无法读取卡片。

解决方案

  1. 使用正确的I2C引脚配置 (SCL=G32, SDA=G26)
  2. 启动时扫描I2C总线检测设备
  3. 检测失败时通过RGB LED红色报警
                    ATOM Lite
┌───────────┐
│ │
5V ──────────┤ 5V │
│ │
GND ──────────┤ GND │
│ │
G26 ──────────┤ G26 (SDA) │──────► Unit RFID2 SDA
│ │
G32 ──────────┤ G32 (SCL) │──────► Unit RFID2 SCL
│ │
G23 ──────────┤ G23 │──────► ATOM SOCKET KIT 继电器
│ │
G39 ──────────┤ G39 (BTN) │◄────── 内置按键
│ │
G27 ──────────┤ G27 (RGB) │──────► WS2812 LED
│ │
└───────────┘


│ I2C


┌───────────┐
│ Unit RFID2│
0x28
└───────────┘

7.2 ATOM SOCKET KIT控制

问题描述:直接使用Pin控制继电器可能不稳定。

解决方案

  1. 使用官方ATOMSocketBase类控制继电器
  2. 正确的参数配置:ATOMSocketBase(1, port=(22, 33), relay=23)
                    ┌─────────────┐
│ 检测到卡片 │
└──────┬──────┘


┌─────────────┐
│ 读取卡片UID │
└──────┬──────┘


┌─────────────┐
│ UID比对 │
└──────┬──────┘

┌────────────┼────────────┐
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ ON卡匹配 │ │ OFF卡匹配 │ │ 未知卡片 │
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 继电器开启│ │ 继电器关闭│ │ 输出UID │
│ 绿灯亮 │ │ 红灯亮 │ │ 黄灯闪烁 │
└──────────┘ └──────────┘ └──────────┘

7.3 按键防抖

问题描述:机械按键存在抖动,可能导致多次误触发。

解决方案

  1. 采用时间戳防抖算法
  2. 设置200ms防抖间隔
  3. 使用ticks_ms进行精确计时
                    ┌─────────────┐
│ 设备启动 │
└──────┬──────┘


┌─────────────┐
│ 初始化RGB │
│ LED(蓝色)
└──────┬──────┘


┌─────────────┐
│ 初始化I2C │
│ 总线 │
└──────┬──────┘


┌─────────────┐
│ 扫描I2C设备 │
│ 检测RFID2 │
└──────┬──────┘

┌──────┴──────┐
│ │
▼ ▼
┌───────────┐ ┌───────────┐
│ RFID2已连 │ │ RFID2未连 │
│ 正常模式 │ │ 错误模式 │
└─────┬─────┘ └─────┬─────┘
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ 初始化继电器 │ │ RGB显示红色 │
│ 初始化按键 │ │ 程序退出 │
└──────┬──────┘ └─────────────┘


┌─────────────┐
│ 主循环运行 │
│ 扫描RFID卡片 │
│ 检测按键输入 │
│ 控制继电器 │
└─────────────┘

7.4 未知卡片识别

问题描述:需要方便地添加新的RFID卡片。

解决方案

  1. 检测到未知卡片时输出完整UID
  2. 格式化输出,便于复制粘贴
  3. RGB LED黄色闪烁提示
                           ┌─────────────────┐
│ 用户操作 │
(RFID刷卡/按键)
└────────┬────────┘


┌─────────────────┐
│ ATOM Lite │
(主控制器)
└────────┬────────┘

┌───────────────┼───────────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Unit RFID2 │ │ ATOM SOCKET │ │ RGB LED │
(身份识别) │ │ KIT │ │ (状态指示)
└─────────────┘ └──────┬──────┘ └─────────────┘

│ 电源控制

┌─────────────────┐
│ 家用电器 │
(负载设备)
└─────────────────┘

八、心得体会

8.1 项目收获

  1. RFID技术应用:深入理解了RFID身份识别技术在物联网中的应用
  2. 嵌入式编程:掌握了MicroPython在ESP32上的应用开发
  3. 模块化设计:学会了使用类封装硬件驱动,提高代码可维护性
  4. 官方库使用:实践了M5Stack官方驱动库的正确使用方法

8.2 技术亮点

  1. RFID身份识别:使用RFID卡片进行身份验证,提高系统安全性
  2. 多卡片权限管理:不同卡片对应不同操作权限
  3. 智能降级:RFID模块异常时可使用物理按键作为备用控制
  4. 模块化设计:代码采用类封装,便于扩展和维护
  5. RGB状态可视化:通过LED颜色直观显示系统状态
  6. 未知卡片识别:自动输出未注册卡片UID,方便添加新用户

8.3 改进建议

  1. 网络控制:添加Wi-Fi连接,支持远程控制插座
  2. 定时功能:实现定时开关功能,自动化控制家电
  3. 状态保存:断电后保存继电器状态,恢复供电后自动恢复
  4. OTA升级:支持远程固件升级,便于维护
  5. 安全加密:添加通信加密,提高系统安全性
  6. 功耗优化:实现低功耗模式,延长设备寿命
  7. 多设备支持:扩展支持多个插座同时控制
  8. 用户管理:实现动态用户添加/删除功能,无需修改代码
  9. 刷卡记录:记录每次刷卡时间和结果,便于审计

创意方向关联

基于本项目的技术实践,我们可以拓展到以下创意领域:

1. 智能门禁系统

RFID身份识别技术是门禁系统的核心:

  • 办公室门禁:员工刷卡进入办公区域
  • 家庭安防:家庭成员刷卡开门,陌生人报警
  • 仓库管理:授权人员刷卡进入仓库区域

2. 电源 / 高功率应用 / GaN电源技术 / SiC技术

本项目的继电器控制技术是电源管理的核心:

  • 高功率应用:继电器控制技术可扩展为工业级电源开关系统
  • GaN电源技术:智能插座与GaN充电器结合,实现高效智能充电
  • SiC技术应用:高功率智能插座需要SiC器件支持

3. 楼宇自动化

智能插座是楼宇自动化的核心组件:

  • 智能家电控制:远程控制家电设备开关
  • 能源管理:监测设备能耗,实现智能节能
  • 定时控制:按计划自动控制设备运行

技术迁移价值

本项目开发的技术方案可迁移到:

  • 门禁系统:RFID身份识别、权限管理、刷卡记录
  • 电源应用:高功率开关、GaN/SiC智能控制
  • 楼宇自动化:智能家电、能源管理、定时控制

致谢

感谢 DigiKey电子森林 提供的FastBond4活动支持,本次活动链接:https://www.eetree.cn/page/digikey-fastbond








软硬件
电路图
附件下载
rfid_atom_relay_control.py
ATOM Lite RFID.m5f2
adapter.epro
adapter_kicad.zip
团队介绍
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号