电子说
步骤1:硬件 - 威廉希尔官方网站
参见附加的威廉希尔官方网站 方案。我将SMD部件焊接在适配器PCB板上,并将所有部件焊接到双面穿孔板上。我通过母头连接ESP-01,所以我可以通过本Instructable步骤3中所示的适配器将其移除以进行编程。
威廉希尔官方网站 的工作原理如下:
当门打开时,TPL5111接收到DELAY/M_DRV引脚的一个镜头并启用为ESP-01供电的TPS73733 LDO。对于此操作,必须将EN/ONE_SHOT拉低,请参见TPL5111的数据表。
程序运行后(参见步骤软件),ESP-01向TPL5111发送一个完成信号,然后禁用TPS73733,从而使TPL5111和TPS73733的功耗状态非常低。
我使用带有NO和NC连接的簧片开关。我连接了NC引线,因为当磁铁被移除(门打开)时,簧片开关必须关闭威廉希尔官方网站 ,当磁铁接近(门关闭)时,簧片开关必须打开。
对于后门传感器,我添加了一些冷凝器当我发现一些不稳定性时,电阻器和电阻器,但不稳定性是由我后来发现的软件(esp_now_init)引起的。
步骤2:硬件 - 外壳
我在Autodesk Fusion360中设计了机箱,受到了这个视频的启发带有瑞士口音‘。
这三个部分的STL文件:
Box
Lid
磁铁持有人
发布在我的Thingiverse页面上。
第3步:软件
该程序在我的Github中。
程序流程如图所示。请参阅我的其他Instructable,了解我如何使用ESP-NOW。
当模块开机时,它首先尝试通过ESP-NOW发送’OPEN‘消息。如果这不成功,它会切换到WiFi和MQTT连接。
我发现,至少在我的设置中,’CLOSED‘消息不能通过ESP-NOW成功发送,所以我删除了这个来自程序,只使用WiFi和MQTT。
在门打开并且模块正在等待门关闭的时候,它利用这段时间连接到WiFi和MQTT,所以当门关闭时,它只需发送测量值电压和CLOSED消息,然后它直接进入睡眠状态。
程序通过监听右侧主题的MQTT消息来检查接收方是否收到了关闭的消息。
步骤4:家庭自动化和电报
我的门传感器在我的Raspberry Pi Zero上与我的Openhab家庭自动化通信。
主要应用:
读取门的状态:OPEN或CLOSED。
如果打开门,则通过电报报警(如果打开报警或打开监控功能)。
读取上次打开或关闭门的时间。
计算门传感器在电池耗尽前可以处理的开口数。
《例如,如果我们正在度假并且邻居来给植物浇水,我会收到一条消息。请参阅介绍中的视频。
我的Openhab项目,规则和站点地图文件都在我的Github中。在这些文件中,您还可以看到棚屋的门传感器,它使用常规有线簧片开关和锁定开口中3D打印机的小触点(端部)开关(参见图片)。
如何在Openhab中使用Telegram操作在此处描述。
步骤5:改进和进一步改进
在过去的几个月里,我做了以下改进。
通过自动切换脉冲信号处理长门开启
在夏季当我们在家时,我们将后门开了几个小时。运行ESP-01与WiFi连接将不必要地耗尽电池。因此,我提供了一个开/关开关,可以在这些情况下关闭模块。
然而,这有时会导致永久关闭模块(当我忘记打开它时)和排空在打开的门和运行模块的几个下午之后电池(当我忘了关闭它时)。
因此我希望能够在模块打开后通过软件关闭模块预定义的时间(1分钟)。
然而,当门关闭时,ESP-01的“DONE”脉冲关闭了TPL5111,我发现TPL5111没有切换到DELAY/M_DRV引脚为高电平时,“DONE”脉冲。 DELAY/M_DRV引脚上的HIGH信号是由打开的门和簧片开关的NC触点连接到电池电压引起的。
因此,DELAY/M_DRV引脚的信号不应连续高,但应该是脉冲的。在TPL5111数据表中,您可以发现它应该是》 20 ms的脉冲。我通过P沟道mosfet,电容器和10K和300K电阻器制作了这个自切换信号,参见附带的方案。
它的工作原理如下:
如果簧片开关的NC触点闭合,则栅极为低电平且Mosfet导通,导致DELAY/M_DRV引脚上的高电平信号激活模块。
电容器为快速充电,导致栅极电压上升。
大约20 ms后,栅极电压为电池电压的97%(300K/(300K + 10K),即HIGH和Mosfet关闭,导致DELAY/M_DRV引脚上的低电平信号。
当DELAY/M_DRV引脚为低电平时,ESP-01的DONE信号导致模块关闭。
这是在软件中实现的; while循环不仅检查门是否仍然打开,还检查模块是否未打开太长时间。如果打开时间太长,它会发布一个NULL值(门的未定义状态)。在这种情况下,我不知道无论门是打开还是关闭,我没有达到介绍中提到的所有目标,但电池寿命更重要,大部分时间我们在当天晚些时候再次打开门,导致确认门关闭状态。
使用适合此处使用的电压范围的P沟道Mosfet非常重要。 Mosfet必须在大约-3.8V的VGS下完全开启,并且在大约-0.2V的VGS下完全关闭。我尝试了几个Mosfet并发现IRLML6401TRPBF与10K和300K电阻器组合使用可以很好地实现这一目标。 1 uF的电容可以正常工作,以获得约20 ms的脉冲长度。由于TPL5111被激活,因此较大的电容会产生较长的脉冲,这是不必要的。我使用DSO150示波器检查电压和脉冲长度。
计划改进:OTA更新
我计划通过以下程序合并OTA更新已经部分包含在当前软件中
通过NodeRed的Openhab我发布了一条保留的“更新”消息和“更新主题”。
如果模块已打开并连接到MQTT服务器并订阅了“更新主题”,则它会收到更新消息。
更新消息将阻止模块关闭并启动HTTPUpdateServer。
通过HTTPUpdateServer的网站,您可以更新软件。
通过NodeRed的Openhab,我将保留的“空”消息发布为“更新主题”。
计划的改进:在预定义的时间后硬件关闭。/strong》
在目前的方案中,我在TPL5111的DELAY/M_DRV和GND之间使用了200K电阻。这将打开模块超过2小时(参见TPL5111数据表的7.5.3。)。但是,我不希望模块打开这么久,因为电池会耗尽。如果软件解决方案(参见上文)未能关闭模块,或者更新消息意外将模块设置为更新模式,则模块将保持长时间通电状态。
因此最好在TPL5111的DELAY/M_DRV和GND之间使用一个较小的电阻,因此模块在短时间后断电,例如50K电阻导致导通时间为7分钟。
全部0条评论
快来发表一下你的评论吧 !