Arduino Indonesia. Gambar tema oleh Storman. Diberdayakan oleh Blogger.

Supported by Electronics 3 in 1

1. Jasa pencetakan PCB single layer dengan harga paling murah.

(Metode Pembuatan dengan Transfer Toner)
>PCB design sendiri (siap cetak) : Rp.150,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

(Metode Sablon Full Masking dan Silk Screen minimal pemesanan 100 Pcs)
>PCB design sendiri (siap cetak) : Rp.200,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

2. Jasa perancangan, perakitan, dan pembuatan trainer pembelajaran elektronika untuk SMK dan Mahasiswa.

3. Jasa perancangan, perakitan, dan pembuatan berbagai macam kontroller, sensor, aktuator, dan tranduser.
>Design Rangkaian / Sistem Elektronika
>Design Rangkaian / Sistem Instrumentasi
>Design Rangkaian / Sistem Kendali
>Kerjasama Riset (data atau peralatan)
>Kerjasama Produksi Produk-Produk KIT Elektronika
>Produksi Instrumentasi Elektronika

4. Jasa Pembuatan Proyek, Tugas Akhir, Tugas Laboratorium, PKM, Karya Ilmiah, SKRIPSI, dll

Like My Facebook

Popular Posts

Minggu, 02 Agustus 2026

ESP32 - Notifikasi Email Sensor Gerak Menggunakan Sensor PIR

Sistem keamanan rumah tidak selalu harus menggunakan perangkat yang mahal. Dengan memanfaatkan ESP32, sensor gerak PIR HC-SR501, dan layanan email, Anda dapat membuat sistem pendeteksi gerakan yang mampu mengirimkan notifikasi email secara otomatis ketika ada aktivitas yang terdeteksi. Pada tutorial ini, Anda akan mempelajari cara menghubungkan ESP32 dengan sensor gerak PIR (Passive Infrared Sensor) untuk mendeteksi keberadaan manusia berdasarkan perubahan radiasi inframerah. Ketika sensor mendeteksi adanya gerakan, ESP32 akan langsung terhubung ke jaringan WiFi dan mengirimkan email notifikasi kepada pengguna menggunakan protokol SMTP (Simple Mail Transfer Protocol). Sistem seperti ini sangat cocok diterapkan sebagai sistem keamanan sederhana pada rumah, kamar, kantor, gudang, maupun ruangan lain yang membutuhkan pemantauan jarak jauh.

Perangkat Keras yang Dibutuhkan

- Modul Dev ESP32 ESP-WROOM-32 38 Pin

- Sensor Gerak HC-SR501 (PIR Motion Sensor)

- Kabel USB

- Kabel jumper

 

Baca juga: DIYables ESP32 Gmail - Cara Mengirim Email Menggunakan Gmail dengan ESP32

Kode Program ESP32


#include <WiFi.h>

#include <ESP_Mail_Client.h>


#define WIFI_SSID "YOUR_WIFI_SSID"     // CHANGE IT

#define WIFI_PASSWORD "YOUR_WIFI_PASSWORD"  // CHANGE IT


// the sender email credentials

#define SENDER_EMAIL "xxxxxx@gmail.com" // CHANGE IT

#define SENDER_PASSWORD "xxxx xxxx xxxx xxxx"  // CHANGE IT to your Google App password


#define RECIPIENT_EMAIL "xxxxxx@gmail.com" // CHANGE IT


#define SMTP_HOST "smtp.gmail.com"

#define SMTP_PORT 587


#define MOTION_SENSOR_PIN 19  // ESP32 pin GPIO19 connected to motion sensor's pin


int motion_state;       // current state of motion sensor

int prev_motion_state;  // previous state of motion sensor


SMTPSession smtp;


void setup() {

  Serial.begin(9600);

  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);


  Serial.print("Connecting to Wi-Fi");


  while (WiFi.status() != WL_CONNECTED) {

    Serial.print(".");

    delay(300);

  }

  Serial.println();

  Serial.print("Connected with IP: ");

  Serial.println(WiFi.localIP());

  Serial.println();


  pinMode(MOTION_SENSOR_PIN, INPUT); 

  motion_state = digitalRead(MOTION_SENSOR_PIN);  // read state

}


