0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

構(gòu)建一個帶有LCD的自動洗手液分配器

科技觀察員 ? 來源:circuitdigest ? 作者:Ashish Choudhary ? 2022-08-16 16:09 ? 次閱讀

冠狀病毒 (Covid19) 正在世界范圍內(nèi)造成嚴(yán)重破壞。幾乎每個國家都在遭受冠狀病毒的折磨。世衛(wèi)組織已經(jīng)宣布它為大流行病,許多城市處于封鎖狀態(tài),人們無法走出家門,數(shù)千人喪生。

在這個項目中,我們將構(gòu)建一個帶有 LCD 的自動洗手液分配器,該 LCD 還顯示冠狀病毒病例的實時計數(shù)。該項目將使用 ESP32、超聲波傳感器、16x2 LCD 模塊、水泵和洗手液。我們正在使用Esri 的 API Explorer來獲取 Covid19 感染者的實時數(shù)據(jù)。超聲波傳感器用于檢查消毒機出口下方是否存在手。它將不斷計算消毒劑出口與自身之間的距離,并在距離小于 15 厘米時告訴 ESP 打開泵以將消毒劑推出。

所需組件

ESP32 開發(fā)模塊

超聲波傳感器

16*2液晶顯示器

繼電器模塊

迷你直流潛水泵

消毒洗手液

用于獲取 Corona 實時數(shù)據(jù)的 API 鏈接

在這里,我們需要從互聯(lián)網(wǎng)上獲取數(shù)據(jù),然后將其發(fā)送到 ESP32 以在 16x2 LCD 上顯示。為此,將調(diào)用 HTTP 獲取請求以從 Internet 讀取 JSON 文件。在這里,我們使用的是冠狀病毒病 GIS Hub提供的 API 。您可以輕松編譯正確的查詢 URL 以獲取印度的確診和康復(fù)病例總數(shù),如果您想將其用于其他國家/地區(qū),還可以更改國家/地區(qū)。

poYBAGL7UICASzd8AAJCxq1MmoM308.png

現(xiàn)在單擊“立即嘗試”或?qū)⒉樵?URL 粘貼到新瀏覽器中,該查詢的輸出將如下所示:

{“objectIdFieldName”:“OBJECTID”,“uniqueIdField”:{“name”:“OBJECTID”,“isSystemMaintained”:true},“globalIdFieldName”:“”,“geometryType”:“esriGeometryPoint”,“spatialReference”:{“ wkid”:4326,“l(fā)atestWkid”:4326},“fields”:[{“name”:“Country_Region”,“type”:“esriFieldTypeString”,“alias”:“Country/Region”,“sqlType”:“sqlTypeOther ”,“l(fā)ength”:8000,“domain”:null,“defaultValue”:null},{“name”:“Province_State”,“type”:“esriFieldTypeString”,“alias”:“Province/State”,“sqlType ”:“sqlTypeOther”,“長度”:8000,“域”:null,“defaultValue”:null},{“name”:“Confirmed”,“type”:“esriFieldTypeInteger”,“alias”:“Confirmed”,“sqlType”:“sqlTypeOther”,“domain”:null,“defaultValue”:null },{“name”:“Recovered”,“type”:“esriFieldTypeInteger”,“alias”:“Recovered”,“sqlType”:“sqlTypeOther”,“domain”:null,“defaultValue”:null},{“ name”:“Deaths”,“type”:“esriFieldTypeInteger”,“alias”:“Deaths”,“sqlType”:“sqlTypeOther”,“domain”:null,“defaultValue”:null},{“name”:“活動”,“類型”:“esriFieldTypeInteger”,“別名”:“活動”,“sqlType”:“sqlTypeOther”,“domain”:null,“defaultValue”:null}],“features”:[{“attributes”:{“Country_Region”:“India”,“Province_State”:null,“Confirmed”:194,“Recovered ”:20,“Deaths”:4,“Active”:170}}]}

