当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]或者,如果你是一家企业,你在业务中使用某种工具的频率是多少?操作那台机器的费用是多少?敏感实验室设备周围的电压有多稳定?你所在位置接收到的电能质量如何?例如,您可以使用这些信息来更好地估计产品成本,或者通过进行异常检测或预测性维护。

测量任何插入设备的能量参数(电流/电压/功率等),并在web应用程序上查看仪表板和历史数据图表

在这个项目中,我创建了一个独立的便携式能量监测和分析设备,并集成了Web应用程序。

你一天看多少电视?那要花你多少钱?你的使用模式是什么?把洗衣机放在非高峰时间而不是高峰时间,你能省下多少钱?

或者,如果你是一家企业,你在业务中使用某种工具的频率是多少?操作那台机器的费用是多少?敏感实验室设备周围的电压有多稳定?你所在位置接收到的电能质量如何?例如,您可以使用这些信息来更好地估计产品成本,或者通过进行异常检测或预测性维护。

这个便携式能量监测装置可以帮助你回答这些问题。它测量插入的任何设备/负载的能量参数:

•监控能源参数(电流(RMS),电压(RMS),功率因数,线路频率,功率,能耗等),并将其写入时间序列数据库(InfluxDB)

•重置每天午夜的能量积累,这样能量积累(累计消耗的能量)是每天进行的。

•监控事件条件(过流/功率,电压骤降/浪涌)

•呈现一个显示所有当前参数的web仪表板。单击每个参数还可以获取并显示最近5分钟的活动。

•使用线形图呈现较长时期的历史数据-您可以在同一图形上覆盖多个参数以进行比较。您可以从下拉菜单中选择数据的间隔- 5m, 10m, 30m, 1hr, 3hr, 6hr, 12hr和24hr

它是用Raspberry Pi 4、Dr. Wattson Energy Monitoring Board V2和OLED屏幕制作的。

ProtoStax机箱用于树莓派3/4/5和Dr. Wattson能源监视器,为整个项目提供了一个很好的模块化机箱解决方案,包括一个电源入口和一个可以测量能耗参数的插座。插入您感兴趣的负载并开始测量!

树莓派运行一个基于python Flask的应用程序,每秒查询Dr. watson,并将数据上传到InfluxDB实例。该应用程序还提供了一个使用HTML, CSS和Javascript的web用户界面,在仪表板中显示当前的能源指标。您可以点击每个指标来查看最近5分钟的活动。您还可以通过图表查看历史数据-最近5分钟,10分钟,30分钟,60分钟,3小时,6小时,12小时和24小时。您可以使用REST api直接查询JSON格式的数据。设备上附带的OLED屏幕显示当前的关键参数,因此您可以通过查看设备屏幕快速查看数据。

此基础设施还允许在其上轻松构建任何其他数据分析和控制。您可以使用web应用程序原样获得大量有用的信息,包括当前和历史数据(最多24小时),而无需任何额外的编码。由于历史数据存储在时间序列数据库中,您也可以查询它,将其可视化(使用与InfluxDB配合良好的Grafana等工具),并通过额外的编码和数据分析来分析它。

这是架构图。

使用它

我试图简化在你自己的设置中使用Energy Monitor的过程。

第一步是把电路组装在一起,并将其组装在外壳中。ProtoStax和沃森博士的用户手册里有足够的信息,我建议你参考一下。

一旦您完成了这些,您将希望启用Raspberry Pi的无头操作。目前的树莓派Imager使它相当简单,允许你配置你的WiFi网络设置,也启用SSH等。

一旦你有了一个工作设备,你可以启动和登录,你必须安装软件。如果你还没有git,你首先需要安装它:

您还需要安装并设置InfluxDB2。关于这个有很多教程,所以我就不重复了。您需要设置组织和存储桶,以及用于身份验证的令牌。注意这些值。

之后,你可以从Github克隆软件:

接下来,我们将创建一个python虚拟环境,以方便安装所需的软件包,然后使用项目中的需求一次轻松安装所有依赖项:

接下来,您需要创建一个config.ini文件来包含连接到InfluxDB实例的凭据。提供了一个样例config_sample.ini。你可以使用它,并在适当的时候更新它。记得创建一个新的文件config.ini(而不是修改config_sample.ini文件)

如果一切正常,你应该可以像这样启动应用程序:

您还可以创建一个服务,以便在树莓派启动时自动启动应用程序。Github README有关于如何做到这一点的说明。我提供了一个示例服务文件供您根据需要进行修改。

如果代码正常运行,您应该能够打开浏览器到您的web应用程序。假设您将树莓派命名为myPi.local。

代码深潜

代码是用Python编写的。我使用了Flask,它是一个轻量级的web框架,作为web服务器,不仅提供web UI,还提供JSON格式的数据(客户端Javascript使用JSON格式加载、显示和刷新历史数据)。

为了与沃森博士交流,我使用它的Python库UpbeatLabs_Python_MCP39F521。

