电晕病毒(Covid19)在世界范围内造成严重破坏。几乎每个国家都在遭受日冕病毒的折磨。世卫组织已经宣布该疾病为大流行病,许多城市处于封锁状态,人们无法走出家门,成千上万人丧生。许多网站都提供有关冠状病毒病例的实时更新,例如Microsoft的Tracker,Esri的Covid19 Tracker等。
在这个项目中,我们将建造一个带有LCD的自动洗手液分配器,该LCD还能显示冠状病毒病例的实时计数。该项目将使用ESP32,超声波传感器,16x2 LCD模块,水泵和洗手液。我们正在使用Esri的API资源管理器来获取Covid19感染者的实时数据。超声波传感器用于检查消毒机出口下方的手是否存在。它将连续计算消毒剂出口与其自身之间的距离,并告诉ESP每当距离小于15cm时将泵打开以将消毒剂推出。
ESP32用作主控制器,它是一个Wi-Fi模块,可以轻松连接到互联网。我们之前使用它来使用ESP32构建许多基于IoT的项目。
所需组件
- ESP32开发板
- 超声波传感器
- 16 * 2 LCD显示屏
- 继电器模块
- 微型直流潜水泵
- 消毒洗手液
API链接,用于获取Corona实时数据
在这里,我们需要从互联网获取数据,然后将其发送到ESP32以在16x2 LCD上显示。为此,将调用HTTP get请求以从Internet读取JSON文件。在这里,我们使用的是冠状病毒病GIS中心提供的API。您可以轻松地编译正确的查询URL,以获取印度确认和追回的案件总数,如果您想在其他国家/地区使用该国家/地区,也可以更改国家/地区。
现在单击“立即尝试”或将查询URL粘贴到新的浏览器中,该查询的输出将如下所示:
{“ objectIdFieldName”:“ OBJECTID”,“ uniqueIdField”:{“ name”:“ OBJECTID”,“ isSystemMaintained”:true},“ globalIdFieldName”:“”,“ geometryType”:“ esriGeometryPoint”,“ spatialReference”:{“ wkid“:4326,” latestWkid“:4326},” fields“:,” features“:}
获取JSON数据后,现在生成代码以读取JSON数据并根据我们的需要对其进行短语设置。为此,转到ArduinoJson Assistant,然后将JSON数据粘贴到Input部分中。
现在向下滚动到解析程序,然后复制对您有用的代码部分。我复制了以下变量,因为我只需要在印度确认和恢复的病例。
电路原理图
该Covid19 Tracker和自动洗手液分配器机器的完整电路图如下所示
水泵通过继电器模块连接到ESP32。继电器的Vcc和GND引脚连接到ESP32的Vin和GND引脚,而继电器的输入引脚连接到ESP32的D19引脚。超声波传感器的Trig和Echo引脚连接到Arduino的D5和D18引脚。
下表列出了完整的连接。
液晶屏 | ESP32 |
VSS | 地线 |
VDD | 5伏 |
VO | 电位器 |
RS | D22 |
读写器 | 地线 |
Ë | D4 |
D4 | D15 |
D5 | D13 |
D6 | D26 |
D7 | D21 |
一种 | 5伏 |
ķ | 地线 |
超声波传感器 | ESP32 |
Vcc | 文 |
地线 | 地线 |
触发 | D5 |
回声 | D18 |
该运动传感器洗手液分配器的硬件如下所示
为Covid19 Tracker编程ESP32
页面末尾可以找到自动洗手液和CORONA19 Tracker的完整代码。这里说明了程序的重要部分。
通过包括所有必需的库文件来启动代码。HTTPClient库用于从HTTP服务器获取数据。ArduinoJson库用于表示数据数组。此处,ArduinoJson库用于过滤从服务器获取的已确认案例和从数据数组中恢复的案例。LiquidCrystal库用于LCD显示模块。
#包括
要从服务器获取数据,NodeMCU ESP32必须连接互联网。为此,请在以下几行中输入您的Wi-Fi SSID和密码。
const char * ssid =“ Galaxy-M20”; const char * pass =“ ac312124”;
在此之后,定义连接LCD模块,超声波传感器和继电器模块的引脚。
const int rs = 22,en = 4,d4 = 15,d5 = 13,d6 = 26,d7 = 21;LiquidCrystal LCD(rs,en,d4,d5,d6,d7); const int trigPin = 5; const int echoPin = 18; const int泵= 19;
现在,我们输入之前生成的API链接。使用此链接,我们将获得印度确诊病例和已追回病例的总数。您可以根据需要更改URL中的国家名称。
constchar * url =“
现在在 void setup() 内部,将超声波传感器的Trig和Echo引脚定义为输入引脚,并将Relay引脚定义为输出。
pinMode(trigPin,OUTPUT); pinMode(echoPin,INPUT); pinMode(泵,输出);
要了解有关超声波传感器工作原理的更多信息,请检查其与Arduino的接口,在此我们解释了其TRIG和ECHO引脚的功能以及如何使用它计算任何物体之间的距离。另外,检查其他基于超声波的项目。
之后,检查ESP是否与Wi-Fi连接,如果未连接,它将通过在串行监视器上打印“…..”来等待ESP连接。
WiFi.begin(ssid,pass); 而(WiFi.status()!= WL_CONNECTED){delay(500); Serial.print(“。”); //打印…直到未连接} Serial.println(“ WiFi connected”);
在 void ultra() 函数内部,我们将使用超声波传感器连续计算距离,如果该距离小于或等于15 cm,则它将打开泵2秒钟,以将消毒剂通过管道推向外部。显然,当有人将手放在出口管下方时,距离会减小,并会触发泵开启。
void ultra(){digitalWrite(trigPin,LOW); delayMicroseconds(2); digitalWrite(trigPin,HIGH); delayMicroseconds(10); digitalWrite(trigPin,LOW); 持续时间= pulseIn(echoPin,HIGH); 距离=持续时间* 0.0340 / 2; Serial.println(“ Distance”); Serial.println(distance); if(距离<= 15){Serial.print(“ Opening Pump”); digitalWrite(pump,HIGH); delay(2000); digitalWrite(pump,LOW); ESP.restart(); }}
现在在 void loop() 函数中,通过读取ESP32并在串行监视器上使用以下行打印JSON数据来检查ESP32收到的JSON文件是否
int httpCode = https.GET(); if(httpCode> 0){//检查返回的代码String有效负载=
之后,使用从ArduinoJson Assistant生成的短语程序。此分阶段计划将为我们提供印度已确诊和恢复的病例总数。
JsonArray字段= doc; JsonObject features_0_attributes = doc; 长features_0_attributes_Last_Update = features_0_attributes; int features_0_attributes_Confirmed = features_0_attributes; // int features_0_attributes_Deaths = features_0_attributes; int features_0_attributes_Recovered = features_0_attributes;
使用Covid19 Tracker测试自动洗手液
因此,终于可以使用我们的电池供电的洗手液分配器了。只需按照电路图连接硬件并将程序上传到ESP32,开始时您应该在LCD上看到“ Covid19 Tracker”和“ Hand Sanitizer”消息,然后几秒钟后,它将在屏幕上显示已确认的病例和已恢复的病例。液晶屏如下图所示。
与此类似,您可以通过在API链接中进行一些更改来获取任何国家/地区的数据。一个完整的工作视频和代码在页面的末尾。