LA M4





1. Pendahuluan
[Kembali]

Terarium, sebuah miniatur ekosistem yang dibuat dalam wadah kaca, telah lama digunakan sebagai media pembelajaran dan penelitian lingkungan hidup. Terarium dapat berisi berbagai jenis tanaman serta memiliki fungsi sebagai miniatur ekosistem. Dalam beberapa tahun terakhir, terarium telah menjadi sangat populer di kalangan masyarakat urban, terutama di Bandung, yang memiliki berbagai jenis terarium yang dapat dibeli secara lengkap atau dibuat sendiri dengan bahan-bahan yang tersedia. Namun, dalam beberapa tahun terakhir, terarium telah mengalami beberapa masalah, seperti keterbatasan bahan dan kesulitan dalam mencari media pembelajaran yang lebih mudah dan menyenangkan. Oleh karena itu, perlu dibuat sistem kontrol yang lebih efektif dan efisien untuk mengatur suhu dan kelembaban dalam terarium, sehingga dapat memastikan keselamatan dan kesehatan tanaman serta hewan yang berada di dalamnya. Sistem ini diharapkan dapat membantu masyarakat memahami peranan dan fungsi ekosistem alam lebih baik dan juga dapat membantu dalam mengatur suhu dan kelembaban dalam terarium dengan lebih efektif dan efisien.


2. Tujuan [Kembali]

  • Memenuhi tugas project demo Modul 4 Praktikum Mikroprosesor dan Mikrokontroller 
  • Mampu merangkai suatu alat berupa project demo berdasarkan materi yang dipelajari pada modul-modul sebelumnya 
  • Mampu membuat prototype project demo dan simulasi rangkaian project demo pada aplikasi proteus 
  • Mampu menjelaskan prinsip kerja rangkaian project demo kontrol Monitoring LingkunganTerarium

3. Alat dan Bahan [Kembali]

3.1 Alat


· Breadboard

 

· Kabel USB

 

· Kabel Jumper 


    3.2 Bahan

    

· Resistor



 

· Arduino Uno



· Komponen Input

1.   Modul LDR

2.  Touch Sensor




3.   Dht11



 

4.  Soil Masture



 

5.   MQ-135 Sensor

         

· Komponen Output

1.   Motor Servo

2.   LCD

 

3.  Door Lock




4.   Selenoid Valve

 


4. Dasar Teori [Kembali]

a. PWM (Pulse Width Modulation)

PWM atau kepanjangan Pulse Width Modulation, dalam bahasa Indonesia biasa disebut Modulasi Lebar Pulsa. Pada prinsipnya, PWM adalah salah satu teknik modulasi yang mengubah lebar pulsa (pulse width) dengan nilai frekuensi dan amplitudo (tinggi pulsa) yang tetap. PWM Signal ini digunakan menghasilkan sinyal analog dari perangkat Digital yang salah satu contohnya adalah dari Mikrokontroler.

Pembagian Pin PWM:

 

Setiap Board Arduino memiliki pin PWM dan nilai frekuensi yang berbeda-beda. Karena pada percobaan nanti kita akan menggunakan board arduino nano, maka gunakan salah satu dari pin berikut 3, 5, 6, 9, 10, 11.

 

PWM pada arduino bekerja pada frekuensi 500Hz, artinya 500 siklus/ketukan dalam satu detik. Untuk setiap siklus, kita bisa memberi nilai dari 0 hingga 255. Ketika kita memberikan angka 0, berarti pada pin tersebut tidak akan pernah bernilai 5 volt (pin selalu bernilai 0 volt). Sedangkan jika kita memberikan nilai 255, maka sepanjang siklus akan bernilai 5 volt (tidak pernah 0 volt). Jika kita memberikan nilai 127 (kita anggap setengah

 

dari 0 hingga 255, atau 50% dari 255), maka setengah siklus akan bernilai 5 volt, dan setengah siklus lagi akan bernilai 0 volt. Sedangkan jika jika memberikan 25% dari 255 (1/4 * 255 atau 64), maka 1/4 siklus akan bernilai 5 volt, dan 3/4 sisanya akan bernilai 0 volt, dan ini akan terjadi 500 kali dalam 1 detik.

 

b. ADC (Analog to Digital Converter)

