LAPORAN MODUL 4
- Get link
- X
- Other Apps
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:
- Merancang dan membangun sistem monitoring lingkungan gudang penyimpanan biji kopi menggunakan sensor suhu, kelembapan, cahaya, dan pendeteksi gerak.
- Menampilkan data dari sensor ke LCD secara real-time.
- Mengaktifkan perangkat output seperti kipas, LED, dan buzzer berdasarkan hasil pembacaan sensor.
- Mensimulasikan kondisi nyata gudang dalam bentuk miniatur kardus.
1.
Raspberry Pi Pico
3. DHT22
7. LCD 2×16 I2C
8.
Motor DC
9.
Jumper
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
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]
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) |
- Get link
- X
- Other Apps
Comments
Post a Comment