Cara Memprogram Sensor Debu Pada ESP32

Cara Memprogram Sensor Debu Pada ESP32

Sensor debu adalah perangkat elektronik yang digunakan untuk mengukur konsentrasi partikel debu di udara, yang sering kali digunakan untuk mendeteksi kualitas udara dan tingkat polusi.Berikut ini adalah cara memprogramnya :

#include <Arduino.h>


int measurePin_sensor_debu = 34;
int ledPower_sensor_debu = 23;
unsigned int samplingTime_sensor_debu = 280;
unsigned int deltaTime_sensor_debu = 40;
unsigned int sleepTime_sensor_debu = 9680;
float voMeasured_sensor_debu = 0;
float calcVoltage_sensor_debu = 0;
float dustDensity_sensor_debu = 0;


float baca_sensor_debu()
{
  digitalWrite(ledPower_sensor_debu,LOW);
  delayMicroseconds(samplingTime_sensor_debu);
  voMeasured_sensor_debu = analogRead(measurePin_sensor_debu);
  delayMicroseconds(deltaTime_sensor_debu);
  digitalWrite(ledPower_sensor_debu,HIGH);
  delayMicroseconds(sleepTime_sensor_debu);
  calcVoltage_sensor_debu = voMeasured_sensor_debu*(5.0/1024);
  dustDensity_sensor_debu = 0.17*calcVoltage_sensor_debu-0.1;
  if ( dustDensity_sensor_debu < 0)
  {
    dustDensity_sensor_debu = 0.00;
  }
  return dustDensity_sensor_debu;
}


void setup()
{
Serial.begin(9600);
pinMode(ledPower_sensor_debu,OUTPUT);

}
void loop(){
Serial.println("Debu: " + (String)baca_sensor_debu());


}

Berikut ini adalah penjelasan dari kode di atas :

1. Pendefinisian Variabel

int measurePin_sensor_debu = 34;
int ledPower_sensor_debu = 23;
unsigned int samplingTime_sensor_debu = 280;
unsigned int deltaTime_sensor_debu = 40;
unsigned int sleepTime_sensor_debu = 9680;
float voMeasured_sensor_debu = 0;
float calcVoltage_sensor_debu = 0;
float dustDensity_sensor_debu = 0;
  • measurePin_sensor_debu: Pin analog (pin 34) yang terhubung ke output sensor debu yang menghasilkan nilai analog.
  • ledPower_sensor_debu: Pin digital (pin 23) yang digunakan untuk menyalakan dan mematikan LED pada sensor debu. LED ini mengindikasikan apakah sensor sedang aktif atau tidak.
  • samplingTime_sensor_debu: Waktu (dalam mikrodetik) yang dibutuhkan untuk melakukan pengambilan sampel data dari sensor debu.
  • deltaTime_sensor_debu: Waktu (dalam mikrodetik) yang digunakan untuk delay antara pengambilan sampel.
  • sleepTime_sensor_debu: Waktu (dalam mikrodetik) untuk sensor masuk ke mode tidur setelah mengukur untuk menghemat daya.
  • voMeasured_sensor_debu: Variabel yang digunakan untuk menyimpan hasil bacaan analog dari sensor debu.
  • calcVoltage_sensor_debu: Variabel yang menyimpan nilai voltase yang dihitung berdasarkan bacaan analog.
  • dustDensity_sensor_debu: Variabel untuk menyimpan hasil perhitungan konsentrasi debu yang terdeteksi oleh sensor.

2. Fungsi baca_sensor_debu()

