Rabu, 17 Januari 2024

MODUL 3: Aplikasi I/O sederhana untuk kontrol greenhouse





KONTROL GREENHOUSE TANAMAN SELADA 
SECARA OTOMATIS

1. Pendahuluan
[Kembali]

Mikrokontroler adalah sebuah komponen elektronik yang terdiri dari unit pemrosesan pusat (CPU), memori, dan perangkat I/O (Input/Output) yang terintegrasi dalam satu chip kecil. Fungsi utama mikrokontroler adalah untuk mengontrol suatu sistem atau perangkat elektronik. Keunggulan utama mikrokontroler terletak pada kemampuannya untuk menjalankan program yang telah diprogram sebelumnya, sehingga memungkinkan otomatisasi dan kontrol yang presisi dalam berbagai aplikasi. Dalam proyek ini, mikrokontroler berperan sebagai otak sistem yang memproses informasi dari sensor UV,rain sensor dan sensor suhu, serta mengambil keputusan untuk mengatur perangkat-perangkat kontrol pada greenhouse. Dengan fleksibilitas dan kemampuan pemrosesan yang dimilikinya, mikrokontroler menjadi elemen kunci dalam menciptakan solusi cerdas untuk mengoptimalkan kondisi greenhouse secara efektif.

2. Tujuan [Kembali]

1. Memahami peran dan fungsi mikrokontroler sebagai pusat pengendalian dalam sistem.
  
2. Menggunakan sensor untuk mendeteksi dan mengukur kondisi greenhouse.

3. Menyusun dan mengintegrasikan komponen mikrokontroler dengan sensor-sensor.

4. Mengimplementasikan mikrokontroler untuk mengontrol perangkat-perangkat secara otomatis.

5. Meningkatkan kontrol dan presisi dalam pengelolaan greenhouse menggunakan otomatisasi mikrokontroler.

3. Alat dan Bahan [Kembali]

a. Alat

  • Power Supply



Spesifikasi :

Input voltage    : 5V-12V
Output voltage  : 5V
Output Current : MAX 3A
Output power   :15W

b. Bahan

  • Arduino UNO



Spesifikasi : 

  • Motor DC


Spesifikasi :

Operating temperature  : -10oC – 60oC
Rated voltage                : 6.0VDC
Rate load                       : 10 g*cm
No-load current             : 70 mA max
No-load speed               : 9100±1800rpm
Loaded current              : 250 A max
Loaded speed                : 4500±1500 rpm
Starting torque              : 20 g*cm
Starting voltage            : 2.0
Stall current                  : 500 mA max
Body size                      : 27.5mm x 20mm x 15mm
Weight                           : 17.5 grams
  • Relay


Spesifikasi : 

