友情提示:380元/半年,儿童学编程,就上码丁实验室。
大家都知道,在每个房子或办公室里面,都会安装有一块电能表来测量使用的电量。每个月的最后一天,很多人都会担心电费高,我们不得不偶尔看一下电能表。但是,如果我们能够监控世界各地的电力使用情况,并在电量达到阈值时收到短信/电子邮件提醒,那会怎么样呢?这里,我们介绍如何制作一款基于物联网的电能表项目。
在本篇文章中,我们使用Arduino开发板和ESP8266 Wi-Fi模块制作智能电能表,它不仅可以向您发送电费账单的短信/电子邮件,还可以随时随地监控能耗的使用情况。在这里,我们使用电流传感器ACS712来测量能耗。
我们将借助IFTTT平台将Wi-Fi链接到SMS /电子邮件通知。我们还将使用MQTT Dashboard Android App来监控能耗使用情况。是不是很期待?让我们开始吧……
所需的材料
● Arduino Uno开发板
● ESP12 / NodeMCU模块
● 30A电流传感器ACS712
● AC设备
● 连接导线
ACS712电流传感器的工作原理
在我们开始制作项目之前,了解ACS712电流传感器的工作原理非常重要,因为它是项目的关键组成部分。由于噪声以及不正确的隔离问题等,测量电流尤其是交流电流,一直是一项艰巨的任务。但是,借助这款由Allegro设计的ACS712模块,测量电流将会变得非常容易。
该模块的工作原理是由Edwin Hall博士发现的霍尔效应原理。根据他的原理,当载流导体置于磁场中时,在其垂直于电流和磁场方向的边缘上产生电压。我们不要深入了解这个概念,只需知道使用霍尔传感器来测量载流导体周围的磁场。这个测量将以毫伏为单位,我们称之为霍尔电压。该测量的霍尔电压与流过导体的电流成比例。
使用ACS712电流传感器的主要优点是可以测量交流和直流电流,还可以在负载(交流/直流负载)和测量单元(微控制器部件)之间提供隔离。如图所示,模块上有三个引脚,分别为Vcc、Vout和Ground。

电流传感器模块ACS712-5A
两针的接线端子是载流导线应通过的地方。模块工作在+ 5V,因此Vcc应由5V供电,接地应连接到系统的接地。 Vout引脚的偏移电压为2500mV,这意味着当没有电流流过导线时,输出电压将为2500mV;当电流为正时,电压将大于2500mV,当电流为负时,电压小于2500mV。
我们将使用Arduino的模拟引脚读取模块的输出电压(Vout),当没有电流流过电线时,输出电压为512(2500mV)。当电流沿负方向流动时,该值将减小,并且随着电流在正方向上流动,该值将增加。下表将帮助您了解输出电压和ADC值如何根据流过电线的电流而变化。

这些值是根据ACS712数据表中给出的信息计算的。您还可以使用以下公式计算它们:
Vout Voltage(mV) = (ADC Value/ 1023)*5000 Current Through the Wire (A) = (Vout(mv)-2500)/185
现在,我们知道ACS712传感器的工作原理以及可以用它实现哪些功能。我们来看项目的电路图。
电路原理图

以上给出了使用Arduino和NodeMCU制作的基于物联网的电能表的电路图,与ESP12的连接方式如下:
连接ESP12的Rx – > Arduino的Tx。
连接ESP12的Tx – > Arduino的Rx。
在NodeMCU(ESP12)中有一个模拟引脚,我们可以使用该引脚,但ESP系列的引脚可以输入最高3.3伏的电压。由于我们使用的电流传感器可以提供高达5伏的电压,因此可能会损坏Wi-Fi模块,这就是我们不使用独立NodeMCU的原因。
为了使电流传感器输出3.3V而不是5V,我们不能在电流传感器和NodeMCU的模拟引脚之间使用分压电路,因为正如我们上面讨论的那样,在2.5V输出电流传感器时,电流为0Amp。
因此,Arduino将通过模拟引脚读取当前传感器值,并使用串行通信将其发送到Wi-Fi模块ESP12。在NodeMCU的接收引脚上使用分压电路,使接收器引脚可以达到3.3电压电平。

为了监控我们在互联网上的能量使用情况,我们必须使用MQTT中间件。我们将使用MQTT中间件作为AdaFruit IO平台,并按照以下流程制作此物联网电能表:
1. 注册AdaFruit帐户以存储电表读数。
2. 在IFTTT中创建小程序,用于触发电能表的SMS /电子邮件
3. 编写Arduino和ESP12 Wi-Fi模块的代码。