獲取 JSON 數(shù)據(jù)后,現(xiàn)在生成代碼以讀取 JSON 數(shù)據(jù)并根據(jù)我們的需要對其進行短語處理。

pYYBAGL7UHqANPYoAAUj21Q8Kug139.png

現(xiàn)在向下滾動到解析程序并復(fù)制對您有用的代碼部分。我復(fù)制了以下變量,因為我只需要印度確診和康復(fù)的病例。

pYYBAGL7UHaADFqiAAKQeiYOGCc515.png

電路原理

下面給出了這款Covid19 追蹤器和自動洗手液分配器的完整電路圖

pYYBAGL7UHKAKj0FAAEbBldZHB8248.png

水泵通過繼電器模塊連接到 ESP32。繼電器的 Vcc 和 GND 引腳連接到 ESP32 的 Vin 和 GND 引腳,而繼電器的輸入引腳連接到 ESP32 的 D19 引腳。超聲波傳感器的 Trig 和 Echo 引腳連接到 Arduino 的 D5 和 D18 引腳。

下表給出了完整的連接。

poYBAGL7UG-ABUlfAAAcFU3lyyQ573.png

這款運動傳感器洗手液分配器的硬件如下所示

poYBAGL7UFaAU-YzAAPkH2t2LP4739.png

為 Covid19 追蹤器編程 ESP32

Auto Hand Sanitizer 和 CORONA19 Tracker的完整代碼可在頁面末尾找到。這里解釋了程序的重要部分。

通過包含所有必需的庫文件來啟動代碼。HTTPClient庫用于從 HTTP 服務(wù)器獲取數(shù)據(jù)。ArduinoJson庫用于短語數(shù)據(jù)數(shù)組。這里 ArduinoJson 庫用于過濾已確認的案例并從我們從服務(wù)器獲取的數(shù)據(jù)數(shù)組中恢復(fù)。LiquidCrystal 庫用于 LCD 顯示模塊。

#include 
#include 
#include 
#include 

要從服務(wù)器獲取數(shù)據(jù),NodeMCU ESP32 必須連接到互聯(lián)網(wǎng)。為此,請在以下行中輸入您的 Wi-Fi SSID 和密碼。

const char* ssid = "銀河-M20";
const char* pass = "ac312124";

之后定義連接 LCD 模塊、超聲波傳感器和繼電器模塊的引腳。

常量 int rs = 22, en = 4, d4 = 15, d5 = 13, d6 = 26, d7 = 21;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
常量 int trigPin = 5;
常量 int echoPin = 18;
常量 int 泵 = 19;

現(xiàn)在我們輸入之前生成的 API 鏈接。使用此鏈接,我們將獲得印度的確診病例總數(shù)和康復(fù)病例總數(shù)。您可以根據(jù)自己的需要更改 URL 中的國家/地區(qū)名稱。

constchar*url="https://services1.arcgis.com/0MSEUqKaxRlEPj5g/arcgis/rest/services/ncov_cases/FeatureServer/1/query?f=json&where=(Country_Region=%27India%27)&returnGeometry=false&outFields=Country_Region,Confirmed , 恢復(fù)";

現(xiàn)在在void setup()中,將超聲波傳感器的 Trig 和 Echo 引腳定義為輸入引腳,將 Relay 引腳定義為輸出。

pinMode(trigPin,輸出);
pinMode(echoPin,輸入);
pinMode(泵,輸出);

要了解有關(guān)超聲波傳感器如何工作的更多信息,請查看其與 Arduino 的接口,我們已經(jīng)解釋了其 TRIG 和 ECHO 引腳的功能以及它如何用于計算任何物體之間的距離。另外,檢查其他基于超聲波的項目。

之后,檢查 ESP 是否與 Wi-Fi 連接,如果沒有,它將通過在串行監(jiān)視器上打印“……”來等待 ESP 連接。

WiFi.開始(ssid,通過);
  而(WiFi.status()!= WL_CONNECTED)
  {
    延遲(500);
    Serial.print("."); //打印...直到?jīng)]有連接
  }
  Serial.println("WiFi 連接");