ADC atau Analog to Digital Converter merupakan salah satu perangkat elektronika yang digunakan sebagai penghubung dalam pemrosesan sinyal analog oleh sistem digital. Fungsi utama dari fitur ini adalah mengubah sinyal masukan yang masih dalam bentuk sinyal analog menjadi sinyal digital dengan bentuk kode-kode digital. Ada 2 faktor yang perlu diperhatikan pada proses kerja ADC yaitu kecepatan sampling dan resolusi. Kecepatan sampling menyatakan seberapa sering perangkat mampu mengkonversi sinyal analog ke dalam bentuk sinyal digital dalam selang waktu yang tertentu. Biasa dinyatakan dalam sample per second (SPS). Sementara Resolusi menyatakan tingkat ketelitian yang dimilliki. Pada Arduino, resolusi yang dimiliki adalah 10 bit atau rentang nilai digital antara 0 - 1023. Dan pada Arduino tegangan referensi yang digunakan adalah 5 volt, hal ini berarti ADC pada Arduino mampu menangani sinyal analog dengan tegangan 0 - 5 volt. Pada Arduino, menggunakan pin analog input yang diawali dengan kode A( A0- A5 padaArduino Uno). Fungsi untuk mengambil data sinyal input analog menggunakan analogRead(pin);

 


c. Mikrokontroler

Mikrokontroler adalah suatu chip berupa IC (Integrated Circuit) yang dapat menerima sinyal input, mengolahnya dan memberikan sinyal output sesuai dengan program yang diisikan ke dalamnya. Sinyal input mikrokontroler berasal dari sensor yang merupakan informasi dari lingkungan sedangkan sinyal output ditujukan kepada aktuator yang dapat memberikan efek ke lingkungan. Jadi secara sederhana mikrokontroler dapat diibaratkan sebagai otak dari suatu perangkat/produk yang mempu berinteraksi dengan lingkungan sekitarnya. Mikrokontroler pada dasarnya adalah komputer dalam satu chip, yang di dalamnya terdapat mikroprosesor, memori, jalur Input/Output (I/O) dan perangkat pelengkap lainnya. Kecepatan pengolahan data pada mikrokontroler lebih rendah jika dibandingkan dengan PC. Pada PC kecepatan mikroprosesor yang digunakan saat ini telah mencapai orde GHz, sedangkan kecepatan operasi mikrokontroler pada umumnya berkisar antara 1 – 16 MHz. Begitu juga kapasitas RAM dan ROM pada PC yang bisa mencapai orde Gbyte, dibandingkan dengan mikrokontroler yang hanya berkisar pada orde byte/Kbyte.

Meskipun kecepatan pengolahan data dan kapasitas memori pada mikrokontroler jauh lebih kecil jika dibandingkan dengan komputer personal, namun kemampuan mikrokontroler sudah cukup untuk dapat digunakan pada banyak aplikasi terutama karena ukurannya yang kompak. Mikrokontroler sering digunakan pada sistem yang tidak terlalu kompleks dan tidak memerlukan kemampuan komputasi yang tinggi.

 


d. Komunikasi

Kegunaan dasar dari sistem komunikasi adalah menjalankan pertukaran data antara dua pihak. Pada gambar dibawah ini merupakan suatu model komunikasi yang sederhana yaitu komunikasi dua arah. Pada mikrokontroler ada beberapa komunikasi yaitu:

• UART (Universal Asynchronous Receiver-Transmitter) adalah bagian perangkat keras komputer yang menerjemahkan antara bit-bit paralel data dan bit-bit serial. UART biasanya berupa sirkuit terintegrasi yang digunakan untuk komunikasi serial pada komputer atau port serial perangkat peripheral.


Cara kerja komunikasi UART:

Data dikirimkan secara paralel dari data bus ke UART1. Pada UART1 ditambahkan start bit, parity bit, dan stop bit kemudian dimuat dalam satu paket data. Paket data ditransmisikan secara serial dari Tx UART1 ke Rx UART2. UART2 mengkonversikan data dan menghapus bit tambahan, kemudia di transfer secara parallel ke data bus penerima

• Serial Peripheral Interface (SPI) merupakan salah satu mode komunikasi serial synchrounous kecepatan tinggi yang dimiliki oleh ATmega 328. Komunikasi SPI membutuhkan 3 jalur yaituMOSI, MISO, dan SCK. Melalui komunikasi ini data dapat saling dikirimkan baik antara mikrokontroller maupun antara mikrokontroller dengan peripheral lain di luar mikrokontroler. MOSI: Master Output Slave Input Artinya jika dikonfigurasi sebagai master maka pin MOSI sebagai output tetapi jika dikonfigurasi sebagai slave maka pin MOSI sebagai input. MISO: Master Input Slave Output Artinya jika dikonfigurasi sebagai master maka pin MISO sebagai input tetapi jika dikonfigurasi sebagai slave maka pin MISO sebagai output. SCLK: Clock Jika dikonfigurasi sebagai master maka pin CLK berlaku sebagai output tetapi jika

 

dikonfigurasi sebagai slave maka pin CLK berlaku sebagai input. SS/CS: Slave Select/ Chip Select adalah jalur master memilih slave mana yang akan dikirimkan data.


