LAPORAN MODUL 4



Sistem Monitoring Gudang Penyimpanan Biji Kopi


Indonesia merupakan salah satu negara penghasil kopi terbesar di dunia dengan produksi mencapai 760.963 ton pada tahun 2023. Kualitas biji kopi sangat bergantung pada proses penyimpanan yang tepat, dimana faktor lingkungan seperti suhu, kelembapan, intensitas cahaya, dan keamanan gudang menjadi parameter kritis yang harus dimonitor secara berkelanjutan.

            Penyimpanan biji kopi yang tidak optimal dapat menyebabkan berbagai masalah seperti pertumbuhan jamur akibat kelembapan tinggi, penurunan kualitas akibat suhu yang tidak terkontrol, kerusakan akibat paparan cahaya berlebihan, serta kehilangan stok akibat gangguan hama atau pencurian. Kondisi suhu ideal untuk penyimpanan biji kopi berkisar antara 18-24°C dengan kelembapan relatif 50-60%⁴.

            Dalam perkembangan teknologi saat ini, sistem berbasis mikrokontroler dan sensor-sensor pintar dapat digunakan untuk memonitor kondisi gudang secara real-time. Penggunaan perangkat seperti sensor suhu dan kelembapan (DHT22), sensor pendeteksi cahaya (LDR), sensor kelembapan tanah (soil moisture), serta sensor inframerah (IR) dapat memberikan data yang dibutuhkan. Data ini kemudian ditampilkan melalui layar LCD dan sistem akan memberikan respon berupa alarm atau penggerak motor apabila diperlukan.

            Melalui proyek sederhana ini, dirancang sebuah sistem monitoring kondisi gudang penyimpanan biji kopi berbasis mikrokontroler yang dapat diterapkan dalam bentuk miniatur menggunakan kardus sebagai representasi fisik dari gudang.


Adapun tujuan dari proyek ini adalah:

  1. Merancang dan membangun sistem monitoring lingkungan gudang penyimpanan biji kopi menggunakan sensor suhu, kelembapan, cahaya, dan pendeteksi gerak.
  2. Menampilkan data dari sensor ke LCD secara real-time.
  3. Mengaktifkan perangkat output seperti kipas, LED, dan buzzer berdasarkan hasil pembacaan sensor.
  4. Mensimulasikan kondisi nyata gudang dalam bentuk miniatur kardus.

1.     Raspberry Pi Pico

3.     DHT22 

     4. Sensor LDR



      5. Sensor Ultrasonic





      6.  Sensor  

7.     LCD 2×16 I2C




8.  Motor DC

9.  Jumper


       10. Breadbord

11. LED 

12. Buzzer
13. Push Button
14. Modul Relay


A.    DHT22



Gambar 1. Sensor DHT 22

Sensor DHT22 adalah sensor suhu dan kelembapan digital yang memiliki tingkat akurasi dan rentang pengukuran lebih baik dibandingkan dengan DHT11. Sensor ini juga memiliki dua versi: versi 3 pin dan 4 pin, namun perbedaan ini hanya terletak pada bentuk fisik dan jumlah kakinya, bukan pada karakteristik kerjanya.

Konfigurasi Pin:

Versi 3 Pin (Module/Breakout Board):

·              Pin 1 (VCC): Tegangan input 3.3V hingga 6V

·              Pin 2 (Data): Data keluaran digital

·              Pin 3 (GND): Ground

Karakteristik Teknis DHT22:

·          Tegangan kerja: 3.3V – 6V

·          Kisaran pengukuran suhu: -40°C hingga +80°C

·          Akurasi suhu: ±0.5°C

·          Kisaran kelembapan: 0% – 100% RH

·          Akurasi kelembapan: ±2% RH (dalam kisaran 25–80% RH)

·          Frekuensi sampling: Sekitar 0.5 Hz (1 pembacaan setiap 2 detik)

§  Output data: Digital, komunikasi satu kabel (single wire communication protocol)

Grafik Respon :



Gambar 2. Grafik Respon DHT 22

 

 

B.    Sensor Soil moisture

Kelembaban udara menggambarkan kandungan uap air di udara yang dapat dinyatakan sebagai kelembaban mutlak, kelembaban nisbi (relatif) maupun defisit tekanan uap air. Kelembaban nisbi adalah membandingkan antara kandungan ataupun tekanan uap air aktual dengan keadaan jenuhnya atau pada kapasitas udara untuk menampun uap air. Pada peralatan elektronik juga menjadi mudah berkarat jika udara disekitarnya memiliki kelembaban yang cukup tinggi. Oleh karena itu, informasi mengenai kelembaban udara pada suatu area tertentu menjadi sesuatu hal yang sangat penting untuk diketahui karena menyangkut efek-efek yang ditimbulkannya juga cukup besar. Moisture sensor adalah sensor kelembaban yang dapat mendeteksi kelembaban dalam tanah. Moisture sensor ini sangat sederhana, akan tetapi ideal untuk memantau taman kota, atau tingkat air pada tanaman pekarangan. Sensor ini terdiri dari dua probe untuk melewatkan arus listrik dalam tanah seperti yang ditunjukkan pada gambar  dibawah. Kemudian membaca resistansinya untuk mendapatkan nilai tingkat kelembaban. Semakin banyak air membuat tanah lebih mudah menghantarkan listrik (resistansi kecil), sedangkan untuk tanah yang kering sangat sulit menghantarkan listrik (resistansi besar). Sensor ini sangat membantu Anda untuk mengingatkan tingkat kelembaban pada tanaman atau memantau kelembaban tanah di kebun. IO Expansion Shield adalah shield yang sempurna untuk menghubungkan Sensor dengan Arduino



