基于物联网的电池监测系统,使用NodeMCU和ThingSpeak
扫描二维码
随时随地手机看文章
电池是任何设备最重要的部件,因为它为整个系统供电。锂电池的充电和放电不当可能会导致很大的安全问题,因此监测电池的电压水平非常重要。电动汽车中有一个单独的系统,称为电池管理系统(BMS),它监控电池组的所有属性,如电压、电流、温度等,并确保锂电池的安全性和可操作性。
以前,电池监测系统只监测电池的状况,并通过车内的电池指示灯向用户发出警报。由于技术的进步,现在物联网(IoT)可以用来远程通知制造商和用户有关电池状态。他们可以在世界任何地方用智能手机检查汽车电池的电池状态,这被认为是制造商提供的维护支持之一。
因此,在这个项目中,我们还将建立一个基于物联网的电池监控系统,您不仅可以监控电池的充电和放电状态,还可以在电池充满或空时收到警报电子邮件。在这里,我们将使用NodeMCU 12E将电池状态数据发送到ThingSpeak云,并使用IFTTT发送关于电池状态的电子邮件警报。
组件要求:
•NodeMCU (ESP-12E)
•锂聚合物电池
•LiPo充电器(TP4056)
•电阻
•任何直流负载,如直流电机
•跳线
计算电池电压
NodeMCU模拟引脚只能承受3.3v,所以我们必须安排在NodeMCU模拟引脚的范围内转换高输入电压,然后编写代码来计算被测量的实际电压。
现在,转换电压的装置是分压器电路。分压器在NodeMCU模拟输入的3.3v范围内降低被测电压。我们必须找出电路所需的电阻器的值。最大输入电压取决于电阻器的值。因此,我选择R1=44k和R2=10k(这些是打印值,但实际值可能不同,因此首先使用万用表测量实际值,然后使用这些值进行进一步计算)。在我的例子中,实际值是R1=47k和R2=9.5k
因此,利用分压器公式,可以计算输入电压为:
考虑Vout是3.3v
把电阻和Vout值后,最大Vin将计算19v左右。但在实践中,最好提供一个小于最大值的电压,这样你就可以安全地使用15v电池电压。
线路图
电池监测系统电路图如下图所示。分压器电路的输出给NodeMCU的A0引脚。TP4056充电模块用于给LiPo电池充电,直流电机用于放电,直流电机连接到TP4056的输出端。
配置ThingSpeak来绘制充电和放电电压
ThingSpeak为物联网项目提供了一个非常好的工具。通过使用ThingSpeak网站,我们可以使用ThingSpeak提供的渠道和网页在互联网上监控我们的数据和控制我们的系统。ThingSpeak从传感器“收集”数据,“分析和可视化”数据,并通过触发反应来“行动”。
在这里,我们简要地解释一下如何在物联网电池监测项目中使用ThingSpeak。你可以在这里查看各种基于ThingSpeak的物联网项目,了解更多关于它的信息。
我们将使用ThingSpeak来监测电池的充放电电压。我们还将使用IFTTT平台与ThingSpeak连接,为电池满或空发送电子邮件/消息提醒。
步骤1:-首先,用户需要在ThingSpeak.com上创建一个帐户,然后登录并点击开始。
第二步:-现在转到“通道”菜单,单击同一页面上的“新建通道”选项进行进一步处理。您将看到一个用于创建通道的表单,根据您的选择填写Name和Description。然后在字段1和字段2标签中填写“充电电压”和“放电电压”,勾选字段的复选框。单击页面底部的Save channel。现在您的新频道已经创建完成。
第三步:-点击API密钥菜单,复制写API密钥。该键将在代码中用于在ThingSpeak上发送数据。
第4步:现在,我们将使用服务器的ThingHTTP应用程序来触发IFTTT小程序,以便在电池满或空时发送邮件。你可以在ThingHTTP中指定动作,你想用其他ThingSpeak应用(比如React)触发这些动作。
为了使New ThingHTTP,我们需要一个触发的URL,我们可以从IFTTT中获得。
配置IFTTT触发邮件/短信电池监测
这里我们通过webhooks将ThingSpeak与IFTTT连接起来,以便在电池满或空时自动发送电子邮件。要了解更多关于IFTTT如何工作的信息,这里有许多使用IFTTT的教程和实时物联网项目。
步骤1:-登录IFTTT,搜索Webhooks并点击它。
步骤2:-单击文档。
步骤3:-在事件框中输入“bat_full”并复制URL。这个URL将在ThingHTTP中使用。
现在让Applet将ThingHTTP链接到Gmail以发送电子邮件。之后,我们将跳转到完成我们的ThingHTTP。
第四步:-点击“我的苹果”选项中的“新建苹果”。
第五步:-点击“+this”,搜索Webhooks并点击它。选择触发器作为“接收web请求”。
现在让我们让Applet将ThingHTTP链接到谷歌表单并发送电子邮件/短信。之后,我们将跳转到完成我们的ThingHTTP。
第六步:-点击“+this”,搜索Webhooks并点击它。选择触发器作为“接收web请求”。
步骤7:-键入事件名称,与您在webhooks URL中的事件框中写入的名称相同。单击Create Trigger。
第八步:-点击“+that”,搜索Gmail,点击它。现在,点击发送电子邮件。
当有关于电池的更新时,键入您希望接收电子邮件的电子邮件地址。
键入您希望在电子邮件中发送的正文内容,然后单击create action。回顾并完成它。
类似地,制作一个applet来获取关于电池耗尽警报的邮件。
我们已经制作了applet来执行这些任务。现在,回到ThingSpeak->Apps->ThingHTTP。
ThingHTTP连接ThingSpeak与IFTTT的电子邮件提醒
步骤1:-点击New ThingHTTP。输入任意名称并粘贴从webhooks文档中复制的URL。填写如下所示的剩余信息。
以同样的方式,我们必须为“bat_empty”创建ThingHTTP。遵循相同的步骤。
在URL中,用bat_empty代替bat_full。Body保持为空,所有其他信息与之前的ThingHTTP相同。保存它。
现在,我们必须让React来触发URL。
React与ThingHTTP应用一起工作,当通道数据满足特定条件时执行操作。
要制作React,请点击Apps -> React。点击New React。
步骤2:-给你的React起一个名字。条件类型为“数字”和“测试频率”,与“数据插入”相同。
选择要触发URL的条件。从If channel下拉菜单中选择您的频道。选择字段1即charing_voltage,设条件大于等于4.1。如图所示
从Action下拉菜单中选择ThingHTTP,然后选择bat_full。
选择“每次条件满足时运行操作”并单击Save React。
类似地,对bat_empty进行make react。
我们已经完成了所有基于网络的工作。现在,我们将看到NodeMCU的代码。
代码的解释:
在本教程结束时给出了基于物联网的电池监控系统的完整代码和工作视频,在这里我们详细解释了代码。
首先包括所有必需的库。此外,初始化您的Wi-Fi网络的SSID和密码,并写入我们从ThingSpeak平台复制的API密钥。
现在声明并初始化电阻器值和其他一些变量和常量。
在void setup()函数中,初始化串行通信并检查Wi-Fi连接。
在void loop()函数中,我们将从模拟引脚获取读数,并将该值转换为实际电压值,如下所示。
现在,我们将使用一个标志变量来跟踪电池的状态,无论电池是满的还是空的,然后相应地将电压数据发送到ThingSpeak上的相应图形。最初,我们将旗子设为1,表示电池正在充电。
用于发送电压数据以检查标志并将数据上传到相应的图形中。
读数将每10秒更新一次。为此,可以使用延迟或定时器功能。这里我用的是延迟函数。
现在,编码部分已经完成。教程的末尾给出了完整的代码。将此代码上传到NodeMCU,并确保正确输入凭据。
您可以查看串行监视器和ThingSpeak上的读数,如下所示。
ThingSpeak上的充放电曲线如图所示。左图为锂电池充电曲线,右图为锂电池放电曲线。
现在,无论电池是满的还是空的,用户都会收到一封电子邮件,通知电池是满的还是空的。
这就是使用ThingSpeak云和NodeMCU Wi-Fi模块从世界任何地方监控电池电压状态的方法。
本文编译自iotdesignpro