void loop() {

  prev_motion_state = motion_state;               // save the last state

  motion_state = digitalRead(MOTION_SENSOR_PIN);  // read new state


  if (prev_motion_state == LOW && motion_state == HIGH) {  // state change: LOW -> HIGH

    Serial.println("Motion detected! Someone is in your room!");

    String subject = "Email Notification from ESP32";

    String textMsg = "This is an email sent from ESP32.\n";

    textMsg += "Motion detected! Someone is in your room!";


    gmail_send(subject, textMsg);

  }

}


void gmail_send(String subject, String textMsg) {

  // set the network reconnection option

  MailClient.networkReconnect(true);


  smtp.debug(1);


  smtp.callback(smtpCallback);

  Session_Config config;


  // set the session config

  config.server.host_name = SMTP_HOST;

  config.server.port = SMTP_PORT;

  config.login.email = SENDER_EMAIL;

  config.login.password = SENDER_PASSWORD;

  config.login.user_domain = F("127.0.0.1");

  config.time.ntp_server = F("pool.ntp.org,time.nist.gov");

  config.time.gmt_offset = 3;

  config.time.day_light_offset = 0;


  // declare the message class

  SMTP_Message message;


  // set the message headers

  message.sender.name = F("ESP32");

  message.sender.email = SENDER_EMAIL;

  message.subject = subject;

  message.addRecipient(F("To Whom It May Concern"), RECIPIENT_EMAIL);


  message.text.content = textMsg;

  message.text.transfer_encoding = "base64";

  message.text.charSet = F("utf-8");

  message.priority = esp_mail_smtp_priority::esp_mail_smtp_priority_low;


  // set the custom message header

  message.addHeader(F("Message-ID: <abcde.fghij@gmail.com>"));


  // connect to the server

  if (!smtp.connect(&config)) {

    Serial.printf("Connection error, Status Code: %d, Error Code: %d, Reason: %s\n", smtp.statusCode(), smtp.errorCode(), smtp.errorReason().c_str());

    return;

  }


  if (!smtp.isLoggedIn()) {

    Serial.println("Not yet logged in.");

  } else {

    if (smtp.isAuthenticated())

      Serial.println("Successfully logged in.");

    else

      Serial.println("Connected with no Auth.");

  }


  // start sending Email and close the session

  if (!MailClient.sendMail(&smtp, &message))

    Serial.printf("Error, Status Code: %d, Error Code: %d, Reason: %s\n", smtp.statusCode(), smtp.errorCode(), smtp.errorReason().c_str());

}


// callback function to get the Email sending status

void smtpCallback(SMTP_Status status) {

  // print the current status

  Serial.println(status.info());


  // print the sending result

  if (status.success()) {

    Serial.println("----------------");

    Serial.printf("Email sent success: %d\n", status.completedCount());

    Serial.printf("Email sent failed: %d\n", status.failedCount());

    Serial.println("----------------\n");


    for (size_t i = 0; i < smtp.sendingResult.size(); i++) {

      // get the result item

      SMTP_Result result = smtp.sendingResult.getItem(i);


      Serial.printf("Message No: %d\n", i + 1);

      Serial.printf("Status: %s\n", result.completed ? "success" : "failed");

      Serial.printf("Date/Time: %s\n", MailClient.Time.getDateTimeString(result.timestamp, "%B %d, %Y %H:%M:%S").c_str());

      Serial.printf("Recipient: %s\n", result.recipients.c_str());

      Serial.printf("Subject: %s\n", result.subject.c_str());

    }

    Serial.println("----------------\n");


    // free the memory

    smtp.sendingResult.clear();

  }

}

 

Wiring Diagram ESP32 dengan Sensor PIR


Cara Kerja Sistem

Sensor HC-SR501 akan terus memantau perubahan radiasi inframerah di sekitarnya. Ketika seseorang berjalan atau bergerak di depan sensor, modul PIR akan mengubah kondisi pin keluarannya menjadi HIGH. ESP32 kemudian membaca perubahan logika tersebut sebagai indikasi adanya gerakan. Setelah gerakan terdeteksi, ESP32 akan melakukan proses berikut:

1. Membaca status sensor PIR.

2. Memastikan koneksi WiFi telah tersedia.

3. Membuat koneksi ke server SMTP Gmail.