Trigger Voltage (Voltage across coil) : 5V DC
Trigger Current (Nominal current)     : 70mA
Maximum AC load current                 : 10A @ 250/125V AC
Maximum DC load current                 : 10A @ 30/28V DC
Compact 5-pin configuration with plastic moulding
Operating time                                    : 10msec Release time: 5msec
Maximum switching                           : 300 operating/minute (mechanicall
  • Baterai 


Spesifikasi :

Input voltage                    : ac 100~240v / dc 10~30v
Output voltage                 : dc 1~35v
Max. Input current           : dc 14a
Charging current              : 0.1~10a
Discharging current         : 0.1~1.0a
Balance current               : 1.5a/cell max
Max. Discharging power : 15w
Max. Charging power     : ac 100w / dc 250w
Jenis batre yg didukung  : life, lilon, lipo 1~6s, lihv 1-6s, pb 1-12s, nimh, cd 1-16s
Ukuran                            : 126x115x49mm
Berat                               : 460gr

  • Dioda
Spesifikasi :


  • Transistor

Spesifikasi :


  • Resistor


Spesifikasi :


  • Sensor Suhu (LM35)

Spesifikasi :

Local sensor accuracy (max)         : 0.5, 1
Operating temperature range (°C) : -55 to 150
Supply voltage (min) (V)              : 4
Supply voltage (max) (V)              : 30
Supply current (max) (µA)            : 114
Interface type                                : Analog output
Sensor gain (mV/°C)                    : 10

  • Kapasitor


  • Spek :


    .

  • Potensiometer




    Spesifikasi:

  •  Induktor 




  • UV sensor

Spesifikasi :

    • Catu Daya : 3.3V/5V
    • Sensor : LTR390-UV-01
    • Communication Bus : I2C (Constant Address: 0x53)
    • Response Spectrum : 280 - 430nm
    • Mounting Hole Size : 2mm
    • Dimensi : 27 x 20mm


  • Rain Sensor










  • Pin1 (VCC): Ini adalah pin 5V DC
  • Pin2 (GND): ini adalah pin GND (ground).
  • Pin3 (DO): Ini adalah pin keluaran rendah/tinggi
  • Pin4 (AO): Ini adalah pin keluaran analog

Spesifikasi

Spesifikasi sensor hujan antara lain sebagai berikut.

  • Modul sensor ini menggunakan bahan dua sisi berkualitas baik.
  • Anti-konduktivitas & oksidasi dengan penggunaan jangka panjang
  • Luas sensor ini berukuran 5cm x 4cm dan dapat dibuat dengan pelat nikel di bagian sampingnya
  • Sensitivitasnya dapat diatur dengan potensiometer
  • Tegangan yang dibutuhkan adalah 5V
  • Ukuran PCB kecil adalah 3,2cm x 1,4cm
  • Untuk memudahkan pemasangan, menggunakan lubang baut
  • Ia menggunakan komparator LM393 dengan tegangan lebar
  • Output dari komparator adalah bentuk gelombang bersih dan kapasitas penggerak di atas 15mA




  • Heater

Spesifikasi :

Ukuran  25 Watt untuk volume air kurang lebih 25 Liter
Ukuran  50 Watt untuk volume air kurang lebih 50 Liter
Ukuran  75 Watt untuk volume air kurang lebih 75 Liter
Ukuran 100 Watt untuk volume air kurang lebih 100 Liter
Ukuran 150 Watt untuk volume air kurang lebih 150 Liter
Ukuran 200 Watt untuk volume air kurang lebih 200 Liter
Ukuran 300 Watt untuk volume air kurang lebih 300 Liter

  • Modul PCF8574
Fitur:
- Antarmuka I2C, modul ekspansi I / O, dua skalabilitas I / O 8 I / O (hingga 8 penggunaan simultan
- PCF8574 diperluas menjadi 64 I / O)

Fitur paling penting:
1. Mendukung dua jenis antarmuka papan target akses: Pin atau kursi baris,
2. Mendukung kaskade bus I2C (dengan metode docking pin header row seat dapat digunakan secara bersamaan beberapa modul I2C)
3. Aplikasi umum: I / O kekurangan sumber daya Ekspansi I / O MCU
4. Sumber daya utama: antarmuka PCF8574 I2C, paralel 8-bit

  • Ground
    Ground Berfungsi sebagai untuk meniadakan beda potensial dengan mengalirkan arus sisa dari kebocoran tegangan atau arus pada rangkaian


  •  LCD 20x4



gambar LCD


4. Dasar Teori [Kembali]
  • Arduino UNO



  • Arduino adalah platform perangkat keras (hardware) yang dirancang untuk memudahkan pengembangan dan prototyping proyek-proyek elektronik. Ini terdiri dari papan sirkuit cetak berukuran kecil yang dilengkapi dengan mikrokontroler dan sejumlah pin input/output yang dapat digunakan untuk menghubungkan sensor, aktuator, dan komponen elektronik lainnya.

    Mikrokontroler pada papan Arduino adalah otak utama yang mengontrol berbagai komponen yang terhubung dengannya. Papan Arduino biasanya dilengkapi dengan berbagai macam varian mikrokontroler dari berbagai produsen, seperti ATmega yang diproduksi oleh Microchip Technology. Meskipun demikian, Arduino lebih sering dikaitkan dengan platform open-source yang dikelola oleh Arduino.cc.

    Arduino memiliki beberapa komponen utama yang membentuk papan sirkuit mikrokontroler. Berikut adalah penjelasan tentang komponen-komponen utama Arduino:

    1. Mikrokontroler: Ini adalah otak utama dari Arduino yang melakukan semua operasi pengolahan data dan kontrol. Arduino menggunakan mikrokontroler sebagai pusat kendali, yang berfungsi untuk membaca input, menjalankan kode program, dan mengontrol output. Beberapa varian Arduino menggunakan mikrokontroler dari berbagai produsen, seperti ATmega yang diproduksi oleh Microchip Technology.
    2. Pin I/O: Arduino memiliki sejumlah pin input/output (I/O) yang digunakan untuk menghubungkan sensor, aktuator, dan komponen lainnya. Pin ini bisa berfungsi sebagai input untuk membaca data dari sensor atau output untuk mengontrol aktuator. Ada pin digital dan pin analog. Pin digital dapat berupa input atau output dengan nilai logika 0 (LOW) atau 1 (HIGH), sementara pin analog digunakan untuk membaca nilai analog seperti sensor suhu atau cahaya.
    3. Papan Sirkuit: Papan Arduino adalah substrat fisik tempat semua komponen terhubung. Papan ini biasanya terbuat dari bahan tahan lama dan dilengkapi dengan jalur tembaga yang menghubungkan komponen-komponen elektronik.
    4. Konektor USB: Banyak varian Arduino dilengkapi dengan konektor USB. Ini memungkinkan Anda untuk menghubungkan papan Arduino ke komputer, sehingga Anda dapat mengunggah kode program ke mikrokontroler dan berkomunikasi dengan papan melalui koneksi serial.
    5. Catu Daya: Arduino memerlukan catu daya untuk beroperasi. Ini bisa berasal dari komputer melalui kabel USB atau dari sumber daya eksternal seperti baterai atau adaptor listrik. Beberapa papan Arduino memiliki regulator tegangan yang memungkinkan papan menerima berbagai tingkat tegangan masukan.
    6. Konektor Listrik: Arduino umumnya memiliki pin header atau konektor yang memungkinkan Anda untuk menghubungkan kabel atau kawat ke pin I/O. Ini memudahkan Anda dalam menghubungkan sensor, aktuator, dan komponen lainnya ke papan Arduino.
    7. Kristal Osilator: Kristal osilator digunakan untuk menghasilkan sinyal osilasi yang diperlukan oleh mikrokontroler untuk menjalankan perhitungan waktu dan operasi lainnya.
    8. Tombol Reset: Tombol reset memungkinkan Anda untuk mengulang proses booting papan Arduino atau menghentikan eksekusi program yang sedang berjalan.
    9. Indikator LED: Beberapa varian Arduino memiliki indikator LED yang terhubung ke pin tertentu. LED ini dapat diatur dalam kode program untuk memberi tahu status atau kondisi papan, seperti aktif atau dalam mode tidur.

    Semua komponen ini bekerja bersama-sama untuk menciptakan platform Arduino yang kuat dan serbaguna untuk mengembangkan berbagai proyek elektronik dan pemrograman.

      • Sensor Suhu LM35
      Sensor suhu LM35 adalah komponen elektronika yang memiliki fungsi untuk mengubah besaran suhu menjadi besaran listrik dalam bentuk tegangan. Sensor Suhu LM35 yang dipakai dalam penelitian ini berupa komponen elektronika elektronika yang diproduksi oleh National Semiconductor. LM35 memiliki keakuratan tinggi dan kemudahan perancangan jika dibandingkan dengan sensor suhu yang lain, LM35 juga mempunyaikeluaran impedansi yang rendah dan linieritas yang tinggi sehingga dapat dengan mudah dihubungkan dengan rangkaian kendali khusus serta tidak memerlukan penyetelan lanjutan.


      IC LM 35 ini tidak memerlukan pengkalibrasian atau penyetelan dari luar karena ketelitiannya sampai lebih kurang seperempat derajat celcius pada temperature ruang. Jangka sensor mulai dari – 55°C sampai dengan 150°C, IC LM35 penggunaannya sangat mudah, difungsikan sebagai kontrol dari indicator tampilan catu daya terbelah. IC LM 35 dapat dialiri arus 60 Î¼ A dari supplay sehingga panas yang ditimbulkan sendiri sangat rendah kurang dari 0 ° C di dalam suhu ruangan. Untuk mendeteksi suhu digunakan sebuah sensor suhu LM35 yang dapat dikalibrasikan langsung dalam C (celcius), LM35 ini difungsikan sebagai basic temperature sensor. 


      Prinsip Kerja LM35 :
      Sensor LM35 bekerja dengan mengubah besaran suhu menjadi besaran tegangan. Tegangan ideal yang keluar dari LM35 mempunyai perbandingan 100°C setara dengan 1 volt. Sensor ini mempunyai pemanasan diri (self heating) kurang dari 0,1°C, dapat dioperasikan dengan menggunakan power supply tunggal dan dapat dihubungkan antar muka (interface) rangkaian control.

      Sensor suhu LM35 mampu melakukan pengukuran suhu dari suhu -55ºC hingga +150ºC dengan toleransi kesalahan pengukuran ±0.5ºC.

      Dilihat dari tipenya range suhu dapat dilihat sebagai berikut :
      • LM35, LM35A -> range pengukuran temperature  -55ºC hingga +150ºC.
      • LM35C, LM35CA -> range pengukuran temperature -40ºC hingga +110ºC.
      • LM35D -> range pengukuran temperature 0ºC hingga +100ºC. 
      Kelebihan LM 35 :
      • Rentang suhu yang jauh, antara -55 sampai +150ºC
      • Low self-heating, sebesar 0.08 ºC
      • Beroperasi pada tegangan 4 sampai 30 V
      • Tidak memerlukan pengkondisian sinyal
      Kekurangan LM 35:
      • Membutuhkan tegangan untuk beroperasi.
      Pin out sensor suhu:

      Grafik:

    • Resistor

    Resistor merupakan salah satu komponen yang digunakan dalam sebuah sirkuit atau rangkaian elektronik. Resistor berfungsi sebagai resistansi/ hambatan yang mampu mengatur atau mengendalikan tegangan dan arus listrik rangkaian. Resistor mempunyai nilai resistansi (tahanan) tertentu yang dapat memproduksi tegangan listrik di antara kedua pin dimana nilai tegangan terhadap resistansi tersebut berbanding lurus dengan arus yang mengalir, berdasarkan persamaan hukum Ohm :

    • Transistor
    Transistor adalah alat semikonduktor yang dipakai sebagai penguat, sebagai sirkuit pemutus dan penyambung arus (switching), stabilisasi tegangan, dan modulasi sinyal. Transistor dapat berfungsi semacam kran listrik, di mana berdasarkan arus inputnya (BJT) atau tegangan inputnya (FET), memungkinkan pengaliran listrik yang sangat akurat dari sirkuit sumber listriknya. Kapasitor NPN memiliki simbol seperti gambar di bawah ini:


    Terdapat rumus rumus dalam mencari transistor seperti rumus di bawah ini:
    Rumus dari Transitor adalah :

    hFE = iC/iB

    dimana, iC = perubahan arus kolektor   

    iB = perubahan arus basis 

    hFE = arus yang dicapai


    Rumus dari Transitor adalah :


    Karakteristik Input
    Transistor adalah komponen aktif yang menggunakan aliran electron sebagai prinsip kerjanya didalam bahan. Sebuah transistor memiliki tiga daerah doped yaitu daerah emitter, daerah basis dan daerah disebut kolektor. Transistor ada dua jenis yaitu NPN dan PNP. Transistor memiliki dua sambungan: satu antara emitter dan basis, dan yang lain antara kolektor dan basis. Karena itu, sebuah transistor seperti dua buah dioda yang saling bertolak belakang yaitu dioda emitter-basis, atau disingkat dengan emitter dioda dan dioda kolektor-basis, atau disingkat dengan dioda kolektor.

    Bagian emitter-basis dari transistor merupakan dioda, maka apabila dioda emitter-basis dibias maju maka kita mengharapkan akan melihat grafik arus terhadap tegangan dioda biasa. Saat tegangan dioda emitter-basis lebih kecil dari potensial barriernya, maka arus basis (Ib) akan kecil. Ketika tegangan dioda melebihi potensial barriernya, arus basis (Ib) akan naik secara cepat.

    Pemberian bias 
            Ada beberapa macam rangkaian pemberian bias, yaitu: 
     1. Fixed bias yaitu, arus bias IB didapat dari VCC yang dihubungkan ke kaki B melewati tahanan R seperti gambar 58. Karakteristik Output.


    2.Self Bias adalah arus input didapatkan dari pemberian tegangan input VBB seperti gambar 60.


  • Sensor UV

Sensor Ultraviolet (Sensor Api) UV Tron adalah sensor yang sering digunakan untuk untuk mendeteksi keberadaan sumber api berdasarkan gelombangultraviolet yang dipancarkan oleh api. Sensor ultraviolet UV Tron ini digunakan untuk keperluan mendeteksi sumber api pada ruangan yang terpasang alat ini.
Radiasi UV dapat dibagi menjadi hampir UV (panjang gelombang: 380–200 nm) dan UV vakum (200–10 nm). Dalam pembicaraan mengenai pengaruh radiasi UV terhadap kesehatan manusia dan lingkungan, jarak panjang gelombang sering dibagi lagi kepada UVA (380–315 nm), yang juga disebut "Gelombang Panjang" atau "blacklight"; UVB (315–280 nm), yang juga disebut "Gelombang Medium" (Medium Wave); dan UVC (280-10 nm), juga disebut "Gelombang Pendek" (Short  Wave).
Radiasi UV dapat dibagi menjadi hampir UV (panjang gelombang: 380–200 nm) dan UV vakum (200–10 nm). Dalam pembicaraan mengenai pengaruh radiasi UV terhadap kesehatan manusia dan lingkungan, jarak panjang gelombang sering dibagi lagi kepada UVA (380–315 nm), yang juga disebut "Gelombang Panjang" atau "blacklight"; UVB (315–280 nm), yang juga disebut "Gelombang Medium" (Medium Wave); dan UVC (280-10 nm), juga disebut "Gelombang Pendek" (Short  Wave).
Sensor api UV-Tron adalah sebuah sensor yang mendeteksi adanya nyala api yang memancarkan sinar ultraviolet. Pancaran cahaya ultraviolet dari sebuah nyala lilin berjarak 5 meter dapat  dideteksi oleh sensor ini. Sensor api UV-Tron adalah sebuah sensor yang mendeteksi adanya nyala api yang memancarkan sinar ultraviolet. Pancaran cahaya ultraviolet dari sebuah nyala lilin berjarak 5 meter dapat  dideteksi oleh sensor ini. Sensor UV-Tron akan mengeluarkan logika high (1) jika ia mendeteksi keberadaan api dan sebaliknya sensor UV-Tron akan mengeluarkan logika low (0) jika ia tidak mendeteksi api. Sensor UV-Tron dapat membaca panjang gelombang dari 185nm sampai  260nm.




  • Rain Sensor


Prinsip kerja dari sensor ini yaitu pada saat ada air hujan turun mengenai panel sensor maka akan terjadi proses elektrolisasi oleh air hujan. Dan karena air hujan termasuk dalam golongan cairan elektrolit yang dimana cairan tersebut akan menghantarkan arus listrik. Pada sensor hujan ini terdapat ic komparator yang dimana output dari sensor ini dapat berupa logika high dan low. Serta pada modul sensor ini terdapat output yang berupa tegangan analog. Sensor ini dapat digunakan untuk memantau kondisi ada tidaknya hujan di lingkungan luar yang dimana output dari sensor ini dapat berupa sinyal analog maupun digital.

Alur tembaga pada pad sensor bertindak seperti potensiometer dimana resistansinya bervariasi berdasarkan jumlah air yang terdeteksi di permukaannya, Jika terdapat banyak air pada permukaan sensor maka konduktivitasnya akan meningkat sehingga resistansinya menurun. Sedangkan jik sedikit air yang terdeteksi pada permukaan sensor maka konduktivitasnya buruk sehingga resistansinya meningkat.

Cara kerja Rain Sensor
Grafik Respon Rain Sensor



  • Heater
    Heater, dalam konteks umum, merujuk pada perangkat yang dirancang untuk menghasilkan panas dan meningkatkan suhu dalam suatu ruangan atau sistem tertentu. Biasanya menggunakan elemen pemanas, seperti kawat pemanas atau elemen pemanas keramik, heater mengubah energi listrik menjadi panas yang dipancarkan ke sekitarnya. Penggunaan heater dapat bervariasi dari pemanas ruangan untuk kenyamanan termal di rumah atau kantor hingga aplikasi industri yang memerlukan kontrol suhu yang ketat. Selain itu, heater juga dapat menjadi bagian dari berbagai perangkat, termasuk peralatan laboratorium, mesin, atau alat elektronik yang memerlukan suhu tertentu untuk beroperasi secara optimal.

    Prinsip Kerja
    Prinsip kerja heater didasarkan pada konsep transformasi energi listrik menjadi panas. Biasanya, heater dilengkapi dengan elemen pemanas, seperti kawat pemanas atau elemen pemanas keramik, yang memiliki resistansi listrik tinggi. Ketika arus listrik mengalir melalui elemen pemanas ini, resistansi menyebabkan pemanasan, dan energi listrik diubah menjadi panas. Panas yang dihasilkan kemudian dipancarkan ke lingkungan sekitarnya, meningkatkan suhu di sekitar heater. Prinsip ini digunakan baik dalam pemanas ruangan konvensional maupun dalam berbagai aplikasi industri di mana kontrol suhu adalah faktor kritis. Beberapa heater juga dilengkapi dengan sensor suhu atau termostat untuk memantau dan mengatur suhu, memastikan kenyamanan atau kestabilan suhu yang diinginkan sesuai dengan kebutuhan pengguna atau spesifikasi aplikasi.
  • Baterai
Baterai (Battery) adalah sebuah alat yang dapat merubah energi kimia yang disimpannya menjadi energi Listrik yang dapat digunakan oleh suatu perangkat Elektronik. Hampir semua perangkat elektronik yang portabel seperti Handphone, Laptop, Senter, ataupun Remote Control menggunakan Baterai sebagai sumber listriknya. Dengan adanya Baterai, kita tidak perlu menyambungkan kabel listrik untuk dapat mengaktifkan perangkat elektronik kita sehingga dapat dengan mudah dibawa kemana-mana. Dalam kehidupan kita sehari-hari, kita dapat menemui dua jenis Baterai yaitu Baterai yang hanya dapat dipakai sekali saja (Single Use) dan Baterai yang dapat di isi ulang (Rechargeable). Baterai simbol seperti gambar di bawah ini:

Gambar Baterai pada Proteus

  • LCD 20x4
LCD (Liquid Crystal Display) merupakan komponen elektronika yang berfungsi untuk menampilkan suatu data dapat berupa karakter, huruf, symbol maupun grafik. Karena ukurannya yang kecil maka LCD banyak dipasangkan dengan Mikrokontroller. LCD tersedia dalam bentuk modul yang mempunyai pin data, control catu daya, dan pengatur kontras tampilan.
gambar LCD 20x4
spesifikasi LCD 20x4

  • Modul PCF8574

    Merupakan modul expansion board untuk mengatur hingga 8 pin I/O. menggunakan komunikasi secara I2C, artinya dengan 2 pin (SDA/SCL) maka kita dapat mengatur hingga 8 pin yg dapat dijadikan input output. modul ini juga dapat di cascade, hingga 8 modul atau hingga 64 pin input output.
  • Ground
Ground Berfungsi sebagai untuk meniadakan beda potensial dengan mengalirkan arus sisa dari kebocoran tegangan atau arus pada rangkaian.

Rangkaian Reset Arduino
 Rangkaian ini berguna bagi mengembalikan program sistem mikrokontroler ke nilai awalnya (Address Memory = 0). Dengan demikian, jika terdapat kesalahan atau gangguan pada saat menjalankan program, dapat diulang kembali dengan menekan saklar reset ini.
Rangkaian Reset di atas akan aktif ketika diberi logika HIGH(aktif high)



5. Percobaan [Kembali]

A. Prosedur [Kembali]

1) Download library yang diperlukan (dapat dilihat pada bagian download dalam blog)     
2) Buka proteus yang sudah diinstal untuk membuat rangkaian.
3) Tambahkan komponen seperti Arduino, sensor, dan perangkat lainnya lalu susun menjadi rangkaian.
4) Buka Arduino IDE yang sudah diinstal.
5) Di Arduino IDE, pergi ke menu "File" > "Preferences".
6) Pastikan opsi "Show verbose during compile" dicentang untuk mendapatkan informasi detail saat kompilasi.
7) Salin kode program Arduino pada blog kemudian tempelkan program tadi ke Arduino IDE.
8) Kompilasikan kode dengan menekan tombol "Verify" di Arduino IDE.
9) Cari dan salin path file HEX yang dihasilkan selama proses kompilasi.
10) Kembali ke Proteus dan pilih Arduino yang telah Anda tambahkan di rangkaian.
11) Buka opsi "Program File" dan tempelkan path HEX yang telah Anda salin dari Arduino IDE.
l2) Jalankan simulasi di Proteus

