本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于 AWS IoT EduKit 的流行病智能监控系统

发布时间:2021-11-07
分享到:

基于 AWS IoT EduKit 的流行病智能监控系统

发布时间:2021-11-07
分享到:

为了控制有关 Covid-19 指南的安全措施并保持适当的安全,我们构建了一个流行病智能系统。

要解决什么问题?
随着大流行在世界范围内得到控制,许多国家正在努力开放城市以恢复这种势头,但由于这种情况,人们正因工作、公共集会、紧急情况等而离开家。

世界各地的大量人口没有私人车辆,因此他们必须借助公共汽车、火车、出租车等公共交通工具前往工作、活动或任何地方。
这些公共交通工具确实可以证明是 Covid-19 病毒的感染区,这可能会导致一次又一次的爆发。
要构建什么来解决这个问题?它与现有解决方案有何不同?为什么有用?
为了控制有关 Covid-19 准则和上述问题的安全措施,我将基于“AWS IoT EduKit”构建一个流行病智能系统,该系统可以通过多种方式使用,例如,

1. 按照当局发布的安全指南计算应该在公共汽车/火车内旅行的固定人数。(机器学习可以用于此)

2. 根据上述指南计算出所有旅客的温度。

3. 弄清楚旅行者之间的社交距离。

4、搞清楚公共交通封闭环境内的空气质量,采取各种措施保持空气流通,“防止病毒传播”。

5. 基于上述所有要点制作 AV(视听)反馈系统和警报系统,以便每个人都可以通过实施该技术以经济的方式遵循安全准则。

6. 情况超出可行安全措施范围时发出警报,并指导当局重新控制。

>它不同于现有技术,因为它是移动的、更智能、更易于使用、体积小、成本更低。它用户友好且简单且易于实施!
>它真的很有用,因为 AWS IoT EduKit 配备了所有必要的技术,以可行、简单和经济的方式解决上述问题,因为它拥有物联网、机器学习、TinyML、Alexa 和其他可以使用的技术战略上。
解决方案如何运作?主要特点是什么?

请指定您将如何在您的解决方案中使用 Core2 for AWS IoT EduKit。
我们的解决方案适用于物联网、机器学习、TinyML、Alexa 与传感器网格集成,用于空气质量、温度测量、与 AWS IoT EduKit 集成的摄像头。主要特点:

1. 弄清楚人们是否按照指南正确佩戴了口罩(可以使用机器学习)

2. 根据上述指南计算出所有旅客的温度。

3. 弄清楚旅行者之间的社交距离。

4、搞清楚公共交通封闭环境内的空气质量,采取各种措施保持空气流通,“防止病毒传播”。

5. 基于上述所有要点的反馈系统和警报系统,通过实施该技术,每个人都可以以经济的方式遵循安全准则。

6、当情况超出可行安全措施的范围时发出警报,并指导当局重新控制。

入门
1. 开发任何电子项目,包括微处理器、电路、编程语言等,您首先需要的是一个可以由 IDE 轻松提供的开发环境。

所以在这里,我们将为这个项目安装一个合适的 IDE,它是带有 PlatformIO 的 Visual Studio Code。

智能恒温器 - 控制家用冷却/加热设备的不必要使用
在我的项目中,我们将实施智能恒温器设置,借助它我们将控制家庭/公共空间冷却/加热设备(根据您自己的领土天气条件)以节省电力/燃料,无论我们在公共交通工具、公共空间,甚至在家里。

首先,我们将实施经济的解决方案,以在空间内节省电力并有效地使用冷却/加热设备,而不会让它运行不必要地浪费电力。

为此,我们将使用物联网核心云和我们的物理M5Stack Core2 机器同步数据 MQTT消息传递协议。我希望您已经正确地遵循了 AWS Edukit 教程的所有步骤,从分配证书、策略到实施HVAC 应用程序以及充分利用Shadows的功能!

最后!当您开始在您的设备上接收更新以及使用 MQTT 通过 IOT Core超额订阅主题时,当侧边栏 LED 也开始显示红色/蓝色,同时检测到制冷/制热的室温变化更新时,这是一个非常成功的时刻,您可以现在将其与电源继电器连接到交流电源设备,以在智能空间内进行冷却/加热!
注意:由于安全原因以及我所在地区没有 Grove 继电器,我无法实现直流交流电源设备。

1. 打开代码并跳转到第 174 行。在这里你会发现一个名为 'pin_read_task()' 的 void 函数来读取 GPIO 引脚状态(数字 -> 0 或 1)。

此 GPIO 引脚连接到 Arduino。Arduino,它从 Grove 空气质量传感器 v1.3 接收有关空气质量指数的数据,在代码中指定的 GPIO 引脚(以数字形式 0 或 1)将数据发送到 M5Stack IOT Edukit。

  • 这里 arduino 正在上传一个代码,该代码确定周围空气的 AQI,并将 M5Stack 的 GPIO 引脚更新为 0 或 1。如果 arduino 传输 1/HIGH,则意味着 AQI 对“公共空间”有害,必须新鲜空气被传阅。注意:Arduino 方面发生了什么,我们很快就会了解。
  • 如果传输 0/LOW,循环新鲜空气的换气扇将关闭,使其成为公共空间的经济实施方案。

2. 现在,跳转到ST_1.c 的第 182行。在这里,您将找到一个通过 M5Stack 的 GPIO 引脚编写数字命令的函数。此引脚激活通风风扇以提供新鲜空气,并使用 2.5m 过滤器过滤空气以抵抗进入公共空间的 covid-19 病毒和有害颗粒物。该引脚在公共空间内超过 AQI 范围时被激活。

三、逻辑说明:

  • Core2ForAWS_Port_Write(GPIO_NUM_14,输出);
  • ESP_LOGI(TAG, "GPIO %d 输出: %s", GPIO_NUM_14, 输出 ? "HIGH" : "LOW");
  • 在这里,Core2 Edukit M5Stack 的 GPIO 编号 14 正在通过输出模式激活,并且相应地提到了高/低状态的逻辑。
  • 然后是 do-while 循环 - 用于确定 M5Stack 的输入引脚状态。当输入为 1(来自带有 AQI 传感器的 arduino 的二进制数据)时,表示 AQI 高 enoguh 激活通风风扇,M5Stack 端口 C 的第 26 个 GPIO 被激活,风扇开始运行。
  • 最后,程序最后的主要函数调用读取和写入函数来执行任务。

所以这里这个问题的故事中的问题陈述的第四点正在得到解决:

搞清楚公共交通封闭环境内的空气质量,采取各种措施保持空气流通,“防止病毒传播”。

本节是在 AWS IOT Core 的帮助下实现的,我们使用了 IOT Core 服务,例如 MQTT、检测器模型、IOT Analytics、IOT Lambda、Arduino 和各种传感器。

注意:我无法向您展示它在 Smart Spaces 数据集和模型上的实施,因为我已经超出了基于我在此项目的预算中的 AWS Sagemaker 费用。

但是,我相信您已经遵循了 AWS Edukit Workshot for Smart Spaces的教程,它主要用于消除收到的任何错误值并改进应用程序的工作以实现精确的结果。为了这个项目的准确性,推荐“智能空间”模型!

找出第二条 covid-19 准则——社交距离
在这里,我们将要使用M5Stack,这是开发另一个真棒软件技术UIFlow这是基于MicroPython。它用于开发基于 M5Stack 的智能交互式图形用户界面(GUI)。

它们是大量基于 Grove 的传感器,可与 M5Stack 结合使用并结合 UIFlow

但是在这里,在这个模块中,我们将只使用蜂鸣器、被动红外和继电器传感器单元

保持和分析遵循适当的社交距离,以便可以控制 Covid-19 病毒传播,如该项目的问题陈述和解决方案的第 3 点所述。为此,正在应用两种方法:

  • 被动红外 - PIR :由于基本 PIR 传感器的传感器场约为 120 度,我们将使用锥形投影将其传播角度控制在 20 度以下,以便只能识别站在其下方的一个人。这些传感器的网格将放置在公共交通工具内,以便当 2 个人靠近时,备用传感器检测到它们并发出警告警报。所以,为此,
  • 我们将把蜂鸣器连接到 Arduino 并为 arduino 指定一个输入引脚,这样当 M5Stack 的 PIR 程序对 M5Stack 的端口 C 执行(HIGH/1)时,arduino 代码将激活 Arduino 上的输出引脚然后连接到蜂鸣器,它将作为警告警报以保持更安全的距离!

