automatic egg incubator

Click here to load reader

Post on 09-Jul-2015

416 views

Category:

Documents

8 download

Embed Size (px)

TRANSCRIPT

II3231 - Interaksi Manusia dengan Komputer dan Antarmuka

Automatic Egg IncubatorNicolas Novian Ruslim/18211031Muhammad Fajrin/18211010Andy Primawan/18211031Gilang Ramadhan /18211045Raosan Fikri L. /18211027

Ayam memiliki mood untuk mengerami telur hanya pada waktu tertentu (broody)

Dibutuhkan inkubator saat kekurangan ayam untuk mengerami telur

Inkubator yang ada dan dibuat sendiri bersifat manual harus memantau temperatur dengan termometer.PendahuluanRelaySpesifikasi Inkubator - Input

Temperatur LM35

Keypad

Sensor PIR

Spesifikasi Inkubator - ProsesDi saat temperatur di bawah suhu yang diinginkan maka lampu akan menyala untuk menghangatkan.

Spesifikasi Inkubator - ProsesDi saat temperatur di atas suhu yang diinginkan maka kipas akan menyala untuk mendinginkan.

Spesifikasi Inkubator - ProsesDi saat ada gerakan maka alarm akan menyala.

Spesifikasi Inkubator - Proses

KipasSpesifikasi Inkubator - Output

AlarmLampuUser menyalakan inkubator melalui switchUser memasukkan suhu ideal melalui keypadSistem akan menyesuaikan agar suhu di dalam inkubator sesuai dengan suhu yang diinputUser menekan keypad untuk mematikan alarm, mengatur mode manual/otomatis, menyalakan lampu/kipas, serta mematikan lampu dan kipasSpesifikasi Inkubator - InteraksiBlok Desain Hardware

FlowchartRangkaian

Kode Program Arduino 1 (Input)/* Sensor LM 35Mencetak temperatur ke serial monitor */#include #include #include

int state = 0; // 0 = otomatis & 1 = manual

//Variable untuk keypad

const int inPin = 0;

const byte ROWS = 4; // jumlah baris = 4const byte COLS = 3; // jumlah kolom = 3// Mendefiniskan keypad mapchar keys[ROWS][COLS] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'}};// Menyambungkan keypad ROW0, ROW1, ROW2 dan ROW3 ke pin digital arduino.byte rowPins[ROWS] = { 0, 1 , 7, 8 };// Menyambungkan keypad COL0, COL1 and COL2 ke pin digital arduino.byte colPins[COLS] = { 9, 10, 13 };

//Menciptakan 'objek keypad'Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );// Inisialisasi library tadi dengan nomor pin// yang digunakan untuk interfaceLiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {// Kita set bit rate dari komunikasi serialnya 9600 bps Serial.begin(9600); // Banyaknya kolom yang dipakai 16. Dan barisnya // sebanyak 2. Itu dari sananya. lcd.begin(16, 2); // Tuliskan pesannya ke LCD lcd.print("Suhunya saat ini :"); Wire.begin(); // join i2c bus (address optional for master)}

void loop() { int alarm = 0; char key = kpd.getKey();//mengeset hasil pembacaan sensor LM 35int value = analogRead(inPin);/* mengubah hasil pembacaan sensor LM 35 ke dalam milivolt */float millivolts = (value / 1024.0) * 5000; // mengkonversi ke dalam Celciusfloat celcius = millivolts / 10;

// Pindahkan kursor ke baris 2, kolom paling kiri lcd.setCursor(0, 1);Kode Program Arduino 1 (Input) // Tuliskan ke LCD!! lcd.print(celcius); lcd.print(" C"); if(state == 1){ lcd.print(" MODE:M"); }else if(state == 0){ lcd.print(" MODE:A"); } int out; Wire.beginTransmission(4); // transmit to device #4 Serial.print("state masuk loop = "); Serial.println(state); if(key == '*'){ state = 0; Serial.println(state); }else if(key == '#') { state = 1; Serial.println(state); }else if(key == '9'){ alarm = 9; Serial.println(alarm); } if(state == 0){ if (celcius < 30.00) { out=1;

} else if (celcius >= 30.00 && celcius 32.00) { out=3; } }else if(state == 1){ if(key == '1'){ Serial.println("satu"); out=4; }else if(key == '2'){ out=5; Serial.println("dua"); } else if (key == '3') { out=2; Serial.print("tiga"); } } if(alarm == 9){ Wire.write(alarm); }else{ Wire.write(out); } Wire.endTransmission();//tunggu 1 detikdelay(1000); }Kode Program Arduino 2 (Output)#include

//define names for the 4 Digital pins On the Arduino 7,8,9,10//These data pins link to 4 Relay board pins IN1, IN2, IN3, IN4

#define RELAY1 8 #define RELAY2 9

int valPIR = LOW; int statePIR = LOW; // we start, assuming no motion detectedint inputPIR = 7; // choose the input pin (for PIR sensor)int lampstate = 0; //kondisi lampuint fanstate = 0; //kondisi kipasint pinALARM = 13;int statemove = 0;int counter = 0;void setup(){ // Initialise the Arduino data pins for OUTPUT pinMode(RELAY1, OUTPUT); pinMode(RELAY2, OUTPUT); pinMode(inputPIR, INPUT); pinMode(pinALARM, OUTPUT); Wire.begin(4); // join i2c bus with address #4 Wire.onReceive(receiveEvent); // register event Serial.begin(9600); // start serial for output}

void loop(){ delay(100);}

Kode Program Arduino 2 (Output)// function that executes whenever data is received from master// this function is registered as an event, see setup()void receiveEvent(int howMany){ int x = Wire.read(); // receive byte as an integer Serial.print("X = "); Serial.println(x); if (x == 1 && lampstate == 0) { //lampu nyalain digitalWrite(RELAY1,LOW); digitalWrite(RELAY2,HIGH); lampstate = 1; } else if (x == 2 && lampstate == 1 || x ==2 && fanstate == 1) { //matiin lampu atau kipas digitalWrite(RELAY1,HIGH); lampstate = 0; digitalWrite(RELAY2,HIGH); fanstate = 0; } else if (x == 3 && fanstate == 0) { //kipas nyalain digitalWrite(RELAY1,HIGH); digitalWrite(RELAY2,LOW); fanstate = 1; } else if (x == 4) { //lampu nyalain mode darurat digitalWrite(RELAY1,LOW); digitalWrite(RELAY2,HIGH); lampstate = 1; } else if (x == 5) { //kipas nyalain mode darurat digitalWrite(RELAY1,HIGH); digitalWrite(RELAY2,LOW); fanstate = 1; } valPIR = digitalRead(inputPIR); // read input value if(valPIR == HIGH && statePIR == LOW){ //kirim sinyal untuk menyalakan alarm digitalWrite(pinALARM, HIGH); statemove = 1; statePIR = HIGH; } Serial.print("sensor gerak = "); Serial.println(x); if (statemove = 1) { counter++; } if (counter >= 30 || x == 9 ) { statemove = 0; counter = 0; digitalWrite(pinALARM, LOW); statePIR = LOW; }}Pengetesan dengan membandingkan kerja inkubator dengan hasil pembacaan LM35.TestingTemperatur yang dibaca oleh arduino input saat ditransfer ke arduino output nilainya aneh

Kabel diganti menjadi kabel fleksibel yang di dalamnya berupa serabut harus dilapisi timah

Serial monitor tidak ada perubahan, masalah hardware atau masalah software?

Saat menggunakan baterai kerja inkubator menjadi aneh.KendalaProduk