Gambar 3. Soil Moisture

 

C.    Sensor Utrasonic

Sensor ultrasonik merupakan sensor yang menggunakan gelombang ultrasonik. Gelombang ultrasonik yaitu gelombang yang umum digunakan untuk mendeteksi keberadaan suatu benda dengan memperkirakan jarak antara sensor dan benda tersebut. Sensor ini berfungsi untuk mengubah besaran fisis (bunyi) menjadi besaran listrik begitu pula sebaliknya.




Gambar 4. Sensor Ultrasonic

Sensor ultrasonik HC-SR04 merupakan sensor siap pakai yang berfungsi sebagai pengirim, penerima dan pengontrol gelombang ultrasonik. Sensor ini bisa digunakan untuk mengukur jarak benda dari 2 cm – 4 m dengan akurasi 3 mm. Sensor ultrasonik memiliki 4 pin, pin Vcc, Gnd, Trigger, dan Echo. Pin Vcc digunakan sebagai listrik positif dan Gnd sebagai ground. Pin Trigger digunakan untuk trigger keluarnya sinyal dari sensor dan pin Echo untuk menangkap sinyal pantul dari benda.

Cara menggunakan sensor ini yaitu ketika diberikan tegangan positif pada pin Trigger selama 10uS, maka sensor akan mengirimkan 8 step sinyal ultrasonik dengan frekuensi 40 kHz. Selanjutnya, sinyal akan diterima pada pin Echo. Untuk mengukur jarak benda yang memantulkan sinyal tersebut, maka selisih waktu ketika mengirim dan menerima sinyal digunakan untuk menentukan jarak benda tersebut.





Grafk HC SR-04 Ultrasonic Sensor



 

D.    LDR (Light dependent resistor)

