前言
租的出租屋,环境是老旧的小区,因为便宜。其中每次出门前都没有安全感,要摸一遍手机手表钥匙,哎这个摸钥匙就受不了,家里的灯都是手机开的,门也得要手机开啊,想想得有多方便。
资源
现有的esp01,s90舵机,iPhone电池,基本的都有,买电池管理模块要type-c接口和设备外壳(原打算自己画,但是手头没有打印机,淘宝上还小贵,所以买公模的壳子)
方案
原打算在自己的ha里(ha的安装,如果点不开就也是还没写)用自己的mqtt服务器,arduino写一个客户端去控制舵机,后面发现了简单成熟的esphome更 有性价比,门里面是这种门锁,sg90舵机是可以拉动的(不行应该也可以调节锁的弹簧松紧),舵机拉线还可以达到自动手动俩用的目的,电源管理是type-c接口用手机充电线就可以充电,买了nfc标签(避免nfc设备在门上被损坏,一个nfc标签便宜),手机扫描nfc标签,打开链接,链接指向ha软件,自动化标签被扫描,执行开门。
操作
esphome安装教程(如果点不开就是还没写)
一,软件
先上esphome对esp01的配置文件,esphome官方 。
esphome:
name: esp82661 #设备名字
friendly_name: ESP82661 #设备友好的名字
esp8266:
board: esp01_1m #尽可能和自己板子类型一致
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption: #这个api在homeassistant中第一次配置要用,相当于一层密码
key: "JCyqHo62sKWYuHNq3KO2sKWY1SLNO2sKWYuHcXOYrQ="
services: #这些是esphome的舵机服务接口,ha那边调用服务的值会发到这里,在这里除100后给到舵机的id
- service: control_servo
variables:
level: float
then:
- servo.write:
id: my_servo
level: !lambda 'return level / 100.0;' #return livel是回来的值
ota: #这里是ota无线升级固件,打开并且设置密码,注意,ip必须设置静态ip否则这种升级会报错
safe_mode: true
password: baivbaipass
wifi:
ssid: 02_2.4 #只能接2.4g的WiFi
password: 74849328 #哈哈,随便写的,这里写你自己的WiFi账密
manual_ip: #相关静态ip
static_ip: 192.168.0.222
gateway: 192.168.0.1
subnet: 255.255.255.0
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap: #就是说万一没连上WiFi还可以手机连接这个热点配网
ssid: "Esp82661 Fallback Hotspot"
password: "FYWHjrTfX1bp"
captive_portal:
light: #esp01的灯不能浪费吧,加个灯玩
- platform: status_led #类型,人家的类型就叫这,咱改下面的name就行
name: "lock state"
pin: GPIO2 #我这个版本就不认识D2,哈哈
servo: #舵机的意思,舵机的id,输出的模式
- id: my_servo
output: pwm_output
# Example output platform
# On ESP32, use ledc output
output: #输出的模式的具体配置
- platform: esp8266_pwm
id: pwm_output
pin: GPIO0
frequency: 50 Hz #源于sg90舵机的特性
esphome的配置文件就这样,文件管理到本机esp的项目文件夹esp_project,在路径输入cmd,输入指令esphome dashboard demo1/,这里的demo1是你esp项目文件夹下具体的项目文件夹名字,
D:/
all_project
esp_project
demo1
demo2
...
打开本机的localhost:6052端口,右下角新建,会提示给你一个在线烧录网站,关掉,然后填新项目的名字,选择项目的芯片类型……,填完配置文件,项目右下角里有编译(安装),编译的第三个是有线烧录。
第一次是要有线烧录的,第一次用esphome的话,需要等待很长时间,烧录进去,联网的时候esp的灯会闪,然后在ha的设备里看到内网发现设备,添加的时候会问你要配置文件里面的api密钥,添加成功,可以控制状态灯,看看正常不。
二,硬件
esp01的供电是3.3v,电池管理模块输出是5v(这里注意一定要买充电升压一体的,如果没有升压,舵机在欠压状态下会一直在-90到90度抽搐,对于门锁来说这是极度危险的),所以还要准备一个1117的线性降压芯片,舵机供电也是需要5v,但是esp01的3.3v控制信号可以驱动舵机,我忘了续买洞洞板了,所以是3D焊接(焊武帝上线),记得给1117配电容,电线拉通就好,不要长的离谱了。
壳子对门的固定,和舵机在壳子里的固定,一定要用结构固定,不要服帖胶水,我这里是木门用自攻螺丝,在壳子上打孔,舵机加上支撑物,中间塞热熔胶,再用轧带绑到壳子上的,开槽的时候最好用手电转,不过还好我买的这个壳子用刀削也不太费劲(这里要注意,电源插口,大多数充电线的头子不太长,开槽要把插头塑料部分大小也开进去)其他不受力的(在壳子上划出划痕增加热熔胶附着力)用热熔胶固定就可。
三,设自动化
因为是门锁,就不在ha主页设控制组件了,ha配置里新建标签,给标签配置自动化,写入现实中的nfc标签,手机nfc扫描标签,自动化调用服务,实现开门,这个舵机控制在ha里并不支持,esphome接入ha也不支持实体,所以只能是用服务去控制,我设置的舵机(值在-100到100)滑到远端,拉开锁,等待10s,舵机划回近端。