Pohon kakao dapat tumbuh dilingkungan kering, namun tidak menutup kemungkinan terjadinya kemarau sehingga dibutuhkan air buat kebun kakao, maka di buat sensor yang diletakkan di atas kolam terpal untuk menampung air hujan. Selain itu agar didapatkan hasil panen yang berkualitas maka dibuat kontrol untuk menjaga kelembaban tanah, PH tanah, dan suhu pada kebun kakao. Kelembaban tanah yang cocok pada kebun kakao yaitu 60, sedangkan untuk PH sekitaran 6 - 7.5, dan untuk suhu yaitu 25 c - 30 c.
- Memenuhi tugas Mikroprosesor dan Mikrokontroler
- Mempelajari rangkaian aplikasi menggunakan arduino, keypad, dan LCD
- Mempelajari prinsip kerja Sensor soil mosture, sensor ph, sensor infrared, sensor rain, dan sensor suhu LM35
- Mempelajari simulasi rangkaian Sensor soil mosture, sensor ph, sensor infrared, sensor rain, dan sensor suhu LM35
- 12 tombol (dengan fungsi tergantung pada aplikasi).
- Konfigurasi 4 baris (input scanning) dan 3 kolom (output scanning).
- Kompatibel penuh dengan DT-51 Low Cost Series dan DT-AVR Low Cost Series. Mendukung DT-51 Minimum Systemver 3.0, DT-51 PetraFuz, DT-BASIC Series, dan sistem lain.
- Dilengkapi dengan contoh program.
- Dimensi : 9 cm (P) x 5,4 cm (L) x 1,8 cm (T)
- Perlengkapan : 1 buah DT-I/O 3 x 4 Keypad Module
- Tegangan operasi LCD ini adalah 4.7V-5.3V
- Ini mencakup dua baris di mana setiap baris dapat menghasilkan 16 karakter.
- Pemanfaatan arus adalah 1mA tanpa lampu latar
- Setiap karakter dapat dibangun dengan kotak 5×8 piksel
- Alfanumerik LCD alfabet & angka
- Apakah tampilan dapat bekerja pada dua mode seperti 4-bit & 8-bit
- Ini dapat diperoleh dalam Lampu Latar Biru & Hijau
- Ini menampilkan beberapa karakter yang dibuat khusus
6). Sensor Rain- Adoptshigh quality of RF-04 double sidedmaterial.
- Area:5cm x 4cm nickel plateon side,
- Anti-oxidation,anti-conductivity, with long use time;
- Comparator output signal clean waveform is good, driving ability, over 15mA;
- Potentiometer adjust the sensitivity;
- Working voltage 5V;
- Output format: Digital switching output (0 and 1) and analog voltage output AO;
- With bolt holes for easy installation;
- Small board PCB size: 3.2cm x 1.4cm;
- Usesa wide voltage LM393 comparator
7). Sensor LM358). Sensor PHSpesifikasi :- Daya masuk: + 5.00V
- Ukuran Modul: 43mm x 32mm
- Rentang pengukuran: 0-14 PH
- Mengukur ttemperatur: 0-60 ° C
- Akurasi: ± 0.1 PH (25 °C)
- Waktu tanggapan: ≤ 1 menit
9). ResistorSpesifikasi :
- Adoptshigh quality of RF-04 double sidedmaterial.
- Area:5cm x 4cm nickel plateon side,
- Anti-oxidation,anti-conductivity, with long use time;
- Comparator output signal clean waveform is good, driving ability, over 15mA;
- Potentiometer adjust the sensitivity;
- Working voltage 5V;
- Output format: Digital switching output (0 and 1) and analog voltage output AO;
- With bolt holes for easy installation;
- Small board PCB size: 3.2cm x 1.4cm;
- Usesa wide voltage LM393 comparator
- Daya masuk: + 5.00V
- Ukuran Modul: 43mm x 32mm
- Rentang pengukuran: 0-14 PH
- Mengukur ttemperatur: 0-60 ° C
- Akurasi: ± 0.1 PH (25 °C)
- Waktu tanggapan: ≤ 1 menit
c. Prinsip Kerja[Kembali]
- Download library yang diperlukan pada bagian download dalam blog.
- Buka proteus yang sudah diinstal untuk membuat rangkaian.
- Tambahkan komponen seperti Arduino, sensor, dan perangkat lainnya lalu susun menjadi rangkaian.
- Buka Arduino IDE yang sudah diinstal.
- Di Arduino IDE, pergi ke menu "File" > "Preferences".Pastikan opsi
- "Show verbose during compile" dicentang untuk mendapatkan informasi detail saat kompilasi.
- Salin kode program Arduino pada blog kemudian tempelkan program tadi ke Arduino IDE.
- Kompilasikan kode dengan menekan tombol "Verify" di Arduino IDE.
- Cari dan salin path file HEX yang dihasilkan selama proses kompilasi.
- Kembali ke Proteus dan pilih Arduino yang telah Anda tambahkan di rangkaian.
- Buka opsi "Program File" dan tempelkan path HEX yang telah Anda salin dari Arduino IDE.
- Jalankan simulasi di Proteus.
#include <Wire.h> #include <LiquidCrystal_I2C.h> #include <Servo.h> | Memanggil library LCD yang digunakan untuk mengaktifkan |
const byte BARIS = 4; const byte KOLOM = 3; | Mendefinisikan konstanta BARIS dengan nilai 4 dan KOLOM dengan nilai 3. Mengindikasikan jumlah baris dan kolom pada matriks keypad. |
char tombolKeypad[BARIS][KOLOM] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; | Membuat matriks 2D tombolKeypad berukuran BARIS x KOLOM yang berisi karakter tombol keypad. Setiap elemen matriks merepresentasikan karakter yang akan ditampilkan pada tombol keypad. |
byte pinBaris[BARIS] = {6, 5, 4, 3}; byte pinKolom[KOLOM] = {7, 8, 9}; | Membuat array pinBaris dan pinKolom untuk menyimpan nilai pin yang terhubung dengan baris dan kolom keypad. |
LiquidCrystal_I2C lcd(0x27, 16, 2); | Mendeklarasikan objek LCD menggunakan library LiquidCrystal_I2C untuk mengendalikan layar LCD berbasis I2C. Parameter konstruktor menentukan alamat I2C LCD (0x27), jumlah karakter per baris (16), dan jumlah baris (2). |
const int rainPin = 12, servoPin = 11, irSensorPin = 13, outputPin = 10; const int humSensorPin = A0, motorPin = 2, phSensorPin = A2, outputPin1 = 1, tempSensorPin = A1, outputPin0 = 0; Servo servoMotor; | Mendeklarasikan pin untuk sensor hujan, motor servo, sensor infrared, dan output digital. mendeklarasikan pin untuk sensor kelembaban (A0), motor DC, sensor pH (A2), dan sensor suhu (A1), serta output digital. |
void setup() { lcd.begin(16, 2); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("Salam Sejahtera"); servoMotor.attach(servoPin); setupPins(); } void setupPins() { pinMode(rainPin, INPUT); pinMode(irSensorPin, INPUT); pinMode(outputPin, OUTPUT); pinMode(humSensorPin, INPUT); pinMode(motorPin, OUTPUT); pinMode(phSensorPin, INPUT); pinMode(outputPin1, OUTPUT); pinMode(tempSensorPin, INPUT); pinMode(outputPin0, OUTPUT); } | Mendeklarasikan LCD dan beberapa pin diatur menjadi inputan |
void loop() { checkRainSensor(); checkInfraredSensor(); controlHumidityMotor(); controlPHOutput(); controlTemperatureOutput(); char keypadButton = readKeypad(); if (keypadButton != '\0') { handleKeypadPress(keypadButton); } } | Memantau kondisi sensor dan keypad di dalam loop utama dan mengambil tindakan yang sesuai berdasarkan kondisi yang terdeteksi. |
void checkRainSensor() { int rainSensorValue = digitalRead(rainPin); rotateServo(rainSensorValue == HIGH ? 0 : 180); } void checkInfraredSensor() { int infraredSensorValue = digitalRead(irSensorPin); controlOutput(outputPin, infraredSensorValue == HIGH); } | Memeriksa kondisi sensor hujan dan sensor infrared untuk mengambil tindakan tertentu, seperti menggerakkan motor servo atau mengontrol output digital. |
void controlHumidityMotor() { int humidityPercentage = map(readAnalogSensor(humSensorPin), 0, 1023, 0, 100); controlOutput(motorPin, humidityPercentage > 80); } void controlPHOutput() { float phVoltage = readAnalogSensor(phSensorPin) * (5.0 / 1023.0); controlOutput(outputPin1, phVoltage >= 3.0); } void controlTemperatureOutput() { float tempVoltage = readAnalogSensor(tempSensorPin) * (5.0 / 1023.0); controlOutput(outputPin0, tempVoltage > 0.27); } int readAnalogSensor(int pin) { return analogRead(pin); } void controlOutput(int pin, bool state) { digitalWrite(pin, state); } | Memberikan kontrol adaptif berdasarkan nilai sensor, memungkinkan sistem untuk menanggapi perubahan kelembaban, pH, dan suhu dengan mengaktifkan atau menonaktifkan perangkat output yang sesuai. |
char readKeypad() { for (byte i = 0; i < KOLOM; i++) { pinMode(pinKolom[i], OUTPUT); digitalWrite(pinKolom[i], LOW); for (byte j = 0; j < BARIS; j++) { pinMode(pinBaris[j], INPUT_PULLUP); if (digitalRead(pinBaris[j]) == LOW) { delay(50); while (digitalRead(pinBaris[j]) == LOW); return tombolKeypad[j][i]; } pinMode(pinBaris[j], INPUT); } digitalWrite(pinKolom[i], HIGH); pinMode(pinKolom[i], INPUT); } return '\0'; } | Membaca input dari keypad matriks dan mengembalikan karakter yang sesuai dengan tombol yang ditekan. Proses ini terus berulang dalam loop utama untuk terus memantau input dari keypad |
void handleKeypadPress(char keypadButton) { lcd.clear(); lcd.setCursor(0, 0); switch (keypadButton) { case '1': lcd.print("Kebun Kakao\nPak Siska"); break; case '2': lcd.print("Assalamualaikum"); break; case '3': lcd.print("Selamat Datang"); break; default: lcd.print("Tombol tidak valid"); } delay(2000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Salam Sejahtera"); } | Memberikan tanggapan visual yang bervariasi tergantung pada tombol yang ditekan pada keypad. Setelah menampilkan pesan selama 2 detik, layar dibersihkan dan pesan "Salam Sejahtera" ditampilkan kembali di posisi awal. |
void rotateServo(int degrees) { servoMotor.write(degrees); delay(500); } | Menggerakkan motor servo ke suatu posisi tertentu berdasarkan nilai derajat yang diberikan sebagai parameter |
video simulasi rangkaian
- Video Teori LCD
- Video Teori Arduino
- Video Teori Sensor Infrared
- Video Sensor Soil Moisture
- Video Sensor Rain
- Video Sensor LM35
- Sensor PH
f. Download File[Kembali]
Download HTML klik disini
Data Sheet
Download Datasheet Flame Sensor klik disini
Download Data sheet Sensor Infrared klik disini
Download Datasheet Sensor LDR klik disini
Download Datasheet Sensor MQ 2 Klik disini
Download Datasheet Motor DC klik disini
Download Datasheet LED klik disini
Download Datasheet Motor Servo klik disini
Download Datasheet LCD klik disini
Download Library Sensor Infrared klik disini
Tidak ada komentar:
Posting Komentar