Modul 4: Percobaan




Sistem Monitoring Greenhouse Otomatis Untuk Tanaman Sayuran

1. Prosedur  [Kembali]

    Langkah-langkah percobaan :
  • Siapkan alat dan bahan yaitu dengan komponen utama dan komponen lainnya seperti Arduino UNO, LCD, LED, Sensor hujan, Sensor DHT11, Sensor LM35, Sensor BMP180, Motor DC, Resistor, L293D Driver
  • Rangkai sesuai gambar percobaan
  • Rancang kerja rangkaian sesuai flowchart
  • Tekan tombol “Play” untuk menjalankan simulasi

2. Hardware dan Diagram Blok [Kembali]

  

  • Arduino        
  • LCD 16x2
  • LED
  • Resistor
  • Sensor LDR

  • Sensor Rain


  • Sensor DHT11


  • L293D Driver


  • Motor DC


  • Sensor BMP180


  • Sensor LM35




3. Rangkaian Simulasi dan Prinsip Kerja  [Kembali]

Rangkaian Proteus



Rangkaian Visual


Rangkaian prototipe


Pada rangkaian ini, rangkaian bekerja dengan menggunakan komunikasi UART (Universal Asynchronous Receiver Transmitter) yang mana menggunakan pin Tx dan Rx. Master berfungsi mengontrol slave dengan mengirimkan beberapa kondisi dari sensor yang digunakan sebagai inputan, di antaranya sensor DHT11 akan mendeteksi kelembaban, LM35 mendeteksi suhu, BMP180 membaca tekanan bumi, sensor hujan mendeteksi apakah keadaan cuaca sedang hujan atau tidak, lalu sensor LDR mendeteksi apakah keadaan sedang cerah atau gelap.

Kondisi (logika):

  • Rain Sensor = jika tidak hujan rumah kaca membuka (motor bergerak)

  • LDR = Cahaya kurang, lampu hidup sebagai pencahayaan buatan (indikatornya menggunakan LED)

  • Sensor LM35 = Jika suhu tinggi, akan mengaktifkan motor sebagai kipas untuk pendingin greenhouse

  • DHT11 = jika kelembaban tinggi, membuka ventilasi untuk mengurangi kelembaban (motor DC bergerak)

  • Sensor BMP180, bertindak sebagai prediksi cuaca dan kondisi lingkungan, pengawasan ventilasi. Jika nanti kondisi memang tidak normal, maka rumah kaca ini akan memproteksi  dirinya dengan cara menutup secara keseluruhan, dan menggunakan alternatif lainnya yang tersedia di dalam sistem rumah kaca, seperti misalnya kurangnya cahaya, maka LED akan hidup sebagai indikator pencahayaan.

1. Prediksi Cuaca dan Kondisi Lingkungan

  • Deskripsi: Perubahan tekanan udara sering kali merupakan indikator perubahan cuaca.

  • Manfaat: Dengan memantau tekanan udara, Anda dapat memprediksi perubahan cuaca yang akan datang dan mengambil tindakan pencegahan untuk melindungi tanaman.

2. Pengawasan Ventilasi

  • Deskripsi: Tekanan udara yang tidak normal dapat menunjukkan masalah dengan ventilasi rumah kaca.

  • Manfaat: Dengan memantau tekanan udara, Anda dapat memastikan bahwa ventilasi berfungsi dengan baik, menghindari kondisi yang bisa merugikan tanaman.

Kondisi normal 2.34 pascal, di bawah ini berarti kondisi tidak normal.


4. Flowchart dan Listing Program [Kembali]

    Flowchart

     Master

    Slave




Listing Program

