Rabu, 11 Januari 2023

TUGAS BESAR uP&uC


   KONTROL KANDANG SAPI 

 



Referensi:

Sukarjadi, Y. S., & Syafiâ, A. (2020). RANCANG BANGUN SISTEM PEMBERI PAKAN SAPI SECARA OTOMATIS BERBASIS MIKROKONTROLER ARDUINO. JBT (JURNAL BISNIS dan TEKNOLOGI)7(2).

Gofur, M., Risqiwati, D., & Nastiti, V. R. S. (2021). Sistem Monitoring Gas Amonia dan Kadar Bersih Udara Pada Kandang Sapi Perah Dengan Menggunakan Protokol Komunikasi MQTT Dan Algoritma Rule Based System. Jurnal Repositor3(1), 77-86.

Sari, I. M., & Firmawati, N. (2020). Rancang Bangun Sistem Kontrol Suhu dan Ketinggian Air Secara Otomatis Pada Kandang Sapi Perah Berbasis Arduino Uno. Jurnal Fisika Unand9(4), 558-564.

Roâ, M., Djunaedy, E., Utami, A. R. I., & Rosdiana, E. (2020). Perumusan Kandang Sapi Perah Berkinerja Tinggi. eProceedings of Engineering7(1).


pencarian;

RANCANG BANGUN SISTEM PEMBERI PAKAN SAPI SECARA OTOMATIS... - Google Scholar

Sistem Monitoring Gas Amonia dan Kadar Bersih Udara Pada Kandang Sapi Perah Dengan Menggunakan Protokol Komunikasi MQTT Dan Algoritma Rule Based System | Jurnal Repositor (umm.ac.id)

Rancang Bangun Sistem Kontrol Suhu dan Ketinggian Air Secara Otomatis Pada Kandang Sapi Perah Berbasis Arduino Uno | Sari | Jurnal Fisika Unand

Perumusan Kandang Sapi Perah Berkinerja Tinggi | Abror | eProceedings of Engineering (telkomuniversity.ac.id)

PROTOTIPE OTOMATISASI PEMBERSIH KANDANG SAPI BERBASIS KONTROL LOGIKA FUZZY (unnes.ac.id)




Abstrak:

Telah dirancang bangun sistem kontrol suhu dan ketinggian air pada kandang sapi perah secara otomatis. Sistem ini berfungsi untuk mengontrol suhu kandang dan mengontrol air minum sapi perah secara otomatis berdasarkan suhu dan ketinggian air pada wadah di kandang sapi perah yang telah diatur pada program. Metode yang dilakukan pada penelitian ini adalah dengan mengukur suhu dan ketinggian air yang terdeteksi oleh sensor DHT22 dan sensor ultrasonik HC-SR04 kemudian diteruskan ke mikrokontroler. Saat suhu yang didapat < 17ºC maka lampu hidup secara otomatis yang menghasilkan panas untuk meningkatkan suhu kandang sapi perah. Jika suhu > 21ºC maka kipas angin hidup secara otomatis untuk menurunkan suhu kandang sapi perah. Sedangkan ketika ketinggian air di dalam wadah 5 cm dari dasar wadah, maka pompa air akan hidup secara otomatis untuk mengisi wadah air. Pompa air akan mati secara otomatis ketika jarak permukaan air pada wadah 7 cm dari sensor. Sistem terdiri dari sensor DHT22 sebagai pengukur suhu, tiga buah relai sebagai saklar, pompa air mini untuk mengalirkan air ke wadah, sensor ultrasonik HC-SR04 untuk mendeteksi ketinggian air, dan LCD untuk menampilkan nilai suhu dan jarak. Sistem ini dikontrol oleh modul Arduino Uno.


1.Pendahuluan[KEMBALI]

 Sapi perah merupan hewan ternak yang mampu menghasilkan produk susu sebagai produk utamanya. Lebih dari 95% susu yang diproduksi di Indonesia berasal dari sapi perah. Daya tahan panas sapi perah lebih rendah daripada sapi potong, dimana suhu lingkungan sangat mempengaruhi produktivitas sapi perah kehidupan dan produksi sapi perah memerlukan suhu lingkungan berkisar 17ºC hingga 21ºC. Sapi perah dapat menghasilkan kualitas produksi terbaik apabila ditempatkan pada suhu lingkungan 18,3ºC. Strategi untuk mengurangi efek negatif dari panas dapat dilakukan dengan perbaikan pakan, perbaikan konstruksi kendang, pemberian pohon, kipas angin otomatis, lampu otomatis dan air minum secara otomatis pada sapi perah.

2.Tinjauan Pustaka[KEMBALI]


Sensor Ultrasonik


Sensor jarak adalah sensor yang mampu mendeteksi keberadaan objek didekatnya tanpa kontak fisik. Sensor jarak bekerja berdasarkan prinsip pantulan suatu gelombang suara sehingga dapat menafsirkan jarak suatu benda dengan frekuensi tertentu. Prinsip kerja sensor ini adalah transmitter mengirimkan sebuah gelombang ultrasonik lalu diukur dengan waktu yang dibutuhkan hingga datangnya pantulan dari objek Lamanya waktu ini sebanding dengan dua kali jarak sensor dengan objek, sehingga jarak sensor dengan objek dapat ditentukan persamaan 

𝑠 =𝑣×𝑡

Keterangan:
s = jarak (meter)
v = kecepatan suara (344 m/detik)
t = waktu tempuh (detik)

Hcsrf-04 dapat mengukur jarak dalam rentang antara 3cm–3m dengan output panjang pulsa yang sebanding dengan jarak objek. Sensor ini hanya memerlukan 2 pin I/O untuk berkomunikasi dengan mikrokontroler, yaitu TRIGGER dan ECHO. Untuk mengaktifkan HCSRF-04 mikrokontroler mengirimkan pulsa positif melalui pin TRIGGER minimal 10 μs, selanjutnya HCSRF-04 mengirimkan pulsa positif melalui pin ECHO selama 100 μs hingga 18ms, yang sebanding dengan jarak objek. Spesifikasi dari sensor ultrasonik HCSRF-04 adalah sebagai berikut[3]:

a. Dimensi: 24mm (P) x 20mm (L) x 17mm (T).
b. Konsumsi Arus: 30 mA (rata-rata), 50 mA (max).
c. Jangkauan: 3 cm–3 m.
d. Sensitifitas: Mampu mendeteksi objek dengan diameter 3 cm pada jarak > 1m.

3.Metode Penelitian[KEMBALI]



