65.9K
CodeProject 正在变化。 阅读更多。
Home

用于预测和识别数据中心问题的物联网设备

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.67/5 (4投票s)

2021 年 7 月 21 日

MIT

13分钟阅读

viewsIcon

6580

基于听觉声音模式控制的报警设备 Arduino 原型自动化

1. 引言

近年来,在各种企业环境中应用技术已不再是可有可无的选择,而是变得必不可少。越来越多的公司,无论来自哪个行业,都通过应用技术获得了竞争优势。因此,在这些企业中,硬件技术部门是最关键的领域之一。

那些仍然掌控着网络基础设施、服务器和个人电脑的公司,在运营可用性方面一直处于动荡之中。也就是说,技术运营的顺利运行和连续性是维持公司业务流程的关键。许多时候,这些计算服务的可用性甚至与协议政策和罚款挂钩,这表明了这些流程对业务的重要性以及其正式性。

在这种背景下,任何依赖计算基础设施的企业所期望的理想情况是,这些服务不会出现可用性故障。然而,面对这一理想状态,公司们仍在不懈地寻求质量模型和流程,以改进其计算服务的维护和支持技术。其中一个领域就是预测即将发生的硬件问题。

2. 目标与方法

本项目旨在开发一个报警系统,用于监控组织计算机基础设施部门的环境声音。一旦检测到超出标准范围的听力计读数,系统将自动识别可能的原因,并向区域经理发送通知,包括其读数历史记录,以便技术经理能够提前预见可能的基础设施问题。

由于本项目涉及应用于通用场景技术的跨学科知识,因此考虑一个真实的实验室以了解企业在实际日常问题和需求中的真实体验,并获得专业人士的各种专业支持,这一点很重要。因此,在项目的各个阶段都与专业的跟进和参与性任务进行了协作活动。

作为案例研究,该项目与一家由十个生产厂、三个分销商和一个研究中心组成的汽车零部件制造公司合作。为了整合这些单位和部门,该公司拥有非常强大的计算和通信网络基础设施。考虑到这些机器的逻辑和物理维护与管理由公司自行完成,这为本项目的分析和测试提供了一个非常有趣且完整的场景。

从技术角度来看,在提出的流程中,系统将监控音频传感器并将读数发送到 Microsoft Excel 电子表格(图 1)。基于这个信息库(控制表),分析组件将与收集到的数据进行比较,并与先前的文件(历史记录)和校准信息(设置和学习)进行验证。基于这些比较,系统将决定是否需要发出警报。

图 1 - 执行流程方案

此决定必须考虑特定执行上下文的唯一设置文件中定义的限制;如果超过预设值,将从 Microsoft Excel 的 Visual Basic for Applications 触发消息发送,并获得即时消息通信平台的支持。

本项目涉及的工具、模块和技术支持包括以下内容:

自动化组件

  1. Arduino Leonardo R3 兼容板
  2. 语音识别模块 V3
  3. 带自动增益控制的 Electret Max9814 放大模块
  4. KY-038 声传感器模块
  5. ESP8266 Wi-Fi 模块 ESP-01
  6. ESP8266 ESP-01 Wi-Fi 模块适配器
  7. 5V 继电器模块
  8. 高亮度 5mm LED

支持工具

  1. 虚拟分贝计应用程序(Google Play 商店:2020 年 4 月)
  2. Excel Visual Basic for Applications(Microsoft Office,2020 年 4 月)
  3. Tinkercad:在线原型设计和绘图工具
  4. Photoshop CS6 Portable v13.0:图像编辑软件
  5. Blynk 移动应用程序 - 适用于 Arduino 的物联网
  6. Arduino 1.8.12:用于开发 Arduino 应用程序的 IDE

3. 开发

项目的一个非常重要的步骤是用作实验室的环境的噪声分析阶段。在这个阶段,有必要对环境进行几天的监测,以便能够为数据中心定义一个听力计的“正常”标准。此外,在这个阶段,还有必要模拟问题,例如,风扇堵塞、通风不畅等,以便在研究阶段就可以识别可重现的问题。

图 2 显示了使用听力计应用程序(分贝计,2020 年)在 Android 手机上进行的两次测试读数。通过这些测试,可以看到当设备出现产生某种声音的问题时,声级会增加。左侧(图 2.a)显示的是正常环境下的声级,没有任何问题,仅产生符合预期标准的噪声。在(图 2.b)中,显示了在模拟设备风扇出现问题时声级的增加。

图 2 - 分贝计应用校准(a)正常状态和(b)模拟事件(分贝计,2020 年)

在听力计分析和噪声模拟活动之后,构建了电路设计。图 3 显示了过程自动化电路结构的原型。该原型是在线工具 Tinkercad 和 Photoshop CS6 Portable(Monk 和 Laschuk,2017 年)中构建的。根据本项目,系统通过以下方式进行监控:

  • 通过声传感器模块,连接到 Arduino 的终端(Javed 和 Adas,2017 年),如下所示:模块的 VCC 连接到 Arduino 的 5VGND 连接到 Arduino 的 GND,其中一个模块的输出连接到模拟输入 A0,用于控制低电平;另一个模块的输出连接到模拟输入 A9,用于控制高电平。
  • 通过语音识别模块,其特点是该模块经过训练,可以识别由先前某些问题产生的声音。

