Alat pemantau kualitas udara dengan Arduino adalah perangkat yang dirancang untuk mengukur dan memantau kualitas udara menggunakan platform mikrokontroler Arduino. Arduino berperan untuk mengumpulkan data dari sensor dan mengolahnya untuk ditampilkan pada layar atau dikirim ke perangkat lain agar dapat dianalisis lebih lanjut. Pengguna dapat memprogram Arduino untuk memberikan peringatan jika kualitas udara mencapai level berbahaya. Perangkat ini biasanya dilengkapi dengan sensor yang dapat mendeteksi berbagai parameter kualitas udara seperti PM2.5 dan PM10, gas serta suhu dan kelembaban.
Baca juga : Menggunakan Arduino untuk Prototipe Perangkat Kesehatan
Alat dan Bahan
1. Arduino Uno
2. Sensor gas MQ-135 untuk mendeteksi gas-gas seperti CO2, NH3, NOx, alkohol, benzena, asap dan gas berbahaya lainnya.
3. Sensor suhu dan kelembaban DHT22 untuk mengukur suhu dan kelembaban udara.
4. Layar OLED 0.96 untuk menampilkan data yang dikumpulkan oleh sensor.
5. Module Wi-Fi ESP8266 untuk mengirim data ke platform IoT.
6. Breadboard dan kabel jumper untuk merangkai komponen.
7. Adaptor daya untuk menyuplai daya ke Arduino.
Prinsip Kerja
Prototipe ini bekerja dengan cara mendeteksi konsentrasi gas berbahaya menggunakan sensor MQ-135 dan mengukur suhu serta kelembaban menggunakan sensor DHT22. Data yang diperoleh akan ditampilkan pada layar OLED dan dikirim ke platform IoT melalui module Wi-Fi ESP8266 untuk pemantauan jarak jauh.
Langkah-langkah Pembuatan Prototipe Alat Pemantau Kuliatas Udara dengan Arduino
1. Merangkai Komponen
• Hubungkan pin VCC sensor MQ-135 ke 5V pada Arduino.
• Hubungkan pin GND sensor MQ-135 ke GND pada Arduino.
• Hubungkan pin A0 sensor MQ-135 ke pin A0 pada Arduino.
• Hubungkan pin VCC sensor DHT22 ke 5V pada Arduino.
• Hubungkan pin GND sensor DHT22 ke GND pada Arduino.
• Hubungkan pin DATA sensor DHT22 ke pin digital 2 pada Arduino.
• Hubungkan pin VCC layar OLED ke 3.3V pada Arduino.
• Hubungkan pin GND layar OLED ke GND pada Arduino.
• Hubungkan pin SDA layar OLED ke pin SDA pada Arduino (A4).
• Hubungkan pin SCL layar OLED ke pin SCL pada Arduino (A5).
• Hubungkan pin VCC module Wi-Fi ke 3.3V pada Arduino.
• Hubungkan pin GND module Wi-Fi ke GND pada Arduino.
• Hubungkan pin TX module Wi-Fi ke pin RX pada Arduino.
• Hubungkan pin RX module Wi-Fi ke pin TX pada Arduino.
2. Memprogram Arduino
Kode Program Sederhana
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
// Define pins
#define DHTPIN 2
#define DHTTYPE DHT22
#define MQ135PIN A0
// Define OLED display
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
// Create instances for sensors and display
DHT dht(DHTPIN, DHTTYPE);
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// WiFi credentials
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
// Server endpoint
const char* serverName = "http://example.com/post-data";
// Variables to store sensor data
float temperature;
float humidity;
int airQuality;
void setup() {
// Initialize serial communication
Serial.begin(115200);
// Initialize sensors
dht.begin();
// Initialize OLED display
if (!display.begin(SSD1306_I2C_ADDRESS, SCREEN_WIDTH, SCREEN_HEIGHT)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
display.display();
delay(2000);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
// Initialize Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
}
void loop() {
// Read sensor data
temperature = dht.readTemperature();
humidity = dht.readHumidity();
airQuality = analogRead(MQ135PIN);
// Check if any reads failed and exit early (to try again).
if (isnan(temperature) || isnan(humidity) || airQuality == 0) {
Serial.println(F("Failed to read from sensors!"));
return;
}
// Display data on OLED
display.clearDisplay();
display.setCursor(0, 0);
display.print("Temp: ");
display.print(temperature);
display.println(" *C");
display.print("Humidity: ");
display.print(humidity);
display.println(" %");
display.print("Air Quality: ");
display.print(airQuality);
display.display();
// Send data to server
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
String serverPath = serverName + String("?temperature=") + String(temperature)
+ "&humidity=" + String(humidity)
+ "&airQuality=" + String(airQuality);
http.begin(serverPath.c_str());
int httpResponseCode = http.GET();
if (httpResponseCode > 0) {
String response = http.getString();
Serial.println(httpResponseCode);
Serial.println(response);
} else {
Serial.print("Error on sending GET Request: ");
Serial.println(httpResponseCode);
}
http.end();
}
// Wait before the next loop
delay(2000);
}
Penjelasan Kode
• Library: Mengimpor library untuk sensor DHT22, layar OLED, dan module Wi-Fi ESP8266.
• Definisi Pin: Mendefinisikan pin yang digunakan oleh sensor dan layar.
• Inisialisasi: Inisialisasi sensor, layar OLED, dan koneksi Wi-Fi.
• Pembacaan Data: Membaca data dari sensor dan menampilkan hasilnya pada layar OLED.
• Pengiriman Data: Mengirim data sensor ke server melalui module Wi-Fi ESP8266.
3. Menguji Prototipe
Setelah memprogram Arduino, unggah kode tersebut ke board Arduino Anda. Pastikan Anda telah mengatur koneksi Wi-Fi dengan benar. Anda dapat memantau hasil pembacaan sensor melalui Serial Monitor di Arduino IDE dan melihat data yang ditampilkan pada layar OLED. Jika koneksi Wi-Fi berfungsi, data juga akan dikirim ke server yang ditentukan.
4. Mengatur Server
Untuk menerima data dari alat pemantau kualitas udara, Anda perlu mengatur server yang dapat menangani HTTP GET request. Anda dapat menggunakan layanan seperti ThingSpeak, Blynk, atau membuat server sendiri menggunakan PHP dan MySQL. Berikut ini contoh skrip PHP sederhana untuk menerima data:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$temperature = $_GET['temperature'];
$humidity = $_GET['humidity'];
$airQuality = $_GET['airQuality'];
$sql = "INSERT INTO air_quality_data (temperature, humidity, airQuality)
VALUES ('$temperature', '$humidity', '$airQuality')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
Pengembangan Lanjutan
1. Kirim notifikasi ke pengguna jika kualitas udara mencapai level berbahaya.
2. Gunakan platform IoT untuk menampilkan grafik dan analisis data kualitas udara dari waktu ke waktu.
3. Tambahkan proses kalibrasi untuk meningkatkan akurasi sensor.
4. Simpan data secara lokal menggunakan kartu SD jika koneksi internet terputus.
Baca juga : Tutorial Lengkap: Prototipe Sistem Otomatisasi Rumah dengan Arduino
Siap Untuk Membuat Proyek Impianmu Menjadi Kenyataan?
Klik di sini untuk chat langsung via WhatsApp dan dapatkan dukungan langsung dari tim ahli kami!
0 on: "Panduan: Prototipe Alat Pemantau Kualitas Udara dengan Arduino"