Prinsip kerja rancangan perangkat keras alat ini terdiri dari kipas angin otomatis, lampu otomatis, dan pompa air otomatis yaitu dengan mengaktifkan catu daya ke seluruh blok rangkaian yang akan dihubungkan dengan mikrokontroler Arduino Uno R3 sebagai pusat pengolahan data yang berkaitan dengan input dan output sistem yang diatur pada program. Perangkat yang akan digunakan sebagai input adalah lampu pijar, sensor DHT22, dan sensor ultrasonik. Batas suhu yang ditentukan berada di antara 17ºC hingga ≤ 21ºC. Apabila suhu siang hari meningkat dari 21ºC maka kipas akan aktif untuk menstabilkan suhu udara diruangan. Sedangkan apabila suhu yang terdeteksi lebih kecil dari 17ºC, maka mikrokontroler akan mematikan kipas angin dan lampu hidup untuk menaikkan suhu lingkungan kandang sapi perah. Wadah dengan tinggi 30 cm dan dipasang sensor ultrasonik HC-SR04 yang berfungsi mendeteksi ketinggian air dalam wadah. Sensor ini berjarak 5 cm dari atas wadah. Ketika ketinggian air di dalam wadah 5 cm dari dasar wadah, maka pompa air akan otomatis ON untuk mengisi wadah air. Pompa air akan OFF secara otomatis ketika jarak permukaan air pada wadah 7 cm dari sensor. Output program berupa suhu dan jarak yang akan ditampilkan pada LCD.


4.Hasil dan Pembahasan[KEMBALI]

MQ7


Dht22



Ultrasonic


Berdasarkan Gambar 5 dapat dilihat bahwa semakin jauh jarak yang dideteksi oleh sensor
jarak maka semakin besar pula waktu yang dibutuhkan oleh gelombang untuk dipantulkan kembali ke sensor. Dari hasil tersebut dapat disimpulkan bahwa sensor jarak yang digunakan dapat berfungsi dengan baik untuk mendeteksi ketinggian air. Hal ini dikarenakan hasil yang didapatkan telah sesuai dengan teori yang ada, yaitu besar jarak berbanding lurus terhadap waktu


5.Kesimpulan[KEMBALI]

Berdasarkan pengujian dan analisa yang telah dilakukan, maka didapatkan kesimpulan bahwa rancang bangun sistem kontrol suhu menggunakan sensor DHT22 dan ketinggian air menggunakan sensor ultrasonik HC-SR04 secara otomatis pada kandang sapi perah telah berhasil dilakukan. Sistem berhasil mengontrol suhu kandang agar berada pada range 17ºC hingga ≤ 21ºC oleh sensor DHT22 akan mengontrol pengaktifan relai untuk kipas angin OFF dan lampu OFF secara otomatis. Sistem berhasil menyalakan kipas angin secara otomatis ketika suhu kandang sapi perah sebesar > 21,1ºC. Jika suhu ≤ 21ºC maka kipas angin OFF secara otomatis. Sistem berhasil menyalakan lampu secara otomatis ketika suhu kandang sapi < 17ºC. Jika suhu > 17ºC maka lampu OFF secara otomatis dengan intensitas cahaya sebesar 55 lux. Sistem berhasil mengontrol pompa air berdasarkan ketinggian air dalam wadah yang dideteksi oleh sensor ultrasonik sebesar 5 cm dari dasar wadah maka pompa air otomatis ON dan mendeteksi ketinggian air 7 cm dari sensor maka pompa air otomatis OFF. Efektivitas posisi kipas pada jarak 40 cm dari sapi perah karena tidak terlalu dekat atau mengganggu sapi sedangkan jarak maksimum 100 cm karena sudah tidak terasa efek kipasnya. Sensor DHT22 yang digunakan untuk mengontrol ketinggian air pada wadah dapat berjalan dengan baik


6.Daftar Pustaka[KEMBALI]

Sukarjadi, Y. S., & Syafiâ, A. (2020). RANCANG BANGUN SISTEM PEMBERI PAKAN SAPI SECARA OTOMATIS BERBASIS MIKROKONTROLER ARDUINO. JBT (JURNAL BISNIS dan TEKNOLOGI), 7(2).

Gofur, M., Risqiwati, D., & Nastiti, V. R. S. (2021). Sistem Monitoring Gas Amonia dan Kadar Bersih Udara Pada Kandang Sapi Perah Dengan Menggunakan Protokol Komunikasi MQTT Dan Algoritma Rule Based System. Jurnal Repositor, 3(1), 77-86.

Sari, I. M., & Firmawati, N. (2020). Rancang Bangun Sistem Kontrol Suhu dan Ketinggian Air Secara Otomatis Pada Kandang Sapi Perah Berbasis Arduino Uno. Jurnal Fisika Unand, 9(4), 558-564.

Roâ, M., Djunaedy, E., Utami, A. R. I., & Rosdiana, E. (2020). Perumusan Kandang Sapi Perah Berkinerja Tinggi. eProceedings of Engineering7(1).


7.Video[KEMBALI]

Video dari teman


Video simulasi


Video dari peternak Sapi




8.Download File[KEMBALI]

Jurnal 1
Jurnal 2
Jurnal 3
Jurnal 4
Jurnal 5
Video
HTML
Rangkaiaan Dan coding arduino
Download Datasheet Motor Servo klik disini
Datasheet Potensiometer klik disini
ultrasonik klik disini
dht 22 klik disini
transistor


Selasa, 10 Januari 2023

Modul IV Mikroprosesor & Mikrokontroler

Kontrol Kolam Ikan Otomatis




1. Tujuan [Kembali]

a. Dapat membuat alat kontrol kolam ikan otomatis menggunakan mikrokontroler arduino UNO

b. Mengimplementasikan komunikasi SPI pada alat kontrol kolam ikan otomatis.

c. Mengetahui dan memahami prinsip kerja dari sensor dan komponen yang digunakan pada rangkaian.

2. Alat dan bahan[Kembali]

  • Alat


  • Bahan

3. Dasar Teori[Kembali]

 1) Pulse Width Modulation (PWM) 

Gambar duty cycle 

PWM (Pulse Width Modulation) adalah salah satu teknik modulasi dengan mengubah lebar pulsa (duty cylce) dengan nilai amplitudo dan frekuensi yang tetap. Satu siklus pulsa merupakan kondisi high kemudian berada di zona transisi ke kondisi low. Lebar pulsa PWM berbanding lurus dengan amplitudo sinyal asli yang belum termodulasi. Duty Cycle adalah perbandingan antara waktu ON (lebar pulsa High) dengan perioda. Duty Cycle biasanya dinyatakan dalam bentuk persen (%).

· Duty Cycle = tON / ttotal

· tON = Waktu ON atau Waktu dimana tegangan keluaran berada pada posisi tinggi (highatau 1)

· tOFF = Waktu OFF atau Waktu dimana tegangan keluaran berada pada posisi rendah(low atau 0)

· ttotal = Waktu satu siklus atau penjumlahan antara tON dengan tOFF atau disebut jugadengan “periode satu gelombang”. 

