能量监测器PZEM004T和ESP8266的自行车,带有人员监测功能

我想知道-电线的电流流向哪里? 好像我们淹没了房子的煤气,房子里的所有灯都是二极管,晚上我们打开洗碗机,还没有带电炉的桑拿浴室,而且所有时间都断电。 一团糟。 有必要跟随他。
欢迎来到猫...


第一步是消费的一般监控


任务


我决定开始追捕一群野兔。 选择了野兔:

  • 通过互联网进行电力监控。 我可以即时监视网络参数-在走廊的面板上有一个PZEM061能量监测器,在屏幕上可以看到电压,电流和功率。 但是在显示消耗的能量的地方-某种抽象的形式,放电太少。 但是走廊不舒服。 我想要在手机屏幕上。
  • 耗电量图。 我想知道什么时候会发生过度消费?
  • 互联网上的抄表。 痛苦是将仪表读数转换为能源销售。 有必要在每月的15日到25日之间向他们提供证据。 我经常忘记它,他们开始打电话给机器人并写垃圾邮件。 而且,当他们想起自己的时候-我通常在工作,并且在街上的柜台上有一个柜台。 我想要在手机屏幕上。
  • 监控稳定器温度。 冬季,在我们村里,房子入口处的电压不超过200v,达到140v。 因此,我没有12kW的稳定器,但是具有这些参数和2kW的长负载,并考虑到稳定器在壁n中的位置,稳定器过热并关闭,我不得不添加几个风扇(使用它们,温度保持在可接受的范围内)-之前已将它们打开持续不断地揉捏-将恒温器KSD9700装在65g上,我们正在等待冬天。 我不想监视此参数,因为 我不能影响他。 但是添加恒温器后-您需要控制结果。


为了解决任务,选择了它:

  • PZEM004T-带有UART的能量监控器。 它使您能够获取市电参数-每0.6秒一个参数:电压,电流,功率,消耗的能量以及我不需要的频率和功率因数。 与测量变压器1:1000一起使用。
  • ESP8266 NodeMCU-一种具有WiFi功能的通用微控制器,非常适合PZEM004T尺寸-可以使用板上的可用孔通过机架连接。 NodeMCU板上还有一个有用的Flash按钮(连接到GPIO0)-使用它来控制操作模式非常方便-例如,启用SoftAP。

假设设备将被放置在稳定器的金属外壳中-将外部天线焊接到ESP。 我试图从PZEM004T为ESP供电(将导线焊接到圆形电容器上-大约7V)-它没有用,当我连接ESP时,电压下降到2V。 但是稳定器已经有一个5V电源-用于风扇,这意味着它将被使用(我以为是12v,所以我将ESP连接到它的时间很长)-它没有任何作用,我尝试了一堆DC-DC转换器,直到将其翻转为止BP并没有阅读上面的铭文)。



韧体


看着网络上可用。 像往常一样,我找不到合适的人,于是决定写自己的书。
我以自己的Sonoff中继项目作为基础(最简单的功能,它可以通过HTTP和一个按钮来打开和关闭,不能执行其他任何操作;它与MacroDroid结合使用,可以在屏幕上持续不断为手机提供少量动力-之前的电池被恒定的电量消耗blow尽并挤出了屏幕) 但是除了中继功能外,该组件还具有http服务器,WiFi,NTP设置,可与GPIO0按钮配合使用-与按下持续时间,闪烁的任何状态不同的操作(例如,计数按下按钮的秒数,反映继电器和WiFi的状态)...

自然,我对设置进行了一些修改:



我查看了可用于PZEM004T的现有库-我不喜欢它。 她发送一个请求,然后在闭环中等待响应。 这是不对的。 我以异步方式编写了我的库-我从主程序告诉它要获取哪些参数,然后定期检查是否收到了所需的数据:

代号
static PZEM004Tnb::flags flags = PZEM004Tnb::flags::all; static unsigned long lastReadEnergyTime = 0; if (Pzem004t.isDataUpdated()) { setLedState(3); //       // ... unsigned long currentTime = millis(); if ((currentTime - lastReadEnergyTime) > 6000) { //   1    flags = PZEM004Tnb::flags::all; lastReadEnergyTime = currentTime; }else{ flags = (PZEM004Tnb::flags)(PZEM004Tnb::flags::all ^ PZEM004Tnb::flags::energy); } } Pzem004t.updateData(flags); 


我考虑到PZEM004T认为最大值为9999 kW * h,然后将其重置-我实现了溢出统计。 实行了两个比率的帐户。 我还对参数的平均值进行了计算-读数每2秒读取一次,而在人员监控系统中 ,必须每5分钟传输一次数据,这自然是平均值。

系统中增加了与传感器DS18B20阵列配合使用的功能。 每个传感器以2秒为周期依次读取数据。 即 我们正在寻找一个传感器,我们发现-我们正在接收数据,两秒钟后我们正在寻找下一个,依此类推。 末端传感器-从头开始。 即 仅使用一个传感器时,其轮询时间为4秒。 对于这些传感器,还计算了平均值。

当前的能源监控器数据可以通过HTTP获取:



必要时,所有数据都以整数存储(例如,当传输到People's Monitoring时 )-在所需位置添加一个点。

使用MQTT / UDP协议实现了数据发布。 在我的显示器中添加了对此协议和PZEM004T传感器的支持:


这是我失败的温度控制器项目( Fiasco。一种物联网自制产品的故事 ),我决定只作为显示器离开。

实施了有关人员监控的数据发布:



人民监督组织的工作人员非常尊重! 将数据传输到服务是基本的,有一种查看传入数据以调试交互的方法,您可以简单地管理传感器数据。
系统可以构建测试图(下面是一个混乱的图,仅作为示例):


还可以通知传感器状态(暂时禁用测试数据传输):


自然,我添加了数据发布设置:


总结


作为实时监视的结果,他已经关闭了两个不断打开的小型计算机之一,在婴儿计算机上配置了休眠模式,并在BD播放器中重新配置了睡眠模式(仅用于卡拉OK)。

当为图表收集统计信息时,我将采取进一步的措施。

谁想获得这样的能量监测器-用个人固件帐户(Freebie,先生!)。

聚苯乙烯


在开发设备时,我遇到了神秘主义-当ESP由USB计算机供电,通过任何电话充电都可以正常工作时。 由嵌入式PSU供电时-不起作用。 我使用了一个逻辑分析仪和一个简单的示波器进行调查-蓝色方框的电源似乎是有序的,ESP的信号是正确的,并且回声-无声。 另一个电源-一切正常。

通过科学的戳法,我意识到,当我使用内置PSU时,我将其连接到PZEM004T电源,也就是说,在这种情况下,两个设备同时启动(与其他PSU一起启动是不可能的)。 而且我使用硬件UART进行通信,ESP在启动时会在此上抛出很多垃圾。 PZEM004T在启动时无法消化并冻结。 如果PZEM004T已经打开,它将在端口中启动ESP和垃圾,而不会出现任何问题。
解决方案是使用SoftwareSerial,一切正常。

PPS


对于那些想要使自己成为这样的设备的人(还有这样的英雄!):
国家监测设备目录中的描述

Source: https://habr.com/ru/post/zh-CN453472/


All Articles