在void ultra()函數(shù)內(nèi)部,我們將使用超聲波傳感器不斷計算距離,如果距離小于或等于 15 厘米,它將打開泵 2 秒,將消毒劑通過管道推到外面。不知不覺中,當(dāng)有人將手放在出水管下方時,距離會減小,并會觸發(fā)泵啟動。

無效超(){
  數(shù)字寫入(trigPin,低);
  延遲微秒(2);
  digitalWrite(trigPin, HIGH);
  延遲微秒(10);
  數(shù)字寫入(trigPin,低);
  持續(xù)時間=脈沖輸入(回聲針,高);
  距離 = 持續(xù)時間 * 0.0340 / 2;
  Serial.println("距離");
  Serial.println(距離);
  如果(距離 <= 15){
    Serial.print("開泵");
    數(shù)字寫入(泵,高);
    延遲(2000);
    數(shù)字寫入(泵,低);
    ESP.restart();
    }
}

現(xiàn)在在void loop()函數(shù)中,通過讀取 JSON 文件并使用以下行在串行監(jiān)視器上打印 JSON 數(shù)據(jù)來檢查 ESP32 是否接收到 JSON 文件

int httpCode = https.GET();
  if (httpCode > 0) { //檢查返回碼
 字符串有效載荷 = https.getString();

之后,使用ArduinoJson Assistant 生成的分詞程序。這個措辭程序?qū)槲覀兲峁┯《却_診和康復(fù)病例的總數(shù)。

JsonArray 字段 = doc["fields"];
JsonObject features_0_attributes = doc["features"][0]["attributes"];
長 features_0_attributes_Last_Update = features_0_attributes["Last_Update"];
int features_0_attributes_Confirmed = features_0_attributes[“已確認”];
//int features_0_attributes_Deaths = features_0_attributes["Deaths"];
int features_0_attributes_Recovered = features_0_attributes[“恢復(fù)”];

使用 Covid19 Tracker 測試自動洗手液

所以最后我們的電池供電的洗手液分配器已經(jīng)準(zhǔn)備好進行測試了。只需按照電路圖連接硬件并將程序上傳到 ESP32,在開始時您應(yīng)該會在 LCD 上看到“Covid19 Tracker”和“Hand Sanitizer”消息,然后幾秒鐘后它會在屏幕上顯示確認病例和恢復(fù)病例液晶屏如下圖。

poYBAGL7UEuAH4vKAARRO7onYi8254.png

#include

#include

#include

#include

const char* ssid = "Galaxy-M20";

const char* pass = "ac312124";

整數(shù)計數(shù);

常量 int rs = 22, en = 4, d4 = 15, d5 = 13, d6 = 26, d7 = 21;

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

常量 int trigPin = 5;

常量 int echoPin = 18;

常量 int 泵 = 19;

持續(xù)時間長;

整數(shù)距離;

const char* url = " https://services1.arcgis.com/0MSEUqKaxRlEPj5g/arcgis/rest/services/ncov… ";

無效設(shè)置() {

Serial.begin(115200);

延遲(2000);

pinMode(trigPin,輸出);

pinMode(echoPin,輸入);

pinMode(泵,輸出);

數(shù)字寫入(泵,低);

lcd.begin(16, 2);

lcd.clear();

lcd.setCursor(0,0);

lcd.print("Covid19 追蹤器");

lcd.setCursor(0,1);

lcd.print("洗手液");

Serial.println("正在連接");

序列號.println(ssid);

WiFi.開始(ssid,通過);

而(WiFi.status()!= WL_CONNECTED)

{

延遲(500);

Serial.print("."); // 打印 ... 直到未連接

}

Serial.println("WiFi connected");

}