B. Hardware dan Diagram Blok [Kembali]



C. Rangkaian Simulasi dan Prinsip Kerja [Kembali]


Prinsip Kerja


Rangkaian sensor lingkungan yang terdiri dari sensor suhu, sensor cahaya, dan sensor hujan dapat diaplikasikan dalam sebuah greenhouse untuk mengontrol kondisi lingkungan bagi tanaman selada. Alur kerja rangkaian ini dimulai dengan pengambilan data oleh sensor-suatu suhu yang mengukur suhu di dalam greenhouse. Data suhu ini kemudian diproses, dan jika suhu dianggap kurang optimal, sistem dapat mengaktifkan penghangat atau pendingin secara otomatis. Selanjutnya, sensor cahaya akan mengukur intensitas cahaya di sekitar tanaman selada. Jika intensitas cahaya alami tidak mencukupi, sistem dapat mengaktifkan lampu tambahan untuk memberikan pencahayaan yang cukup untuk tanaman.

Selain itu, sensor hujan akan mendeteksi keberadaan hujan. Jika sensor hujan mendeteksi hujan, sistem dapat mengatur penutup atap greenhouse secara otomatis untuk melindungi tanaman dari hujan berlebihan. Semua informasi ini kemudian ditampilkan pada layar LCD, memberikan informasi visual tentang kondisi lingkungan kepada pengguna. Dengan demikian, rangkaian ini berfungsi sebagai sistem kendali otomatis untuk menciptakan lingkungan optimal bagi pertumbuhan tanaman selada dalam greenhouse, memastikan tanaman menerima kondisi yang sesuai untuk pertumbuhan yang maksimal.


