文章目录
前言
本文教大家用25元的成本打造一个可充电的、支持HomeAssistant的人体感应器,通过搭配不同的自动化脚本实现各种好玩的功能。整个制作过程中需要一丢丢的动手能力和软硬件基础,最终成品图如下:
一、硬件篇
项目用到的硬件主要包括以下几个部分:
1.ESP-01S 串口WIFI模块
ESP-01s模块它是由一颗ESP8266作为主控再由一颗flash作为存储芯片组成的,带有板载芯片供电采用3.3V电压,使用串口进行烧写固件程序或者AT指令集调试的。支持连接2.5GHzWIFI,板载两个GPIO口。
2. HC-SR501 人体感应传感器
人体红外感应模块 是基于红外线技术的自动控制产品。灵敏度高、可靠性强、超低功耗,超低电压工作模式。广泛应用于各类自动感应电器设备,尤其是干电池供电的自动控制产品。
- 两种触发方式:(可跳线选择)
1. 不可重复触发方式:即感应输出高电平后,延时时间段结束,输出将自动从高电平变成低电平;
2. 可重复触发方式:即感应输出高电平后,在延时时间段内,如果有人体在其感应范围
活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平.。 - 光敏控制(可选):模块预留有位置,可设置光敏控制,白天或光线强时不感应。光敏控制为可选功能,出厂时未安装光敏电阻。如果需要,请另行购买光敏电阻自己安装。
3. 5V2A充放电一体模块
- 模块支持3.7/4.2V锂电池
- 允许边充边放
- 输出为5V 2A
4. 1.8V-5V转3.3V升降压模块
由于ESP-01S使用3.3V电源,而外部输入为5V电源,因此需要转换模块。
5. type-C 转接板
使用此转接板后,充电时可使用通用的Type-C充电线,注意只是适配接口,并不支持快速充电。
6. 按键及键帽
充放电一体模块有一个开关,单点打开输出,双击关闭输出,为了操作方便,需要将其引出接到外壳上。
7. 锂电池
普通的3.7V锂电池
8.细导线
导线我选择的时1007电子线,导线不宜太粗,否则不好焊接。
二、工具篇
1. 烙铁
可调温度的焊台使用方便,需要额外购买焊锡丝和助焊剂,此处不再赘述。
2. 胶枪
热熔胶枪,很便宜,需要购买胶条。
3. 固件烧录器
ESP-01S的下载器有两种,一种时如下图所示的串口转接板,是用来发送AT指令集的,不能直接用来烧录固件,但是把GPIO0接到GND就可以了,用一个短线接起来,如下图所示。
还有一种是烧录器,应该是可以直接使用的,我没有用过,如下图所示
三、组装篇
1. 硬件连接
硬件接线图如下所示,没装绘图软件,用自带的绘图工具画的,比较简陋,以后会更新:
注意传感器HC-SR501的电源供电为5V,之前的图有误,已经做了修改。
简单来讲分为以下几个步骤:
- 连接Type-C转接板到充放电板的电源输入
- 连接锂电池到充放电板的电池端
- 连接输出端到 5-3.3降压模块的VI和 HC-SR501的VCC
- 连接降压模块的VO到ESP-01S的3.3V输入端
- 连接HC-SR501的输出端到ESP-01S的GPIO0
- 就近连接各模块的GND引脚
焊接好的实物图如下所示,注意检查引脚焊接有无正负极接反和短路的情况后再上电,以免发生危险:
2. 安装外壳
为了看起来更加美观和方便使用,我找来了一个塑料盒子,经过开孔等操作,成功的将硬件部分塞进了壳子里,并且将电源按钮引出接到了外壳上。
四、软件篇
软件开发平台使用的是ESPHome,好处是操作逻辑使用配置的形式编写,较为简单,同时接入HomeAssistant比较方便。
关于开发环境的搭建,我会单独写一篇文字介绍,此处就不详细介绍了。
1. 创建设备
首先连接到HomeAssistant的前端页面,打开ESPHome的UI界面,如下图所示:
点击右下角的+号,开始 创建设备
根据提示设置名称、设备类型、WIFI,
其中设备名称只能包含a-z,0-9,-和_几种字符,我命名为 esp01s_body
设备类型选择
输入WIFI信息,esp01-s上电后会连接到此页面,OTA升级密码可以设置也可以空着。
点击Finish完成创建。
2. 编写配置文件
点击Edit,开始编辑文件,文件中已经包含了部分内容
esphome:
name: esp01s_body
platform: ESP8266
board: esp01_1m
wifi:
ssid: "XXXXX"
password: "XXXXX"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "XXXXXX"
password: "XXXXXX"
captive_portal:
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
在配置文件中添加如下信息以添加web_server支持,支持在web界面中调试程序。
web_server: ##web控制,添加了这2行,就可以在网页端打开设备ip
port: 80
添加传感器相关配置信息
binary_sensor: #定义传感器
- platform: gpio
pin: GPIO0
name: "body sensor"
device_class: motion
id: motion_01
#触发时关闭GPIO2输出,点亮了板载LED
on_press:
- switch.turn_off: motion_01_light
#恢复时打开GPIO2输出,熄灭了板载 LED
on_release:
- switch.turn_on: motion_01_light
switch:
- platform: gpio
pin: GPIO2
name: "body light"
id: motion_01_light
点击保存后,点击VALIDATE按钮检查有无错误,正确无误的输出如下图所示:
3. 编译文件
点击设备文件右上角的编译按钮,开始编译文件。
编译过程如下图所示,提示SUCCESS即为编译完成:
编译完成后,点击下载DOWNLOAD BINARY ,下载固件到本地,保存为文件。
4. 烧录固件
首次烧录固件需要使用烧录器,点击此处下载烧录器 烧录工具
将ESP-01S插入烧录器,然后连接电脑,开启软件,加载固件,点击Flash ESP ,然后等待烧录完成即可,以后更新程序可以直接通过OTA升级完成。
5. 在web界面中调试
首先需要在路由器的配置页面找到ESPhome设备的IP地址,然后在浏览器端输入XXX.XXX.XXX.XXX:80打开web调试页面,该页面可以读取输入,触发输出,查看调试日志和OTA固件升级。
点击Toggle按钮,可以发现当body light状态为OFF时,板载LED亮起,当状态为ON时,板载LED熄灭。
五、自动化篇
1. 在HA中添加设备
进入HomeAssistant页面中,正常情况下,如果HA和人体感应器接入到同一个局域网中,HA已经自动发现了人体感应器,如果没有,试着重启一下HomeAssistant。
点击check it out,会进入集成配置页面,并且自动加入了ESPHOME集成。
点击配置按钮,然后点击提交,输入区域信息后,点击提交按钮,设备添加完成
2. 配置自动化
点击配置中的自动化,开始配置自动化规则
点击 添加自动化,然后输入自动化名称,或者从空的自动化开始都可以。
添加一些简单的描述信息
触发 条件配置为
环境条件暂时不设置,动作设置为打开灯。
点击保存后,自动化规则就默认生效了。
以上只是一个简单的演示,并不是很完善。只要人体感应的数据能被HA接收,就可以编写各种各样的自动化规则实现我们想要的功能了。
总结
看到这里,我们的人体感应器就做好了,接下来计算一下成本
相关的资料和文件在此处下载,同时也会上传到我的个人公众号中,回复“人体感应器”即可免费领取。
如果你对HomeAssistant和智能家居的内容感兴趣,欢迎关注我的个人微信公众号,获取更多精彩内容。