4. Menyusun isi email notifikasi.

5. Mengirim email ke alamat penerima yang telah ditentukan.

6. Menampilkan status pengiriman melalui Serial Monitor.

Dengan mekanisme ini, pengguna dapat segera mengetahui adanya aktivitas pada area yang dipantau meskipun sedang berada di lokasi yang berbeda.

Menginstal Library ESP Mail Client

Tutorial ini menggunakan library ESP Mail Client yang dikembangkan oleh Mobizt untuk mengirim email langsung dari ESP32. Ikuti langkah-langkah berikut untuk menginstalnya:

1. Hubungkan papan ESP32 ke komputer menggunakan kabel USB.

2. Buka Arduino IDE.

3. Pada menu Tools, pilih jenis papan ESP32 Dev Module (atau tipe ESP32 yang digunakan) dan pilih port COM yang sesuai.

4. Klik Library Manager pada panel sebelah kiri Arduino IDE.

5. Ketik ESP Mail Client pada kolom pencarian.

6. Pilih library ESP Mail Client yang dibuat oleh Mobizt.

7. Klik Install, kemudian tunggu hingga proses instalasi selesai.



Mengonfigurasi Program

Setelah library berhasil diinstal, lakukan konfigurasi program sebelum mengunggahnya ke ESP32.

1. Salin Kode Program

Salin seluruh kode program yang telah disediakan, kemudian tempelkan ke dalam Arduino IDE.

2. Mengatur Koneksi WiFi

Masukkan nama jaringan WiFi dan kata sandinya pada bagian berikut:

- WIFI_SSID

- WIFI_PASSWORD

Pastikan jaringan WiFi yang digunakan memiliki koneksi internet yang stabil karena ESP32 akan mengirim email melalui internet.

3. Mengatur Akun Gmail Pengirim

Selanjutnya, ubah informasi akun Gmail yang akan digunakan untuk mengirim email. Sesuaikan nilai berikut:

- SENDER_EMAIL

- SENDER_PASSWORD

Gunakan alamat Gmail yang valid beserta App Password yang telah dibuat sebelumnya.

4. Mengatur Email Tujuan

Ubah nilai berikut sesuai alamat email yang akan menerima notifikasi:

- RECIPIENT_EMAIL

Alamat email tujuan tidak harus menggunakan Gmail. Anda dapat menggunakan layanan email lain, seperti Outlook, Yahoo Mail, maupun layanan email lainnya.

Catatan Penting:

Perhatikan beberapa ketentuan berikut agar proses pengiriman email berhasil:

- Email pengirim wajib menggunakan akun Gmail.

- SENDER_PASSWORD harus berisi App Password Gmail, bukan password login akun Gmail.

- Email penerima dapat menggunakan layanan email apa pun.

Mengunggah Program ke ESP32

Setelah seluruh konfigurasi selesai dilakukan, unggah program ke papan ESP32. Langkah-langkahnya sebagai berikut:

1. Klik tombol Upload pada Arduino IDE.

2. Tunggu hingga proses kompilasi dan upload selesai.

3. Setelah upload berhasil, buka Serial Monitor.

4. Atur baud rate sesuai dengan nilai yang digunakan pada program.

Menguji Sistem

Untuk memastikan sistem bekerja dengan baik, lakukan pengujian berikut:

1. Gerakkan tangan atau berjalan di depan sensor PIR.

2. Sensor akan mendeteksi perubahan radiasi inframerah dari tubuh manusia.

3. ESP32 akan memproses sinyal tersebut dan mengirimkan email notifikasi.

4. Perhatikan informasi yang muncul pada Serial Monitor.

Jika proses berhasil, Serial Monitor akan menampilkan status bahwa email telah berhasil dikirim.



Hasil Pengujian

Setelah email berhasil dikirim, buka kotak masuk pada alamat email penerima. Anda akan menerima email notifikasi yang menandakan bahwa sensor PIR telah mendeteksi adanya gerakan di area yang dipantau.



Baca juga: ESP32 GPIO Interrupt - Cara Menggunakan Interrupt pada GPIO ESP32 untuk Respon yang Cepat dan Efisien


 

 

 

Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.  

0 on: "ESP32 - Notifikasi Email Sensor Gerak Menggunakan Sensor PIR"