Pada board Arduino Uno, pin yang bisa dimanfaatkan untuk PWM adalah pin yang diberi tanda tilde (~), yaitu pin 3, 5, 6, 9, 10, dan pin 11. Pin-pin tersebut merupakan pin yang bisa difungsikan untuk input analog atau output analog. Oleh sebab itu, jika akan menggunakan PWM pada pin ini, bisa dilakukan dengan perintah analogWrite(); 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.

2) 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 :

Microcontroller   

ATmega328P

Operating Voltage

     5 V

Input Voltage (recommended)

    7 – 12 V

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

    6 – 20 V

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 Hz

Bagian-bagian arduino uno:

1. Power Usb, digunakan untuk menghubungkan Papan Arduino dengan komputer lewat koneksi USB.

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

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

4. Reset, Digunakan untuk mengulang program Arduino dari awal atau Reset.

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

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

7. LED Power Indicator, Lampu ini akan menyala dan menandakan Papan Arduino mendapatkan supply listrik dengan baik.

 

3) Ultrasonic Sensor (HC-SR04)

Sensor ultrasonik adalah sebuah sensor yang berfungsi untuk mengubah besaran fisis (bunyi) menjadi besaran listrik dan sebaliknya. Cara kerja sensor ini didasarkan pada prinsip dari pantulan suatu gelombang suara sehingga dapat dipakai untuk menafsirkan eksistensi (jarak) suatu benda dengan frekuensi tertentu. Disebut sebagai sensor ultrasonik karena sensor ini menggunakan gelombang ultrasonik (bunyi ultrasonik).

Cara Kerja Sensor Ultrasonik:

Pada sensor ultrasonik, gelombang ultrasonik dibangkitkan melalui sebuah alat yang disebut dengan piezoelektrik dengan frekuensi tertentu. Piezoelektrik ini akan menghasilkan gelombang ultrasonik (umumnya berfrekuensi 40kHz) ketika sebuah osilator diterapkan pada benda tersebut. Secara umum, alat ini akan menembakkan gelombang ultrasonik menuju suatu area atau suatu target. Setelah gelombang menyentuh permukaan target, maka target akan memantulkan kembali gelombang tersebut. Gelombang pantulan dari target akan ditangkap oleh sensor, kemudian sensor menghitung selisih antara waktu pengiriman gelombang dan waktu gelombang pantul diterima.

 

Grafik sensor:

 

Berdasarkan grafik di atas dapat disimpulkan bahwa bahwa sensor ultrasonik memiliki kinerja rendah dalam pengukuranpada jarak yang rendah. Kinerja sensor memiliki hasil yang akurat untuk pengukuran jarak jauh.

Secara detail, cara kerja sensor ultrasonik adalah sebagai berikut:

· Sinyal dipancarkan oleh pemancar ultrasonik dengan frekuensi tertentu dan dengan durasi waktu tertentu. Sinyal tersebut berfrekuensi diatas 20kHz. Untuk mengukur jarak benda (sensor jarak), frekuensi yang umum digunakan adalah 40kHz.

· Sinyal yang dipancarkan akan merambat sebagai gelombang bunyi dengan kecepatan sekitar 340 m/s. Ketika menumbuk suatu benda, maka sinyal tersebut akan dipantulkan oleh benda tersebut.

· Setelah gelombang pantulan sampai di alat penerima, maka sinyal tersebut akan diproses untuk menghitung jarak benda tersebut. Jarak benda dihitung berdasarkan rumus :

S = 340.t/2

dimana S merupakan jarak antara sensor ultrasonik dengan benda (bidang pantul), dan t     adalah selisih antara waktu pemancaran gelombang oleh transmitter dan waktu ketika     gelombang pantul diterima receiver.

 

4) DS18B20

 

Sensor Suhu DS18B20 adalah sensor Suhu yang menggunakan interface one wire, sehingga hanya menggunakan kabel yang sedikit dalam instalasi nya. Unik nya sensor ini bisa di jadikan paralel dengan satu input. Arti nya kita bisa menggunakan sensor DS18B20 lebih dari satu namun output sensor nya hanya di hubungkan ke satu PIN Arduino. Alasan ini membuat sensor ini banyak di gunakan, apalagi sensor ini memiliki tipe waterprof, sehingga sensor ini bisa kita buat sebagai alat ukur dan kontrol pemanas air.

Spesifikasi:

· Unique 1 wire interface dengan output satu pin

· Range Suhu yang di ukur dari -55C – 125C (-67F – 257F)

· Akurasi pada suhu -10C sampai +85C adalah 0.5C

· Resolusi sensor 12bit

· Voltage 3v – 5.5V

· Pull up voltage 3v – 5.5v

 

Pada mode Normal power, pin akan terhubung sesuai dengan namanya yaitu VCC ke sumber tegangan (+5V), GND akan terhubung ke ground, dan Data akan terhubung ke pin digital arduino. Namun diantara pin data dan VCC diberi resistor pull-up sebesar +- 4K7 Ohm. Fungsi resistor pull-up ini untuk mengatasi kondisi mengambang (diantara Low dan High) yang terjadi pada rangkaian sensor agar keluaran dapat terdefinisi antara HIGH atau LOW.

Pada Parasite Power, perbedaannya pada pin GND dan VCC disatukan dan terhubung dengan Ground. Sedangkan Data tetap akan terhubung ke pin arduino dengan juga tetap menggunakan resistor pull-up. Pada mode ini daya sensor berasal dari jalur Data.

 

5) LDR Sensor

 

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 menjadi 500 Ohm (Ω) pada 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.

Bagian-bagian LDR:

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.


6) Touch Sensor

 

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.

Cara kerja sensor sentuh adalah active low, karena rangkaian ini mengggunakan resistor, resistor pulp up dan pulp down, rangkaian pulp up berisfat active low mengeluarkan sinyal 1 kecuali saat saklar aktif, namun sebaliknya resistor pulp down akan akrif jika mengeluarkan sinyal 0 kecuali saat saklar tidak aktif.

Jika rangkaian mengeluarkan sinyal 1 saat tombol tidak ditekan, namun jika sungut tertekan maka sinyal output akan menjadi 0 karena dihubungkan dengan ground.

 

Grafik Touch Sensor

 

7) RTC DS1307

 

RTC (Real Time Clock) merupakan jenis timer yang bekerja berdasarkan waktu nyata, atau dengan kata lain berdasarkan waktu sesaui waktu kita. Agar dapat berfungsi, pewaktu ini membutuhkan dua parameter utama yang harus ditentukan, yaitu pada saat mulai (start) dan pada saat berhenti (stop).

RTC dilengkapi dengan baterai sebagai supply pada chip sehingga jam akan up to date. Pada RTC dinilai cukup akurat sebagai pewaktu (timer) karena  menggunakan osilator Kristal pada rangkaiannya.

Fungsi pin-pin yang terdapat pada RTC :

· Pin VCC : sebagai power supply  dan memiliki tegangan kerja 5V

