コロナウイルス(Covid19)は、世界に大混乱をもたらしています。ほぼすべての国がコロナウイルスに苦しんでいます。WHOはすでにパンデミック病を発表しており、多くの都市が封鎖されており、人々は家を出ることができず、数千人が命を落としています。多くのWebサイトが、MicrosoftのTracker、EsriのCovid19Trackerなどのコロナウイルス症例のライブアップデートを提供しています。
このプロジェクトでは、コロナウイルスの症例数も表示するLCDを備えた自動ハンドサニタイザーディスペンサーを構築します。このプロジェクトでは、ESP32、超音波センサー、16x2 LCDモジュール、ウォーターポンプ、およびハンドサニタイザーを使用します。EsriのAPIExplorerを使用して、Covid19に感染した人々のライブデータを取得しています。超音波センサーは、消毒機の出口の下にある手の存在をチェックするために使用されます。消毒剤の出口とそれ自体の間の距離を継続的に計算し、距離が15cm未満の場合は常にポンプをオンにして、消毒剤を押し出すようにESPに指示します。
ESP32はメインコントローラーとして使用され、インターネットに簡単に接続できるWi-Fiモジュールです。以前は、ESP32を使用して多くのIoTベースのプロジェクトを構築するために使用していました。
必要なコンポーネント
- ESP32開発モジュール
- 超音波センサー
- 16 * 2LCDディスプレイ
- リレーモジュール
- ミニDC水中ポンプ
- 手指消毒剤
コロナライブデータを取得するためのAPIリンク
ここでは、インターネットからデータを取得し、それをESP32に送信して、16x2LCDに表示する必要があります。そのために、インターネットからJSONファイルを読み取るためにHTTPgetリクエストが呼び出されます。ここでは、コロナウイルス病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データを[入力]セクションに貼り付けます。
次に、解析プログラムまで下にスクロールして、便利なコードセクションをコピーします。インドで確認および回復されたケースのみが必要だったため、以下の変数をコピーしました。
回路図
このCovid19トラッカーと自動手指消毒剤ディスペンサーマシンの完全な回路図を以下に示します。
ウォーターポンプは、リレーモジュールを介してESP32に接続されています。リレーのVccピンとGNDピンはESP32のVinピンとGNDピンに接続され、リレーの入力ピンはESP32のD19ピンに接続されます。超音波センサーのトリガーピンとエコーピンは、ArduinoのD5ピンとD18ピンに接続されています。
完全な接続を以下の表に示します。
LCD | ESP32 |
VSS | GND |
VDD | 5V |
VO | ポテンショメータ |
RS | D22 |
RW | GND |
E | D4 |
D4 | D15 |
D5 | D13 |
D6 | D26 |
D7 | D21 |
A | 5V |
K | GND |
超音波センサー | ESP32 |
Vcc | ヴィン |
GND | GND |
トリガー | D5 |
エコー | D18 |
このモーションセンサーハンドサニタイザーディスペンサーのハードウェアは次のようになります
Covid19トラッカー用のESP32のプログラミング
Auto HandSanitizerとCORONA19Trackerの完全なコードは、ページの最後にあります。ここでは、プログラムの重要な部分について説明します。
必要なすべてのライブラリファイルを含めて、コードを開始します。HTTPClientライブラリは、HTTPサーバーからデータを取得するために使用されます。ArduinoJsonライブラリは、データ配列の表現に使用されます。ここでは、ArduinoJsonライブラリを使用して、確認済みのケースをフィルタリングし、サーバーから取得しているデータ配列からリカバリします。LCDディスプレイモジュールにはLiquidCrystalライブラリが使用されます。
#include
サーバーからデータを取得するには、NodeMCUESP32がインターネットに接続する必要があります。そのためには、以下の行にWi-FiSSIDとパスワードを入力します。
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 pump = 19;
ここで、前に生成されたAPIリンクを入力します。このリンクを使用して、インドで確認されたケースと回復されたケースの合計を取得します。あなたに応じてURLで国名を変更することができます。
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 、回復済み ";
void setup() 内で、超音波センサーのTrigおよびEchoピンを入力ピンとして定義し、Relayピンを出力として定義します。
pinMode(trigPin、OUTPUT); pinMode(echoPin、INPUT); pinMode(pump、OUTPUT);
超音波センサーがどのように機能するかについて詳しくは、Arduinoとのインターフェースを確認してください。ここでは、TRIGピンとECHOピンの機能と、オブジェクト間の距離の計算方法について説明しました。また、他の超音波ベースのプロジェクトを確認してください。
その後、ESPがWi-Fiに接続されているかどうかを確認します。接続されていない場合は、シリアルモニターに「…..」と印刷してESPが接続されるのを待ちます。
WiFi.begin(ssid、pass); while(WiFi.status()!= WL_CONNECTED){delay(500); Serial.print( "。"); //接続されなくなるまで…を出力します} Serial.println( "WiFi接続");
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( "距離"); Serial.println(距離); if(distance <= 15){Serial.print( "Opening Pump"); digitalWrite(pump、HIGH); delay(2000); digitalWrite(pump、LOW); ESP.restart(); }}
void loop() 関数内で、ESP32が受信したJSONファイルを読み取り、次の行を使用してシリアルモニターにJSONデータを出力するかどうかを確認します。
int httpCode = https.GET(); if(httpCode> 0){//返されるコードを確認するStringpayload =
その後、ArduinoJsonアシスタントから生成されたフレージングプログラムを使用します。このフレージングプログラムにより、インドで確認および回収された症例の総数がわかります。
JsonArrayフィールド= doc; JsonObject features_0_attributes = doc; long 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トラッカーを使用した自動ハンドサニタイザーのテスト
これで、ついにバッテリー駆動の手指消毒剤ディスペンサーをテストする準備が整いました。回路図に従ってハードウェアを接続し、プログラムをESP32にアップロードするだけで、最初にLCDに「Covid19Tracker」と「HandSanitizer」のメッセージが表示され、数秒後に確認済みのケースと回復したケースが表示されます。以下に示すようなLCD画面。
これと同様に、APIリンクにいくつかの変更を加えることで、どの国のこのデータも取得できます。完全な作業映像やコードがされているページの最後に与えられました。