1000 TL Üzeri Alışverişlerde Ücretsiz Kargo ve Türkiye'nin Her Yerine 59,90₺

Arduino ile Su Pompası Kullanımı (Sabunluk Yapımı) | Robocombo

Arduino ile Su Pompası Kullanımı (Sabunluk Yapımı) | Robocombo
Merhaba arkadaşlar, bu yazımızda basit ve konfor arttırıcı arduino ile su pompası kullanarak otomatik sıvı sabunluk ve dezenfektan dispenseri yapımı projesini inceleyeceğiz.  

Bu projede, Coronavirus vakalarının sayısını da gösteren bir Arduino LCD ile Otomatik El Dezenfektanı yapacağız. Bu projede ESP32, Ultrasonik Sensör, 16x2 LCD Modül , Su pompası ve El Dezenfektanı kullanılacaktır . Covid19 virüslü kişilerin canlı verilerini almak için Esri'nin API Gezgini'ni kullanıyoruz. Dezenfektan makinesine yaklaşan ellerin tespiti için bir hc-sr04 ultrasonik sensör kullanılır. Dezenfektan çıkışı ile kendisi arasındaki mesafeyi sürekli hesaplar ve dezenfektanı dışarı itmek için mesafe 15 cm'den az olduğunda ESP'ye pompayı çalıştırmasını söyler.

ESP32 ana kontrolör olarak kullanılır, internete kolayca bağlanabilen bir Wi-Fi modülüdür.

 

Gerekli Malzemeler

Corona Canlı Verilerini almak için API bağlantısı

Burada verileri internetten almamız ve daha sonra 16x2 LCD'de görüntülemek için ESP32'ye göndermemiz gerekiyor. Bunun için internetten JSON dosyasını okumak için bir HTTP alma isteği çağrılır. Burada Coronavirus Disease GIS Hub tarafından sağlanan API'yı kullanıyoruz. Türkiye için onaylanan ve kurtarılan toplam vakayı almak için doğru sorgu URL'sini kolayca derleyebilir ve farklı bir ülke için kullanmak isterseniz ülkeyi / bölgeyi de değiştirebilirsiniz.

Şimdi "Şimdi Dene" yi tıklayın veya sorgu URL'sini yeni bir tarayıcıya yapıştırın, bu sorgunun çıktısı şu şekilde görünecektir: [