master
#include <Wire.h> // Library for I2C communication
#include <LiquidCrystal_I2C.h> // Library for I2C LCD
#include <DHT.h>
#include <Adafruit_BMP085.h> // Library for BMP180 sensor
// Pin Definitions
#define PIN_HUJAN 7
#define DHT11_SENSOR 2
#define DHTTYPE DHT11 // Type of DHT sensor
float pressure;
const int ldrPin = A1; // Analog pin connected to LDR sensor
const int thresholdr = 500; // Threshold for sunlight detection (adjust as necessary)
const int LM_SENSOR = A0; // Analog pin for LM35 temperature sensor
const int threshold = 25; // Threshold temperature value for control
// Initialize LCD
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(DHT11_SENSOR, DHT11);
Adafruit_BMP085 bmp;
void setup() {
Serial.begin(9600); // Serial monitor for debugging
dht.begin();
bmp.begin(); // Initialize BMP180 sensor
pinMode(LM_SENSOR, INPUT);
pinMode(PIN_HUJAN, INPUT);
pinMode(ldrPin, INPUT); // Set the pin mode for LDR
lcd.init(); // Initialize the LCD
lcd.backlight(); // Turn on the backlight
lcd.begin(16, 2); // Initialize the LCD with 16 columns and 2 rows
// Display initial message
lcd.setCursor(0, 0);
lcd.print("System Starting");
delay(2000); // Wait for 2 seconds
}
void loop() {
float t = dht.readTemperature();
float h = dht.readHumidity();
int Hujan = digitalRead(PIN_HUJAN);
pressure = bmp.readPressure() / 100.0; // Read pressure in hPa
int sensorValue = analogRead(LM_SENSOR);
float TC = (sensorValue * 5.0) / 1023.0 * 100.0;
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(TC);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("H:");
lcd.print(h);
lcd.print("%");
lcd.setCursor(8, 0);
lcd.print("P: ");
lcd.print(pressure);
lcd.print("hPa");
lcd.setCursor(8, 1);
lcd.print("R: ");
lcd.print(Hujan);
delay(2000);
// Read sensor values
int ldrValue = analogRead(ldrPin); // Using analogRead instead of digitalRead for LDR
// Print sensor values to Serial Monitor for debugging
Serial.print("Temp: ");
Serial.print(t);
Serial.print("C, Hum: ");
Serial.print(h);
Serial.print(", Hujan: ");
Serial.print(Hujan);
Serial.print(", LM35: ");
Serial.print(TC);
Serial.print(", LDR: ");
Serial.println(ldrValue);
// Condition to control heater and fan based on temperature
if (TC > threshold) {
Serial.write('D');
Serial.println("Motor ON");
} else {
Serial.write('z'); // This should be consistent with slave code
Serial.println("Motor OFF");
}
// Send LDR value
if (ldrValue > thresholdr) {
Serial.write('l'); // LED OFF (consistent with slave code)
Serial.println("Light detected");
} else {
Serial.write('L'); // LED ON (consistent with slave code)
Serial.println("Darkness detected");
}
delay(10); // Small delay to avoid flooding the serial communication
}
view raw gistfile1.txt hosted with ❤ by GitHub
slave
// Pin Definitions
#define LED_PIN 7
#define MOTOR1 3 // Pin yang terhubung ke IN1 L293D
#define MOTOR2 4 // Pin yang terhubung ke IN2 L293D
#define EN_PIN 5 // Pin yang terhubung ke EN L293D
void setup() {
Serial.begin(9600); // Serial monitor for debugging
pinMode(LED_PIN, OUTPUT);
pinMode(MOTOR1, OUTPUT);
pinMode(MOTOR2, OUTPUT);
pinMode(EN_PIN, OUTPUT);
// Enable the motor driver
digitalWrite(EN_PIN, HIGH);
}
void loop() {
if (Serial.available()) {
char message = Serial.read();
Serial.print("Received message: ");
Serial.println(message);
if (message == 'L') {
digitalWrite(LED_PIN, HIGH);
Serial.println("Turning LED_PIN ON");
}
else if (message == 'l') {
digitalWrite(LED_PIN, LOW);
Serial.println("Turning LED_PIN OFF");
}
if (message == 'D') {
digitalWrite(MOTOR1, HIGH);
digitalWrite(MOTOR2, LOW); // Logika untuk putaran maju
Serial.println("Turning MOTOR1 ON, MOTOR2 OFF");
}
else if (message == 'z') {
digitalWrite(MOTOR1, LOW);
digitalWrite(MOTOR2, LOW); // Mematikan motor
Serial.println("Turning MOTOR1 and MOTOR2 OFF");
}
}
delay(100); // Small delay to avoid flooding the serial communication
}
view raw gistfile1.txt hosted with ❤ by GitHub

5. Video Demo [Kembali]


Video revisi




video proteus





6. Link Download [Kembali]
Download HTML [Klik di sini]
Download File Rangkaian [Klik di sini]
Download datasheet Arduino [Klik di sini]
Download datasheet DC Motor [Klik di sini]
Download datasheet LCD [Klik di sini]
Download datasheet LED [Klik di sini]
Download datasheet Resistor [Klik di sini]
Download datasheet Sensor Hujan [Klik di sini]
Download datasheet Sensor LM35 [Klik di sini]
Download datasheet Sensor BMP180 [Klik di sini]
Download datasheet Sensor LDR [Klik di sini]
Download datasheet Sensor DHT11 [Klik di sini]
Download program Arduino [Klik di sini]
Download Video Rangkaian [Klik di sini]
Download Video Rangkaian Revisi [Klik di sini]

















Komentar