Sinyal clock dialirkan dari master ke slave yang berfungsi untuk sinkronisasi. Master dapat memilih slave mana yang akan dikirimkan data melalui slave select, kemudian data dikirimkan dari master ke slave melalui MOSI. Jika master butuh respon data maka slave akan mentransfer data ke master melalui MISO.

 

• Inter Integrated Circuit atau sering disebut I2C adalah standar komunikasi serial dua arahmenggunakan dua saluran yang didisain khusus untuk mengirim maupun menerima data. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang membawa informasi data antara I2C dengan pengontrolnya.

Pada I2C, data ditransfer dalam bentuk message yang terdiri dari kondisi start, Address Frame, R/W bit, ACK/NACK bit, Data Frame 1, Data Frame 2, dan kondisi Stop. Kondisi start dimana saat pada SDA beralih dari logika high ke low sebelum SCL.Kondisi stop dimana saat pada SDA beralih dari logika low ke high sebelum SCL. R/W bit berfungsi untuk menentukan apakah master mengirim data ke slave atau meminta data dari slave. (logika 0 = mengirim data ke slave, logika 1 = meminta data dari slave) ACK/NACK bit berfungsi sebagai pemberi kabar jika data frame ataupun address frame telahditerima receiver.

 eBaterai 

 

         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).

 

f. Resistor

 



 

Simbol :



Resistor adalah komponen Elektronika Pasif yang memiliki nilai resistansi atau hambatan tertentu yang berfungsi untuk membatasi dan mengatur arus listrik dalam suatu rangkaian Elektronika (V=I R).

Jenis Resistor yang digunakan disini adalah Fixed Resistor, dimana merupakan resistor dengan nilai tetap terdiri dari film tipis karbon yang diendapkan subtrat isolator kemudian dipotong berbentuk spiral. Keuntungan jenis fixed resistor ini dapat menghasilkan resistor dengan toleransi yang lebih rendah.

Cara menghitung nilai resistor:

Tabel warna



Contoh :

Gelang ke 1 : Coklat = 1

Gelang ke 2 : Hitam = 0

Gelang ke 3 : Hijau   = 5 nol dibelakang angka gelang ke-2; atau kalikan 105

Gelang ke 4 : Perak  = Toleransi 10%

Maka nilai resistor tersebut adalah 10 * 105 = 1.000.000 Ohm atau 1 MOhm dengan toleransi 10%.



 

 


    g Arduino Uno

 

Arduino adalah kit elektronik atau papan rangkaian elektronik open source yang di dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Atmel. Arduino yang kita gunakan dalam praktikum ini adalah Arduino Uno yang menggunakan chip AVR ATmega 328P. Dalam memprogram Arduino, kita bisa menggunakan komunikasi serial agar Arduino dapat berhubungan dengan komputer ataupun perangkat lain.

Adapun spesifikasi dari Arduino Uno ini adalah sebagai berikut:

Gambar Arduino


Microcontroller                                ATmega328P

Operating Voltage                           5 V

Input Voltage (recommended)          7 – 12 V

Input Voltage (limit)                        6 – 20 V

Digital I/O Pins                               14 (of which 6 provide PWM output)

PWM Digital I/O Pins                        6

Analog Input Pins                            6

DC Current per I/O Pin                    20 mA

DC Current for 3.3V Pin                    50 mA

Flash Memory                                  32 KB of which 0.5 KB used by bootloader

SRAM                                              2 KB

EEPROM                                          1 KB

Clock Speed                                    16 MHz

 

Bagian-Bagian Arduino UNO:

·                Power USB

Digunakan untuk menghubungkan Papan Arduino dengan komputer lewat koneksi USB.

·                Power Jack

Supply atau sumber listrik untuk Arduino dengan tipe Jack. Input DC 5 - 12 V.

·                Crystal Oscillator

Kristal ini digunakan sebagai layaknya detak jantung pada Arduino. Jumlah cetak menunjukkan 16000 atau 16000 kHz, atau 16 MHz.

·                Reset

Digunakan untuk mengulang program Arduino dari awal atau Reset.

·                Digital Pins I / O

Papan Arduino UNO memiliki 14 Digital Pin. Berfungsi untuk memberikan nilai logika ( 0 atau 1 ). Pin berlabel " ~ " adalah pin-pin PWM ( Pulse Width Modulation ) yang dapat digunakan untuk menghasilkan PWM.

·                Analog Pins

Papan Arduino UNO memiliki 6 pin analog A0 sampai A5. Digunakan untuk membaca sinyal atau sensor analog seperti sensor jarak, suhu dsb, dan mengubahnya menjadi nilai digital.

·                LED Power Indicator

