ESP32 projects 1 – home automation use Motion Sensor Detection

ESP32 projects 1 – home automation use Motion Sensor Detection

Tutorial ini menunjukkan pembuatan contoh home automation untuk mendeteksi gerakan menggunakan modul ESP32 dengan motion sensor detection.

Dalam contoh ini, ketika terdapat gerakan terdeteksi (interupsi aktif), ESP32 mengontrol atau kendali timer delay dan menyalakan LED sesuai settingan beberapa detik.

Pada saat timer delay selesai menghitung mundur, LED akan secara otomatis dimatikan.

Dengan contoh ini  juga akan mengeksplorasi 2 konsep penting yaitu interupsi dan pengatur waktu.

Sebelum melanjutkan dengan tutorial ini Anda harus memiliki ESP32 add-on library yang harus diinstalkan di Arduino IDE Anda.

Ikuti salah satu tutorial berikut untuk menginstal ESP32 pada Arduino IDE, jika Anda belum melakukannya.

[irp posts=”2415″ name=”Perbedaan module wifi ESP8266 vs ESP32″]

Bahan – bahan yang dibutuhkan Home Automation use motion sensor

Bahan – bahan yang perlu dipersiapkan antara lain :

  • Module ESP32S NodeMCU
  • Sensor gerak PIR Mini (HC-SR505) atau sensor gerak PIR (HC-SR501)
  • Modul relay 1 channel
  • Lampu dan steker
  • Kabel jumper
  • Breadboard

Penjelasan singkat Fungsi Interrupts

Untuk memicu aktifnya sensor gerak pada PIR, diharuskan menggunakan interupsi. Interupsi digunakan untuk membuat sesuatu terjadi secara otomatis dalam program mikrokontroler, dan dapat membantu memecahkan masalah waktu.

Dengan interupsi tidak perlu secara konstan mengecek kondisi nilai pin saat ini. Dengan interupsi, ketika perubahan terdeteksi, saat trigger dari sensor aktif.

Untuk mengatur interupsi dalam Arduino IDE, Anda menggunakan fungsi attachInterrupt() , yang menerima sebagai argumen: pin GPIO, nama fungsi yang akan dieksekusi, dan mode:

attachInterrupt (digitalPinToInterrupt (GPIO), fungsi, mode);

Bagian pin interrupt dari ESP-32S versi NodeMCU

ESP32 Smart home automation - motion detection

GPIO Interrupt

Argumen pertama adalah nomor GPIO. Biasanya, Anda harus menggunakan digitalPinToInterrupt (GPIO) untuk mengatur GPIO yang sebenarnya sebagai pin interupsi. Misalnya, jika Anda ingin menggunakan GPIO 14 sebagai interupsi, gunakan:

digitalPinToInterrupt (14)

Dengan papan ESP32, semua pin yang disorot dengan persegi panjang merah pada gambar berikut dapat dikonfigurasi sebagai pin interupsi. Dalam contoh ini kita akan menggunakan GPIO 14 sebagai interupsi yang terhubung ke sensor Motion PIR.

Fungsi triggered

Argumen kedua dari fungsi attachInterrupt () adalah nama fungsi yang akan dipanggil setiap kali interupsi dipicu.

Argumen ketiga adalah mode. Ada 5 mode berbeda:

  • LOW : mode yang dimana pemicu interupsinya dengan logika LOW
  • HIGH : mode yang dimana pemicu interupsinya dengan logika HIGH
  • CHANGE : untuk pemicu interupsi harus mengubah nilai logikanya yaitu dari HIGH ke LOW atau LOW ke HIGH
  • FALLING : mode yang aktif interupsinya karena adanya perubahan logika dari HIGH ke LOW
  • RISING : kebalikan dari mode falling, mode yang aktif interupsinya karena adanya perubahan logika LOW Ke HIGH.

Untuk contoh ini akan menggunakan mode RISING, karena ketika sensor gerak PIR mendeteksi gerakan, GPIO terhubung ke LOW ke HIGH.

Rangkaian untuk tutorial ini sebagai berikut

ESP32 Smart home automation - motion detection use sensor PIR

Penting : Sensor Gerakan PIR Mini HC-SR505 yang digunakan dalam proyek ini beroperasi pada 3.3V. Namun, jika Anda menggunakan sensor gerak PIR lain seperti HC-SR501 , ia beroperasi pada 5V. Anda dapat memodifikasinya untuk beroperasi pada 3.3V atau hanya dengan menggunakan pin Vin.

perbandingan antara sensor motion PIR HC-SR505 dan HC-SR501

Saran dari nyebarilmu.com untuk projects ESP32 tutorial ini disarankan gunakan yang HC-SR505 dikarenakan lebih ringkas dan tanpa perlu setting timer delay dan sensity nya.

Kode Program ESP32 projects 1 – home automation use Motion Sensor Detection

[sociallocker id=”1344″]

#define timeSeconds 300 //5 menit

// Set GPIOs untuk modul relay and sensor PIR sebagai Sensor Motion
const int relay = 3;
const int SensorPIR = 14;

unsigned long now = millis();
boolean startTimer = false;
unsigned long lastTrigger = 0;

void setup() {
  //baud komunikasi
  Serial.begin(115200);

  // Set sensor PIR sebagai mode INPUT_PULLUP
  pinMode(SensorPIR, INPUT_PULLUP);

  // Set SensorPIR pin as interrupt, assign interrupt function and set RISING mode
  attachInterrupt(digitalPinToInterrupt(SensorPIR), deteksigerakan, RISING);

  pinMode(relay, OUTPUT);
  digitalWrite(relay, LOW);
}

void loop() {
  now = millis();
  //jika tidak ada pergerakan maka lampu akan OFF dan timer juga off
  if(startTimer && (now - lastTrigger > (timeSeconds*1000))) {
    Serial.println("Tidak ada gerakan lagi...");
    digitalWrite(relay, LOW); //lampu mati
    startTimer = false; //penghitung waktu mati
  }
}

//Jika ada gerakan dari trigger sensor PIR maka relay ON, Lampu ON dan waktu timer ON
void deteksigerakan() {
  Serial.println("ADANYA PERGERAKAN!!!");
  digitalWrite(relay, HIGH); //lampu on
  startTimer = true; //penghitung waktu nyala
  lastTrigger = millis();
}

[/sociallocker]

Gerakkan tangan Anda di depan sensor PIR maka lampu seharunya menyala, dan terdapat pesan yang tertampil pada Serial Monitor “ADANYA PERGERAKAN!!!” dan setelah 300 detik maka lampu akan mati.

Hati – hati dalam mencoba project smart home automation untuk motion sensor ini dengan ESP32 dikarenakan menggunakan tegangan 220Volt.

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *