- Wymagane składniki
- Łącze API do pobierania danych Corona Live
- Schemat obwodu
- Programowanie ESP32 dla Covid19 Tracker
- Testowanie automatycznego środka odkażającego do rąk za pomocą Covid19 Tracker
Wirus koronowy (Covid19) sieje spustoszenie na świecie. Prawie każdy kraj cierpi na wirusa koronowego. WHO ogłosiło już, że jest to choroba pandemiczna i wiele miast jest zamkniętych, ludzie nie mogą wyjść ze swoich domów, a tysiące straciły życie. Wiele witryn internetowych udostępnia aktualizacje na żywo przypadków koronawirusa, takie jak narzędzie Microsoft Tracker, Covid19 Tracker firmy Esri itp.
W tym projekcie zbudujemy automatyczny dozownik środka dezynfekującego do rąk z wyświetlaczem LCD, który pokazuje również liczbę przypadków koronawirusa na żywo. Ten projekt będzie wykorzystywał ESP32, czujnik ultradźwiękowy, moduł LCD 16x2, pompę wodną i odkażacz do rąk. Używamy Eksploratora API Esri, aby uzyskać bieżące dane osób zainfekowanych Covid19. Czujnik ultradźwiękowy służy do sprawdzania obecności rąk poniżej wylotu odkażacza. Będzie stale obliczać odległość między wylotem środka odkażającego a sobą i nakazuje ESP włączyć pompę, gdy odległość jest mniejsza niż 15 cm, aby wypchnąć środek odkażający.
Jako główny kontroler używany jest ESP32, jest to moduł Wi-Fi, który można łatwo połączyć z Internetem. Wcześniej używaliśmy go do tworzenia wielu projektów opartych na IoT przy użyciu ESP32.
Wymagane składniki
- Moduł deweloperski ESP32
- Czujnik ultradźwiękowy
- Wyświetlacz LCD 16 * 2
- Moduł przekaźników
- Pompa zanurzeniowa Mini DC
- Sanityzer dłoni
Łącze API do pobierania danych Corona Live
Tutaj musimy pobrać dane z internetu, a następnie przesłać je do ESP32, aby wyświetlić je na wyświetlaczu LCD 16x2. W tym celu wywoływane jest żądanie HTTP get w celu odczytania pliku JSON z Internetu. Tutaj używamy API dostarczonego przez Coronavirus Disease GIS Hub. Możesz łatwo skompilować poprawny adres URL zapytania, aby uzyskać całkowitą liczbę potwierdzonych i odzyskanych przypadków dla Indii, a także możesz zmienić kraj / region, jeśli chcesz użyć tego dla innego kraju.
Teraz kliknij „Wypróbuj teraz” lub wklej adres URL zapytania do nowej przeglądarki. Wynik tego zapytania będzie wyglądał następująco:
{"objectIdFieldName": "OBJECTID", "uniqueIdField": {"name": "OBJECTID", "isSystemMaintained": true}, "globalIdFieldName": "", "geometryType": "esriGeometryPoint", "spatialReference": {" wkid ": 4326," latestWkid ": 4326}," pola ":," funkcje ":}
Po uzyskaniu danych JSON wygeneruj teraz kod do odczytu danych JSON i sformułuj go zgodnie z naszymi potrzebami. W tym celu przejdź do Asystenta ArduinoJson i wklej dane JSON w sekcji Dane wejściowe.
Teraz przewiń w dół do programu parsującego i skopiuj sekcję kodu, która jest dla Ciebie przydatna. Skopiowałem poniższe zmienne, ponieważ potrzebowałem tylko potwierdzonych i odzyskanych przypadków w Indiach.
Schemat obwodu
Pełny schemat obwodu tego Covid19 Tracker i automatycznego dozownika do dezynfekcji rąk znajduje się poniżej
Pompa wodna jest podłączona do ESP32 za pośrednictwem modułu przekaźnikowego. Piny Vcc i GND przekaźnika są podłączone do pinów Vin i GND ESP32, podczas gdy pin wejściowy przekaźnika jest podłączony do pinu D19 ESP32. Piny Trig i Echo czujnika ultradźwiękowego są podłączone do pinów D5 i D18 Arduino.
Kompletne połączenia podano w poniższej tabeli.
LCD | ESP32 |
VSS | GND |
VDD | 5V |
VO | Potencjometr |
RS | D22 |
RW | GND |
mi | D4 |
D4 | D15 |
D5 | D13 |
D6 | D26 |
D7 | D21 |
ZA | 5V |
K. | GND |
Czujnik ultradźwiękowy | ESP32 |
Vcc | Vin |
GND | GND |
Wymuskany | D5 |
ECHO | D18 |
Sprzęt tego dozownika środka dezynfekującego do rąk z czujnikiem ruchu będzie wyglądał następująco
Programowanie ESP32 dla Covid19 Tracker
Pełny kod środka do dezynfekcji rąk i urządzenia śledzącego CORONA19 można znaleźć na końcu strony. Tutaj wyjaśniono ważne części programu.
Uruchom kod, dołączając wszystkie wymagane pliki biblioteki. Biblioteka HTTPClient służy do pobierania danych z serwera HTTP. Biblioteka ArduinoJson służy do frazowania tablic danych. Tutaj biblioteka ArduinoJson służy do filtrowania przypadków potwierdzonych i odzyskanych z tablicy danych, którą otrzymujemy z serwera. Biblioteka LiquidCrystal jest używana do modułu wyświetlacza LCD.
#zawierać
Aby pobrać dane z serwera, NodeMCU ESP32 musi połączyć się z Internetem. W tym celu wprowadź swój identyfikator SSID Wi-Fi i hasło w poniższych wierszach.
const char * ssid = "Galaxy-M20"; const char * pass = "ac312124";
Następnie zdefiniuj piny, do których podłączyłeś moduł LCD, czujnik ultradźwiękowy i moduł przekaźnika.
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;
Teraz wprowadzamy link API, który został wygenerowany wcześniej. Korzystając z tego linku, uzyskamy wszystkie potwierdzone i odzyskane przypadki w Indiach. Możesz zmienić nazwę kraju w adresie URL według siebie.
constchar * url = "https://services1.arcgis.com/0MSEUqKaxRlEPj5g/arcgis/rest/services/ncov_cases/FeatureServer/1/query?,Odzyskany";
Teraz w konfiguracji void () zdefiniuj styki Trig i Echo czujnika ultradźwiękowego jako piny wejściowe, a styk przekaźnika jako wyjście.
pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); pinMode (pompa, WYJŚCIE);
Aby dowiedzieć się więcej o działaniu czujnika ultradźwiękowego, sprawdź jego połączenie z Arduino, gdzie wyjaśniliśmy funkcję jego pinów TRIG i ECHO oraz sposób, w jaki jest używany do obliczania odległości między dowolnym obiektem. Sprawdź również inne projekty oparte na ultradźwiękach.
Następnie sprawdź, czy ESP jest połączony z Wi-Fi, jeśli nie, będzie czekał na połączenie ESP, drukując „…..” na monitorze szeregowym.
WiFi.begin (ssid, pass); while (WiFi.status ()! = WL_CONNECTED) {opóźnienie (500); Serial.print („.”); // drukuj… do braku połączenia} Serial.println ("Wi-Fi podłączone");
W funkcji void ultra () będziemy w sposób ciągły obliczać odległość za pomocą czujnika ultradźwiękowego i jeśli odległość będzie mniejsza lub równa 15 cm, wówczas pompa włączy pompę na 2 sekundy, aby wypchnąć środek odkażający przez rurę. Nieświadomie, gdy ktoś włoży ręce pod rurę wylotową, odległość zmniejszy się i spowoduje to włączenie pompy.
void ultra () {digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); duration = pulseIn (echoPin, HIGH); odległość = czas trwania * 0,0340 / 2; Serial.println ("Odległość"); Serial.println (odległość); if (odległość <= 15) {Serial.print ("Otwieranie pompy"); digitalWrite (pompa, WYSOKA); opóźnienie (2000); digitalWrite (pompa, LOW); ESP.restart (); }}
Teraz w funkcji void loop () sprawdź, czy plik JSON odebrany przez ESP32, odczytując go i drukując dane JSON na monitorze szeregowym za pomocą poniższych linii
int httpCode = https.GET (); if (httpCode> 0) {// Sprawdź zwracany kod String payload = https.getString ();
Następnie użyj programu frazowania wygenerowanego z ArduinoJson Assistant. Ten program fraz podaje nam wszystkie potwierdzone i odzyskane przypadki w Indiach.
JsonArray fields = 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;
Testowanie automatycznego środka odkażającego do rąk za pomocą Covid19 Tracker
W końcu nasz zasilany bateryjnie dozownik do dezynfekcji rąk jest gotowy do testów. Po prostu podłącz sprzęt zgodnie ze schematem obwodu i załaduj program do ESP32, na początku powinieneś zobaczyć komunikat „Covid19 Tracker” i „Hand Sanitizer” na wyświetlaczu LCD, a następnie po kilku sekundach wyświetli potwierdzone przypadki i odzyskane przypadki w Ekran LCD, jak pokazano poniżej.
Podobnie możesz uzyskać te dane dla dowolnego kraju, wprowadzając pewne zmiany w łączu API. Kompletny wideo roboczego i kod są podane na końcu strony.