float baca_sensor_debu()
{
  digitalWrite(ledPower_sensor_debu,LOW);  // Mematikan LED indikator sensor debu
  delayMicroseconds(samplingTime_sensor_debu);  // Menunggu untuk waktu sampling
  voMeasured_sensor_debu = analogRead(measurePin_sensor_debu);  // Membaca nilai dari sensor (pin analog)
  delayMicroseconds(deltaTime_sensor_debu);  // Menunggu antara pengukuran
  digitalWrite(ledPower_sensor_debu,HIGH);  // Menyalakan kembali LED indikator sensor debu
  delayMicroseconds(sleepTime_sensor_debu);  // Sensor memasuki mode tidur untuk menghemat daya

  // Menghitung nilai tegangan berdasarkan nilai analog
  calcVoltage_sensor_debu = voMeasured_sensor_debu * (5.0 / 1024);  // Konversi dari 0-1024 ke 0-5V

  // Menghitung konsentrasi debu (mg/m³) berdasarkan formula empiris
  dustDensity_sensor_debu = 0.17 * calcVoltage_sensor_debu - 0.1;

  // Jika nilai debu negatif, atur ke 0.0
  if (dustDensity_sensor_debu < 0) {
    dustDensity_sensor_debu = 0.00;
  }

  return dustDensity_sensor_debu;  // Mengembalikan hasil pengukuran konsentrasi debu
}
  • digitalWrite(ledPower_sensor_debu, LOW): Mematikan LED untuk menandakan sensor tidak aktif saat membaca data.
  • analogRead(measurePin_sensor_debu): Membaca nilai analog dari sensor yang dihubungkan pada pin A0 (pin 34). Nilai ini menunjukkan intensitas debu di udara.
  • calcVoltage_sensor_debu: Nilai bacaan sensor konversi dari nilai analog ke tegangan dalam satuan volt (5V / 1024).
  • Formula Penghitungan Debu:
    • Menggunakan formula empiris untuk menghitung kepadatan debu (dalam satuan mg/m³) berdasarkan tegangan yang dibaca sensor. Rumus ini bisa bervariasi tergantung jenis sensor, namun rumus di kode ini adalah dustDensity_sensor_debu = 0.17 * calcVoltage_sensor_debu - 0.1.
  • Pengecekan Negatif: Jika hasil pengukuran debu negatif, maka hasilnya diatur menjadi 0.00, karena kerapatan debu tidak mungkin negatif.

3. Fungsi setup()

void setup()
{
  Serial.begin(9600);  // Memulai komunikasi serial dengan baud rate 9600
  pinMode(ledPower_sensor_debu, OUTPUT);  // Mengatur pin LED sebagai output
}
  • Serial.begin(9600): Memulai komunikasi serial dengan komputer atau perangkat lain pada kecepatan 9600 baud.
  • pinMode(ledPower_sensor_debu, OUTPUT): Menyetel pin LED (pin 23) sebagai output agar dapat mengontrol status LED (nyala/mati).

4. Fungsi loop()

void loop(){
  Serial.println("Debu: " + (String)baca_sensor_debu());  // Mencetak hasil pengukuran konsentrasi debu ke Serial Monitor
}
  • Serial.println("Debu: " + (String)baca_sensor_debu()): Memanggil fungsi baca_sensor_debu() untuk membaca konsentrasi debu dan menampilkannya di Serial Monitor.

5. Alur Program Secara Keseluruhan

  1. Program dimulai dengan mempersiapkan komunikasi serial dan menyiapkan pin LED untuk sensor debu.
  2. Di dalam loop(), program secara terus-menerus memanggil fungsi baca_sensor_debu() untuk membaca dan menghitung konsentrasi debu dari sensor.
  3. Hasil pengukuran konsentrasi debu dicetak ke Serial Monitor setiap kali pembacaan selesai.
  4. Fungsi baca_sensor_debu() mengatur siklus pembacaan sensor dengan waktu sampling, delay, dan kontrol LED yang menandakan status sensor.

6. Ringkasan Fungsi Utama:

  • baca_sensor_debu(): Membaca data sensor, mengonversi data menjadi konsentrasi debu, dan mengembalikan nilai tersebut.
  • setup(): Menyiapkan komunikasi serial dan pin LED.
  • loop(): Menampilkan hasil bacaan konsentrasi debu secara terus-menerus.

7. Hasil Output

Hasil dari program ini akan mencetak nilai konsentrasi debu dalam satuan mg/m³ ke Serial Monitor. Nilai ini mewakili kepadatan debu di udara yang terdeteksi oleh sensor.

untuk diskusi bisa kontak dibawah ini :

Sosial media :

Apa itu ESP32?