在物联网时代,将身边的普通物件变得“聪明”一些,这件事本身就充满趣味。本项目正是这样一个尝试:利用 Bolt IoT 平台与面部识别技术,为家中一个普通架子(或衣柜、抽屉、门均可)加装一道人脸锁,打造低成本、高灵活性的智能门禁系统。
先说几个核心判断。人脸识别锁并非新鲜事物,但使用可控的模块自行搭建,同时兼顾成本与灵活性,这就颇具价值了。整个开发流程涉及用 C# 编写一个 Windows 窗体应用,用于注册与验证人脸,再通过 Bolt Cloud API 控制后端的 Arduino 和伺服电机,最终完成锁的开启与关闭操作。
第 1 步:构建软件
软件部分的主角是 Visual Studio,目标是一个 Windows 窗体应用程序。该程序运行于电脑上,主要负责三件事:管理授权人脸数据、调用 FacePlusPlus API 进行面部比对、以及通过 Bolt Cloud API 与硬件模块通信。
项目需用到三个关键库:
AForge .NET——处理摄像头图像捕获;Bolt IoT API .NET——一个非官方的 C# 客户端库,用于与 Bolt Cloud 交互;Newtonsoft JSON——解析 API 返回的 JSON 数据。
准备凭证与初始化
动手写代码之前,需要先获取两套 API 凭证。
Bolt Cloud API:前往 cloud.boltiot.com 注册账号,将 WiFi 模块关联至云账户。过程并不复杂,使用手机上的 Bolt IoT 设置 App 即可完成设备配对。绑定成功后,仪表板会显示设备 ID 与 API 密钥。
FacePlusPlus API:该平台提供免费的图像识别服务,本项目中主要用它做人脸比对。注册后进入控制台,在“Apps”下找到“Get API Key”,记下新生成的 API Key 和 Secret。
准备好四样关键信息:BOLT_DEVICE_ID、BOLT_API_KEY、FPP_API_KEY 和 FPP_API_SECRET。然后在程序中创建一个全局的 Bolt 实例,后续所有与 WiFi 模块的通信都通过它完成。
核心功能详解
1. 锁定/解锁门
电路设计上,数字引脚 D0 为高电平时表示锁定,D3 为高电平时表示解锁。具体做法是调用 DigitalMultiWrite 方法,分别向这两个引脚写入 HIGH 或 LOW 值,从而给 Arduino 下发指令。
锁定代码:先将 D0 置高、D3 置低,然后将两个引脚都拉低。解锁代码正好相反。
2. 添加/删除可信面孔
每张人脸会被编码成 Base64 字符串存储在本地,同时保存一个对应的名字列表。添加人脸时,先用 FacePlusPlus 的 Detect API 判断当前帧是否包含人脸,如果有,则将图像的 Base64 编码和名字存下来。删除人脸则简单地从两个列表中移除相应条目,然后保存更新。
3. 人脸验证
验证过程是线性的:遍历保存的每一张人脸数据,使用 FacePlusPlus 的 Compare API 与捕获的图像进行比对。如果返回的置信度超过 80%,则触发解锁操作。
4. 侦听铃声
设想是设置一个物理按钮,用户按下后对着摄像头验证身份。这需要一个专门的线程持续读取 D4 引脚的值,若读到高电平,则视为铃声事件,执行人脸捕获与验证。每次循环之间休息 2 秒,避免消耗过多 API 配额。
运行程序
在 Visual Studio 中打开解决方案文件,填写 API 凭证,编译运行。程序会提供摄像头选择、实时画面展示、添加/删除可信面孔、开始人脸监控等功能。连接正常的话,还能直接在程序界面中按铃或锁定门。
第 2 步:电路设计与 Arduino 代码
硬件的功能需求很清晰:红绿 LED 分别指示锁定与解锁状态;一个按钮充当呼叫铃;一个按钮用于手动锁定;一个蜂鸣器在门铃响和门锁时发出声音。

Arduino 代码的核心逻辑是循环检测来自 Bolt 模块的锁定/解锁信号以及物理按钮的状态,并根据判断结果控制伺服电机、LED 和蜂鸣器。
事件流
按下铃铛按钮 → 物理按钮按下 → Arduino 向 RingBellSignalPin 发送高电平 → Bolt 模块检测到 D4 为高 → WinForms 应用捕获当前画面 → 比对保存的人脸 → 若置信度足够,通过 Cloud API 向 D3 发送解锁信号 → Arduino 收到解锁指令,转动伺服电机 → 蜂鸣器响、绿灯亮 → 门打开。
按下锁定按钮 → 手动按下锁定按钮 → Arduino 直接控制电机转到锁定位置 → 锁门、红灯亮、蜂鸣器响。也可通过 WinForms 应用远程锁定。


注意这里的通信链路:WinForms 应用并不直接连接 Arduino,中间隔着一个 Bolt WiFi 模块。这种架构的优点是,只要更换客户端平台(比如 Android App),同样能通过 Cloud API 调用这些功能,灵活性相当高。
第 3 步:构建硬件
本项目以鞋架作为演示对象。核心在于将伺服电机的旋转动作与锁的开关动作耦合起来。
具体做法有些手工创意:找一个塑料瓶颈固定在伺服电机上,另一个瓶盖固定在锁轴上,用尼龙线将这两个部件连接。电机转动时,通过线拉动瓶盖,带动锁轴旋转,从而实现解锁或锁定。当然这仅是一种方法,完全可以根据手头锁的具体结构,发挥创造力找到更合适的连接方式。








必须提醒的是,你不一定非要使用塑料瓶颈来做耦合。选择什么方法,取决于锁的实际构造和手边的可用材料。这一步属于纯粹的机械工程,动手把它固定牢固即可。
最终将伺服电机用热胶固定在机架上,调整好尼龙线的松紧,整个装置就完工了。剩下的只需给 Arduino 和 Bolt 模块通电(可用移动电源),在 WinForms 应用中添加一张可信面孔,然后就能用脸来锁门和开门了。
结论
这个项目虽然简单,但涵盖了物联网应用的几个核心环节:云 API 集成、本地 C/S 架构开发、嵌入式控制以及一点机械设计。其背后的逻辑可以轻松延伸到更复杂的场景——比如用手机远程开门,或者为不同家庭成员分配不同时段的访问权限。物联网的潜力,往往就体现在这种将日常物件“智能化”的过程中。