D. Flowchart dan Listing Program [Kembali]

a). Flowchart

PENGIRIM





PENERIMA

b). Listing Program

PENGIRIM

#include <LiquidCrystal_I2C.h>

const int suhuPin = A0;   // Pin sensor suhu (analog)

const int apdsPin = A1;   // Pin sensor APDS-9002 (analog)

const int hujanPin = 2;   // Pin sensor hujan (digital)

LiquidCrystal_I2C lcd(0x27, 20, 4);  // Alamat I2C dan ukuran LCD (20 kolom, 4 baris)

void setup() {

  Serial.begin(9600);  // Inisialisasi port serial

  lcd.begin(20, 4);    // Inisialisasi LCD

  pinMode(suhuPin, INPUT);

  pinMode(apdsPin, INPUT);

  pinMode(hujanPin, INPUT);

}

void loop() {

  // Baca nilai sensor

  int suhuValue = analogRead(suhuPin);

  int apdsValue = analogRead(apdsPin);

  int hujanValue = digitalRead(hujanPin);

  // Konversi nilai analog ke nilai fisik

  float suhuMv = (suhuValue / 1024.0) * 5000; // Konversi ke mV

  float suhuCelsius = suhuMv / 10; // Konversi ke derajat Celsius

  float apdsVoltage = apdsValue * (5.0 / 1023.0); // Konversi ke volt

  float apdsMv = apdsVoltage * 1000; // Konversi ke milivolt

  // Tentukan kondisi waktu berdasarkan nilai APDS-9002

  String kondisiWaktu;

  if (apdsMv < 5) {

    kondisiWaktu = "Malam";

  } else if (apdsMv >= 5 && apdsMv <= 650) {

    kondisiWaktu = "Pagi";

  } else {

    kondisiWaktu = "Siang";

  }

  // Kirim data melalui port serial

  Serial.print("Suhu=");

  Serial.print(suhuCelsius);

  Serial.print("°C;Lux=");

  Serial.print(apdsMv);

  Serial.print(" mV;Hujan=");

  Serial.print(hujanValue);

  Serial.print(";Waktu=");

  Serial.println(kondisiWaktu);

  // Tampilkan data di LCD

  lcd.clear();

  lcd.setCursor(0, 0);

  lcd.print("Suhu: ");

  lcd.print(suhuCelsius);

  lcd.print("C");

  lcd.setCursor(0, 1);

  lcd.print("Lux: ");

  lcd.print(apdsMv);

  lcd.print("mV");

  lcd.setCursor(0, 2);

  lcd.print("Hujan: ");

  lcd.print(hujanValue == 1 ? "Ya" : "Tidak");

  lcd.setCursor(0, 3);

  lcd.print("Waktu: ");

  lcd.print(kondisiWaktu);

  delay(1000);  // Tunda selama 1 detik

}