· Pin GND : dihubungkan ke ground

· Pin SCL : sebagai saluran clock untuk komunikasi data antara mikroontroler dengan RTC

· Pin SDA : sebagai saluran data untuk komunikasi data antara mikrokontroler dan RTC

· X1 dan X2 : untuk saluran clock yang bersumber dari crustal external

· Vbat : sebagai saluran energi listrik dari battery external

DS1307 merupakan salah satu tipe IC RTC yang dapat bekerja dalam daya listrik rendah, yang juga sering kita jumpai dalam PC/hanphone. Waktu jam dan kalender memberikan informasi detik, menit, jam, hari, tanggal, bulan, dan tahun. Untuk bagian jam dapat berformat 24 jam atau 12 jam. Pendeteksi sumber listrik juga disediakan untuk mendeteksi kegagalan sumber listrik dan langsung mengalihkannya ke sumber baterai.

Komunikasi yang digukan untuk RTC mengacu I2C-Bus atau Inter-Integrated Circuit Bus, merupakan bus serial yang dikembangkan oleh Phillips. I2C Bus digunakan untuk menghubungkan berbagai macam IC yang dikontrol oleh sistem microprocessor atau microcontroller (intelligent control application).

 

8) 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. Dalam kehidupan kita sehari-hari, kita dapat menemui dua jenis Batersai yaitu Baterai yang hanya dapat dipakai sekali saja (Single Use) dan Baterai yang dapat di isi ulang (Rechargeable).

Baterai Primer (Baterai Sekali Pakai/Single Use)

Baterai Primer atau Baterai sekali pakai ini merupakan baterai yang paling sering ditemukan di pasaran, hampir semua toko dan supermarket menjualnya. Hal ini dikarenakan penggunaannya yang luas dengan harga yang lebih terjangkau. Baterai jenis ini pada umumnya memberikan tegangan 1,5 Volt dan terdiri dari berbagai jenis ukuran seperti AAA (sangat kecil), AA (kecil) dan C (medium) dan D (besar). Disamping itu, terdapat juga Baterai Primer (sekali pakai) yang berbentuk kotak dengan tegangan 6 Volt ataupun 9 Volt.

 

Baterai Sekunder (Baterai Isi Ulang/Rechargeable)

Baterai Sekunder adalah jenis baterai yang dapat di isi ulang atau Rechargeable Battery. Pada prinsipnya, cara Baterai Sekunder menghasilkan arus listrik adalah sama dengan Baterai Primer. Hanya saja, Reaksi Kimia pada Baterai Sekunder ini dapat berbalik (Reversible). Pada saat Baterai digunakan dengan menghubungkan beban pada terminal Baterai (discharge), Elektron akan mengalir dari Negatif ke Positif. Sedangkan pada saat Sumber Energi Luar (Charger) dihubungkan ke Baterai Sekunder, elektron akan mengalir dari Positif ke Negatif sehingga terjadi pengisian muatan pada baterai. Jenis-jenis Baterai yang dapat di isi ulang (rechargeable Battery) yang sering kita temukan antara lain seperti Baterai Ni-cd (Nickel-Cadmium), Ni-MH (Nickel-Metal Hydride) dan Li-Ion (Lithium-Ion).

9) Relay

Relay adalah Saklar (Switch) yang dioperasikan secara listrik dan merupakan komponen Electromechanical (Elektromekanikal) yang terdiri dari 2 bagian utama yakni Elektromagnet (Coil) dan Mekanikal (seperangkat Kontak Saklar/Switch). Relay menggunakan Prinsip Elektromagnetik untuk menggerakkan Kontak Saklar sehingga dengan arus listrik yang kecil (low power) dapat menghantarkan listrik yang bertegangan lebih tinggi.

Konfigurasi pin:

Nomor PIN

Nama Pin

Deskripsi

1

Coil End 1

Digunakan untuk memicu (On / Off) Relay, Biasanya satu ujung terhubung ke 12V dan ujung lainnya ke ground

2

Coil End 2

Digunakan untuk memicu (On / Off) Relay, Biasanya satu ujung terhubung ke 12V dan ujung lainnya ke ground

3

Common (COM)

Common terhubung ke salah satu Ujung Beban yang akan dikontrol

4

Normally Close (NC)

Ujung lain dari beban terhubung ke NO atau NC. Jika terhubung ke NC beban tetap terhubung sebelum pemicu

5

Normally Open (NO)

Ujung lain dari beban terhubung ke NO atau NC. Jika terhubung ke NO, beban tetap terputus sebelum pemicu

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 (mechanically)

 

10) Resistor

Resistor merupakan komponen penting dan sering dijumpai dalam sirkuit Elektronik. Boleh dikatakan hampir setiap sirkuit Elektronik pasti ada Resistor. Tetapi banyak diantara kita yang bekerja di perusahaan perakitan Elektronik maupun yang menggunakan peralatan Elektronik tersebut tidak mengetahui cara membaca kode warna ataupun kode angka yang ada ditubuh Resistor itu sendiri.

Seperti yang dikatakan sebelumnya, nilai Resistor yang berbentuk Axial adalah diwakili oleh Warna-warna yang terdapat di tubuh (body) Resistor itu sendiri dalam bentuk Gelang. Umumnya terdapat 4 Gelang di tubuh Resistor, tetapi ada juga yang 5 Gelang.

Gelang warna Emas dan Perak biasanya terletak agak jauh dari gelang warna lainnya sebagai tanda gelang terakhir. Gelang Terakhirnya ini juga merupakan nilai toleransi pada nilai Resistor yang bersangkutan.

Tabel dibawah ini adalah warna-warna yang terdapat di Tubuh Resistor :

 

Perhitungan untuk Resistor dengan 4 Gelang warna :

Cara menghitung Toleransi :
2.200 Ohm dengan Toleransi 5% =
2200 – 5% = 2.090
2200 + 5% = 2.310
ini artinya nilai Resistor tersebut akan berkisar antara 2.090 Ohm ~ 2.310 Ohm.

 

11) Transistor NPN 2N22

 

Transistor adalah sebuah komponen di dalam elektronika yang diciptakan dari bahan-bahan semikonduktor dan memiliki tiga buah kaki. Masing-masing kaki disebut sebagai basis, kolektor, dan emitor.

· Emitor (E) memiliki fungsi untuk menghasilkan elektron atau muatan negatif.

· Kolektor (C) berperan sebagai saluran bagi muatan negatif untuk keluar dari dalam transistor.

· Basis (B) berguna untuk mengatur arah gerak muatan negatif yang keluar dari transistor melalui kolektor.