我还安装了一个InfluxDB2数据库作为时间序列数据库。InfluxDB的最新版本是3,但该版本有一个严格的限制,即只能支持大约72小时的数据查询(再多的话性能就不高了,而且会给系统带来很大的压力)。InfluxDB2工作得很好,在可预见的未来,我将使用它超过3个版本(直到他们修复/解决问题)。对于InfluxDB2,您必须使用Flux查询,这不是最流行的,但我认为它们使用起来很好!

为了与OLED屏幕进行通信,我使用Adafruit的Adafruit_Python_SSD1306。请注意,这个库现在已被弃用,取而代之的是他们的CircuitPython库,但它还不能在Raspberry Pi 5/bookworm上工作。我还必须用GPIO python库做一些技巧来让bookworm工作。

我使用Dr. watson的事件检测引脚在事件触发条件发生时获得通知,并使用它打开显示板上的LED。

当连接到InfluxDB数据库时,我使用配置文件来存储必要的信息(url、令牌、org、要使用的桶),并使用configparser库来读取和获取数据。确保创建一个包含您自己的数据库信息的config.ini文件!

Dr. Wattson使用的MCP39F521提供能量积累,Dr. Wattson公开api来打开/关闭能量积累。python应用程序会在午夜重置能量积累,这样我们就可以记录一天的能量积累。

为了确保每天只进行一次重置,即使应用程序重新启动,我也使用shelve python库来跟踪文件中的这些信息。如果当天的能量积累已经重置,则调用该函数没有任何作用。

在Flask中,它定义路由,其中既包括数据(JSON格式),也包括呈现客户端HTML、CSS和Javascript页面。在Flask中,默认情况下,html页面存储在“templates”目录下,其他静态资产(如CSS和Javascript)存储在“static”目录下。

对于客户端,我使用Bootstrap框架来提供一致的、移动友好的响应界面,而不需要太多的麻烦。当然,熟悉它是有学习曲线的!

对于仪表板以及度量图表页面,我使用Chart.js小部件和图形来显示各种项目。

例如,我使用“甜甜圈”图表在仪表板上显示电流、电压、线路频率、功率因数等指标。我还使用了doughnutLabel注释插件。这允许我将当前值表示为一个仪表,以获得更令人愉悦的视觉外观。单击每个仪表板指标还会弹出一个指标图表,显示最近5分钟的活动。让它工作有点棘手!

对于事件条件(过电流,过功率,电压下降和电压浪涌)以及功率象限表示,我使用了一个散点图,中心为0,0,并用4个注释表示四个事件或四个功率象限。

在事件的情况下,一个或多个事件可以是活动的,而功率象限可以是4个值中的一个。将鼠标移到每个将给出额外的信息-例如,触发过电流的条件是> 0.18 A。因此,这个小部件呈现了大量的信息,同时看起来极简主义。将鼠标悬停在数据点上并单击可以获得更多信息,活动区域会改变颜色和大小(红点变大)。

度量图表页面显示一个线形图,并具有所有不同的属性。默认情况下,只显示当前RMS,但您可以单击其他属性来启用/禁用它们。因此,一个图表可以用于所有属性。我还添加了从下拉菜单中选择不同时间框架的功能。这将获取新数据并重新呈现图表。它还智能地更改刷新间隔- 24小时图表将每分钟刷新一次,而5分钟图表将每5秒刷新一次。javascript使用合适的查询参数调用后端REST API来获取数据并更新图表。我必须测试双方,以确保一切都按预期工作,并发现和修复一些漏洞。这都是过程的一部分!

也可以设置y轴缩放的最小/最大-否则Chart.js会根据手头的数据自动缩放。如果你正在寻找特定的模式,并知道你正在观察的最小/最大值,并在这些范围内渲染图表,那么自己设置比例是很有用的。

为了在所有页面之间共享导航链接和标题,我有一个base.html页面,所有其他页面都继承自这个页面,所以如果我想更改导航链接,我可以只在一个位置这样做。

因此,您可以看到在客户端也发生了相当多的事情!

前进

由于数据在InfluxDB中,并且它支持Python,因此您可以通过编写单独的Python程序和直接查询数据库来添加额外的数据分析,并利用各种Python库和框架进行人工智能和数据分析(例如,生成每日报告)。

当然,你也可以修改/增强现有的应用程序:

•添加用户身份验证,这样用户必须登录才能看到仪表板

•使用不同类型的图表——条形图、散点图等。

•增加对查询更长的数据周期的支持(目前最多可查询24小时)。在查询大量数据时要记住一些事情。如何减少数据点的数量?您可以在Chart.js中使用数据抽取来帮助减少数据点的数量。或者您可以在服务器端进行处理以减少它(例如,将数据聚合为5分钟间隔以减少数据点的数量)。

•添加额外的分析和报告-您可以创建一个新的页面来显示报告

•添加用于更改配置设置的页面—例如,事件触发条件(这些现在是硬编码的,但可以由用户配置)

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