Lampu ini akan menyala dan menandakan Papan Arduino mendapatkan supply listrik dengan baik.

 

    h. Sensor LDR

 

            Light Dependent Resistor atau disingkat dengan LDR adalah jenis resistor yang nilai hambatan atau nilai resistansinya tergantung pada intensitas cahaya yang diterimanya. Nilai Hambatan LDR akan menurun pada saat cahaya terang dan nilai Hambatannya akan menjadi tinggi jika dalam kondisi gelap. Dengan kata lain, fungsi LDR (Light Dependent Resistor) adalah untuk menghantarkan arus listrik jika menerima sejumlah intensitas cahaya (Kondisi Terang) dan menghambat arus listrik dalam kondisi gelap. Prinsip kerja LDR sangat sederhana tak jauh berbeda dengan variable resistor pada umumnya. LDR dipasang pada berbagai macam rangkaian elektronika dan dapat memutus dan menyambungkan aliran listrik berdasarkan cahaya. Semakin banyak cahaya yang mengenai LDR maka nilai resistansinya akan menurun, dan sebaliknya semakin sedikit cahaya yang mengenai LDR maka nilai hambatannya akan semakin membesar. Naik turunnya nilai Hambatan akan sebanding dengan jumlah cahaya yang diterimanya. Pada umumnya, Nilai Hambatan LDR akan mencapai 200 Kilo Ohm (kΩ) pada kondisi gelap dan menurun 500 Ohm (Ω) Kondisi cahaya terang

            LDR (Light Dependent Resistor) yang merupakan Komponen Elektronika peka cahaya ini sering digunakan atau diaplikasikan dalam Rangkaian Elektronika sebagai sensor pada Lampu Penerang Jalan, Lampu Kamar Tidur, Rangkaian Anti Maling, Shutter Kamera, Alarm dan lain sebagainya.

Gambar Sinyal dan Bentuk LDR

 

Bagian-Bagian LDR: 

 

Gambar Bagian-bagian LDR

 

Grafik Respon LDR:



Gambar Grafik Respon LDR

Dari grafik tersebut dapat disimpulkan bahwa besarnya hambatan atau resistansi dari sensor ldr dipengaruhi oleh intensitas cahaya yang diberikan, dan dapat dilihat bahwa semakin besar intensitas cahaya maka nilai resistansinya akan semakin kecil dan begitu sebaliknya.

 

    i. Sensor Touch

Touch Sensor atau Sensor Sentuh adalah sensor elektronik yang dapat mendeteksi sentuhan. Sensor Sentuh ini pada dasarnya beroperasi sebagai sakelar apabila disentuh, seperti sakelar pada lampu, layar sentuh ponsel dan lain sebagainya. Sensor Sentuh ini dikenal juga sebagai Sensor Taktil (Tactile Sensor). Seiring dengan perkembangan teknologi, sensor sentuh ini semakin banyak digunakan dan telah menggeser peranan sakelar mekanik pada perangkat-perangkat elektronik.

·       Berdasarkan fungsinya, Sensor Sentuh dapat dibedakan menjadi dua jenis utama yaitu Sensor Kapasitif dan Sensor Resistif. Sensor Kapasitif atau Capacitive Sensor bekerja dengan mengukur kapasitansi sedangkan sensor Resistif bekerja dengan mengukur tekanan yang diberikan pada permukaannya.





1) Sensor Kapasitif

Sensor sentuh Kapasitif merupakan sensor sentuh yang sangat populer pada saat ini, hal ini dikarenakan Sensor Kapasitif lebih kuat, tahan lama dan mudah digunakan serta harga yang relatif lebih murah dari sensor resistif. Ponsel-ponsel pintar saat ini telah banyak yang menggunakan teknologi ini karena juga menghasilkan respon yang lebih akurat. 

Berbeda dengan Sensor Resistif yang menggunakan tekanan tertentu untuk merasakan perubahan pada permukaan layar, Sensor Kapasitif memanfaatkan sifat konduktif alami pada tubuh manusia untuk mendeteksi perubahan layar sentuhnya. Layar sentuh sensor kapasitif ini terbuat dari bahan konduktif (biasanya Indium Tin Oxide atau disingkat dengan ITO) yang dilapisi oleh kaca tipis dan hanya bisa disentuh oleh jari manusia atau stylus khusus ataupun sarung khusus yang memiliki sifat konduktif.

Pada saat jari menyentuh layar, akan terjadi perubahaan medan listrik pada layar sentuh tersebut dan kemudian di respon oleh processor untuk membaca pergerakan jari tangan tersebut. Jadi perlu diperhatikan bahwa sentuhan kita tidak akan di respon oleh layar sensor kapasitif ini apabila kita menggunakan bahan-bahan non-konduktif sebagai perantara jari tangan dan layar sentuh tersebut.

2) Sensor Resistif