PENERIMA

#include <LiquidCrystal_I2C.h>

int penghangatPin = 8;    // Pin penghangat

int pendinginPin = 9;     // Pin pendingin

int motorPin = 10;        // Pin motor penutup bak

int lampuPin = 11;        // Pin lampu

LiquidCrystal_I2C lcd(0x27, 20, 4);  // Alamat I2C dan ukuran LCD (20 kolom, 4 baris)

void setup() {

  Serial.begin(9600);  // Inisialisasi port serial

  lcd.begin(20, 4);    // Inisialisasi LCD

  pinMode(penghangatPin, OUTPUT);

  pinMode(pendinginPin, OUTPUT);

  pinMode(motorPin, OUTPUT);

  pinMode(lampuPin, OUTPUT);

}

void loop() {

  if (Serial.available() > 0) {

    // Baca data dari port serial

    String data = Serial.readStringUntil('\n');

    // Pisahkan data menjadi tiga bagian: Suhu, Lux, dan Hujan

    int suhuStart = data.indexOf("Suhu=") + 5;

    int suhuEnd = data.indexOf("°C;");

    String suhuData = data.substring(suhuStart, suhuEnd);   

    int luxStart = data.indexOf("Lux=") + 4;

    int luxEnd = data.indexOf(" mV;");

    String luxData = data.substring(luxStart, luxEnd);

    String hujanData = data.substring(data.indexOf("Hujan=") + 6);

    String waktuData = data.substring(data.indexOf("Waktu=") + 6);

    // Konversi data menjadi nilai float dan integer

    float suhuValue = suhuData.toFloat();

    float luxValue = luxData.toFloat();

    int hujanValue = hujanData.toInt();

    // Kontrol perangkat berdasarkan kondisi suhu

    if (suhuValue < 18) {

      digitalWrite(penghangatPin, HIGH);  // Penghangat hidup

      digitalWrite(pendinginPin, LOW);    // Pendingin mati

    } else if (suhuValue > 25) {

      digitalWrite(penghangatPin, LOW);    // Penghangat mati

      digitalWrite(pendinginPin, HIGH);   // Pendingin hidup

    } else {

      digitalWrite(penghangatPin, LOW);    // Penghangat mati

      digitalWrite(pendinginPin, LOW);    // Pendingin mati

    }

    if (hujanValue == 1) {

      digitalWrite(motorPin, HIGH);  // Buka penutup bak jika hujan

    } else {

      digitalWrite(motorPin, LOW);   // Tutup penutup bak jika tidak hujan

    }

    // Kontrol lampu berdasarkan waktu (misalnya, deteksi malam)

    // Kamu perlu menyesuaikan kode berdasarkan logika waktu yang sesuai dengan kondisi malam dan pagi

    // Dalam contoh ini, lampu menyala jika nilai Lux rendah (mendekati gelap)

    if (luxValue < 5) {

      digitalWrite(lampuPin, HIGH);  // Lampu menyala pada malam hari

    } else {

      digitalWrite(lampuPin, LOW);   // Lampu mati pada pagi hari

    }

    // Tampilkan data di LCD

    lcd.clear();

    lcd.setCursor(0, 0);

    lcd.print("Penghangat: ");

    lcd.print(digitalRead(penghangatPin) == HIGH ? "Hidup" : "Mati");

    lcd.setCursor(0, 1);

    lcd.print("Pendingin: ");

    lcd.print(digitalRead(pendinginPin) == HIGH ? "Hidup" : "Mati");

    lcd.setCursor(0, 2);

    lcd.print("Penutup: ");

    lcd.print(digitalRead(motorPin) == HIGH ? "Terbuka" : "Tertutup");

    lcd.setCursor(0, 3);

    lcd.print("Lampu: ");

    lcd.print(digitalRead(lampuPin) == HIGH ? "Hidup" : "Mati");

  }

}