Fungsi dari transistor sendiri adalah memperkuat arus listrik yang masuk ke dalam rangkaian. Seperti yang telah disebutkan, transistor terdiri dari dua jenis yaitu NPN dan PNP. Transistor NPN akan aktif ketika kaki basis diberi arus listrik bermuatan negatif. Sebaliknya, transistor PNP akan aktif apabila kaki basis mendapatkan tegangan listrik positif. Pada transistor NPN, kaki basis memiliki kutub positif dan bersinggungan langsung dengan sumber listrik atau baterai. Sedangkan kaki emitor memiliki kutub negatif karena berhubungan langsung dengan massa. Kutub negatif juga ditemukan pada kaki kolektor yang menghubungkan massa di rangkaian listrik.

Cara kerja transistor:

Apabila saklar dalam posisi tertutup atau terhubung arus listrik akan mengalir dari kutub baterai positif melewati beban (dalam hal ini lampu) kemudian menuju kaki kolektor dan berhenti di sana. Arus berhenti dikarenakan transistor masih belum mendapatkan pemicu sehingga posisinya tidak aktif. Hal ini menyebabkan lampu masih tetap mati. Pada waktu yang bersamaan, arus pemicu yang ukurannya lebih kecil dibandingkan arus listrik utama mengalir dari sumber listrik menuju ke resistor kemudian ke saklar, melewati kaki basis transistor lanjut ke emitor, dan berlanjut menuju massa. Karena lampu mendapatkan masa listrik, beban tersebut pun akan menyala.

 

12) LED

 

  LED merupakan sebuah komponen elektromagnetik yang dapat memancarkan cahaya monokromatik melalui tegangan maju. LED terbuat dari bahan semikonduktor yang merupakan keluarga dioda. LED dapat memancarkan berbagai warna, tergantung dari bahan semikonduktor yang digunakan

Spesifikasi LED:

 

Grafik:

Cara kerja LED (Light Emitting Diode)

LED atau Light Emitting Diode yang memancarkan cahaya ketika dialiri tegangan maju ini juga dapat digolongkan sebagai Transduser yang dapat mengubah energi listrik menjadi energi cahaya.

 

13) Motor Servo (SG90)

 

Motor servo adalah sebuah perangkat listrik yang dapat mendorong atau memutar objek dengan presisi tinggi. Jika kamu ingin memutar sebuah objek pada beberapa sudut atau jarak tertentu, maka kamu bisa menggunakan motor servo.

Pada dasarnya motor servo hanyalah sebuah motor listrik yang dijalankan melalui mekanisme servo. Apabila motor yang digunakan menggunakan tenaga DC maka disebut motor servo DC dan sebaliknya apabila menggunakan tenaga AC maka disebut motor servo AC.

Nilai motor servo berupa kg/cm, contohnya motor servo ada yang 3 kg/cm, 6 kg/cm maupun 12 kg/cm atau sesuai dengan kebutuhan pemakaian. Kg/cm menandakan berapa besar bobot/berat sebuah benda yang dapat diangkat motor servo pada jarak tertentu.

Bagian motor servo

 

Pada motor servo kontrol, motor terpasang oleh roda gigi ke roda kontrol. Saat motor berputar, resistansi potensiometer akan berubah, sehingga rangkaian kontrol dapat dengan tepat mengatur seberapa banyak gerakan yang ada dan ke arah mana.

Ketika poros motor berada pada posisi yang diinginkan, daya yang disuplai ke motor dihentikan. Jika tidak, motor diputar ke arah yang sesuai. Posisi yang diinginkan dikirim melalui pulsa listrik melalui kabel sinyal. Kecepatan motor sebanding dengan perbedaan antara posisi aktual dan posisi yang diinginkan. Jadi jika motor berada di dekat posisi yang diinginkan, ia akan berputar perlahan, jika tidak maka akan berputar cepat, ini disebut sebagai kontrol proporsional.

Prinsip kerja:

Servo dikontrol dengan mengirimkan pulsa listrik dengan lebar variabel, atau biasa disebut Pulse Width Modulation (PWM) melalui kabel kontrol. Ada pulsa minimum, pulsa maksimum, dan tingkat pengulangan.

Motor servo biasanya hanya bisa berputar 90° ke arah mana pun dengan total gerakan 180°. Posisi netral motor didefinisikan sebagai posisi di mana servo memiliki jumlah putaran potensial yang sama di kedua arah searah jarum jam atau berlawanan arah jarum jam.

PWM yang dikirim ke motor akan menentukan posisi poros, dan berdasarkan pada durasi pulsa yang dikirim melalui kabel kontrol maka rotor akan berputar ke posisi yang diinginkan. Motor servo diharuskan agar mampu melihat pulsa setiap 20 milidetik (ms), dimana panjang pulsa tersebut akan menentukan seberapa jauh motor berputar.

 

14) LCD (LM016L)

 

LCD (Liquid Crystal Display) 16x2 adalah jenis media tampilan  atau Display dari bahan cairan kristal sebagai penampil utama.LCD 16x2 dapat menampilkan sebanyak 32 karakter yang terdiri dari 2 baris dengan tiap baris menampilkan 16 karakter.

Bagian-bagian LCD atau Liquid Crystal Display diantaranya adalah:

· Lapisan Terpolarisasi 1 (Polarizing Film 1)

· Elektroda Positif (Positive Electrode)

· Lapisan Kristal Cair (Liquid Cristal Layer)

· Elektroda Negatif (Negative Electrode)

· Lapisan Terpolarisasi 2 (Polarizing film 2)

· Backlight atau Cermin (Backlight or Mirror)

Dibawah ini adalah gambar struktur dasar sebuah LCD:

Pin out diagram LCD 16X2:

 

· Pin1 (Ground / Source Pin): Ini adalah pin tampilan GND, digunakan untuk menghubungkan terminal GND unit mikrokontroler atau sumber daya

· Pin2 (VCC / Source Pin): Ini adalah pin catu tegangan pada layar, digunakan untuk menghubungkan pin catu daya dari sumber listrik

· Pin3 (V0 / VEE / Control Pin): Pin ini mengatur perbedaan tampilan, yang digunakan untuk menghubungkan POT yang dapat diubah yang dapat memasok 0 hingga 5V.

· Pin4 (Register Select / Control Pin): Pin ini berganti-ganti antara perintah atau data register, digunakan untuk menghubungkan pin unit mikrokontroler dan mendapatkan 0 atau 1 (0 = mode data, dan 1 = mode perintah).

· Pin5 (Pin Baca / Tulis / Kontrol): Pin ini mengaktifkan tampilan di antara operasi baca atau tulis, dan terhubung ke pin unit mikrokontroler untuk mendapatkan 0 atau 1 (0 = Operasi Tulis, dan 1 = Operasi Baca).

· Pin 6 (Mengaktifkan / Mengontrol Pin): Pin ini harus dipegang tinggi untuk menjalankan proses Baca / Tulis, dan terhubung ke unit mikrokontroler & terus-menerus dipegang tinggi.

