当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]DoorCTL 是一款专为纽约布鲁克林一家商业洗衣设施的实际生产需求而设计的仓库装卸门控制系统。它取代了传统的实体墙面按钮,采用网页界面,所有操作均经过身份验证、按角色授权,并全程记录。

DoorCTL 是一款专为纽约布鲁克林一家商业洗衣设施的实际生产需求而设计的仓库装卸门控制系统。它取代了传统的实体墙面按钮,采用网页界面,所有操作均经过身份验证、按角色授权,并全程记录。

该项目特意按照生产级标准构建,而非作为原型,而是作为员工日常使用的完整系统。这意味着与典型的“ESP32 + 继电器 + 按钮”搭建不同,它在数据库层面增加了JWT身份验证、WebAuthn生物识别、基于角色的访问控制(RBAC)以及行级安全机制。

建筑

系统分为四个层次:

•PWA(渐进式网络应用)——基于Vanilla JavaScript,托管在Netlify上。用户可通过密码或生物识别登录,查看实时门禁状态,并可浏览活动记录。

•Supabase — Postgres 数据库结合 Edge Functions(Deno)。所有身份验证和授权操作都集中在此:JWT 的签发与验证、WebAuthn 验证,以及每次请求时的角色检查。

•Blynk Cloud 仅用作命令中转桥(虚拟引脚 V1/V2/V3)。在 Blynk 层不进行用户身份识别,该责任完全由 PWA 和 Supabase 承担。

•ESP32 固件——接收来自 Blynk 的指令,驱动一个双通道继电器(高电平激活,GPIO26 = 开启,GPIO27 = 关闭),并读取一个 433 MHz 高频遥控器(QIACHIP RX480E)和一个物理停止按钮。

硬件

组件

•ESP32开发套件 — 主控制器

•双通道继电器模块(SRD-05VDC-SL-C,主动高电平)——模拟门控器上的按钮按下操作

•QIACHIP RX480E — 用于物理远程的433 MHz射频接收器

•物理停止按钮 — GPIO25 + GND 上的干接点

关键设计决定——主动高电平:在ESP32启动时,GPIO26/27默认为低电平,因此继电器在开机时保持关闭状态。这可避免ESP32重启时误触发门禁。

电隔离:继电器触点(COM/NO)与ESP32的逻辑电路在电气上是隔离的——线圈与触点之间的唯一连接是磁性。这一点很重要:门控器的电路永远不会到达ESP32的3.3V GPIO引脚。

安全架构

这是项目中超出硬件部分最远的部分。

JWT(HMAC-SHA256):登录时使用 Web Crypto API 生成令牌(无需外部库),存储在 localStorage 中,并通过 X-Doorctl-Token 头部附加到每个管理员请求中。

WebAuthn生物识别:使用@simplewebauthn/server实现真正的挑战-应答认证。私钥永远不会离开设备的安全隔离区域,服务器仅验证签名。

RBAC — 三层权限(管理员/操作员/只读):核心原则是角色永远不会被嵌入到JWT中。

每次管理员请求时,角色都会从数据库中实时读取。如果管理员将某人降级,变更会立即生效,无需等待30天的令牌过期。

审计日志:每项门禁操作——无论是来自应用程序、射频遥控器还是实体按钮——都会被记录在日志中,包含触发该操作的用户、来源以及时间戳。

行级安全:在日志表和用户表上以Postgres级别启用——这是一种独立于边缘函数逻辑的额外防护措施。

挑战与经验教训

Blynk 无法识别用户。最初尝试通过固件中的 V-pin 处理器来识别用户,但结果并不正确:Blynk 只是一个命令中转通道,所有用户归属信息都必须在 PWA/Supabase 层进行处理。

循环阻塞确实存在权衡取舍。Supabase 的 HTTP 调用(300–800 毫秒)会占用 ESP32 单核的处理能力,这意味着如果某个动作在一秒左右发生,理论上可能会错过 433 MHz 或 STOP 脉冲信号。继电器控制不会受到影响,只有日志记录可能出问题。使用异步或双核 FreeRTOS 可以解决此问题,但代价是显著增加的复杂性,因此目前这种设计是一种有意识的权衡选择。

并行性需要 FreeRTOS。在 loop() 之外单独定义一个 void 函数并不会实现并行性——它仍然会从 loop 中调用,并以完全相同的方式被阻塞。

硬件隔离并非可选。即使共享地线看似显而易见,将ESP32引脚直接并联在现有控制电路中仍存在危险,必须使用光电耦合器继电器干触点等设备。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

我们都经历过这样的感觉:你把电子阅读器放在桌上,坐在椅子上放松地读着,结果突然意识到自己已经读完一页了,得重新坐起来。但如今难道没有专门的蓝牙遥控器可以买来连接电子阅读器,避免这种麻烦吗?当然有,但既然可以买到内置蓝牙、...

关键字: 蓝牙 StickS3 ESP32

输出端被短接后,信号恢复了却幅度变小或失真加重,这通常不是设置被改了,而是保护链路还没有完全退出。函数发生器的输出级保护会改变可用驱动能力。

关键字: 发生器 函数发生器 继电器

你有没有在芬兰的夏天尝试过睡觉?你一定知道问题所在:太阳几乎不会落山,夜晚总是明亮,当你终于入睡时,房间里的阳光早已在你准备起床前就洒满了。而当清晨真正到来时,你的遮光窗帘又做得太过彻底了。VerhoBot 可以解决这两...

关键字: 机器人 智能家居 ESP32

隔离电源(Flyback、反激、LLC)的反馈环路里,光耦是横跨原副边的"独木桥"——TL431 在副边把输出电压误差转成电流,光耦原边 LED 发光,副边光敏管把电流传到原边 PWM 芯片(UC3842、NCP1342...

关键字: 光电耦合器 CTR

在工业自动化、智能控制、电力监测等各类电气系统中,信号切换是设备联动、逻辑控制、回路隔离的核心基础环节。机电继电器依托电磁驱动的物理触点通断特性,具备电气隔离性强、适配信号类型广、负载兼容性高、可多路拓展的优势,是实现多...

关键字: 继电器 电气隔离 电磁驱动

说实话:很多DIY智能家居方案都把事情做得过于复杂,往往需要第三方服务器、混乱的云配置,甚至持续联网才能打开一盏灯。我希望打造一个更简洁、完全私密且响应极速的系统,同时不牺牲干净现代的界面和用户体验。

关键字: 控制面板 智能家居 ESP32

你已经经历过这种情况了。你的ESP32产品在客户现场运行了6小时后突然崩溃。设备会自动重启——因为这是你编程时设置的默认行为——而日志中留下的只有这些内容:

关键字: SDK 寄存器 ESP32

为了探索低成本替代方案是否能提供有用的信息,我基于ESP32开发了一款水质分析仪。该设备结合了三个不同传感器(pH值、电导率和浊度)的测量数据,以评估河流、溪流和湖泊等淡水水源的整体状况。

关键字: 传感器 升压转换器 ESP32

你真的每天喝1.5升水吗?这款智能饮水机通过RFID徽章识别你的身份,精准分发毫升级的饮用水,并通过LoRaWAN长距离网络自动将你的饮水数据发送至网络应用!

关键字: RFID LoRaWAN 继电器 Arduino

冰壶运动员在比赛中使用秒表来判断冰球滑下冰面的速度。计时过程还能为运动员提供有关冰面“速度”的信息,即冰球与冰面之间的摩擦力大小。大多数传统秒表在冰壶运动中给运动员带来两个挑战:

关键字: 计时器 蜂鸣器 ESP32
关闭