Translate

Monitor Jumlah Orang di Ruangan ESP32 Sensor HB100 Server Thingspeak

Monitor Jumlah Orang di Ruangan ESP32 Sensor HB100 Server Thingspeak


            Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat memonitor jumlah orang yang berada didalam ruangan, jadi sistem kerja alat ini yaitu terdapat 2 buah sensor HB100 lalu dipasangkan di pintu masuk dan pintu keluar sehingga tiap kali orang masuk akan dihitung dan jika oang ersebut keluar juga dihitung sehingga bisa diketahui jumlah orang yang berada didalam ruangan. alat ini juga mengirimkan data ke Thingspeak untuk merecord data yang dimonitor oleh alat. untuk lebih jelasnya berikut adalah koding dan skemanya.



a. Skema 



b. Program Arduino IDE

#include <Wire.h>
#include <WiFi.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

String apiKey = "ZQGE8G2JTWQRTAB3";     //  Enter your Write API key from ThingSpeak
const char* resource = "/update?api_key=";

const char *ssid =  "hotspothpku";     // replace with your wifi ssid and wpa2 key
const char *pass =  "123456789";
const char* server = "api.thingspeak.com";

WiFiClient client;

int dataadc1;
int dataadc2;
int masuk;
int keluar;
int orang;
int waktu;


void setup()
{
  lcd.begin();
  lcd.clear();
  lcd.noCursor();
  Serial.begin(9600);

  Serial.println("Connecting to ");
  Serial.println(ssid);

// Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, pass);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

      while (WiFi.status() != WL_CONNECTED)
     {
            delay(500);
            Serial.print(".");
     }
      Serial.println("");
      Serial.println("WiFi connected");

}

void loop()
{

  dataadc1 = analogRead(34);
  dataadc2 = analogRead(35);
  
  lcd.setCursor(0,0);
  lcd.print("ADC1=");
  lcd.print(dataadc1);
  lcd.print("/");
  lcd.print(dataadc2);
  lcd.print("   ");
   
  lcd.setCursor(0,1);
  lcd.print("Data: ");
  lcd.print(orang);
  lcd.print("    ");

if(dataadc1 < 1000){
delay(1000);
orang++;    
}

if(dataadc2 < 1000){
delay(1000);
orang--;
}

if(waktu > 500){ //kirim data setiap 10 detik
waktu = 0;  
kirim();      
}

waktu++;
delay(10);
}


void kirim(){
  
 if (client.connect(server,80))   //   "184.106.153.149" or api.thingspeak.com
                   {
                           
                             String postStr = apiKey;
                             postStr +="&field1=";
                             postStr += String(orang);
                             postStr += "\r\n\r\n";

                             client.print(String("GET ") + resource + apiKey + "&field1=" + orang + " HTTP/1.1\r\n" + "Host: " + server + "\r\n" + "Connection: close\r\n\r\n");
                                       
                             client.print("Host: api.thingspeak.com\n");
                             client.print("Connection: close\n");
                             client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
                             client.print("Content-Type: application/x-www-form-urlencoded\n");
                             client.print("Content-Length: ");
                             client.print(postStr.length());
                             client.print("\n\n");
                             client.print(postStr);
                           
                             Serial.println(". Send to Thingspeak.");
                        }
                       
          client.stop();

          Serial.println("Waiting...");
 
  // thingspeak needs minimum 15 sec delay between updates, i've set it to 30 seconds
  delay(10000);
  
}



c. VIDEO HASILNYA





No comments:

Post a Comment