· Pin 7-14 (Pin Data): Pin ini digunakan untuk mengirim data ke layar. Pin ini terhubung dalam mode dua-kawat seperti mode 4-kawat dan mode 8-kawat. Dalam mode 4-kawat, hanya empat pin yang terhubung ke unit mikrokontroler seperti 0 hingga 3, sedangkan dalam mode 8-kawat, 8-pin terhubung ke unit mikrokontroler seperti 0 hingga 7

· Pin15 (+ve pin LED): Pin ini terhubung ke +5V

· Pin 16 (-ve pin LED): Pin ini terhubung ke GND.

 

15) Buzzer

 

  Buzzer listrik adalah sebuah komponen elektronika yang dapat mengubah sinyal listrik menjadi getaran suara.

Buzzer dapat bekerja dengan baik dalam menghasilkan frekuensi kisaran 1-5 KHz hingga 100 KHz untuk aplikasi ultrasound. Tegangan operasional buzzer yang umumnya berkisar 3-12 V.

Spesifikasi:

 

Cara Kerja Buzzer

    Tegangabn Listrik yang mengalir ke buzzer akan menyebabkan gerakan mekanis, gerakan tersebut akan diubah menjadi suara atau bunyi yang dapat didengar oleh manusia.

 

16) Papan Breadboard

 

Breadboard merupakan sebuah board atau papan yang berfungsi untuk merancang sebuah rangkaian elektronik sederhana. Breadboard tersebut nantinya akan dilakukan prototipe atau uji coba tanpa harus melakukan solder.

Umumnya breadboard terbuat dari bahan plastik yang juga sudah terdapat berbagai lubang. Lubang tersebut sudah diatur sebelumnya sehingga membentuk pola yang didasarkan pada pola jaringan di dalamnya. Selain itu, breadboard yang bisa ditemukan di pasaran umumnya dibagi menjadi 3 ukuran. Pertama dinamakan sebagai mini breadboard, kedua disebut medium breadboard, dan yang terakhir dinamakan sebagai large breadboard. Untuk mini breadboard, ia memiliki kurang lebih 170 titik.

Sementara untuk medium breadboard sudah dilengkapi dengan kurang lebih 400 titik. Large breadboard memiliki lubang kurang lebih 830. Seperti gambar yang sudah ada di atas, bahwa mini breadboard memiliki 200 titik hubung. Di bagian kanan sudah bisa dilihat pola layout yang digambarkan dengan garis biru. Di sini bisa dilihat beberapa tulisan mulai dari A sampai dengan J.

Setelah itu masih ada angka 1,5, 10, 15, maupun 20. Perpaduan antara huruf dan juga angka tersebut merupakan sebuah koordinat. Misalnya, A1, B1, sampai dengan E1 saling terkoneksi berdasarkan pola koneksinya (Bisa dilihat pada gambar berwarna biru). Sementara untuk A2 sampai dengan E2, A3 sampai dengan E3, F1 sampai dengan J1, dan seterusnya. Dengan memahami pola tersebut, maka kita nanti bisa membuat sebuah prototipe sehingga kita tidak bingung ketika harus menempatkan komponen-komponen elektronik tersebut sesuai dengan tempatnya masing-masing.


17) Kabel Jumper

Jumper adalah kabel elektrik yang memiliki pin konektor di setiap ujungnya dan memungkinkanmu untuk menghubungkan dua komponen yang melibatkan Arduino tanpa memerlukan solder.

Intinya kegunaan kabel jumper ini adalah sebagai konduktor listrik untuk menyambungkan rangkaian listrik.

Jenis jenis kabel jumper yang paling umum adalah sebagai berikut:

· Kabel Jumper Male to Male

Jenis yang pertama adalah kabel jumper male male. Kabel jumper male to male adalah adalah jenis yang sangat yang sangat cocok untuk kamu yang mau membuat rangkaian elektronik di breadboard.

· Kabel Jumper Male to Female

Kabel jumper male female memiliki ujung konektor yang berbeda pada tiap ujungnya, yaitu male dan female. Biasanya kabel ini digunakan untuk menghubungkan komponen elektronika selain Arduino ke breadboard.

· Kabel Jumper Female to Female

 

Jenis kabel jumper yang terakhir adalah kabel female to female. Kabel ini sangat cocok untuk menghubungkan antar komponen yang memiliki  header male. contohnya seperti sensor ultrasonik HC-SR04, sensor suhu DHT, dan masih banyak lagi.

 

18) Komunikasi yang digunakan

Serial Peripheral Interface (SPI)

Serial Peripheral Interface ( SPI ) merupakan salah satu mode komunikasi serial synchrounous kecepatan tinggi yang dimiliki oleh ATmega 328. Komunikasi SPI membutuhkan 3 jalur yaitu MOSI, 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.

 

Cara kerja komunikasi SPI

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.


4. Percobaan[Kembali]
a. Hardware[Kembali]

 

b. Rangkaian simulasi[Kembali]


 

c. Flowchart[Kembali]

Flowchart master


Flowchart slave

d. Listing Program[Kembali]

Program master

//SPI MASTER (ARDUINO)

//SPI COMMUNICATION BETWEEN TWO ARDUINO 

//CIRCUIT DIGEST

#include <SPI.h>                             //Library for SPI 

#include <Wire.h>

#include <OneWire.h>

#include <DallasTemperature.h>

//-----------------------------------------------------------------------------------------------------------------

const int pingPin = 4; // Trigger Pin of Ultrasonic Sensor

const int echoPin = 5; // Echo Pin of Ultrasonic Sensor

float distance;

const int PinSS = 10;

SPISettings settingsA(2000000, MSBFIRST, SPI_MODE1);

const int PinMOSI = 11;

const int PinMISO = 12;

const int PinSCK = 13;

//-----------------------------------------------------------------------------------------------------------------

#define touch 3

#define LED 8

int lastState = LOW;

int currentState;

int sentuh;

#define ldr A0

byte nilaiLDR; 

float nilaiSuhu;

//-----------------------------------------------------------------------------------------------------------------

// Data wire is plugged into digital pin 2 on the Arduino

#define ONE_WIRE_BUS 2


// Setup a oneWire instance to communicate with any OneWire device

OneWire oneWire(ONE_WIRE_BUS);


// Pass oneWire reference to DallasTemperature library

DallasTemperature sensors(&oneWire);

//-----------------------------------------------------------------------------------------------------------------

void setup (void)

{

  sensors.begin(); // Start up the library

  pinMode(LED,OUTPUT);

  Serial.begin(115200);

  pinMode(PinMISO, INPUT);

  pinMode(PinSCK,OUTPUT);

  pinMode(PinSS, OUTPUT); // set the SS pin as an output  

  digitalWrite(PinSS, HIGH); // disable Slave Select  

  SPI.begin();                            //Begins the SPI commnuication

  SPI.setClockDivider(SPI_CLOCK_DIV8);    //Sets clock for SPI communication at 8 (16/8=2Mhz)

  pinMode(touch, INPUT);

  

}