Tidak seperti sensor sentuh kapasitif, sensor sentuh resistif ini tidak tergantung pada sifat listrik yang terjadi pada konduktivitas pelat logam. Sensor Resistif bekerja dengan mengukur tekanan yang diberikan pada permukaannya. Karena tidak perlu mengukur perbedaan kapasitansi, sensor sentuh resistif ini dapat beroperasi pada bahan non-konduktif seperti pena, stylus atau jari di dalam sarung tangan.

Sensor sentuh resistif terdiri dari dua lapisan konduktif yang dipisahkan oleh jarak atau celah yang sangat kecil. Dua lapisan konduktif (lapisan atas dan lapisan bawah) ini pada dasarnya terbuat dari sebuah film. Film-film umumnya dilapisi oleh Indium Tin Oxide yang merupakan konduktor listrik yang baik dan juga transparan (bening).

Cara kerjanya hampir sama dengan sebuah sakelar, pada saat film lapisan atas mendapatkan tekanan tertentu baik dengan jari maupun stylus, maka film lapisan atas akan bersentuhan dengan film lapisan bawah sehingga menimbulkan aliran listrik pada titik koordinat tertentu layar tersebut dan memberikan signal ke prosesor untuk melakukan proses selanjutnya.

 

Grafik respon:






    j. Soil Masture


Soil Moisture Sensor adalah suatu modul yang berfungsi untuk mendeteksi tingkat kelembaban tanah dan juga dapat digunakan untuk menentukan apakah ada kandungan air di tanah/ sekitar sensor. Cara penggunaan modul ini cukup mudah, yakni dengan memasukkan sensor ke dalam tanah dan setting potensiometer untuk mengatur sensitifitas dari sensor. Keluaran dari sensor akan bernilai 1 / 0 ketika kelembaban tanah menjadi tinggi / rendah yang dapat di treshold dengan potensiometer. Spesifikasi dari sensor ini adalah :

1. Comparator menggunakan LM393

2. Hanya menggunakan 2 plat kecil sebagai sensor

3. Supply Tegangan 3.3-5 VDC

4. Digital output D0 dapat secara langsung dikoneksikan dengan MCU dengan mudah

Sensor ini digunakan untuk mengukur kadar air didalam tanah, atau juga bisa untuk menedeteksi cuaca yang terjadi hari kemarin dan hari ini melalui media tanah, prinsip kerja sensor ini sangat simpel yaitu ada dua buah lempengan yang mana jika kedua buah lempengan terkena media penghantar maka elektron akan berpindah dari kutub + ke kutub - sehingga terjadilah arus yang akan menimbulkan tegangan. Pergerakan elektron dimanfaatkan untuk mendeteksi apakah ada air di tanah ataukah tidak, jika tanah basah berarti tanah tersebut mengandung media penghantar, namun jika tanah kering maka tidak mengandung media penghantar elektron, sehingga pada adc mikrokontroller akan terlihat perbedaannya.

 

    k. LCD

 


Liquid Crystal Display (LCD) adalah sebuah peralatan elektronik yang berfungsi untuk menampilkan output sebuah sistem dengan cara membentuk suatu citra atau gambaran pada sebuah layar. Secara garis besar komponen penyusun LCD terdiri dari kristal cair (liquid crystal) yang diapit oleh 2 buah elektroda transparan dan 2 buah filter polarisasi (polarizing filter).

 

Gambar Penampang komponen penyusun LCD

Keterangan:

1.              Film dengan polarizing filter vertical untuk memolarisasi cahaya yang masuk

2.              Glass substrate yang berisi kolom-kolom elektroda Indium tin oxide (ITO)

3.              Twisted nematic liquid crystal (kristal cair dengan susunan terpilin)

4.              Glass substrate yang berisi baris-baris elektroda Indium tin oxide (ITO)

5.              Film dengan polarizing filter horizontal untuk memolarisasi cahaya yang masuk

6.              Reflektor cahaya untuk memantulkan cahaya yang masuk LCD kembali ke mata pengamat

 

Sebuah citra dibentuk dengan mengombinasikan kondisi nyala dan mati dari pixel-pixel yang menyusun layar sebuah LCD. Pada umumnya LCD yang dijual di pasaran sudah memiliki integrated circuit tersendiri sehingga para pemakai dapat mengontrol tampilan LCD dengan mudah dengan menggunakan mikrokontroler untuk mengirimkan data melalui pin-pin input yang sudah tersedia.

 

 

Kaki-kaki yang terdapat pada LCD 

  

    l. Motor Servo

 

Gambar Konfigurasi Pin Motor Servo

       Motor servo adalah sebuah perangkat atau aktuator putar (motor) yang dirancang dengan sistem kontrol umpan balik loop tertutup (servo), sehingga dapat di set-up atau di atur untuk menentukan dan memastikan posisi sudut dari poros output motor. motor servo merupakan perangkat yang terdiri dari motor DC, serangkaian gear, rangkaian kontrol dan potensiometer. Serangkaian gear yang melekat pada poros motor DC akan memperlambat putaran poros dan meningkatkan torsi motor servo, sedangkan potensiometer dengan perubahan resistansinya saat motor berputar berfungsi sebagai penentu batas posisi putaran poros motor servo.  


