树莓派蓝牙近感智能门锁:手机离开自动上锁
核心概念
想为家庭办公室或私人工作室找个靠谱、科技感十足的安保方案?本指南将带你亲手打造一个 DIY 智能门锁,通过蓝牙感知手机在线状态,人走即锁、人到即开。
工作原理
手机处于可发现模式时持续广播唯一蓝牙标识符。树莓派监测该信号,判断设备是否在范围内,进而触发继电器控制门锁开合。
所需材料
- 树莓派 – 任意型号均可;我用旧款 Model B 因其简洁。需有网络连接(以太网或 Wi‑Fi)、SD 卡和 micro‑USB 电源。
- 蓝牙 USB 适配器 – Adafruit 4.0 BLE 模块可靠,任何兼容适配器皆可。仅需发送短促 ping,传输速度非关键。
- GPIO 扩展板(“Cobbler”) – 引脚连接清晰;便宜且好用。
- 继电器板 – 选 4 通道、额定 12 V/5 A。我用约 5 美元的通用款。
- 12/24 V 电磁锁 – 我买 180 kg 保持力含安装件的锁,约 35 美元。
- 12/24 V 电源 – 门锁必须外部供电;切勿从树莓派取电。
- Python 脚本(Lock.py) – 我们将逐步开发。
蓝牙起步
先在树莓派安装必要蓝牙包。可直接在设备操作或通过 SSH。
sudo apt-get install bluez python-bluez
插入适配器并验证识别:
hcitool dev
获取示例 Python 脚本发现周边设备:
wget https://pybluez.googlecode.com/svn/trunk/examples/simple/inquiry.py
python inquiry.py
若脚本报 “0 devices found”,确保手机处于可发现模式。iPhone 需打开蓝牙设置页启用。
创建检测脚本
新建 detect.py 并加入以下代码。将 MAC 地址替换为你手机的标识符。
#!/usr/bin/python
import bluetooth
import time
while True:
print("Checking " + time.strftime("%a, %d %b %Y %H:%M:%S", time.gmtime()))
result = bluetooth.lookup_name('78:7F:70:38:51:1B', timeout=5)
if result:
print("User present")
else:
print("User out of range")
time.sleep(10)
运行脚本查看实时状态更新。10 秒间隔平衡响应性与功耗。若担心电池续航,可加开关在室内时禁用循环。
GPIO 编号模式
选择与硬件匹配的引脚编号方案。“board”模式用物理引脚号,“BCM”(Broadcom)用 GPIO 通道号。下文示例使用 BCM,符合大多数扩展板。
接线继电器
将扩展板接树莓派:3.3 V 和 5 V 引脚分别接继电器 VCC 和 GND。GPIO 23 接继电器输入。核对继电器逻辑电平要求;多数直接接受 3.3 V 信号。
手动测试继电器,安装 wiringPi 并配置 GPIO 23 为输出:
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build
gpio -g mode 23 out
确认引脚状态:
gpio -g readall
继电器咔哒响即准备集成门锁。保持门锁电源与树莓派电源轨分离。
后续步骤
将检测脚本与 GPIO 控制逻辑结合,手机超出范围时触发上锁。在受控环境充分测试后再部署。
制造工艺
- 银行金库内幕:历史、设计与安全未来
- 树莓派接 KY‑033 循迹/门状态传感器:简易 Python 实现
- 树莓派构建稳健传感器 API:基于 GY‑91 多功能模块的 Flask 实现
- 树莓派纯数字引脚实现低成本红外测距传感器:RC 计时法
- Portenta H7 对接 MAX6675 热电偶温度传感器教程
- K30 CO₂ 传感器:室内空气质量实时监测
- Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
- DFRobot 电容指纹传感器 (ID809) 接入 Arduino/ESP8266 完整教程
- 基于 Arduino、键盘与线性执行器的密码门锁
- Cypress 发布双模 Bluetooth 5.0 MCU,支持 Mesh 组网,连接物联网设备与智能手机
- 电感式接近传感器:电路设计、功能与实际应用
- 蓝牙智能传感器网络:为何范围限制是最大挑战