Light Dependent Resistor (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. Fungsi LDR (Light Dependent Resistor) adalah untuk menghantarkan arus listrik jika menerima sejumlah intensitas cahaya (Kondisi Terang) dan menghambat arus listrik dalam kondisi gelap.

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.

Adapun grafik respon sensor adalah:



Gambar 10. Grafik Sensitifitas LDR




Gambar 11. Grafik Spektral LDR

E.     Raspberry Pi Pico

Dasar Teori Raspberry Pi Pico

Raspberry Pi Pico adalah papan mikrokontroler pertama yang dirilis oleh Raspberry Pi Foundation. Papan ini menggunakan chip buatan mereka sendiri, yaitu RP2040, dan dirancang untuk aplikasi sistem tertanam (embedded system), mirip seperti Arduino. Raspberry Pi Pico sangat cocok untuk digunakan dalam berbagai proyek elektronika, sensor, dan Internet of Things (IoT), karena ukurannya kecil, konsumsi daya rendah, serta fleksibel dalam pemrogramannya.

Konfigurasi Pin (Pinout Ringkas):

Raspberry Pi Pico memiliki total 40 pin dengan berbagai fungsi. Beberapa pin penting di antaranya:

·        Pin 1, 39 (3V3): Tegangan output 3.3V

·        Pin 36, 38 (GND): Ground

·        Pin 26–28: Input analog (ADC 12-bit)

·        Pin GPIO 0–22: Input/Output digital, dapat digunakan untuk UART, I2C, SPI, PWM

·        Pin 30 (RUN): Reset pin

·        Micro USB: Digunakan untuk pemrograman dan komunikasi data

 

Karakteristik Teknis Raspberry Pi Pico:

·        Mikrokontroler: RP2040, buatan Raspberry Pi

·        Arsitektur CPU: Dual-core ARM Cortex-M0+ @133 MHz

·        Memori Flash: 2 MB

·        RAM: 264 KB

·        Jumlah GPIO: 26 pin multifungsi

·        Jumlah ADC: 3 kanal ADC 12-bit

·        Antarmuka komunikasi: 2 × UART, 2 × I2C, 2 × SPI

·        Jumlah kanal PWM: 16 kanal (dari 8 slice PWM)

·        Tegangan logika: 3.3V

·        Tegangan input (VSYS): 1.8V – 5.5V

·        Konektivitas USB: Micro USB (untuk daya dan pemrograman)

Keunggulan Raspberry Pi Pico:

·        Dual-core memungkinkan multitasking ringan

·        Dapat diprogram dengan C/C++ atau MicroPython

·        Harga terjangkau dan dokumentasi resmi lengkap

·        Cocok untuk pemula maupun pengguna tingkat lanjut

·        Mendukung banyak komunikasi data (UART, I2C, SPI)



Gambar . Raspberry Pi Pico

 

F.     Motor DC




 

 

 Terdapat dua bagian utama pada sebuah Motor Listrik DC, yaitu Stator dan Rotor. Stator adalah bagian motor yang tidak berputar, bagian yang statis ini terdiri dari rangka dan kumparan medan. Sedangkan Rotor adalah bagian yang berputar, bagian Rotor ini terdiri dari kumparan Jangkar. Dua bagian utama ini dapat dibagi lagi menjadi beberapa komponen penting yaitu diantaranya adalah Yoke (kerangka magnet), Poles (kutub motor), Field winding (kumparan medan magnet), ArmatureWinding (Kumparan Jangkar), Commutator (Komutator)dan Brushes (kuas/sikat arang).

 

    Pada prinsipnya motor listrik DC menggunakan fenomena elektromagnet untuk bergerak, ketika arus listrik diberikan ke kumparan, permukaan kumparan yang bersifat utara akan bergerak menghadap ke magnet yang berkutub selatan dan kumparan yang bersifat selatan akan bergerak menghadap ke utara magnet. Saat ini, karena kutub utara kumparan bertemu dengan kutub selatan magnet ataupun kutub selatan kumparan bertemu dengan kutub utara magnet maka akan terjadi saling tarik menarik yang menyebabkan pergerakan kumparan berhenti.

 



 

    Untuk menggerakannya lagi, tepat pada saat kutub kumparan berhadapan dengan kutub magnet, arah arus pada kumparan dibalik. Dengan demikian, kutub utara kumparan akan berubah menjadi kutub selatan dan kutub selatannya akan berubah menjadi kutub utara. Pada saat perubahan kutub tersebut terjadi, kutub selatan kumparan akan berhadap dengan kutub selatan magnet dan kutub utara kumparan akan berhadapan dengan kutub utara magnet. Karena kutubnya sama, maka akan terjadi tolak menolak sehingga kumparan bergerak memutar hingga utara kumparan berhadapan dengan selatan magnet dan selatan kumparan berhadapan dengan utara magnet. Pada saat ini, arus yang mengalir ke kumparan dibalik lagi dan kumparan akan berputar lagi karena adanya perubahan kutub. Siklus ini akan berulang-ulang hingga arus listrik pada kumparan diputuskan.

G.    LCD I2C 16x2

LCD atau Liquid Crystal Display adalah suatu jenis media display (tampilan) yang menggunakan kristal cair (liquid crystal) untuk menghasilkan gambar yang terlihat. Teknologi Liquid Crystal Display (LCD) atau Penampil Kristal Cair sudah banyak digunakan pada produk-produk seperti layar Laptop, layar Ponsel, layar Kalkulator, layar Jam Digital, layar Multimeter, Monitor Komputer, Televisi, layar Game portabel, layar Thermometer Digital dan produk-produk elektronik lainnya. Teknologi Display LCD ini memungkinkan produk-produk elektronik dibuat menjadi jauh lebih tipis jika dibanding dengan teknologi Tabung Sinar Katoda (Cathode Ray Tube atau CRT). Jika dibandingkan dengan teknologi CRT, LCD juga jauh lebih hemat dalam mengkonsumsi daya karena LCD bekerja berdasarkan prinsip pemblokiran cahaya sedangkan CRT berdasarkan prinsip pemancaran cahaya. Namun LCD membutuhkan lampu backlight (cahaya latar belakang) sebagai cahaya pendukung karena LCD sendiri tidak memancarkan cahaya. Beberapa jenis backlight yang umum digunakan untuk LCD diantaranya adalah backlight CCFL (Cold cathode fluorescent lamps) dan backlight LED (Light emitting diodes). LCD atau Liquid Crystal Display pada dasarnya terdiri dari dua bagian utama yaitu bagian Backlight (Lampu Latar Belakang) dan bagian Liquid Crystal (Kristal Cair). Seperti yang disebutkan sebelumnya, LCD tidak memancarkan pencahayaan apapun, LCD hanya merefleksikan dan mentransmisikan cahaya yang melewatinya. Oleh karena itu, LCD memerlukan Backlight atau Cahaya latar belakang untuk sumber cahayanya. Cahaya Backlight tersebut pada umumnya adalah berwarna putih. Sedangkan Kristal Cair (Liquid Crystal) sendiri adalah cairan organik yang berada diantara dua lembar kaca yang memiliki permukaan transparan yang konduktif. 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:

 




LCD yang digunakan pada Kalkulator dan Jam Tangan digital pada umumnya menggunakan Cermin untuk memantulkan cahaya alami agar dapat menghasilkan digit yang terlihat di layar. Sedangkan LCD yang lebih modern dan berkekuatan tinggi seperti TV, Laptop dan Ponsel Pintar menggunakan lampu Backlight (Lampu Latar Belakang) untuk menerangi piksel kristal cair. Lampu Backlight tersebut pada umumnya berbentuk persegi panjang atau strip lampu Flourescent atau Light Emitting Diode (LED). Cahaya putih adalah cahaya terdiri dari ratusan cahaya warna yang berbeda. Ratusan warna cahaya tersebut akan terlihat apabila cahaya putih mengalami refleksi atau perubahan arah sinar. Artinya, jika beda sudut refleksi maka berbeda pula warna cahaya yang dihasilkan. Backlight LCD yang berwarna putih akan memberikan pencahayaan pada Kristal Cair atau Liquid Crystal. Kristal cair tersebut akan menyaring backlight yang diterimanya dan merefleksikannya sesuai dengan sudut yang diinginkan sehingga menghasilkan warna yang dibutuhkan. Sudut Kristal Cair akan berubah apabila diberikan tegangan dengan nilai tertentu. Karena dengan perubahan sudut dan penyaringan cahaya backlight pada kristal cair tersebut, cahaya backlight yang sebelumnya adalah berwarna putih dapat berubah menjadi berbagai warna. Jika ingin menghasilkan warna putih, maka kristal cair akan dibuka selebar lebarnya sehingga cahaya backlight yang berwarna putih dapat ditampilkan sepenuhnya. Sebaliknya, apabila ingin menampilkan warna hitam, maka kristal cair harus ditutup serapat-rapatnya sehingga tidak adalah cahaya backlight yang dapat menembus. Dan apabila menginginkan warna lainnya, maka diperlukan pengaturan sudut refleksi kristal cair yang bersangkutan

 

H.    LED

LED adalah suatu semikonduktor yang memancarkan cahaya, LED mempunyai kecenderungan polarisasi. LED mempunyai kutub positif dan negatif (p-n) dan hanya akan menyala bila diberikan arus maju. Ini dikarenakan LED terbuat dari bahan semikonduktor yang hanya akan mengizinkan arus listrik mengalir ke satu arah dan tidak ke arah sebaliknya. Bila LED diberikan arus terbalik, hanya akan ada sedikit arus yang melewati LED. Ini menyebabkan LED tidak akan mengeluarkan emisi cahaya.





Prinsip Kerja LED:

Karena LED adalah salah satu jenis dioda maka LED memiliki 2 kutub yaitu anoda dan katoda. Dalam hal ini LED akan menyala bila ada arus listrik mengalir dari anoda menuju katoda. Pemasangan kutub LED tidak boleh terebalik karena apabila terbalik kutubnya maka LED tersebut tidak akan menyala. Led memiliki karakteristik berbeda-beda menurut warna yang dihasilkan. Semakin tinggi arus yang mengalir pada led maka semakin terang pula cahaya yang dihasilkan, namun perlu diperhatikan bahwa besarnya arus yang diperbolehkan 10mA- 20mA dan pada tegangan 1,6V – 3,5 V menurut karakter warna yang dihasilkan.

 

I.       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. Sebagai contoh, dengan Relay yang menggunakan Elektromagnet 5V dan 50 mA mampu menggerakan Armature Relay (yang berfungsi sebagai saklarnya) untuk menghantarkan listrik 220V 2A.





Berikut merupakan grafik pengukuran tegangan pada driver relay kondisi sensor aktif:





 



 

J.      Buzzer

Buzzer adalah komponen elektronik yang digunakan untuk menghasilkan suara atau bunyi. Buzzer sering digunakan sebagai indikator audio dalam berbagai rangkaian elektronika seperti alarm, notifikasi, sistem peringatan, dan perangkat interaktif lainnya. Komponen ini bekerja dengan mengubah sinyal listrik menjadi getaran mekanik yang menghasilkan suara.

Terdapat dua jenis utama buzzer, yaitu buzzer aktif dan buzzer pasif, yang dibedakan berdasarkan cara kerjanya dan sinyal masukan yang dibutuhkan.

Jenis-jenis Buzzer dan Konfigurasi Pin:

1. Buzzer Aktif

·        Karakteristik: Memiliki rangkaian osilator internal. Buzzer akan langsung berbunyi ketika diberi tegangan (biasanya DC).

·        Kebutuhan sinyal: Hanya perlu tegangan DC (contoh: 5V)

·        Pin 1: VCC (+)

·        Pin 2: GND (−)

 

2. Buzzer Pasif

·        Karakteristik: Tidak memiliki osilator internal. Memerlukan sinyal gelombang frekuensi (biasanya PWM) untuk menghasilkan bunyi.

·        Kebutuhan sinyal: Sinyal digital pulsa (frekuensi) dari mikrokontroler

·        Pin 1: Input sinyal (misalnya dari pin PWM)

·        Pin 2: GND

Buzzer pasif memberikan fleksibilitas karena kita dapat mengubah frekuensi suara yang dihasilkan sesuai sinyal input.

 

 

Karakteristik Teknis Umum:

·        Tegangan kerja: 3V – 12V (tergantung tipe)

·        Arus kerja: ±20 mA

·        Frekuensi kerja: Biasanya sekitar 1.5 kHz – 3 kHz

·        Ukuran: Beragam, tersedia dalam model PCB-mount maupun berbentuk modul

 

K.    Resistor



 

Resistor adalah komponen elektronik pasif yang berfungsi untuk menghambat arus listrik dalam suatu rangkaian. Komponen ini tidak memiliki polaritas sehingga dapat dipasang bolak-balik.

Resistor bekerja mengikuti Hukum Ohm:

V=I×RV = I \times RV=I×R

di mana:

·              V: Tegangan (Volt)

·              I: Arus (Ampere)

·              R: Resistansi (Ohm / Ω)

Jenis Resistor:

·              Resistor tetap: Nilai resistansi tidak berubah

·              Resistor variabel: Nilai resistansi dapat disesuaikan (misalnya potensiometer)

·              Resistor khusus: Contoh LDR (peka cahaya), NTC/PTC (pada suhu)

Karakteristik Teknis:

·              Satuan: Ohm (Ω)

·              Tegangan kerja: 50V – 250V (tergantung tipe)

·              Daya tahan panas: Umumnya 1/4 Watt (0.25W)

·              Toleransi: Umumnya ±1% hingga ±5%

·              Penanda nilai: Menggunakan kode warna pita

Fungsi dalam Rangkaian:

·              Melindungi komponen seperti LED dari arus berlebih

·              Menurunkan tegangan

·              Membagi tegangan (voltage divider)

·              Pull-up/pull-down di mikrokontroler

 

L.     Push Button



Push button adalah komponen saklar (switch) sederhana yang berfungsi untuk menghubungkan atau memutuskan arus listrik saat ditekan. Komponen ini bersifat non-locking, artinya hanya aktif saat ditekan dan akan kembali ke posisi semula saat dilepas.

Jenis Push Button:

·        NO (Normally Open): Sirkuit terbuka, baru terhubung saat ditekan

·        NC (Normally Closed): Sirkuit tertutup, akan terputus saat ditekan

Konfigurasi Pin:

·        Umumnya memiliki 2 atau 4 pin

·        Pada tipe 4 pin, pin-pin yang berseberangan biasanya saling terhubung

 

Karakteristik Teknis:

·        Tegangan kerja: Biasanya 3V – 12V

·        Tahan arus: 50 mA – 500 mA

·        Tidak memiliki polaritas → bisa dipasang dua arah

 

Fungsi dalam Rangkaian:

·        Input manual untuk mikrokontroler (misal Raspberry Pi Pico atau Arduino)

·        Tombol reset, start, stop, atau kontrol menu

·        Umumnya digunakan dengan resistor pull-up/pull-down agar logika input stabil

 

 

M.   Komunikasi

Komunikasi merupakan suatu kata yang dapat diartikan sebagai cara untuk menyampaikan atau menyebarluaskan data dan informasi. Komunikasi data adalah bagian dari komunikasi yang secara khusus berkenaan dengan transmisi atau pemindahan data dan informasi diantara komputer-komputer dan piranti-piranti yang lain dalam bentuk digital yang dikirim melalui media komunikasi data. Data berarti informasi yang disajikan oleh isyarat digital.


1.1  Universal Asynchronous Receiver Transmitter

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

UART terdiri dari:

1.  Penyangga (buffer) Transmit/Receive

2.  Pengendali (control) Transmit/Receive

3.  Penyangga Bus Data

4.  Logika Kendali Read/Write

5.  Kendali Modem




Dalam pengiriman data, clock antara pengirim dan penerima harus sama karena paket data dikirim tiap bit mengandalkan clock tersebut. Inilah salah satu keuntungan model asynchronous dalam pengiriman data karena dengan hanya satu kabel transmisi maka data dapat dikirimkan.

Gambar 6. Format Data UART

Terdapat beberapa parameter yang dapat diatur yaitu start bit, parity bit, dan stop bit. Pengaturan ini harus sama antara pengirim dan penerima. Data yang dikirim adalah data berukuran 8 bit atau 1 byte. Jika ditambah dengan 3 parameter diatas maka total bit data yang dikirim adalah 11 bit. Dari format data inilah setiap data yang terbaca dapat diterjemahkan menjadi bit-bit yang merepresentasikan data tertentu. Sebenarnya tidak semua terdapat error dalam pengiriman data UART. Terjadinya error hanya terjadi ketika kita menggunakan clock mikrokontroler untuk nilai tertentu saja. Pada paket data UART, clock yang dikirimkan bergantung dari nilai baud rate. Karena protokol ini universal, maka baud rate yang ada adalah nilai- nilai tetap yang tidak bisa diubah ubah dari kisaran nilai 110 sampai 11059200 bps (bit per sekon) atau lebih. Semakin cepat clock yang digunakan maka baud rate akan semakin cepat juga.


N. BreadBoard 

Gambar 19. Beardboard


        Breadboard terdiri dari lubang yang digunakan untuk menempatkan terminal komponen dan kemudian lubang ini dihubungkan satu sama lain menggunakan berbagai kabel/kawat.  Dua baris pertama (atas) dan dua baris terakhir (bawah) papan breadboard digunakan untuk positif (satu baris pertama dan terakhir dua) dan untuk negatif (baris lain dari dua pertama dan terakhir). Pada gambar breadboar di atas, dua baris pertama (atas) dan terakhir (bawah) papan breadboard terdiri dari 5 lubang di setiap kolom (total 10 kolom) saling terhubung secara horizontal satu sama lain secara internal. Jika terminal sumber daya terhubung dalam satu lubang satu kolom di baris atas atau bawah (salah satu dari dua baris), maka daya listrik yang sama dapat diambil dari lima lubang berturut-turut di kolom yang sama.


5. Flowchart [Kembali]




1. Buat rangkaian pada web wokwi dan proteus terlebih dahulu                        
2.Buat program pada wokwi dan simulasikan hingga sesuai dengan rancangan yang diinginkan
3. Beli komponen yang dibutuhkan untuk sistem
4. Rangkai semua komponen hingga semua terhubung
5. Buat program pada thonny ide dan lalu upload ke dalam raspberry pi pico
6. Buat prototype dari rangkaian yang sudah fix
7. Simulasikan dan presentasikan kepada asisten dan dosen

  • Rangkaian Simulasi




  • Prinsip Kerja

     Sistem monitoring gudang penyimpanan biji kopi ini dibangun menggunakan dua buah mikrokontroler Raspberry Pi Pico yang saling terhubung melalui protokol komunikasi UART (Universal Asynchronous Receiver Transmitter). Tujuan dari sistem ini adalah untuk memantau kondisi lingkungan dalam gudang, khususnya suhu dan kelembapan udara, intensitas cahaya ruangan, kelembapan biji kopi, serta adanya gangguan dari luar seperti hewan. Dengan sistem otomatis ini, pengontrolan lingkungan gudang menjadi lebih efisien dan dapat memberikan respon cepat melalui output seperti buzzer, LED, relay motor, dan tampilan LCD.

Pico pertama (Pico 1) berperan sebagai unit sensor utama yang bertugas membaca seluruh data input dari lingkungan sekitar. Sensor-sensor yang digunakan meliputi sensor DHT22 (membaca suhu dan kelembapan udara), sensor soil moisture (membaca kelembapan biji kopi), sensor LDR (mendeteksi intensitas cahaya), serta sensor ultrasonik HC-SR04 (mendeteksi objek atau gangguan). Terdapat juga sebuah push button untuk mengaktifkan atau menonaktifkan fitur deteksi gangguan. Setelah membaca semua data dari sensor, Pico 1 akan mengirimkan data-data tersebut melalui UART ke Pico kedua menggunakan format string berawalan karakter khusus (contoh: a:, b:, dst.) untuk memisahkan jenis data yang dikirim.

Pico kedua (Pico 2) menerima data dari UART dan bertugas menjalankan aksi berdasarkan logika kontrol tertentu. Nilai LDR digunakan untuk menyalakan LED cahaya jika ruangan terdeteksi gelap. Data dari sensor kelembapan tanah digunakan untuk menyalakan LED indikator jika biji kopi cukup lembab, dan jika tidak, akan mati sebagai peringatan. Sementara itu, data jarak dari sensor ultrasonik digunakan untuk mendeteksi objek asing. Jika objek terdeteksi dekat (jarak < 20 cm) dan sistem keamanan aktif, maka LED alarm akan menyala. Pico 2 juga memiliki output relay motor yang mengaktifkan kipas angin jika suhu udara melebihi 35°C atau kelembapan udara melebihi 85%. Semua informasi penting seperti suhu, kelembapan udara, dan kelembapan biji kopi ditampilkan secara real-time pada LCD I2C 20x4.

Secara keseluruhan, sistem ini memungkinkan pengontrolan lingkungan gudang secara otomatis berdasarkan pembacaan sensor dan pengambilan keputusan melalui dua buah Raspberry Pi Pico. Pemisahan tugas antara dua mikrokontroler ini membuat sistem lebih modular dan ringan, serta efisien dalam pemrosesan data.

  • Listing Program

A.    Sender

import machine

import utime

import dht


# --- Blok Inisialisasi Sensor ---

ldr = machine.ADC(26)

trig_pin = machine.Pin(17, machine.Pin.OUT)

echo_pin = machine.Pin(18, machine.Pin.IN)

button = machine.Pin(16, machine.Pin.IN, machine.Pin.PULL_UP)

sensor_tanah = machine.ADC(28)

uart = machine.UART(0, baudrate=9600, tx=machine.Pin(0), rx=machine.Pin(1))

sensor_dht = dht.DHT22(machine.Pin(22))


# --- Blok Pengaturan & Variabel ---

THRESHOLD_GELAP = 60000 

JARAK_AMBANG_BATAS = 20  # cm

NILAI_KERING_TANAH = 65270  

NILAI_BASAH_TANAH = 20500

THRESHOLD_SUHU = 30.0  # °C


sistem_keamanan_aktif = False

tombol_tidak_ditekan_sebelumnya = True


jarak_cm = 0

humidity = 0


print("Pico Pengirim v4.2 Final Siap. Semua sistem aktif.")


# --- Fungsi Baca Jarak ---

def baca_jarak():

    trig_pin.low()

    utime.sleep_us(2)

    trig_pin.high()

    utime.sleep_us(10)

    trig_pin.low()

    waktu_tunggu = machine.time_pulse_us(echo_pin, 1, 30000) 

    if waktu_tunggu > 0:

        jarak = (waktu_tunggu * 0.0343) / 2

        return jarak

    else:

        return 999


# --- Loop Utama ---

while True:

    

    # === a: SISTEM 1 - LDR (Nilai Cahaya) ===

    nilai_ldr = ldr.read_u16()

    uart.write("a:{}\n".format(nilai_ldr))

    utime.sleep_ms(10)


    # === b: SISTEM 2 - Jarak (Ultrasonik) ===

    tombol_ditekan = button.value() == 0

    if tombol_ditekan and tombol_tidak_ditekan_sebelumnya:

        sistem_keamanan_aktif = not sistem_keamanan_aktif

        status_text = 'AKTIF' if sistem_keamanan_aktif else 'NONAKTIF'

        print(f"Tombol ditekan! Sistem Keamanan sekarang: {status_text}")

        utime.sleep(0.2)

    tombol_tidak_ditekan_sebelumnya = not tombol_ditekan


    if sistem_keamanan_aktif:

        jarak_cm = baca_jarak()

        # Tambahkan ini: kirim hanya jika bacaan valid

        if jarak_cm != 999:

            uart.write("b:{:.2f}\n".format(jarak_cm))


    # === c: SISTEM 3 - Kelembapan Tanah (ADC) ===

    nilai_mentah_tanah = sensor_tanah.read_u16()

    

    # --- BLOK KALKULASI PERSENTASE BARU ---

    rentang_kalibrasi = NILAI_KERING_TANAH - NILAI_BASAH_TANAH

    

    # Menghindari pembagian dengan nol jika nilai kalibrasi salah

    if rentang_kalibrasi <= 0:

        persen_lembab = 0

    else:

        # Menghitung persentase kelembaban

        selisih_nilai = NILAI_KERING_TANAH - nilai_mentah_tanah

        persen_lembab = (selisih_nilai * 100) / rentang_kalibrasi


    # Memastikan nilai persentase tetap dalam rentang 0-100

    persen_lembab = max(0, min(100, persen_lembab))

    # --- SELESAI BLOK KALKULASI ---


    # Kirim nilai persentase yang sudah akurat (sebagai angka bulat/integer)

    uart.write("c:{}\n".format(int(persen_lembab)))

    utime.sleep_ms(10)

    

    # === d: SISTEM 4 - Suhu (DHT22) ===

    try:

        sensor_dht.measure()

        suhu = sensor_dht.temperature()

        humidity = sensor_dht.humidity()

        uart.write("d:{:.1f}\n".format(suhu))  # satu digit desimal

        uart.write("e:{:.1f}\n".format(humidity))

    except OSError as e:

        print("Gagal membaca dari sensor DHT22:", e)

    

    print(f"Lembab kopi: {int(persen_lembab)}% | Suhu: {suhu}°C | Lembab Udara: {humidity}%")

    utime.sleep(1)

 

B.    Receiver

import machine

import utime

from machine import I2C

from lcd_api import LcdApi

from pico_i2c_lcd import I2cLcd


# --- Blok Konfigurasi Pin Output ---

PIN_LED_CAHAYA = 15

PIN_LED_ALARM = 14

PIN_LED_TANAH = 13

PIN_RELAY_MOTOR = 12


I2C_ADDR     = 0x27

I2C_NUM_ROWS = 4

I2C_NUM_COLS = 20


i2c = I2C(1, sda=machine.Pin(18), scl=machine.Pin(19), freq=400000)

lcd = I2cLcd(i2c, I2C_ADDR, I2C_NUM_ROWS, I2C_NUM_COLS)    


led_cahaya = machine.Pin(PIN_LED_CAHAYA, machine.Pin.OUT)

led_alarm = machine.Pin(PIN_LED_ALARM, machine.Pin.OUT)

led_tanah = machine.Pin(PIN_LED_TANAH, machine.Pin.OUT)

relay_motor = machine.Pin(PIN_RELAY_MOTOR, machine.Pin.OUT)


uart = machine.UART(0, baudrate=9600, tx=machine.Pin(0), rx=machine.Pin(1))


# --- Threshold untuk logika kontrol (HARUS SAMA dengan pengirim) ---

THRESHOLD_GELAP = 60000

JARAK_AMBANG_BATAS = 20.0

THRESHOLD_LEMBAP_PERSEN = 40

THRESHOLD_SUHU = 35.0

THRESHOLD_KELEMBAPAN_UDARA = 85


# Inisialisasi

led_cahaya.off()

led_alarm.off()

led_tanah.off()

relay_motor.off()


print("Pico Penerima v5.3 Siap. Menunggu data dari UART...")


buffer = ""

nilai_ldr = 0

jarak_cm = 0

persen_lembab_kopi = 0

suhu = 0

kelembapan_udara = 0


# --- Loop Utama ---

while True:

    if uart.any():

        buffer += uart.read().decode('utf-8', 'ignore')


        # Proses per baris

        while '\n' in buffer:

            line_end = buffer.find('\n')

            pesan = buffer[:line_end].strip()

            buffer = buffer[line_end+1:]


            try:

                if ':' in pesan:

                    prefix, value_str = pesan.split(':', 1)

                    prefix = prefix.strip()

                    value_str = value_str.strip()


                    # Proses berdasarkan awalan pesan

                    if prefix == 'a':  # LDR

                        nilai_ldr = int(value_str)

                        led_cahaya.value(1 if nilai_ldr > THRESHOLD_GELAP else 0)

                        print(f"[LDR] {nilai_ldr}")


                    elif prefix == 'b':  # Ultrasonik

                        jarak_cm = float(value_str)

                        led_alarm.value(1 if jarak_cm < JARAK_AMBANG_BATAS else 0)

                        print(f"[JARAK] {jarak_cm:.2f} cm")


                    elif prefix == 'c': # Kelembapan tanah

                        persen_lembab_kopi = int(value_str)

                        # LED akan menyala jika kelembapan di ATAS ambang batas (cukup lembab)

                        led_tanah.value(1 if persen_lembab_kopi > THRESHOLD_LEMBAP_PERSEN else 0)

                        

                    elif prefix == 'd':  # Suhu

                        suhu = float(value_str)

                        #relay_motor.value(0 if suhu > THRESHOLD_SUHU else 1)

                        print(f"[SUHU] {suhu:.1f} °C")

                        

                    elif prefix == 'e':

                        kelembapan_udara = float(value_str)

                        # Optional: kontrol sesuatu berdasarkan kelembapan

                        print(f"[KELEMBAPAN UDARA] {kelembapan_udara:.1f} %")

                        #relay_motor.value(0 if kelembapan_udara > THRESHOLD_KELEMBAPAN_UDARA else 1)

                    else:

                        print(f"[??] Prefix tidak dikenal: {prefix}")


            except Exception as e:

                print(f"ERROR parsing '{pesan}': {e}")

                

    if suhu > THRESHOLD_SUHU or kelembapan_udara > THRESHOLD_KELEMBAPAN_UDARA:

        # Logika relay Anda (baik versi asli atau yang sudah dibalik dari Langkah 2)

        relay_motor.value(0) 

    else:

        relay_motor.value(1)

                

    lcd.move_to(0, 0)

    lcd.putstr("Biji Kopi: {:.1f}".format(persen_lembab_kopi))

    lcd.move_to(0, 1)

    lcd.putstr("T:{:.1f} ".format(suhu))

    lcd.move_to(8, 1)

    lcd.putstr("H:{:.1f} ".format(kelembapan_udara))


    utime.sleep_ms(20)


Link Download Video Percobaan [Unduh]
Link Download HTML [Unduh]
Link Download Program Raspberry [Unduh]
Link Download Pdf Laporan [Unduh]
Link Download Datasheet Raspberry Pi Pico [Unduh]
Link Download Datasheet Sensor Ultrasonic [Unduh]
Link Download Datasheet Sensor LDR [Unduh]
Link Download Datasheet Sensor Soil Moisture [Unduh]
Link Download Datasheet Sensor DHT22 [Unduh]
Link Download Datasheet Motor DC 5V [Unduh]
Link Download Datasheet LCD 16x2 [Unduh]
Link Download Datasheet LED [Unduh]
Link Download Datasheet Buzzer [Unduh]
















Comments

Popular posts from this blog