Prinsip kerja motor servo: 

       Motor servo dikendalikan dengan memberikan sinyal modulasi lebar pulsa (Pulse Wide Modulation / PWM) melalui kabel kontrol. Lebar pulsa sinyal kontrol yang diberikan akan menentukan posisi sudut putaran dari poros motor servo. Sebagai contoh, lebar pulsa dengan waktu 1,5 ms (mili detik) akan memutar poros motor servo ke posisi sudut 90⁰. Bila pulsa lebih pendek dari 1,5 ms maka akan berputar ke arah posisi 0⁰ atau ke kiri (berlawanan dengan arah jarum jam), sedangkan bila pulsa yang diberikan lebih lama dari 1,5 ms maka poros motor servo akan berputar ke arah posisi 180⁰ atau ke kanan (searah jarum jam). Lebih jelasnya perhatikan gambar dibawah ini. 

 



  Gambar Pulse Wide Modulation / PWM

 

lebar pulsa kendali telah diberikan, maka poros motor servo akan bergerak atau berputar ke posisi yang telah diperintahkan, dan berhenti pada posisi tersebut dan akan tetap bertahan pada posisi tersebut. Jika ada kekuatan eksternal yang mencoba memutar atau mengubah posisi tersebut, maka motor servo akan mencoba menahan atau melawan dengan besarnya kekuatan torsi yang dimilikinya (rating torsi servo). Namun motor servo tidak akan mempertahankan posisinya untuk selamanya, sinyal lebar pulsa kendali harus diulang setiap 20 ms (mili detik) untuk menginstruksikan agar posisi poros motor servo tetap bertahan pada posisinya.

 

5. Percobaan [Kembali]

    a. Prosedur[Kembali]

  • Sediakan alat dan bahan yang diperlukan untuk merangkai project demo
  • Rangkaian alat dan bahan seperti gambar rangkaian di bawah
  • Hubungkan sumber semua alat bahan ke salah satu sumber arduino dan ground semua bahan ke ground salah satu arduino 
  • Jalankan simulasi rangkaian 
  • Jika rangkaian berjalan sesuai dengan kondisi yang diinginkan, maka lanjutkan dengan membuat protype dari project demo 
  • Pahami datasheet masing masing komponen dengan mempertimbangkan tegangan yang digunakan, arus yang diperlukan, terutama spesifikasi masing masing komponen.
  • Rangkai semua alat dan bahan sesuai dengan gambar yang telah dilampirkan. 
  • Pasang dan hubungkan semua alat dan bahan sehingga membentuk rangkaian jadi.

    b. Hardware[Kembali]


    c. Rangkaian Simulasi dan Prinsip Kerja[Kembali] 

        Rangkaian Simulasi Proteus :

        


        
        Prinsip Kerja Rangkaian :

  • Rangkaian kontrol dan monitoring terarium ini terdiri dari beberapa sensor dan aktuator yang saling berinteraksi untuk menjaga kondisi optimal dalam terarium. Pertama, sensor kelembaban tanah (soil moisture sensor) mengukur kadar kelembapan tanah dengan mendeteksi perubahan konduktivitas listrik di antara dua probe yang ditanam di tanah. Data kelembapan tanah ini kemudian dikirim ke mikrocontroller (Arduino), yang akan mengaktifkan solenoid valve untuk menyiram tanaman jika kelembapan tanah terlalu rendah
  •  Sensor gas MQ135 mengukur kualitas udara dengan mendeteksi konsentrasi gas berbahaya seperti CO2 dan amonia. Data dari sensor ini diolah oleh mikrocontroller, yang akan mengaktifkan sistem ventilasi atau alarm jika konsentrasi gas mencapai tingkat yang berbahaya. Sensor ultrasonik digunakan untuk mengukur jarak atau ketinggian air di dalam terarium, dan data ini digunakan untuk mengontrol ultrasonic mist maker yang menjaga kelembapan udara dengan menghasilkan kabut
  • Sensor sentuh (touch sensor) memungkinkan pengguna untuk mengendalikan komponen tertentu secara manual, seperti menyalakan atau mematikan mist maker atau kipas. Sensor suhu dan kelembapan (DHT11) mengukur suhu dan kelembapan udara di dalam terarium, dan data ini digunakan oleh mikrocontroller untuk mengaktifkan kipas DC jika suhu terlalu tinggi atau kelembapan terlalu rendah.
  • Solenoid valve dan solenoid door lock berfungsi untuk mengontrol aliran air untuk irigasi dan akses pintu terarium. Solenoid valve membuka atau menutup aliran air berdasarkan data kelembapan tanah, sedangkan solenoid door lock mengatur akses pintu sesuai dengan kondisi yang ditentukan.
  • LCD display menampilkan data sensor secara real-time, seperti suhu, kelembapan, kelembapan tanah, kualitas udara, dan status komponen lainnya, untuk pemantauan oleh pengguna. Mikrocontroller (Arduino) berperan sebagai pusat kontrol yang mengolah semua data dari sensor, mengambil keputusan berdasarkan data tersebut, dan mengirimkan sinyal ke aktuator yang relevan untuk menjaga kondisi optimal dalam terarium.


    d. Flowchart dan Listing Program[Kembali]