图 3 - 设备电路原型

该电路还配备了一个通过在线平台 Blynk 控制的 Wi-Fi 模块。该模块连接到 Arduino,负责控制用于暂停和释放消息发送(触发警报)的继电器。原型底部的三个 LED 是辅助指示灯,用于指示可能的状态:(绿色)消息发送已启用,(橙色)消息发送已暂停,(蓝色)关闭。暂停和启用状态通过 Blynk 在线平台(2020 年)控制,而关闭状态由机械开关控制。

void setup() {
  pinMode(pinPause, INPUT_PULLUP);
  pinMode(pinBreck, INPUT_PULLUP);
  Keyboard.begin();
  pinMode(10, OUTPUT); //Pino do Led Verde (Ligado)
  pinMode(16, OUTPUT); //Pino do Led Azul (Pausa Envio de Mensagens)
  pinMode(14, OUTPUT); //Pino do Led Vermelho (Desligado a Leitura de Som)
}

Arduino 的 C 语言代码函数负责控制 Arduino 的模拟端口 A0A9 的输入值,它们分别连接到声传感器的输出。进行测试的目的是通过声音模块检查和调节环境中的声音水平。

void nivelSom() {
  while (cont < 10000) {
      recebeValorSensor = analogRead(pinoSensorSom_Um);
      valor_Dois = analogRead(pinoSensorSom_Dois);
      
     if (valor_Dois>recebeValorSensor){
         recebeValorSensor = valor_Dois;
     }
    
    if (recebeValorSensor > valorMaior) {
        valorMaior = recebeValorSensor; //Quarda o Maior Valor Leitura no Loop
    }
     cont++;
  }

    cont = 0;
    tensao = valorMaior / 1023.0 * 4.54;
    dB = 87.1 * tensao - 144, 4;

  if (dB < 0) {
      dB = 0;
  }

   Keyboard.print(dB);
   teclaEnter();
   
  if (dB > 58||dB < 42) {
      delay(45000); //Aguarda o Envio da Mesagem (Não Faz Leitura do Nível de Som)
  }

  valorMaior = 0;
  delay(100);
}

该函数负责数据处理,使用转换方程,然后通过“void problema()”将数据插入历史记录和控制表中。

图 4 显示了加载到 Arduino 模块中的代码,其工作原理如下算法:

  1. 声音模块产生的电压电平值被转换为分贝的近似值,并发送到 Microsoft Excel 的控制电子表格。
  2. 同时,如果识别出任何模式变化,语音识别模块将向 Arduino 发送一个信号,对应于逻辑电平上映射的变化引脚。
  3. 只有在这种情况下,Arduino 才会通过一个条件识别出具体哪个引脚的状态发生变化,并将检测到的问题代码发送到 Microsoft Excel。

图 4 - Arduino 串行监视器和输出数据

图 5 展示了在 Microsoft Excel 中构建的控制屏幕,该屏幕负责存储分贝值以供历史记录,并控制通知(消息)的发送。在该电子表格中,Arduino 发送的分贝值和代码被接收在一个单元格中,该单元格由 Visual Basic for Applications 监控。该值将被分析,如果它对应于预定的代码(表示一个问题),则会调用负责打开 Google Chrome 浏览器的函数,然后调用即时消息平台,发送一条包含问题描述的消息给 IT 部门的负责人。另一方面,如果接收到的值不是表示已识别问题的代码,而是识别出超出预定义正常范围的分贝值,则该值将与读数的日期和时间一起存储在电子表格中,并发送一条消息,警报检测到一个来源不明的问题,以供进一步分析。经过调查,如果警报被认为是尚未按照预期处理方式映射的问题,则历史记录中记录的速率可以输入系统,从而使语音识别模块能够识别此类问题以便将来发生。

图 5 - 配置和控制的用户界面

4. 问题

该系统开发中遇到的最大问题之一是尽可能准确地获取分贝读数。这个问题仅通过使用第二个模块“带自动增益控制的 Max9814 驻极体麦克风放大器”才得以解决。这使得读数更精确,增益响应更高,损耗更少。

遇到的第二个问题是如何识别问题的可能原因。在定义了传感器模型后,在没有问题的正常运行环境中收集了最大、平均和最小值的声级读数,并进行了其他测试来模拟一些常见问题。这些分析有助于识别声级的增加,但仍然非常不精确,无法指示问题的原因,因为某些类型的问题之间存在非常接近的值。为了解决这个问题,除了声音传感器之外,还使用了 V3 语音识别模块,该模块经过训练,可以识别先前发现的某些类型的问题;同时,语音识别模块会检查是否存在任何已知问题,而声音传感器会记录声级中的异常情况,之后将对其进行分析,并在必要时训练语音识别模块以识别未来的问题。

5. 结果

