本帖最后由 lione95678 于 2023-4-14 12:06 编辑
起因:现在网上卖的门磁传感器,基本上就是这么几种,射频的(要买那种双向的,开门和关门都会发送1次射频信号),蓝牙的,zigbee的,还有wifi的。射频的最便宜,价格在10-15元左右,我自己就是买的双向射频的(只是我的射频接收模块有时会收不到射频信号),其余几种都是30以上了吧,还要买网关。一直想自己diy一个,但小白啊,蓝牙和zigbee都搞不定,wifi的功耗一直是个问题。 后来想到了esp32或者esp8266有低功耗模式,自己又喜欢使用esphome固件。所有想到了一个自制esp32门磁的方法。 原理很简单,使用esphome的deep_sleep(深度睡眠)+1个binary_sensor(二进制传感器),平时esp32处于睡眠模式,当门打开或关闭时,触发一个gpio,就可以离开深度睡眠,并通过二进制传感器得知门是开还是关,一段时间后esp32休眠,二进制传感器的状态就是Unknown(未知)。 下面是esphome的yaml写法:
deep_sleep:
run_duration: 120s
wakeup_pin:
number: GPIO23
inverted: false
mode:
input: true
pulldown: true
wakeup_pin_mode: INVERT_WAKEUP
id: wake_up
binary_sensor:
- platform: gpio
pin:
number: GPIO15
inverted: true
mode:
input: true
pulldown: true
name: "客厅门"
device_class: door
id: keting_door
我这里唤醒的针脚是gpio2,二进制传感器的针脚是gpio18,esp32处于活动状态的持续时间是120秒。注意wakeup_pin_mode的参数,这样当gpio2针脚高低电平变化就会触发结束深度睡眠。 注意:1、为什么不使用价格便宜的esp01或者esp8266?因为esphome说只有esp32才支持gpio触发结束深度睡眠。 2、不可以使用esp32开发板,要自己打板焊接,因为开发板都使用ams1117的ldo,静态功耗太大,自己打板可以缩小成品的尺寸,并使用低功耗的ldo,比如rt9013-33。 3、如果可以,可以再使用esp的adc针脚来检测锂电池电压,换算成锂电池电量,这样知道成品使用时大概什么时候可以换电池了。 4、从唤醒模块到homeassistant检测到门开关状态,大概需要30秒左右。 需要的元器件,只要esp32模块,2个微动开关,1块聚合物锂电池,一些电容电阻什么的,再加上嘉立创的免费打板,价格应该在25-30元(不算运费的话),当然还要3d打印外壳。算下来好像也不便宜了。 接线很简单,一个微动开关连接gpio2和3.3v,另一个微动开关连接gpio18和3.3v即可。 有空的时候画一个原理图和立创lda的打板文件,给大伙看看。
上传立创EDA的文件
原理图
pcb正面
pcb反面
pcb-3d正面
pcb-3d反面
注意,只是有空的时候自己画了文件,还没有打板测试,如果有问题还请见谅,以后有空的话会自己打板测试。就算不做门磁也可以当一个小型化的开发板使用,就是因为使用rt9013,大电流肯定不行。
因为自己是小白,所以什么信号干扰,滤波都不懂得。如果不要使用引出针脚,那就不要焊接2.0mm间距的排针,减少成品的厚度,可以使用尺寸32*20mm,厚度7-8mm的500ma聚合物锂电池。注意因为板子背部有焊盘,锂电池用绝缘胶带贴一下
Gerber_PCB_esp32门窗传感器.zip
(32.9 KB, 下载次数: 2)
立创EDA原理图及pcb.rar
(76.43 KB, 下载次数: 5)
|