a)       Master FC


   


b)      Slave FC







Listing Program :

a) Master

#include <DHT.h>
// #include <MQ135.h>

#define DHTPIN 2      // Pin where DHT11 is connected
#define TOUCHPIN 3    // Pin where touch sensor is connected
#define DHTTYPE DHT11 // Type of DHT sensor
#define SOILPIN A0
#define MQ135PIN A1
#define LDRPIN A2

#define RL 10 // Load resistance value on the sensor
#define m -0.417 // Gradient value
#define b 0.858 // Intercept value
#define RO 16 // Measured RO value

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600); // Start serial communication with baud rate 9600
  dht.begin();        // Initialize the DHT sensor
  pinMode(TOUCHPIN, INPUT); // Set touch sensor pin as input
}

void loop() {
  // Read soil moisture sensor
  int soilMoistureValue = analogRead(SOILPIN);
  // Convert the analog value to a scale of 1-100
  soilMoistureValue = map(soilMoistureValue, 0, 1023, 1, 100);

  // Read MQ-135 sensor
  float mq135Value = analogRead(MQ135PIN);
  float VRL = mq135Value * (5.0 / 1023.0); // Convert analog value to voltage
  // float RS = ((5.0 * RL) / VRL) - RL; // Calculate RS
  // float ratio = RS / RO;
  // float gas = pow(10, ((log10(ratio) - b) / m));
  // float ppm = abs(gas - 0.14);

  // Read LDR sensor
  int ldrValue = analogRead(LDRPIN);
  // float voltage = (float)ldrValue * (5.0 / 1023.0);
  // float Rldr = (7 * voltage) / (5 - voltage);
  // float ldrmap = abs(-90 * ((Rldr - 5) / 15) + 100);
  int ldrmap = map(ldrValue, 0, 1023, 1, 100);
 
  // Read temperature and humidity from DHT11
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();

  // Read status of touch sensor
  int touchStatus = digitalRead(TOUCHPIN);
  int touchVal = (touchStatus == HIGH) ? 1 : 0;

  // Create a comma-separated string with all sensor values
  String dataString = String(soilMoistureValue) + "," + String(mq135Value) + "," +
                      String(ldrmap) + "," + String(humidity) + "," + String(temperature) + "," + String(touchVal);

  // Print the data string to the serial monitor
  Serial.println(dataString);

  // Delay before the next reading
  delay(1000);
}


b) Slave
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>

// Initialize LCD
LiquidCrystal_I2C lcd(0x27, 20, 4); // I2C address might differ, adjust accordingly

// Pins for L293D
#define EN_DCFAN 2
#define IN1_DCFAN 3
#define IN2_DCFAN 4
#define EN_DOORLOCK 5
#define IN3_DOORLOCK 6
#define IN4_DOORLOCK 7
#define EN_VALVE 11
#define IN5_VALVE 12
#define IN6_VALVE 13

// Servo pins
#define SERVO1_PIN 8
#define SERVO2_PIN 9

// Transistor pin
#define TRANSISTOR_PIN 10

// Servo objects
Servo servo1;
Servo servo2;

void setup() {
  Serial.begin(9600); // Start serial communication with baud rate 9600

  // Initialize LCD
  lcd.init();
  lcd.backlight();

  // Initialize pins for L293D motor driver
  pinMode(EN_DCFAN, OUTPUT);
  pinMode(IN1_DCFAN, OUTPUT);
  pinMode(IN2_DCFAN, OUTPUT);
  pinMode(EN_DOORLOCK, OUTPUT);
  pinMode(IN3_DOORLOCK, OUTPUT);
  pinMode(IN4_DOORLOCK, OUTPUT);
  pinMode(EN_VALVE, OUTPUT);
  pinMode(IN5_VALVE, OUTPUT);
  pinMode(IN6_VALVE, OUTPUT);
 
  // Turn off all motors initially
  digitalWrite(EN_DCFAN, LOW);
  digitalWrite(EN_DOORLOCK, LOW);
  digitalWrite(EN_VALVE, LOW);

  // Initialize servos
  servo1.attach(SERVO1_PIN);
  servo2.attach(SERVO2_PIN);

  // Set servos to initial position
  servo1.write(90); // Center position
  servo2.write(90); // Center position

  // Initialize transistor pin
  pinMode(TRANSISTOR_PIN, OUTPUT);
  digitalWrite(TRANSISTOR_PIN, LOW); // Turn off transistor initially
}