{"objectIdFieldName":"OBJECTID","uniqueIdField":{"name":"OBJECTID","isSystemMaintained":true},"globalIdFieldName":"","geometryType":"esriGeometryPoint","spatialReference":{"wkid":4326,"latestWkid":4326},"fields":[{"name":"Country_Region","type":"esriFieldTypeString","alias":"Country/Region","sqlType":"sqlTypeOther","length":8000,"domain":null,"defaultValue":null},{"name":"Province_State","type":"esriFieldTypeString","alias":"Province/State","sqlType":"sqlTypeOther","length":8000,"domain":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":"Active","type":"esriFieldTypeInteger","alias":"Active","sqlType":"sqlTypeOther","domain":null,"defaultValue":null}],"features":[{"attributes":{"Country_Region":"India","Province_State":null,"Confirmed":194,"Recovered":20,"Deaths":4,"Active":170}}]}

JSON verilerini aldıktan sonra, şimdi JSON verilerini okumak ve ihtiyaçlarımıza göre ifade etmek için kod oluşturun. Bunun için ArduinoJson Yardımcısı'na gidin ve JSON verilerini Giriş bölümüne yapıştırın.

Şimdi ayrıştırma programına gidin ve sizin için yararlı olan kod bölümünü kopyalayın. Aşağıdaki değişkenler sadece Türkiye'da onaylanmış ve kurtarılmış vakaları içermektedir. Kendinize göre düzenleyebilirsiniz.

Devre Şeması

Covid19 canlı takip ve otomatik el dezenfektanı için komple devre şeması aşağıda verilmiştir

Su pompası bir röle modülü aracılığıyla ESP32'ye bağlanır. Rölenin VCC ve GND pinleri ESP32'nin Vin ve GND pinlerine bağlanırken, rölenin giriş pimi ESP32'nin D19 pinine bağlanır. Ultrasonik sensörün Trig ve Echo pinleri Arduino'nun D5 ve D18 Pinlerine bağlanır.

 

Komple bağlantılar aşağıdaki tabloda verilmiştir.

LCD ESP32
VSS GND
VDD 5V
VO Potansiyometre
RS D22
RW GND
E D4
D4 D15
D5 D13
D6 D26
D7 D21
bir 5V
K GND
Ultrasonik sensör ESP32
Vcc Vin
GND GND
trigonometri D5
EKO D18

Otomatik El Dezenfektanı tamamlanınca aşağıdaki gibi görünecektir

 

Covid19 Takip için ESP32 Programlama

Auto Hand Sanitizer ve CORONA19 Tracker için tam kodu sayfanın sonunda bulabilirsiniz. Burada programın önemli kısımları açıklanmaktadır.

Gerekli tüm kütüphane dosyalarını ekleyerek kodu başlatın. HTTPClient kütüphanesi, HTTP sunucusundan veri almak için kullanılır. Veri dizilerini ifade etmek için ArduinoJson kütüphanesi kullanılır. Burada ArduinoJson kütüphanesi, onaylanmış vakaları filtrelemek ve sunucudan aldığımız veri dizisinden aktarmak için kullanılır. LCD ekran Modülü için LiquidCrystal kütüphanesi kullanılır.

#include <HTTPClient.h>
#include <WiFi.h>
#include <ArduinoJson.h>
#include <LiquidCrystal.h>

Verileri sunucudan almak için NodeMCU ESP32'nin internete bağlanması gerekir. Bunun için, aşağıdaki satırlara Kablosuz SSID'nizi ve Şifrenizi girin.

const char* ssid = "Galaxy-M20";
const char* pass = "ac312124";

Bundan sonra, LCD modülünü, Ultrasonik sensörü ve Röle modülünü bağladığınız pimleri tanımlayın.

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;

Şimdi daha önce oluşturulan API bağlantısını giriyoruz. Bu bağlantıyı kullanarak, Türkiye'de onaylanmış toplam vakaları ve Kurtarılan vakaları alacağız. URL'deki ülke adını size göre değiştirebilirsiniz.

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


Şimdi void kurulumunun () içinde Ultrasonik sensörün Trig ve Echo pinini giriş pinleri ve Röle pinini çıkış olarak tanımlayın.

pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(pump, OUTPUT);

Bundan sonra, ESP'nin Wi-Fi'ye bağlı olup olmadığını kontrol edin, eğer değilse, seri monitörde “… ..” yazdırarak ESP'nin bağlanmasını bekleyecektir.

WiFi.begin(ssid, pass);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");              // print ... till not connected
  }
  Serial.println("WiFi connected");

İç boşluk, ultra () işlev ile sürekli bir ultrasonik sensör kullanarak mesafe hesaplanır ve mesafe 15 cm e eşit veya daha az ise 2 saniye sıvı iletimi için pompa açılır. Birisi ellerini çıkış borusunun altına koyduğunda, mesafe azalacak ve pompanın açılmasını tetikleyecektir.

void ultra(){
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = duration * 0.0340 / 2;
  Serial.println("Distance");
  Serial.println(distance);
  if (distance <= 15){
    Serial.print("Opening Pump");
    digitalWrite(pump, HIGH);
    delay(2000);
    digitalWrite(pump, LOW);
    ESP.restart();
    }
}

Şimdi void loop () işlevinin içinde, ESP32 tarafından alınan JSON dosyasının aşağıdaki satırları kullanarak ve ekranda JSON verilerini kontrol edin.

int httpCode = https.GET();
  if (httpCode > 0) { //Check for the returning code
 String payload = https.getString();

Bundan sonra, ArduinoJson Assistant'tan oluşturulan ifade programını kullanınBu ifade programı bize Türkiye'deki onaylanmış ve geri kazanılan toplam vakayı verecektir.

JsonArray fields = doc["fields"];
JsonObject features_0_attributes = doc["features"][0]["attributes"];
long features_0_attributes_Last_Update = features_0_attributes["Last_Update"];
int features_0_attributes_Confirmed = features_0_attributes["Confirmed"];
//int features_0_attributes_Deaths = features_0_attributes["Deaths"];
int features_0_attributes_Recovered = features_0_attributes["Recovered"];

Otomatik El Dezenfektanı ve Covid19 Canlı Takip - Test

Sonunda pille çalışan otomatik el dezenfektanı test edilmeye hazır. Sadece devre şemasına göre donanımı bağlayın ve programı ESP32'ye yükleyin, başlangıçta LCD'de “Covid19 Tracker” ve “Hand Sanitizer” mesajını görmelisiniz ve birkaç saniye sonra onaylanmış vakaları ve kurtarılmış vakaları gösterecektir. LCD ekran aşağıda gösterildiği gibidir.

Buna benzer olarak, API bağlantısında bazı değişiklikler yaparak bu verileri herhangi bir ülke için alabilirsiniz. 

 

Arduino ile Otomatik Sabun Dispenseri - Kod

#include <HTTPClient.h> #include <WiFi.h> #include <ArduinoJson.h> #include <LiquidCrystal.h> const char* ssid = "Galaxy-M20"; const char* pass = "ac312124"; int count; 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; long duration; int distance;  const char* url = "https://services1.arcgis.com/0MSEUqKaxRlEPj5g/arcgis/rest/services/ncov_...(Country_Region=%27India%27)&returnGeometry=false&outFields=Country_Region,Confirmed,Recovered"; void setup() {   Serial.begin(115200);   delay(2000);   pinMode(trigPin, OUTPUT);   pinMode(echoPin, INPUT);   pinMode(pump, OUTPUT);   digitalWrite(pump, LOW);    lcd.begin(16, 2);   lcd.clear();   lcd.setCursor(0,0);   lcd.print("Covid19 Tracker");   lcd.setCursor(0,1);   lcd.print("Hand Sanitizer");   Serial.println("Connecting to ");   Serial.println(ssid);   WiFi.begin(ssid, pass);   while (WiFi.status() != WL_CONNECTED)   {     delay(500);     Serial.print(".");              // print ... till not connected   }   Serial.println("WiFi connected"); } void ultra(){   digitalWrite(trigPin, LOW);   delayMicroseconds(2);   digitalWrite(trigPin, HIGH);   delayMicroseconds(10);   digitalWrite(trigPin, LOW);   duration = pulseIn(echoPin, HIGH);   distance = duration * 0.0340 / 2;   Serial.println("Distance");   Serial.println(distance);   if (distance <= 15){     Serial.print("Opening Pump");     digitalWrite(pump, HIGH);     delay(2000);     digitalWrite(pump, LOW);     ESP.restart();     } } void loop() {   ultra();   HTTPClient https;   String data;   https.begin(url);   int httpCode = https.GET();   if (httpCode > 0) { //Check for the returning code     String payload = https.getString();     char charBuf[500];     payload.toCharArray(charBuf, 500);        //Serial.println(payload);     const size_t capacity = 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(capacity);     deserializeJson(doc, payload);     JsonArray fields = doc["fields"];     JsonObject features_0_attributes = doc["features"][0]["attributes"];     long features_0_attributes_Last_Update = features_0_attributes["Last_Update"];     int features_0_attributes_Confirmed = features_0_attributes["Confirmed"];     //int features_0_attributes_Deaths = features_0_attributes["Deaths"];     int features_0_attributes_Recovered = features_0_attributes["Recovered"];     if (count < 3){     //Serial.println(features_0_attributes_Confirmed);     lcd.setCursor(0, 0);     lcd.print("IN Confirmed:");     lcd.print(features_0_attributes_Confirmed);     //Serial.println(features_0_attributes_Recovered);     lcd.setCursor(0, 1);     lcd.print("IN Recovered:");     lcd.print(features_0_attributes_Recovered);     }     if (count > 3){     lcd.clear();     lcd.setCursor(0, 0);     lcd.print("Wash Hands");     lcd.setCursor(0, 1);     lcd.print("Avoid Contacts");     }     if (count > 6){     count = 0;      } }    else {     Serial.println("Error on HTTP request");   }   https.end();   count++;  } pins#include <HTTPClient.h> #include <WiFi.h> #include <ArduinoJson.h> #include <LiquidCrystal.h> const char* ssid = "Galaxy-M20"; const char* pass = "ac312124"; int count; 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; long duration; int distance;  const char* url = "https://services1.arcgis.com/0MSEUqKaxRlEPj5g/arcgis/rest/services/ncov_...(Country_Region=%27India%27)&returnGeometry=false&outFields=Country_Region,Confirmed,Recovered"; void setup() {   Serial.begin(115200);   delay(2000);   pinMode(trigPin, OUTPUT);   pinMode(echoPin, INPUT);   pinMode(pump, OUTPUT);   digitalWrite(pump, LOW);    lcd.begin(16, 2);   lcd.clear();   lcd.setCursor(0,0);   lcd.print("Covid19 Tracker");   lcd.setCursor(0,1);   lcd.print("Hand Sanitizer");   Serial.println("Connecting to ");   Serial.println(ssid);   WiFi.begin(ssid, pass);   while (WiFi.status() != WL_CONNECTED)   {     delay(500);     Serial.print(".");              // print ... till not connected   }   Serial.println("WiFi connected"); } void ultra(){   digitalWrite(trigPin, LOW);   delayMicroseconds(2);   digitalWrite(trigPin, HIGH);   delayMicroseconds(10);   digitalWrite(trigPin, LOW);   duration = pulseIn(echoPin, HIGH);   distance = duration * 0.0340 / 2;   Serial.println("Distance");   Serial.println(distance);   if (distance <= 15){     Serial.print("Opening Pump");     digitalWrite(pump, HIGH);     delay(2000);     digitalWrite(pump, LOW);     ESP.restart();     } } void loop() {   ultra();   HTTPClient https;   String data;   https.begin(url);   int httpCode = https.GET();   if (httpCode > 0) { //Check for the returning code     String payload = https.getString();     char charBuf[500];     payload.toCharArray(charBuf, 500);        //Serial.println(payload);     const size_t capacity = 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(capacity);     deserializeJson(doc, payload);     JsonArray fields = doc["fields"];     JsonObject features_0_attributes = doc["features"][0]["attributes"];     long features_0_attributes_Last_Update = features_0_attributes["Last_Update"];     int features_0_attributes_Confirmed = features_0_attributes["Confirmed"];     //int features_0_attributes_Deaths = features_0_attributes["Deaths"];     int features_0_attributes_Recovered = features_0_attributes["Recovered"];     if (count < 3){     //Serial.println(features_0_attributes_Confirmed);     lcd.setCursor(0, 0);     lcd.print("IN Confirmed:");     lcd.print(features_0_attributes_Confirmed);     //Serial.println(features_0_attributes_Recovered);     lcd.setCursor(0, 1);     lcd.print("IN Recovered:");     lcd.print(features_0_attributes_Recovered);     }     if (count > 3){     lcd.clear();     lcd.setCursor(0, 0);     lcd.print("Wash Hands");     lcd.setCursor(0, 1);     lcd.print("Avoid Contacts");     }     if (count > 6){     count = 0;      } }    else {     Serial.println("Error on HTTP request");   }   https.end();   count++;  }
 

 

Etiketler: Arduino ile Su Pompası Kullanımı (Otomatik Sabunluk Yapımı)
Ekim 20, 2021
Listeye dön
cultureSettings.RegionId: 0 cultureSettings.LanguageCode: TR
Çerez Uyarısı

Alışveriş deneyiminizi iyileştirmek için yasal düzenlemelere uygun çerezler (cookies) kullanıyoruz. Detaylı bilgiye Gizlilik ve Çerez Politikası
sayfamızdan erişebilirsiniz.