PENJELASAN PROGRAM

PENGIRIM

Include pustaka LiquidCrystal_I2C untuk mengaktifkan LCD dengan koneksi I2C.

#include <LiquidCrystal_I2C.h>


Deklarasikan variabel konstanta untuk nomor pin sensor suhu, APDS-9002, dan sensor hujan.

const int suhuPin = A0;   // Pin sensor suhu (analog)

const int apdsPin = A1;   // Pin sensor APDS-9002 (analog)

const int hujanPin = 2;   // Pin sensor hujan (digital)


Buat objek LCD dari kelas LiquidCrystal_I2C dengan menginisialisasi alamat I2C dan ukuran LCD.

LiquidCrystal_I2C lcd(0x27, 20, 4);  // Alamat I2C dan ukuran LCD (20 kolom, 4 baris)


Fungsi setup() yang dieksekusi sekali pada awal program. Inisialisasi port serial dan LCD, serta set mode pin sensor sebagai input.

void setup() {

  Serial.begin(9600);  // Inisialisasi port serial

  lcd.begin(20, 4);    // Inisialisasi LCD


  pinMode(suhuPin, INPUT);

  pinMode(apdsPin, INPUT);

  pinMode(hujanPin, INPUT);

}


Fungsi loop() yang dieksekusi secara berulang. Baca nilai sensor suhu, APDS-9002, dan hujan.