//-------------------------------------------------------------------------------------------------------------------------------

void loop(void)

{

  digitalWrite(LED,HIGH);

  LDR();

  delay(7000);

  TOUCH();

  delay(7000);  

  ultrasonic();

  delay(7000);

  ds18b20();

  delay(7000);

}


int TOUCH(){

  currentState = digitalRead(touch);

  SPI.beginTransaction(settingsA);

  digitalWrite(PinSS, LOW); // Enable Slave Select

  int Mastersend,Mastereceive;

  if (lastState == LOW && currentState == HIGH){

     Serial.println("Sensor sedang disentuh");

     Mastersend = 1; 

     Serial.println(Mastersend);                           

     SPI.transfer(Mastersend); //Send the mastersend value to slave also receives value from slave

     delay(50);  

  }else{

      sentuh = 0;

        } 

  digitalWrite(PinSS, HIGH); // Disable Slave Select  

  SPI.endTransaction();

   return sentuh;     

}


int LDR(){

  nilaiLDR = analogRead(ldr);

  Serial.print("nilaiLDR : ");

  Serial.println(nilaiLDR);

  delay (10);

 

  SPI.beginTransaction(settingsA);

  digitalWrite(PinSS, LOW); // Enable Slave Select

  int Mastersend,Mastereceive;

  if(nilaiLDR < 100 )

  {

    Mastersend = 2;  

    Serial.println(Mastersend);                          

    SPI.transfer(Mastersend); //Send the mastersend value to slave also receives value from slave

    delay(50);

  }

  digitalWrite(PinSS, HIGH); // Disable Slave Select  

  SPI.endTransaction();

  return nilaiLDR;

}

//------------------------------------------------------------------------------------------------------------------------------


//-------------------------------------------------------------------------------------------------------------------------------

long ultrasonic(){

  long duration, inches, cm;

  pinMode(pingPin, OUTPUT);

  digitalWrite(pingPin, LOW);

  delayMicroseconds(5);

  digitalWrite(pingPin, HIGH);

  delayMicroseconds(10);

  digitalWrite(pingPin, LOW);


  pinMode(echoPin, INPUT);  

  duration = pulseIn(echoPin, HIGH);

  inches = microsecondsToInches(duration);

  cm = microsecondsToCentimeters(duration);

  // Calculating the distance

  distance= duration*0.034/2;

  

      

  // Prints the distance on the Serial Monitor

  Serial.print("Distance : ");

  Serial.print(distance);

  Serial.print(", inch : ");

  Serial.print(inches);

  Serial.print(",cm : ");

  Serial.print(cm);

  Serial.println();


  delay(100);

  

  

  SPI.beginTransaction(settingsA);

  digitalWrite(PinSS, LOW); // Enable Slave Select

  int Mastersend,Mastereceive;          

  if(distance > 15)                //Logic for Setting x value (To be sent to slave) depending upon input from pin 2

  {

    Mastersend = 3; 

    Serial.println(Mastersend);                               

    SPI.transfer(Mastersend); //Send the mastersend value to slave also receives value from slave

    delay(50);

  }

  digitalWrite(PinSS, HIGH); // Enable Slave Select

  SPI.endTransaction();

}


long microsecondsToInches(long microseconds)

{

return microseconds / 74 / 2;

}


long microsecondsToCentimeters(long microseconds)

{

return microseconds / 29 / 2;

}

//-------------------------------------------------------------------------------------------------------------------------------


//--------------------------------------------------------------------------------------------

int ds18b20(){

  // Send the command to get temperatures

  sensors.requestTemperatures(); 

  

  nilaiSuhu = sensors.getTempCByIndex(0); //Mencari nilai Suhu

  

  delay(100);                                  //Waktu delay 100 ms setelah dieksekusi

  Serial.print("Suhu = ");

  Serial.print(nilaiSuhu); 

  Serial.println(" Derajat Celcius"); 

  delay(500);


  SPI.beginTransaction(settingsA);

  digitalWrite(PinSS, LOW); // Enable Slave Select

  int Mastersend,Mastereceive;

  if(nilaiSuhu > 30 & nilaiSuhu < 41 )

  {

    Mastersend = nilaiSuhu; 

    Serial.println(Mastersend);                             

    SPI.transfer(Mastersend); //Send the mastersend value to slave also receives value from slave

    delay(50);

  }

  digitalWrite(PinSS, HIGH); // Enable Slave Select

  SPI.endTransaction();

  return nilaiSuhu;

}


Program Slave

//SPI SLAVE (ARDUINO)

//SPI COMMUNICATION BETWEEN TWO ARDUINO

 

#include <LiquidCrystal.h> //Deklarasi libary LCD

#include <SPI.h>

#include <Servo.h>

#include <virtuabotixRTC.h>

//-----------------------------------------------------------------------------------------------------

#define servoPin 3

Servo myservo;

LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);

 

volatile boolean received;

volatile byte Slavereceived,Slavesend;

int buttonvalue;

// Create a variable to store the servo position:

int angle = 0;

 

#define buzzer 9

#define pompa 4 //Deklarasi pin 10 sebagai pompa

//-----------------------------------------------------------------------------

/*

int RSpin = A0;

int RSvalue = 205;

 

int kontraspin = 2;

int kontrasvalue = 135;

*/

const int PinSS = 10;

const int PinMISO = 12;

const int PinSCK = 13;

 

//setting Alarmnya

int jam = 13;

int menit = 47;

int detik = 50;

 

//Inisialisasi pin (CLK, DAT, RST)

virtuabotixRTC myRTC(6,7,8);

 

//-----------------------------------------------------------------------------

void setup()

{

  myRTC.setDS1302Time(00, 46, 13, 5, 5, 1, 2023); //detik, menit, jam, hari dalam seminggu, tanggal, bulan, tahun

  

  lcd.begin(16,2);

  Serial.begin(115200);

  pinMode(buzzer,OUTPUT);

  pinMode(MISO,OUTPUT);                   //Sets MISO as OUTPUT (Have to Send data to Master IN

 

  pinMode(pompa, OUTPUT); //Deklarasi pompa sebagai OUTPUT

// Turn off motors - Initial state

digitalWrite(pompa, HIGH);

  

  SPCR |= _BV(SPE);                       //Turn on SPI in Slave Mode

  Slavereceived = 0;

  received = false;

  SPI.attachInterrupt();                  //Interuupt ON is set for SPI commnucation

  // Attach the Servo variable to a pin:

  myservo.attach(servoPin);

  /*

  pinMode(RSpin, OUTPUT);

  pinMode(kontraspin, OUTPUT);

  analogWrite(RSpin, RSvalue);

  analogWrite(kontraspin, kontrasvalue);

  */

  }

 

ISR (SPI_STC_vect) // SPI interrupt routine