void ultra(){

digitalWrite(trigPin, LOW);

延遲微秒(2);

digitalWrite(trigPin, HIGH);

延遲微秒(10);

數(shù)字寫入(trigPin,低);

持續(xù)時間=脈沖輸入(回聲針,高);

距離 = 持續(xù)時間 * 0.0340 / 2;

Serial.println("距離");

Serial.println(距離);

if (distance <= 15){

Serial.print("開泵");

數(shù)字寫入(泵,高);

延遲(2000);

數(shù)字寫入(泵,低);

ESP.restart();

}

}

無效循環(huán)() {

超();

HTTP客戶端 https;

字符串?dāng)?shù)據(jù);

https.開始(網(wǎng)址);

int httpCode = https.GET();

if (httpCode > 0) { //檢查返回碼

字符串有效載荷 = https.getString();

char charBuf[500];

payload.toCharArray(charBuf, 500);

//Serial.println(payload);

常量 size_t 容量 = JSON_ARRAY_SIZE(1) + JSON_ARRAY_SIZE(4) + JSON_OBJECT_SIZE(1) + 2 * JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(4) + 3 * JSON_OBJECT_SIZE(6) + 2 * JSON_OBJECT_SIZE(7) + 690;

DynamicJsonDocument doc(容量);

反序列化Json(文檔,有效載荷);

JsonArray 字段 = doc["fields"];

JsonObject features_0_attributes = doc["features"][0]["attributes"];

長 features_0_attributes_Last_Update = features_0_attributes["Last_Update"];

int features_0_attributes_Confirmed = features_0_attributes[“已確認”];

//int features_0_attributes_Deaths = features_0_attributes["Deaths"];

int features_0_attributes_Recovered = features_0_attributes[“恢復(fù)”];

if (count < 3){

//Serial.println(features_0_attributes_Confirmed);

lcd.setCursor(0, 0);

lcd.print("IN 確認:");

lcd.print(features_0_attributes_Confirmed);

//Serial.println(features_0_attributes_Recovered);

lcd.setCursor(0, 1);

lcd.print("IN 已恢復(fù):");

lcd.print(features_0_attributes_Recovered);

}

if (count > 3){

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("洗手");

lcd.setCursor(0, 1);

lcd.print("避免接觸");

}

if (count > 6){

count = 0;

}

}

else {

Serial.println("HTTP 請求錯誤");

}

https.end();

計數(shù)++;

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • lcd
    lcd
    +關(guān)注

    關(guān)注

    34

    文章

    4426

    瀏覽量

    167508
  • 分配器
    +關(guān)注

    關(guān)注

    0

    文章

    194

    瀏覽量

    25755
  • ESP32
    +關(guān)注

    關(guān)注

    18

    文章

    971

    瀏覽量

    17276