void loop() {

  // Baca nilai sensor

  int suhuValue = analogRead(suhuPin);

  int apdsValue = analogRead(apdsPin);

  int hujanValue = digitalRead(hujanPin);


Konversi nilai analog sensor suhu ke mV dan derajat Celsius.

  // Konversi nilai analog ke nilai fisik

  float suhuMv = (suhuValue / 1024.0) * 5000; // Konversi ke mV

  float suhuCelsius = suhuMv / 10; // Konversi ke derajat Celsius


Konversi nilai analog sensor APDS-9002 ke volt dan milivolt.

  float apdsVoltage = apdsValue * (5.0 / 1023.0); // Konversi ke volt

  float apdsMv = apdsVoltage * 1000; // Konversi ke milivolt


Tentukan kondisi waktu berdasarkan nilai milivolt sensor APDS-9002.

  // Tentukan kondisi waktu berdasarkan nilai APDS-9002

  String kondisiWaktu;

  if (apdsMv < 5) {

    kondisiWaktu = "Malam";

  } else if (apdsMv >= 5 && apdsMv <= 650) {

    kondisiWaktu = "Pagi";

  } else {

    kondisiWaktu = "Siang";

  }


Kirim data sensor melalui port serial untuk pemantauan. Data mencakup nilai suhu, lux, status hujan, dan kondisi waktu.

  // Kirim data melalui port serial

  Serial.print("Suhu=");

  Serial.print(suhuCelsius);

  Serial.print("°C;Lux=");

  Serial.print(apdsMv);

  Serial.print(" mV;Hujan=");

  Serial.print(hujanValue);

  Serial.print(";Waktu=");

  Serial.println(kondisiWaktu);


Tampilkan data sensor pada LCD. Setiap baris LCD menampilkan informasi suhu, lux, status hujan, dan kondisi waktu.

  // Tampilkan data di LCD

  lcd.clear();

  lcd.setCursor(0, 0);

  lcd.print("Suhu: ");

  lcd.print(suhuCelsius);

  lcd.print("C");


  lcd.setCursor(0, 1);

  lcd.print("Lux: ");

  lcd.print(apdsMv);

  lcd.print("mV");


  lcd.setCursor(0, 2);

  lcd.print("Hujan: ");

  lcd.print(hujanValue == 1 ? "Ya" : "Tidak");


  lcd.setCursor(0, 3);

  lcd.print("Waktu: ");

  lcd.print(kondisiWaktu);


Beri jeda 1 detik untuk mengontrol frekuensi pembacaan sensor dan tampilan LCD.

  delay(1000);  // Tunda selama 1 detik

}


PENERIMA

Include pustaka LiquidCrystal_I2C untuk mengaktifkan LCD dengan koneksi I2C.

#include <LiquidCrystal_I2C.h>


Deklarasikan variabel untuk nomor pin perangkat seperti penghangat, pendingin, motor penutup bak, dan lampu.

int penghangatPin = 8;    // Pin penghangat

int pendinginPin = 9;     // Pin pendingin

int motorPin = 10;        // Pin motor penutup bak

int lampuPin = 11;        // Pin lampu


Buat objek LCD dari kelas LiquidCrystal_I2C dengan menginisialisasi alamat I2C dan ukuran LCD.

LiquidCrystal_I2C lcd(0x27, 20, 4);  // Alamat I2C dan ukuran LCD (20 kolom, 4 baris)


Fungsi setup() yang dieksekusi sekali pada awal program. Inisialisasi port serial dan LCD, serta set mode pin perangkat sebagai output.

void setup() {

  Serial.begin(9600);  // Inisialisasi port serial

  lcd.begin(20, 4);    // Inisialisasi LCD

  pinMode(penghangatPin, OUTPUT);

  pinMode(pendinginPin, OUTPUT);

  pinMode(motorPin, OUTPUT);

  pinMode(lampuPin, OUTPUT);

}


Fungsi loop() yang dieksekusi secara berulang. Baca data dari port serial hingga karakter baris baru ('\n').

