Tugas Pendahuluan Modul 3 (Percobaan 8)


Aplikasi I/O Sederhana untuk Kontrol Air Kolam Ikan

1. Prosedur [Kembali]

  • Rangkai semua komponen 
  • Buat program di aplikasi arduino IDE
  • Setelah selesai masukkan program ke arduino 
  • Jalankan program pada simulasi dan cobakan sesuai kondisi

  • Rangkaian






  • Prinsip Kerja
        Pada rangkaian ini digunakan dua buahArduino Uno (Atmega328) yang masing-masing akan berperan sebagai Slave dan Masternya. Dimana Arduino yang berperan sebagai master akan terhubung dengan input berupa potensiometer yang terkoneksi dengan ph meter dan sensor suhu yang nanti akan memberikan perintah, perintah tersebut nantinya akan akan tersampaikan ke Arduino yang berperan sebagai Slave yang terhubung dengan Output berupa motor dc dan motor pwm servo.

       Dimana ketika suhu > 25 dan pH > 7 maka motor dc akan berputar berlawanan arah jarum jam serta motor pwm akan membentuk sudut 45 derajat, ketika suhu < 25 dan pH > 7 maka motor dc tidak hidup dan motor pwm membentuk sudut -90, ketika suhu > 25 dan pH < 7 maka motor dc akan berputar searah jarum jam, serta motor pwm kembali dengan sudut 45 derajat, dan ketika suhu < 25 dan pH < 7 maka motor dc akan berhenti dan motor pwm membentuk sudut +90.

     Jenis komunikasi data yang digunakan oleh Arduino adalah UART

  • Flowchart
Flowchart Master


Flowchart Slave



  • Listing Program
//MASTER
#include  
SoftwareSerial mySerial(0, 1); // RX, TX
void setup() {
Serial.begin(9600);  // Inisialisasi komunikasi serial
mySerial.begin(9600); // Inisialisasi komunikasi serial untuk komunikasi dengan Arduino Penerima
}
void loop() {
//Baca sensor
float suhu = bacaSensorSuhu();
float pH = bacaSensorpH();
// Kirim data suhu & pH ke Arduino Penerima
mySerial.println(suhu);
Serial.println(suhu);
mySerial.println(pH);
Serial.println(pH);
delay(500);
}
float bacaSensorSuhu() {
  // Baca sensor suhu
  int sensorValue = analogRead(A0);
  float suhu = (sensorValue * 5.0 / 1023) * 100.0;
  return suhu;}
  float bacaSensorpH() {
  // Baca sensor pH
  int sensorValue = analogRead(A1);
  float pH = map(sensorValue, 0, 1023, 0, 14);
  return pH;
}
 



//SLAVE
#include  
Servo myservo;
int motorin = 9;
int motorout = 10;
void setup() {
  Serial.begin(9600);  // Inisialisasi komunikasi serial
  pinMode(motorin, OUTPUT);
  pinMode(motorout, OUTPUT);
  myservo.attach(6);
}
 
void loop() {
  // Menunggu data suhu & pH masuk dari Arduino Pengirim
  if (Serial.available() > 0) {
    // Membaca data suhu & pH yang diterima
    float suhu = Serial.parseFloat();
    float pH = Serial.parseFloat();
 
    // Lakukan sesuatu berdasarkan data suhu & pH
    if (suhu > 25 && pH > 7) {
      digitalWrite(motorin, HIGH);
      digitalWrite(motorout, LOW);
      myservo.write (93);
    } if (suhu < 25 && pH > 7){
      digitalWrite(motorin, LOW);
      digitalWrite(motorout, LOW);
      myservo.write(3);
    }if (suhu > 25 && pH < 7){
      digitalWrite(motorin, LOW);
      digitalWrite(motorout, HIGH);
      myservo.write (117);
    }
    if (suhu < 25 && pH < 7){
      digitalWrite(motorin, LOW);
      digitalWrite(motorout, LOW);
      myservo.write (180);
    }
   }
}

4. Kondisi [Kembali]

Tanpa Kondisi



Komentar