图 6 展示了已组装在印刷电路板上的系统,其中包含所有组件。所呈现系统的结论是令人满意的,因为该步骤的目标已实现,它成功地满足了预设的要求,能够获取分贝声级的读数并识别受监控环境中的问题。一旦识别出声级差异,系统就会将读数发送到 Microsoft Excel 电子表格,该表格会将值存档并通过消息平台向负责分析和处理通知问题的团队发送消息。

图 6 - 原型设计的 Arduino 中央设备

为构建的原型设计的测试环境是作为案例研究的公司中央服务器,位于其圣保罗单位。这是一个服务器机架,通过冷却器进行冷却,包含多种类型的设备,不仅监测设备本身,还监测机架及其零件、冷却器、门打开、结构振动等可能性。结果符合预期,因为原型能够识别所有模拟案例:正常情况、预定义问题和未映射的异常。

图 7 展示了系统在现场测试环境中的执行情况。从中可以看到用于通过消息应用程序发送消息的测试结果,该消息显示在已注册为特定区域负责人联系人的手机屏幕上。此外,由于该系统能够检查声级,监测其是否在环境设定的限值内,因此有可能在其他应用中使用该系统,甚至在其他类型环境中,例如必须保持最低噪音的环境,如果超出限值则发出警报消息,或通过语音命令执行某些特定任务。

图 7 - 通过即时消息应用程序的警报警告

6. 结论

将自动化系统从构思到部署和在真实环境中进行测试,这是一个挑战。将真实场景作为一个实践实验室,在问题理解、分析和目标细化以及测试活动支持方面带来了优势。然而,该项目完成后的主要好处包括非技术性收益,例如对系统完整生命周期的成熟度、管理决策制定、协作和企业参与。

作为研究成果,本项目的主要贡献在于能够快速识别问题,而这是普通监控系统无法如此快速完成的。例如,冷却器问题;虽然该原型依靠声音模式监控来识别潜在问题,但普通温度监控系统仅在过热后才识别问题。

作为未来工作的建议,我们建议研究实现一个模块,该模块可以记录系统可疑的听力计模式,并实现用于其他类型控制和参考的模块,例如:温度、湿度和存在传感器等,还建议创建用于实时且高精度控制和监控的应用程序。

致谢

特别感谢 Taranto Comercial Group, Imp. e Exp. Ltda.(阿根廷布宜诺斯艾利斯),特别是 Eric Barbosa de Carvalho;没有这样的合作和支持,本项目将无法完成;尤其是在技术指导、背景介绍和实际问题呈现方面。此次合作使得在现场验证期间有了更精确的规格和更好的结果。

参考文献

  1. Blynk (2020)。"Blynk - 适用于 Arduino、ESP8266 / 32、Raspberry Pi 的物联网。" 可从 https://play.google.com/store/apps/details?id=cc.blynk 获取。访问日期:2020 年 8 月 1 日。
  2. Decibelimeter (2020)。"虚拟分贝计",Android 应用。可从 https://play.google.com/store/apps/details?id=com.gamebasic.decibel 获取。访问日期:2020 年 4 月 18 日。
  3. Cláudio L. V.O, A. (2018)。“Aprenda Arduino uma abordagem prática sketches”第 1 版;Ed. Copyright,2018
  4. Cristiano Nazário (2020)。“Automação Profissional com Arduino”,在线课程。可在 Udemy 上获取:https://www.udemy.com/course/automacao-profissional-com-arduino-completo/,2020 年
  5. Javed, A.; Adas, C. J.(翻译)(2017)。“Criando projetos com Arduino para internet das ciosas”第 1 版;Ed. Novatec Editora,2017。
  6. Luiz Gustavo (2020)。“Automação Residencial por Comandos de Voz – Módulo 1”,在线课程。可在 Udemy 上获取:https://www.udemy.com/course/automacao-residencial-por-comandos-de-voz-modulo-1,2020 年
  7. Michael McRoberts; (2015)。“Arduino Básico”第 2 版;Ed. Novatec Editora,2015。
  8. Monk, S.; Laschuk, A.(翻译)。(2017)。“Programação com Arduino: começando com sketches”第 2 版;Ed. Bookman,2017。
  9. Oliveira, S.; (2017)。“Internet das coisas com ESP8266, Arduino e Rasspberry PI”,第 1 版;Ed. Novatec Editora,2017。
  10. Teixeira, R. (2020)。“Introdução à Engenharia com Arduino”,在线课程。可在网上获取:https://www.udemy.com/course/introducao-a-engenharia-com-arduino/。
  11. Tinkercad (2011)。电子硬件设计网站(在线)。可从 https://www.tinkercad.com 获取。访问日期:2020 年 5 月 17 日。
  12. Vitor Amadeu Souza; (2020)。“Envio de E-mail com o módulo SIM800L para medição de Decibelímetro Programado no Arduino”,第 1 版;Ed. Cerne,2020。
  13. WhatsApp Web (2020)。“桌面应用程序”。可在。访问日期:2020 年 5 月 18 日。

历史

  • 2021 年 7 月 18 日 - 文档创建
  • 2021 年 7 月 19 日 - 文本修订,初稿
  • 2021 年 7 月 20 日 - 版面和图像修订及验证
  • 2021 年 7 月 21 日 - 提交
© . All rights reserved.