void loop() {
  if (Serial.available() >= 6) { // Adjust the number of bytes received

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

    int soilMoistureValue = 0;
    int mq135Value = 0;
    int luxmeter = 0;
    int humidity = 0;  // Using int for simplicity
    int temperature = 0;  // Using int for simplicity
    int touchVal = 0;

    Serial.println(dataString);

    int commaIndex1 = dataString.indexOf(',');
    int commaIndex2 = dataString.indexOf(',', commaIndex1 + 1);
    int commaIndex3 = dataString.indexOf(',', commaIndex2 + 1);
    int commaIndex4 = dataString.indexOf(',', commaIndex3 + 1);
    int commaIndex5 = dataString.indexOf(',', commaIndex4 + 1);

    // Konversi string ke integer
    soilMoistureValue = dataString.substring(0, commaIndex1).toInt();
    mq135Value = dataString.substring(commaIndex1 + 1, commaIndex2).toInt();
    luxmeter = dataString.substring(commaIndex2 + 1, commaIndex3).toInt();
    humidity = dataString.substring(commaIndex3 + 1, commaIndex4).toInt();
    temperature = dataString.substring(commaIndex4 + 1, commaIndex5).toInt();
    touchVal = dataString.substring(commaIndex5 + 1).toInt();

    // Display data on LCD
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Soil: ");
    lcd.print(soilMoistureValue);
    lcd.print("%");

    lcd.setCursor(10, 0);
    lcd.print("Temp: ");
    lcd.print(temperature);
    lcd.print("C");

    lcd.setCursor(0, 1);
    lcd.print("Humidity: ");
    lcd.print(humidity);
    lcd.print("%");

    lcd.setCursor(0, 2);
    lcd.print("Light: ");
    lcd.print(luxmeter);

    lcd.setCursor(10, 2);
    lcd.print("Touch: ");
    lcd.print(touchVal);

    lcd.setCursor(0, 3);
    lcd.print("MQ135: ");
    lcd.print(mq135Value);

    // Control motor A based on touch sensor status
    if (touchVal == 1) {
      // If touch sensor is activated, turn on motor A forward
      digitalWrite(EN_DOORLOCK, HIGH);
      digitalWrite(IN3_DOORLOCK, HIGH);
      digitalWrite(IN4_DOORLOCK, LOW);
    } else {
      // Turn off motor A
      digitalWrite(EN_DOORLOCK, LOW);
    }

    // Control motor B based on temperature
    if (temperature > 27) {
      // If temperature is above 27 degrees, turn on motor B forward
      digitalWrite(EN_DCFAN, HIGH);
      digitalWrite(IN1_DCFAN, HIGH);
      digitalWrite(IN2_DCFAN, LOW);
    }
    else if (temperature >= 14 && temperature <= 27){
      // Turn off motor B
      digitalWrite(EN_DCFAN, HIGH);
      digitalWrite(IN1_DCFAN, HIGH);
      digitalWrite(IN2_DCFAN, LOW);
    }
    else{
      digitalWrite(EN_DCFAN, LOW);
    }

    // Control motor C based on light sensor status
    if (luxmeter >= 500 && luxmeter <= 1000) {
      // If light intensity is in range, turn on motor C forward
      servo1.write(90);
      servo2.write(90);
    }
    else if(luxmeter < 500){
      // Turn off motor C
      servo1.write(0);
      servo2.write(0);
    }
    else {
      // Do nothing
    }

    // Control transistor based on humidity
    if (humidity > 50) {
      // Turn on transistor if humidity is greater than 50%
      digitalWrite(TRANSISTOR_PIN, HIGH);
    }
    else{
      digitalWrite(TRANSISTOR_PIN, LOW);
    }

    // Control valve based on soil moisture value
    if (soilMoistureValue >= 70 && soilMoistureValue <= 80) {
      // Turn on valve if soil moisture is in range
      digitalWrite(EN_VALVE, HIGH);
      digitalWrite(IN5_VALVE, HIGH);
      digitalWrite(IN6_VALVE, LOW);
    }
    else if (soilMoistureValue < 70) {
      // Turn off valve
      digitalWrite(EN_VALVE, LOW);
    }
    else{
      // Do nothing
    }
  }
}

    e. Video Demo[Kembali] 


    f. Download File[Kembali]




Komentar

Postingan populer dari blog ini

Cover

Cover uP dan uC