收藏 人收藏

    評論

    相關(guān)推薦

    基于ATTiny13的自動洗手液分配器

    ,因此必須正確有效地使用它們。在洗手液分配器的第二版本中,我已經(jīng)解決了之前的設(shè)計問題,并引入了種對環(huán)境光不敏感且酒精/洗手液的流量控制能
    發(fā)表于 06-20 09:10

    DIY自動洗手液分配器

    感染的手接觸酒精容器或洗手液可能會將病毒傳播給下一個人。在本文中,我們將構(gòu)建自動
    發(fā)表于 06-21 06:04

    構(gòu)建自動洗手液分配器

    感染的手接觸酒精容器或洗手液可能會將病毒傳播給下一個人。在本文中,我們將構(gòu)建自動
    發(fā)表于 08-17 06:59

    自制洗手液分配器

    使用這個洗手液分配器之后,你就可以通過洗手和手消毒來對抗 COVID-19 的簡單而有效的方法,無需接觸瓶子!
    的頭像 發(fā)表于 07-08 17:47 ?1818次閱讀
    自制<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>洗手液</b><b class='flag-5'>分配器</b>

    使用ATTiny13自動洗手液分配器

    電子發(fā)燒友網(wǎng)站提供《使用ATTiny13自動洗手液分配器.zip》資料免費下載
    發(fā)表于 07-19 11:23 ?1次下載
    使用ATTiny13<b class='flag-5'>自動</b><b class='flag-5'>洗手液</b><b class='flag-5'>分配器</b>

    DIY自動洗手液分配器 無需Arduino或MCU

    電子發(fā)燒友網(wǎng)站提供《DIY自動洗手液分配器 無需Arduino或MCU.zip》資料免費下載
    發(fā)表于 07-18 15:57 ?1次下載
    DIY<b class='flag-5'>自動</b><b class='flag-5'>洗手液</b><b class='flag-5'>分配器</b> 無需Arduino或MCU

    DIY洗手液/酒精分配器的PCB設(shè)計

    構(gòu)建自動洗手液分配器,它使用 IR 傳感器檢測手的存在并啟動泵將液體倒在手上。目的是找到最便
    發(fā)表于 07-27 11:15 ?1788次閱讀
    DIY<b class='flag-5'>洗手液</b>/酒精<b class='flag-5'>分配器</b>的PCB設(shè)計

    無需Arduino或MCU DIY自動洗手液分配器

    電子發(fā)燒友網(wǎng)站提供《無需Arduino或MCU DIY自動洗手液分配器.zip》資料免費下載
    發(fā)表于 07-28 11:09 ?0次下載
    無需Arduino或MCU DIY<b class='flag-5'>自動</b><b class='flag-5'>洗手液</b><b class='flag-5'>分配器</b>

    消毒洗手液分配器開源分享

    電子發(fā)燒友網(wǎng)站提供《消毒洗手液分配器開源分享.zip》資料免費下載
    發(fā)表于 11-09 09:38 ?1次下載
    消毒<b class='flag-5'>洗手液</b><b class='flag-5'>分配器</b>開源分享

    免提洗手液分配器開源

    電子發(fā)燒友網(wǎng)站提供《免提洗手液分配器開源.zip》資料免費下載
    發(fā)表于 11-28 11:35 ?0次下載
    免提<b class='flag-5'>洗手液</b><b class='flag-5'>分配器</b>開源

    免接觸式洗手液分配器開源分享

    電子發(fā)燒友網(wǎng)站提供《免接觸式洗手液分配器開源分享.zip》資料免費下載
    發(fā)表于 11-30 11:59 ?4次下載
    免接觸式<b class='flag-5'>洗手液</b><b class='flag-5'>分配器</b>開源分享

    易于構(gòu)建洗手液分配器 無需Arduino或MCU

    電子發(fā)燒友網(wǎng)站提供《易于構(gòu)建洗手液分配器 無需Arduino或MCU.zip》資料免費下載
    發(fā)表于 12-15 11:04 ?0次下載
    易于<b class='flag-5'>構(gòu)建</b>的<b class='flag-5'>洗手液</b><b class='flag-5'>分配器</b> 無需Arduino或MCU

    基于Arduino UNO的洗手液自動分配器

    方案介紹該設(shè)備能夠檢測您的手的存在并自動向您的手釋放特定量的洗手液/消毒劑。自動洗手液分配器,當(dāng)放置在距離測量傳感器(超聲波傳感器)下時,可
    發(fā)表于 12-19 17:04 ?0次下載

    如何制作低成本但全自動洗手液分配器電路

    在本文中,我們將學(xué)習(xí)如何制作低成本但全自動洗手液分配器電路,該電路將允許在用戶手上以非接觸式或非接觸式分配消毒液。
    的頭像 發(fā)表于 05-29 17:36 ?1661次閱讀
    如何制作低成本但全<b class='flag-5'>自動</b>的<b class='flag-5'>洗手液</b><b class='flag-5'>分配器</b>電路

    自動洗手分配器開源設(shè)計

    電子發(fā)燒友網(wǎng)站提供《自動洗手分配器開源設(shè)計.zip》資料免費下載
    發(fā)表于 06-30 09:33 ?0次下載
    <b class='flag-5'>自動</b><b class='flag-5'>洗手</b><b class='flag-5'>分配器</b>開源設(shè)計