{

  Slavereceived = SPDR;         // Value received from master if store in variable slavereceived

  received = true;                        //Sets received as True

}

 

void setRTC(){

myRTC.updateTime();

lcd.setCursor(0,0);

lcd.print("Tanggal:");

lcd.print(myRTC.dayofmonth);

lcd.print("/");

lcd.print(myRTC.month);

lcd.print("/");

lcd.print(myRTC.year);

lcd.print(" ");

lcd.setCursor(0,1);

lcd.print("Waktu:");

lcd.print(myRTC.hours);

lcd.print(":");

lcd.print(myRTC.minutes);

lcd.print(":");

lcd.println(myRTC.seconds);

 

Serial.print("Tanggal/Waktu:");

Serial.print(myRTC.dayofmonth);

Serial.print("/");

Serial.print(myRTC.month);

Serial.print("/");

Serial.print(myRTC.year);

Serial.print(" ");

Serial.print(myRTC.hours);

Serial.print(":");

Serial.print(myRTC.minutes);

Serial.print(":");

Serial.println(myRTC.seconds);

 

  if(myRTC.hours == jam & myRTC.minutes == menit & myRTC.seconds < detik )                //Logic for Setting x value (To be sent to slave) depending upon input from pin 2

  {

    lcd.clear();

    lcd.setCursor(0,0);

    lcd.print("ini saatnya");

    lcd.setCursor(0,1);

    lcd.print("beri makan");

    Serial.println("beri makan");

    Servo_pakan();

    delay (1000);

  }

}

 

void loop(){

  setRTC();

  delay(2000);

  if(received)                            //Logic to SET LED ON OR OFF depending upon the value recerived from master

   {

     

     Serial.println (Slavereceived); //print the array on serial monitor

      if (Slavereceived == 3)       //ULTRASONIC

      {

        lcd.clear();

        lcd.setCursor(0,0);

        lcd.print("Pakan sedikit");

        Serial.println("Pakan sedikit");

        lcd.setCursor(0,1);

        lcd.print("Ayok isi !!");

        digitalWrite(buzzer,HIGH);

        delay(500);

        digitalWrite(buzzer,LOW);

        delay (500);

      }

      else if (Slavereceived > 30 & Slavereceived < 41  )

      {

        lcd.clear();

        lcd.setCursor(0,0);

        lcd.print("suhu tinggi!!");

        Serial.println("suhu tinggi!!");

        lcd.setCursor(0,1);

        lcd.print(Slavereceived);

        delay (1000);

      }

      else if (Slavereceived == 2)      //LDR

      {

        lcd.clear();

        lcd.setCursor(0,0);

        lcd.print("air kotor");

        Serial.println("air kotor");

        lcd.setCursor(0,1);

        lcd.print("ayok ganti!");

        digitalWrite(buzzer,HIGH);

        delay (500);

        digitalWrite(buzzer,LOW);

        delay (500);

      }

      else if (Slavereceived==1)       //TOUCH

      {

        lcd.clear();

        lcd.setCursor(0,0);

        lcd.print("air kotor!!");

        lcd.setCursor(0,1);

        lcd.print("lagi dikeluarkan");

        Serial.println("lagi dikeluarkan");

        digitalWrite(pompa, LOW);        

        delay (1000);

      }

      digitalWrite(buzzer,LOW);

      delay(3000);

    }

    lcd.clear();

    received = false; //reset the process

    digitalWrite(pompa, HIGH);  //pompa

    delay(1000);

}

 

void Servo_pakan(){

  // Tell the servo to go to a particular angle:

  myservo.write(0);

  delay(1000);

  myservo.write(90);

  delay(1000);

  myservo.write(0);

  delay(1000);

}

e. Prinsip kerja[Kembali]

Pada rangkaian ini, ada 2 arduino yang digunakan sebagai master (kiri) dan slave (kanan). Pada Master ada 4 sensor yang akan digunakan yaitu Ultrasonic, LDR, LM35 dan Touch sensor. Pertama TOUCH, digunakan untuk mengeluarkan air di kolam. Saat sensor touch disentuh maka nilai “1” akan dikirimkan ke slave melalui komunikasi SPI. Kedua LDR, digunakan untuk mendeteksi kekeruhan air. Jika terdeteksi keruh (gelap dan intensitas cahaya berkurang) maka nilai “2” akan dikirimkan ke slave melalui komunikasi SPI. Ketiga Ultrasonic, digunakan untuk mendeteksi pakan ikan. Jika jarak yang terbaca sudah melebihi 15cm (pakan sedikit) maka nilai “3” akan dikirimkan ke slave melalui komunikasi SPI. Keempat LM35, digunakan untuk mendeteksi suhu dari kolam. Jika suhu yang terbaca lebih dari 30°C (suhu kurang optimum bagi pertumbuhan ikan) maka nilai “4” akan dikirimkan melalui komunikasi SPI ke slave.

Pada slave terdapat RTC yang digunakan untuk menunjukkan jam, dimana jam ini nantinya akan digunakan untuk penanda waktu-waktu tertentu untuk pemberian pakan ikan. Saat slave menerima nilai “1” maka pompa akan hidup dan mengeluarkan air yang ada di kolam. Kemudian, saat slave menerima nilai “2” maka LCD akan menampilkan kata “Air kotor, ayo ganti!”. Selanjutnya, saat slave menerima nilai “3” maka motor servo akan aktif dan membuka katup untuk memberi makan ikan. Selain itu, pada LCD juga akan tampil tulisan “saatnya memberi makan”. Lalu, saat slave menerima nilai “4”, maka akan tampil tulisan “Suhu tinggi” pada LCD. 

 f. Kesimpulan[Kembali]

Dari Modul 4 Praktikum Mikroprosesor dan Mikrokontroler yang telah dilakukan, dapat dismpulkan bahwa dalam pembuatan project yang berjudul “Kontrol kolam ikan otomatis” digunakan 4 sensor, yaitu sensor untraasonik, sensor touch, LDR, dan LM35 yang mana outputnya adalah LCD, motor servo, dan buzzer. Pada project ini digunakan komuniksi SPI yang menggunakan pin MISO, MOSI, dan SCK. Komunikasi SPI memiliki  kecepatan transfer data yang lebih tinggi daripada komunikasi UART dan I2C.

g. Video[Kembali]

 

       
5. Download[Kembali]
Download HTML 
Download video demo
Download datasheet arduino
Download datasheet sensor ultrasonik
Download datasheet sensor touch
Download datasheet sensor DS18B20
Download datasheet sensor LDR
Downlaod datasheet LCD
Download datasheet buzzer
Download datasheet motor servo
Download datasheet LED
Download library arduino
Download library sensor ultrasonik
Download library touch sensor

LAPORAN AKHIR M4 (PERCOBAAN 2)   [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. JURNAL 2. HARDWARE 3. GAMBAR RANGKAIAAN 4. PRINSIP KERJA 5. VID...