- Componente necesare
- Link API pentru obținerea datelor Corona Live
- Diagrama circuitului
- Programarea ESP32 pentru Covid19 Tracker
- Testarea dezinfectantului automat pentru mâini cu Covid19 Tracker
Virusul Corona (Covid19) face ravagii în lume. Aproape fiecare țară suferă de virusul Corona. OMS a anunțat deja că este o boală pandemică și multe orașe se află în situație de blocare, oamenii nu pot ieși din casele lor și mii și-au pierdut viața. Multe site-uri web oferă actualizări în timp real ale cazurilor de coronavirus precum Microsoft's Tracker, Esri's Covid19 Tracker etc.
În acest proiect, vom construi un Dispenser de dezinfectare automată a mâinilor cu un ecran LCD, care arată, de asemenea, numărul live de cazuri de coronavirus. Acest proiect va utiliza ESP32, senzor cu ultrasunete, modul LCD 16x2, pompă de apă și dezinfectant pentru mâini. Folosim API Explorer Esri pentru a obține datele live ale persoanelor infectate cu Covid19. Un senzor cu ultrasunete este utilizat pentru a verifica prezența mâinilor sub orificiul de ieșire al aparatului de dezinfectare. Acesta va calcula continuu distanța dintre orificiul de evacuare a dezinfectantului și el însuși și îi va spune ESP-ului să pornească pompa ori de câte ori distanța este mai mică de 15 cm pentru a împinge dezinfectantul în afară.
ESP32 este folosit ca controler principal, este un modul Wi-Fi care se poate conecta cu ușurință la internet. Am folosit-o anterior pentru a construi multe proiecte bazate pe IoT folosind ESP32.
Componente necesare
- Modulul ESP32 Dev
- Senzor cu ultrasunete
- Afișaj LCD 16 * 2
- Modul releu
- Mini pompă submersibilă DC
- Dezinfectant mâini
Link API pentru obținerea datelor Corona Live
Aici trebuie să obținem datele de pe internet și apoi să le trimitem la ESP32 pentru a le afișa pe 16x2 LCD. Pentru aceasta, este invocată o cerere de obținere HTTP pentru a citi fișierul JSON de pe internet. Aici folosim API-ul oferit de Coronavirus Disease GIS Hub. Puteți compila cu ușurință adresa URL de interogare corectă pentru a obține totalul de cazuri confirmate și recuperate pentru India și puteți schimba, de asemenea, țara / regiunea dacă doriți să utilizați acest lucru pentru o altă țară.
Acum faceți clic pe „Încercați acum” sau lipiți adresa URL a interogării într-un browser nou, rezultatul interogării va arăta astfel:
{"objectIdFieldName": "OBJECTID", "uniqueIdField": {"name": "OBJECTID", "isSystemMaintained": true}, "globalIdFieldName": "", "geometryType": "esriGeometryPoint", "spatialReference": {" wkid ": 4326," latestWkid ": 4326}," fields ":," features ":}
După ce obțineți datele JSON, acum generați codul pentru a citi datele JSON și a le sintetiza în funcție de nevoile noastre. Pentru aceasta, accesați Asistentul ArduinoJson și lipiți datele JSON în secțiunea Intrare.
Acum derulați în jos până la programul de analiză și copiați secțiunea de cod care vă este utilă. Am copiat variabilele de mai jos deoarece aveam nevoie doar de cazurile confirmate și recuperate în India.
Diagrama circuitului
Diagrama completă a circuitului pentru acest aparat Covid19 Tracker și automat de dezinfectare a mâinilor este prezentată mai jos
Pompa de apă este conectată la ESP32 printr-un modul de releu. Pinii Vcc și GND ai releului sunt conectați la pinii Vin și GND ai ESP32, în timp ce pinul de intrare al releului este conectat la pinul D19 al ESP32. Pinii Trig și Echo ai senzorului cu ultrasunete sunt conectați la pinii D5 și D18 ai Arduino.
Conexiunile complete sunt date în tabelul de mai jos.
LCD | ESP32 |
VSS | GND |
VDD | 5V |
VO | Potențiometru |
RS | D22 |
RW | GND |
E | D4 |
D4 | D15 |
D5 | D13 |
D6 | D26 |
D7 | D21 |
A | 5V |
K | GND |
Senzor cu ultrasunete | ESP32 |
Vcc | Vin |
GND | GND |
Trig | D5 |
ECOU | D18 |
Hardware-ul pentru acest dozator de dezinfectant pentru mâini cu senzor de mișcare va arăta astfel
Programarea ESP32 pentru Covid19 Tracker
Codul complet pentru Auto Hand Sanitizer și CORONA19 Tracker poate fi găsit la sfârșitul paginii. Aici sunt explicate părți importante ale programului.
Porniți codul prin includerea tuturor fișierelor bibliotecii necesare. Biblioteca HTTPClient este utilizată pentru a obține datele de pe serverul HTTP. Biblioteca ArduinoJson este utilizată pentru a sintetiza matricile de date. Aici biblioteca ArduinoJson este utilizată pentru a filtra cazurile confirmate și recuperate din matricea de date pe care o primim de pe server. Biblioteca LiquidCrystal este utilizată pentru modulul de afișare LCD.
#include
Pentru a obține datele de pe server, NodeMCU ESP32 trebuie să se conecteze la internet. Pentru aceasta, introduceți SSID-ul Wi-Fi și parola în liniile de mai jos.
const char * ssid = "Galaxy-M20"; const char * pass = "ac312124";
După aceea, definiți pinii la care ați conectat modulul LCD, senzorul cu ultrasunete și modulul de releu.
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; pompa int int = 19;
Acum introducem linkul API generat mai devreme. Folosind acest link, vom obține numărul total de cazuri confirmate și cazuri recuperate în India. Puteți schimba numele țării în adresa URL în funcție de dvs.
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, Recuperat ";
Acum, în interiorul setării de gol () , definiți pinul Trig și Echo al senzorului ultrasonic ca pini de intrare și pinul de releu ca ieșire.
pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); pinMode (pompă, OUTPUT);
Pentru a afla mai multe despre modul în care funcționează senzorul cu ultrasunete, verificați interfața acestuia cu Arduino, unde am explicat funcția pinului TRIG și ECHO împreună cu modul în care este utilizat pentru a calcula distanța dintre orice obiect. De asemenea, verificați alte proiecte cu ultrasunete.
După aceea, verificați dacă ESP este conectat la Wi-Fi, dacă nu, va aștepta conectarea ESP imprimând „…..” pe monitorul serial.
WiFi.begin (ssid, pass); while (WiFi.status ()! = WL_CONNECTED) {întârziere (500); Serial.print ("."); // print… till not connected} Serial.println ("WiFi conectat");
În interiorul funcției void ultra () vom calcula în mod continuu distanța folosind un senzor cu ultrasunete și dacă distanța este mai mică sau egală cu 15 cm, atunci va porni pompa timp de 2 secunde pentru a împinge dezinfectantul afară prin conductă. Indiferent când cineva pune mâinile sub conducta de evacuare, distanța va scădea și va declanșa pornirea pompei.
void ultra () {digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); durata = pulseIn (echoPin, HIGH); distanta = durata * 0,0340 / 2; Serial.println ("Distanță"); Serial.println (distanță); if (distanță <= 15) {Serial.print ("Pompa de deschidere"); digitalWrite (pompa, HIGH); întârziere (2000); digitalWrite (pompă, LOW); ESP.restart (); }}
Acum, în interiorul funcției void loop () , verificați dacă fișierul JSON primit de ESP32 citindu-l și imprimând date JSON pe monitorul serial folosind următoarele linii
int httpCode = https.GET (); if (httpCode> 0) {// Verifică codul de returnare String payload = https.getString ();
După aceea, utilizați programul de formulare generat de ArduinoJson Assistant. Acest program de formulare ne va oferi totalul de cazuri confirmate și recuperate în India.
JsonArray fields = doc; JsonObject features_0_attributes = doc; caracteristici lungi_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;
Testarea dezinfectantului automat pentru mâini cu Covid19 Tracker
Deci, în cele din urmă, distribuitorul nostru de dezinfectant pentru mâini cu baterie este gata de testat. Conectați hardware-ul conform schemei de circuit și încărcați programul în ESP32, la început ar trebui să vedeți mesajul „Covid19 Tracker” și „Hand Sanitizer” pe LCD și apoi după câteva secunde va afișa cazuri confirmate și cazuri recuperate în Ecran LCD așa cum se arată mai jos.
Similar cu aceasta, puteți obține aceste date pentru orice țară, făcând unele modificări în linkul API. Un videoclip complet de lucru și un cod sunt oferite la sfârșitul paginii.