注意:您一定在想,为什么我们不能将蜂鸣器直接连接到 M5Stack?原因:UIFlow IDE 在 Units 部分没有 Buzzer 选项,因此,我们将声明一个“中继”单元并将输出发送到 arduino 以间接引发警报。

UIFlow社交距离报警系统教程

安装软件,选择设备:

设置并上传您制作的 UIFlow 程序后,您的屏幕将如下所示:

同时将输出引脚连接到 Arduino。输出引脚是在 UIFlow 程序中被称为继电器的引脚。将 M5Stack 端口 C 上的引脚 Rx 连接到 Arduino 的数字引脚 2。代码片段如下供 Arduino 从 M5Stack 读取:

像这样建立连接:

现在是重要的一步:

  • 我没有制作多个编码文件,而是将所有 Arduino apecific 代码合并到一个文件中,您可以在下面下载或在此处复制代码表,因为此代码还包含 AQI 传感器和其他功能的代码:

/*
    Grove_Air_Quality_Sensor.ino
    Demo for Grove - Air Quality Sensor.

    Copyright (c) 2019 seeed technology inc.
    Author    : Lets Blu
    Created Time : Jan 2019
    Modified Time:

    The MIT License (MIT)

    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in
    all copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    THE SOFTWARE.
*/
#include "Air_Quality_Sensor.h"

AirQualitySensor sensor(A0);
const int buzzer = 9; //buzzer to arduino pin 9

void setup(void) {
  pinMode(2,INPUT); 
  pinMode(12,OUTPUT);//LED

  pinMode(buzzer, OUTPUT); // Set buzzer - pin 9 as an output
    Serial.begin(9600);
    while (!Serial);

    Serial.println("Waiting sensor to init...");
    delay(20000);

    if (sensor.init()) {
        Serial.println("Sensor ready.");
    } else {
        Serial.println("Sensor ERROR!");
    }
}

void loop(void) {
    int quality = sensor.slope();

    Serial.print("Sensor value: ");
    Serial.println(sensor.getValue());

    if (quality == AirQualitySensor::FORCE_SIGNAL) {
        Serial.println("High pollution! Force signal active.");
    } else if (quality == AirQualitySensor::HIGH_POLLUTION) {
        Serial.println("High pollution!");
          digitalWrite(12,HIGH);
          delay(5000);
          digitalWrite(12,LOW);
    } else if (quality == AirQualitySensor::LOW_POLLUTION) {
        Serial.println("Low pollution!");
    } else if (quality == AirQualitySensor::FRESH_AIR) {
        Serial.println("Fresh air.");
    }
if(digitalRead(2)==HIGH){
  tone(buzzer, 1000); // Send 1KHz sound signal...
  delay(1000);        // ...for 1 sec
  //noTone(buzzer);     // Stop sound...
  //delay(1000);        // ...for 1sec
}
else{
  noTone(buzzer); 
}
    delay(1000);
}

智能空气质量维护
现在是第三个也是最重要的实施,智能空气质量维护。

这件事也是在 Edukit IoT Core2 M5Stack + Arduino(带有 AQI 传感器 Grove v1.3)之间发生的整个设置的一部分

首先,像这样固定所有组件:

  • 之后,在 VSCode PlatforIO CLI 终端上运行此命令:

我希望您已经在您的智能恒温器注册表中替换了我的智能恒温器和空气质量控制.h 文件。

运行该命令后,您将看到如下所示的内容:

在测量到公共空间的空气质量指数大于“70”后,风扇将通过连接到 M5Stack 的写入(输出)引脚 GPIO 14 的继电器启动。

这是风扇配备了 PM2.5 过滤器,可过滤掉公共交通工具/空间内的任何可能威胁,如 Covid-19 病毒、有害污染物等。

输出读数:

  • 当空气新鲜时,AQI Sensor通过arduino的输出为'0'

  • 当空气被污染时,AQI Sensor通过arduino的输出为'1',GPIO 14为Activated为'HIGH'

将所有模块组合在一起后,最终的系统将是这样的,并且功能齐全!

如果您对此项目有任何想法、意见或问题,请在下方留言。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论