void loop() {

  if (Serial.available() > 0) {

    // Baca data dari port serial

    String data = Serial.readStringUntil('\n');


Pisahkan data menjadi tiga bagian: suhu, lux, dan hujan.

    // Pisahkan data menjadi tiga bagian: Suhu, Lux, dan Hujan

    int suhuStart = data.indexOf("Suhu=") + 5;

    int suhuEnd = data.indexOf("°C;");

    String suhuData = data.substring(suhuStart, suhuEnd);

    

    int luxStart = data.indexOf("Lux=") + 4;

    int luxEnd = data.indexOf(" mV;");

    String luxData = data.substring(luxStart, luxEnd);

    String hujanData = data.substring(data.indexOf("Hujan=") + 6);

    String waktuData = data.substring(data.indexOf("Waktu=") + 6);


Konversi data menjadi nilai float dan integer.

    // Konversi data menjadi nilai float dan integer

    float suhuValue = suhuData.toFloat();

    float luxValue = luxData.toFloat();

    int hujanValue = hujanData.toInt();


Kontrol perangkat berdasarkan kondisi suhu. Penghangat dihidupkan jika suhu kurang dari 18 derajat Celsius, dan pendingin dihidupkan jika suhu lebih dari 25 derajat Celsius.

    // Kontrol perangkat berdasarkan kondisi suhu

    if (suhuValue < 18) {

      digitalWrite(penghangatPin, HIGH);  // Penghangat hidup

      digitalWrite(pendinginPin, LOW);    // Pendingin mati

    } else if (suhuValue > 25) {

      digitalWrite(penghangatPin, LOW);    // Penghangat mati

      digitalWrite(pendinginPin, HIGH);   // Pendingin hidup

    } else {

      digitalWrite(penghangatPin, LOW);    // Penghangat mati

      digitalWrite(pendinginPin, LOW);    // Pendingin mati

    }


Kontrol motor penutup bak berdasarkan kondisi hujan. Motor dibuka jika mendeteksi hujan.

    if (hujanValue == 1) {

      digitalWrite(motorPin, HIGH);  // Buka penutup bak jika hujan

    } else {

      digitalWrite(motorPin, LOW);   // Tutup penutup bak jika tidak hujan

    }

    

Kontrol lampu berdasarkan waktu. Pada contoh ini, lampu menyala jika nilai lux rendah (mendekati gelap).

    // Kontrol lampu berdasarkan waktu (misalnya, deteksi malam)

    // Kamu perlu menyesuaikan kode berdasarkan logika waktu yang sesuai dengan kondisi malam dan pagi

    // Dalam contoh ini, lampu menyala jika nilai Lux rendah (mendekati gelap)

    if (luxValue < 5) {

      digitalWrite(lampuPin, HIGH);  // Lampu menyala pada malam hari

    } else {

      digitalWrite(lampuPin, LOW);   // Lampu mati pada pagi hari

    }


Tampilkan data di LCD berdasarkan status perangkat. Informasi mengenai status penghangat, pendingin, penutup bak, dan lampu ditampilkan pada setiap baris LCD.

    // Tampilkan data di LCD

    lcd.clear();

    lcd.setCursor(0, 0);

    lcd.print("Penghangat: ");

    lcd.print(digitalRead(penghangatPin) == HIGH ? "Hidup" : "Mati");


    lcd.setCursor(0, 1);

    lcd.print("Pendingin: ");

    lcd.print(digitalRead(pendinginPin) == HIGH ? "Hidup" : "Mati");


    lcd.setCursor(0, 2);

    lcd.print("Penutup: ");

    lcd.print(digitalRead(motorPin) == HIGH ? "Terbuka" : "Tertutup");


    lcd.setCursor(0, 3);

    lcd.print("Lampu: ");

    lcd.print(digitalRead(lampuPin) == HIGH ? "Hidup" : "Mati");

  }

}

E. Kondisi [Kembali]

1.  Suhu Terlalu Rendah:

   -  Kondisi:  Suhu di dalam greenhouse turun di bawah batas yang diinginkan untuk tanaman selada.

   -  Alur Kerja:

     - Sensor suhu mendeteksi suhu rendah.

     - Sistem mengaktifkan penghangat secara otomatis.

     - Layar LCD menampilkan informasi bahwa penghangat telah dihidupkan.

 

2.  Suhu Terlalu Tinggi:

   -  Kondisi:  Suhu di dalam greenhouse melebihi batas yang diinginkan untuk tanaman selada.

   -  Alur Kerja:

     - Sensor suhu mendeteksi suhu tinggi.

     - Sistem mengaktifkan pendingin secara otomatis.

     - Layar LCD menampilkan informasi bahwa pendingin telah dihidupkan.

 

3.  Cahaya Kurang:

   -  Kondisi:  Intensitas cahaya alami di dalam greenhouse tidak mencukupi.

   -  Alur Kerja:

     - Sensor cahaya mendeteksi rendahnya intensitas cahaya.

     - Sistem mengaktifkan lampu tambahan secara otomatis.

     - Layar LCD menampilkan informasi bahwa lampu telah dihidupkan.

 

4.  Hujan Lebat:

   -  Kondisi:  Sensor hujan mendeteksi curah hujan yang tinggi.

   -  Alur Kerja:

     - Sistem menutup penutup atap greenhouse secara otomatis untuk melindungi tanaman dari hujan berlebihan.

     - Layar LCD menampilkan informasi bahwa penutup atap telah ditutup.

 

5.  Hujan Ringan atau Tidak Ada Hujan:

   -  Kondisi:  Sensor hujan tidak mendeteksi hujan.

   -  Alur Kerja:

     - Sistem menjaga penutup atap greenhouse terbuka.

     - Layar LCD menampilkan informasi bahwa tanaman tidak terkena hujan.


F. Video Simulasi [Kembali]



G. Download File [Kembali]




































Entri yang Diunggulkan

MODUL 4

Modul 4 [menuju akhir] [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Pendahuluan 2. Tujuan 3. Alat dan Bahan 4. Dasar Teori 5. Percobaan Percob...