M4
1. Merancang
dan mengimplementasikan sistem otomatis berbasis Raspberry Pi Pico untuk
memantau kondisi lingkungan penyimpanan jagung (suhu, kelembapan,dan intensitas cahaya) secara real-time
menggunakan sensor DHT22, BH1750, dan IR Obstacle Sensor.
2. Mengembangkan
mekanisme pengendalian otomatis yang dapat mengaktifkan aktuator (kipas,
lampu pijar pemanas) berdasarkan ambang batas lingkungan yang ditentukan,
guna menjaga kondisi optimal untuk penyimpanan jagung pasca panen.
3. Mengintegrasikan
sistem keamanan (IR Obstacle Sensor) untuk mendeteksi keberadaan manusia
dan menonaktifkan aktuator sementara demi keselamatan.
4. Menampilkan
informasi kondisi lingkungan dan status aktuator secara real-time
melalui LCD Display
a.
Sensor
Suhu dan Kelembapan DHT22
·
Fungsi:
Mengukur suhu dan kelembapan udara dalam ruangan penyimpanan.
·
Spesifikasi:
Tegangan Catu Daya :
3.3 – 6 V DC
Rentang Suhu : -40 hingga +80 ℃
Rentang Kelembapan : 0 – 100 %RH
Akurasi Suhu : ±0.5 ℃ (pada 25 ℃)
Akurasi Kelembapan : ±2 %RH (pada 25 ℃)
Resolusi : 0.1 ℃ / 0.1 %RH
Waktu Respon : ≤ 5 detik
Periode Sampling : ≥ 2 detik
Antarmuka : Digital 1-wire
Ukuran Modul : ±15.1 x 25 x 7.7 mm
b.
Sensor
Cahaya BH1750
·
Fungsi:
Mengukur intensitas cahaya matahari yang masuk ke ruangan.
·
Spesifikasi:
Tegangan Catu Daya : 3.0 – 5.0 V DC
Kisaran Pengukuran : 1 – 65.535 lux
Akurasi : ±20%
Resolusi : 1 lux
Antarmuka : I2C (alamat default 0x23 atau 0x5C)
Waktu Konversi : 16 ms (low res), 120 ms (high res)
Jenis Output : Digital
Konsumsi Arus : 0.12 mA (mode aktif),
0.01 µA (mode power-down)
Ukuran Modul : ±18 x 15 mm
c.
Sensor
Infrared (IR Obstacle Sensor)
·
Fungsi:
Deteksi keberadaan manusia atau tumpukan jagung.
·
Spesifikasi
Tegangan Catu Daya : 3.3 – 5.0 V DC
Jarak Deteksi : 2 – 30 cm
(tergantung permukaan objek)
Tipe Output : Digital (0
dan 1)
Waktu Respon : Cepat (< 2
ms)
Sudut Deteksi : ±35°
Penyesuaian Jarak :
Potensiometer (trimpot)
Antarmuka : 3 pin (VCC, GND,
OUT)
Konsumsi Arus : ~20 mA
Panjang Gelombang IR : ±940 nm
Ukuran Modul : ±48 x 14 x 8 mm
d.
Lampu
Pijar Pemanas
·
Fungsi:
Pemanas tambahan saat suhu tidak mencukupi
e.
LCD Display (I2C 16x2 atau OLED 128x64)
·
Fungsi: Menampilkan informasi kondisi ruangan.
· Spesifikasi:
Blue
backlight : I2C
Display
Format : 16 Characters x 4 lines
Supply
voltage : 5V
Backlit : Blue with White char
color
Supply
voltage : 5V
Pcb Size : 60mmx99mm
Contrast
Adjust : Potentiometer
Backlight
Adjust : Jumper
Menampilkan
sebanyak 32 karakter yang terdiri dari 2 baris dan tiap baris dapat menampilkan
16 karakter.
f.
Raspberry
Pi Pico
g.
Kipas
h.
Breadboard
i.
Resistor
j.
Kabel
Jumper
Mikrokontroler adalah sebuah system
microprocessor Dimana didalamnya sudah terdapat CPU, ROM, RAM, I/O, Clock dan
peralatan internal lainnya yang sudah saling terhubung dan terorganisasi
(teralamati), dikemas dalam satu chip yang siap pakai. Seperti umumnya
komputer, mikrokontroler sebagai alat yang mengerjakan perintah-perintah yang
diberikan kepadanya.
Pada mikrokontroller seorang
programmer dapat memasukkan program ke dalam mikrokontroler sehingga berfungsi
sesuai dengan yang diinginkan oleh pengguna. Artinya, bagian terpenting dan
utama dari suatu sistem komputerisasi adalah program itu sendiri yang dibuat
oleh seorang programmer. Program ini memerintahkan komputer untuk melakukan
jalinan yang panjang dari aksi-aksi sederhana untuk melakukan tugas yang lebih
kompleks yang diinginkan oleh programmer. Salah satu kelebihan mikrokontroler
adalah kesederhanaan dan ukurannya yang relatif kecil.
Gambar
26. Prinsip kerja mikrokontroller
Gambar 27. Struktur dan diagram blok
Mikrokontroler
Berikut ini merupakan struktur dan
diagram blok mikrokontroler beserta penjelasan tentang bagian-bagian utamanya:
a.
CPU
CPU
merupakan otak dari mikrokontroler. CPU bertanggung jawab untuk mengolah data
dan eksekusi perintah yang masuk.
b.
Serial
Port (Port Serial)
Serial port menyediakan
berbagai antarmuka serial antara mikrokontroler dan periferal lain seperti port
paralel.
c.
Memori
(Penyimpanan)
Memori ini bertugas
untuk menyimpan data. Data tersebut merupakan data yang sudah diolah (output)
atau data yang belum diolah (input). memori yang umum dipakai adalah Random
Access Memory (RAM) dan Read Only Mmemory (ROM).Penyimpanan ini berupa RAM dan
ROM. ROM digunakan untuk menyimpan data dalam jangka waktu yang lama. Sedangkan
RAM digunakan untuk menyimpan data sementara selama program berjalan sampai
akhirnya dipindahkan ke ROM.
d.
Port
Input/Output Paralel
Port input/output
paralel digunakan untuk mendorong atau menghubungkan berbagai perangkat.
Kegunaan komponen ini adalah menerima input dari perangkat eksternal dan mengirimkannya
ke perangkat pemroses. Nantinya hasil pengolahan data akan dikirimkan output ke
perangkat eksternal.
e.
DAC
(Digital to Analog Converter)
DAC
(Digital to Analog Converter) melakukan operasi pembalikan konversi ADC (Analog
to Digital Converter). DAC mengubah sinyal digital menjadi format analog. DAC
ini biasanya digunakan untuk mengendalikan perangkat analog seperti motor DC
dan lain sebagainya.
f.
Interrupt
Control (Kontrol Interupsi)
Interrupt
Control (Kontrol Interupsi) bertugas untuk mengendalikan penundaan terhadap
pemrograman mikrokontroler. Bagianinterrupt control (kontrol interupsi) ini
dapat dioperasikan secara internal ataupun eksternal.
g.
Special
Functioning Block (Blok Fungsi Khusus)
Special
functioning block merupakan bagian tambahan yang dibuat mempunyai fungsi
khusus. Biasanya blok ini ditemukan pada arsitektur mikrokontroler di mesin
robotika. Tidak semua perangkat menggunakan bagian ini.
h.
Timer
and Counter (Pengatur Waktu dan Penghitung)
Timer/counter
ini digunakan untuk mengukur waktu dan alat penghitungan. RTC memiliki tugas
untuk menyimpan waktu dan tanggal saat proses dilakukan.
2.
Analog
to Digital Converter (ADC)
ADC adalah suatu metode untuk
konversi sinyal analog menjadi sinyal digital. Biasanya sinyal analog yang dikonversi
berupa tegangan (Volt) dan dirubah menjadi sinyal digital seperti kode biner 0
dan 1.
ADC atau Analog to Digital
Converter merupakan salah satu perangkat elektronika yang digunakan sebagai
penghubung dalam pemrosesan sinyal analog oleh sistem digital. Fungsi utama
dari fitur ini adalah mengubah sinyal masukan yang masih dalam bentuk sinyal
analog menjadi sinyal digital dengan bentuk kode-kode digital. Ada 2 faktor
yang perlu diperhatikan pada proses kerja ADC yaitu kecepatan sampling dan
resolusi.
Rangkaian
ADC memiliki dua karakter prinsip, yaitu kecepatan sampling dan resolusi.
Kecepatan sampling suatu ADC menyatakan seberapa sering sinyal analog
dikonversikan ke bentuk sinyal digital pada selang waktu tertentu yang
dinyatakan dalam sample per second (SPS). Sedangkan resolusi suatu ADC
menentukan ketelitian nilai hasil konversi yang berhubungan dengan jumlah bit
yang dimilikinya. Sehingga semakin besar jumlah bit suatu ADC makan akan
memberikan ketelitian nilai hasil konversi yang lebih baik. Pada Arduino,
resolusi yang dimiliki adalah 10bit atau rentang nilai digital antara 0 - 1023.
Pada Arduino tegangan referensi yang digunakan adalah 5 volt, hal ini berarti
ADC pada Arduino mampu menangani sinyal analog dengan tegangan 0 - 5 volt.
Arduino Uno mempunyai 6 pin input analog yang berlabel A0 sampai A5 dimana
masingmasing pin tersebut memberikan 10bit resolusi.
3. PWM, ADC, INTERRUPT, & MILLIS
a.
PWM
Pulse
Width Modulation (PWM) secara umum adalah sebuah cara memanipulasi lebar sinyal
yang dinyatakan dengan pulsa dalam suatu perioda, untuk mendapatkan tegangan
rata-rata yang berbeda. 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 (%).
Gambar 22. Duty Cycle
Duty
Cycle = š”šš
š”š”šš”šš
§ š”šš = Waktu ON atau Waktu dimana tegangan
keluaran berada pada posisi tinggi (highatau 1)
§ š”ššš = Waktu OFF atau Waktu dimana
tegangan keluaran berada pada posisi rendah(low atau 0)
§ š”š”šš”šš= Waktu satu siklus atau
penjumlahan antara tON dengan tOFF atau disebut juga dengan periode satu
gelombang.
Pada Raspberry Pi Pico, terdapat blok PWM yang terdiri dari 8 unit (slice), dan masing-masing slice dapat mengendalikan dua sinyal PWM atau mengukur frekuensi serta duty cycle dari sinyal input. Dengan total 16 output PWM yang dapat dikontrol, semua 30 pin GPIO bisa digunakan untuk PWM. Setiap slice memiliki fitur utama seperti penghitung 16-bit, pembagi clock presisi, dua output independen dengan duty cycle 0–100%, serta mode pengukuran frekuensi dan duty cycle. PWM pada Raspberry Pi Pico juga mendukung pengaturan fase secara presisi serta dapat diaktifkan atau dinonaktifkan secara bersamaan melalui satu register kontrol global, sehingga memungkinkan sinkronisasi beberapa output untuk aplikasi yang lebih kompleks.
b.
ADC
ADC
atau Analog to Digital Converter merupakan salah satu perangkat elektronika
yang digunakan sebagai penghubung dalam pemrosesan sinyal analog oleh sistem
digital. Fungsi utama dari fitur ini adalah mengubah sinyal masukan yang masih
dalam bentuk sinyal analog menjadi sinyal digital dengan bentuk kode-kode
digital.
Raspberry Pi Pico memiliki empat ADC (Analog-to-Digital Converter) 12-bit dengan metode SAR, tetapi hanya tiga kanal yang dapat digunakan secara eksternal, yaitu ADC0, ADC1, dan ADC2, yang terhubung ke pin GP26, GP27, dan GP28. Kanal keempat (ADC4) digunakan secara internal untuk membaca suhu dari sensor suhu bawaan. Konversi ADC dapat dilakukan dalam tiga mode: polling, interrupt, dan FIFO dengan DMA. Kecepatan konversi ADC adalah 2μs per sampel atau 500 ribu sampel per detik (500kS/s). Mikrocontroller RP2040 berjalan pada frekuensi 48MHz yang berasal dari USB PLL, dan setiap konversi ADC membutuhkan 96 siklus CPU, sehingga waktu samplingnya adalah 2μs per sampel
c.
Millis
Raspberry Pi Pico yang sering diprogram menggunakan MicroPython, fungsi utime.ticks_ms() menyediakan fungsionalitas yang sepadan. Fungsi ini mengembalikan nilai penghitung milidetik yang bersifat monotonik (terus bertambah) sejak sistem dimulai atau modul utime dimuat. Sama seperti millis() dan HAL_GetTick(), nilai ticks_ms() juga akan mengalami wrap-around (kembali ke nol) setelah mencapai batasnya, sehingga penggunaan fungsi utime.ticks_diff() menjadi penting untuk perhitungan selisih waktu yang akurat dan aman terhadap overflow. Dengan demikian, utime.ticks_ms() memungkinkan implementasi pola penjadwalan dan delay non-blocking yang serupa untuk menciptakan aplikasi yang responsif di lingkungan MicroPython.
4. Communication
a.
UART
Pada
project yang kami buat, kami menggunakan komunikasi UART untuk 2 arduino.
Komunikasi UART adalah bagian perangkat keras komputer yang menerjemahkan
antara bit-bit paralel data dan bit-bit serial.
UART
biasanya berupa sirkuit terintegrasi yang digunakan untuk komunikasi serial
pada komputer atau port serial perangkat periperal.
Cara kerja komunikasi UART:
Gambar 24. Cara kerja komunikasi UART
Data
dikirimkan secara paralel dari data bus ke UART1. Pada UART1 ditambahkan start
bit, parity bit, dan stop bit kemudian dimuat dalam satu paket data. Paket data
ditransmisikan secara serial dari Tx UART1 ke Rx UART2. UART2 mengkonversikan
data dan menghapus bit tambahan, kemudia di transfer secara parallel ke data
bus penerima.
b.
I2C
(Inter-Integrated Circuit)
Inter
Integrated Circuit atau sering disebut I2C adalah standar komunikasi serial dua
arah menggunakan dua saluran yang didisain khusus untuk mengirim maupun
menerima data. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA
(Serial Data) yang membawa informasi data antara I2C dengan pengontrolnya.
Cara
kerja:
Pada
I2C, data ditransfer dalam bentuk message yang terdiri dari kondisi start,
Address Frame, R/W bit, ACK/NACK bit, Data Frame 1, Data Frame 2, dan kondisi
Stop. Kondisi start dimana saat pada SDA beralih dari logika high ke low
sebelum SCL. Kondisi stop dimana saat pada SDA beralih dari logika low ke high
sebelum SCL.
R/W bit berfungsi untuk menentukan apakah
master mengirim data ke slave atau meminta data dari slave. (logika 0 = mengirim
data ke slave, logika 1 = meminta data dari slave) ACK/NACK bit berfungsi
sebagai pemberi kabar jika data frame ataupun address frame telah diterima
receiver.
- Rangkaian [Download]
- Rangkaian Simulasi [Download]
- Video Simulasi [Download]
Komentar
Posting Komentar