1. Sediakan alat dan bahan percobaan
2. Rangkailah rangkaian di breadboard sesuai modul
3. Buka aplikasi thonny dan masukkan listing program ke dalam aplikasi tersebut
4. Hubungkan rangkaian dengan software dengan kabel USB
5. Jalankan program
1. Rasberry Pi Pico
Resistor adalah komponen elektronik pasif yang berfungsi untuk membatasi arus listrik dalam suatu rangkaian. Resistor bekerja berdasarkan hukum Ohm, yang menyatakan bahwa tegangan (V) = arus (I) × resistansi (R). Resistor memiliki satuan Ohm (Ω) dan digunakan dalam berbagai aplikasi seperti pembagian tegangan, kontrol arus, dan proteksi rangkaian elektronik.
LED RGB adalah perangkat elektronik yang dapat menghasilkan warna merah,hijau dan biru.
Rangkaian yang ditampilkan pada gambar merupakan sistem deteksi cahaya berbasis mikrokontroler Raspberry Pi Pico. Sistem ini terdiri dari tiga komponen utama: sensor LDR (Light Dependent Resistor) yang berfungsi sebagai pendeteksi intensitas cahaya, sebuah LED yang dipasang dengan resistor sebagai indikator visual, dan sebuah buzzer aktif sebagai alarm suara.
Sensor LDR digunakan bersama sebuah resistor tetap dalam konfigurasi pembagi tegangan. Salah satu ujung LDR dihubungkan ke pin 3.3V pada Raspberry Pi Pico, sedangkan ujung lainnya dihubungkan ke salah satu pin ADC (Analog to Digital Converter), seperti GP26. Resistor tetap disusun secara seri dengan LDR, dan ujung lainnya dihubungkan ke GND. Titik tengah antara LDR dan resistor itulah yang memberikan sinyal analog ke Raspberry Pi Pico, yang nilainya berubah tergantung intensitas cahaya.
Pada sisi keluaran (output), terdapat LED yang dihubungkan ke salah satu pin GPIO pada Raspberry Pi Pico melalui sebuah resistor untuk membatasi arus. Ujung LED lainnya dihubungkan ke GND. Selain itu, buzzer aktif juga dihubungkan ke GPIO dan GND. Ketika Raspberry Pi Pico mendeteksi bahwa intensitas cahaya berada di bawah ambang batas tertentu (misalnya saat gelap), mikrokontroler akan mengaktifkan pin output untuk menyalakan LED dan membunyikan buzzer.
Dengan demikian, saat kondisi gelap terdeteksi oleh LDR, Raspberry Pi Pico akan memberikan dua sinyal peringatan: LED menyala sebagai indikator visual dan buzzer berbunyi sebagai alarm. Rangkaian ini sangat berguna untuk sistem pemantauan cahaya, seperti lampu otomatis malam hari atau alarm saat pencahayaan ruangan tidak mencukupi.
from machine import Pin, PWM, ADC
import utime
# Pin Setup
ldr = ADC(28) # Pin AO dari LDR ke GP28
ldr_digital = Pin(0, Pin.IN) # Pin DO dari LDR ke GP0
led = Pin(6, Pin.OUT) # LED di GP6
buzzer = PWM(Pin(15)) # Buzzer di GP15 dengan PWM
# Konfigurasi PWM Buzzer
buzzer.freq(1000) # Frekuensi awal buzzer (1kHz)
buzzer.duty_u16(0) # Mulai dengan buzzer mati
# Fungsi untuk mengonversi nilai ADC ke lux
def adc_to_lux(adc_value):
return (adc_value / 65535) * 900 + 10 # Rentang 10 - 1000 lux
# Variabel untuk menyimpan kondisi normal awal
lux_normal = 0
# Variabel untuk kedip LED
last_blink_time = utime.ticks_ms()
led_state = False
led_should_blink = False # hanya True saat kondisi mendeteksi perubahan cahaya
signifikan
# Loop utama
while True:
analog_value = ldr.read_u16()
lux = adc_to_lux(analog_value)
if lux_normal == 0:
lux_normal = lux
print(f"Lux Normal: {lux_normal}")
print(f"LDR Value: {analog_value} | Lux: {lux}")
if lux > lux_normal + 50:
led_should_blink = True # nyalakan mode kedip
buzzer.duty_u16(30000) # nyalakan buzzer
for i in range(500, 1000, 100): # variasi frekuensi buzzer
buzzer.freq(i)
utime.sleep(0.1)
else:
led_should_blink = False
led.off()
buzzer.duty_u16(0)
# Kedip LED jika perlu
if led_should_blink:
current_time = utime.ticks_ms()
if utime.ticks_diff(current_time, last_blink_time) >= 1000:
led_state = not led_state
led.value(led_state)
last_blink_time = current_time
utime.sleep(0.1) # sedikit delay supaya tidak terlalu cepat baca LDR
5. Video Demo[Kembali]
1. Analisa bagaimana perbedaan implementasi PWM antara STM32 dan Raspberry Pi Pico
serta dampaknya terhadap kontrol motor dan buzzer.
Jawab :
PWM (Pulse Width Modulation) pada STM32 dikendalikan oleh hardware timer (TIMx) yang sangat fleksibel. Konfigurasi PWM pada STM32 melalui HAL Library memungkinkan pengguna untuk mengatur frekuensi, duty cycle, mode PWM (edge/center aligned), dan sinkronisasi antar timer. Fitur ini sangat berguna untuk kendali motor presisi tinggi (misalnya BLDC atau servo industri) dan sistem kendali tertanam real-time yang membutuhkan resolusi dan kestabilan sinyal tinggi.Sementara itu, Raspberry Pi Pico menggunakan PWM slice sebanyak 8 buah, dengan masing-masing slice mampu menghasilkan 2 sinyal PWM. Implementasinya di MicroPython sangat sederhana, cukup dengan memanggil beberapa baris kode untuk mengatur frekuensi dan duty cycle. Meskipun Pico menawarkan resolusi 16-bit (lebih tinggi dari STM32 secara default), kontrol terhadap sinkronisasi antar channel dan presisi waktu tidak sekompleks STM32. Oleh karena itu, PWM di Pico lebih cocok untuk aplikasi non-kritis seperti kendali LED, buzzer, atau motor servo skala kecil.
Jadi, STM32 memberikan kontrol yang lebih akurat dan stabil untuk aplikasi kompleks, sedangkan Raspberry Pi Pico lebih unggul dalam kemudahan dan kecepatan pengembangan prototipe.
2. Analisa bagaimana cara pembacaan nilai sensor analog menggunakan ADC pada STM32
dan Raspberry Pi Pico
Jawab :
STM32 memiliki ADC internal multichannel dengan dukungan resolusi hingga 12-bit, sampling rate tinggi, dan metode pembacaan fleksibel: polling, interrupt, atau DMA. Hal ini memungkinkan STM32 untuk membaca data analog dengan cepat, efisien, dan cocok untuk aplikasi real-time seperti sensor suhu, tekanan, atau sensor industri lainnya.
Pada sisi lain, Raspberry Pi Pico menggunakan ADC 12-bit juga, namun hanya tersedia 3 channel aktif (plus satu untuk pembacaan tegangan internal). Dalam MicroPython, pembacaan sangat mudah melalui fungsi
ADC.read_u16()
, meskipun hasil pembacaan perlu disesuaikan karena formatnya berupa nilai 16-bit dengan padding. Pico tidak menyediakan opsi DMA atau pengambilan data paralel secara default.Jadi, STM32 lebih fleksibel dan andal untuk aplikasi dengan banyak sensor atau kebutuhan akuisisi data cepat, sedangkan Pico cocok untuk sistem sederhana dengan satu atau dua sensor analog.
3. Analisa bagaimana penggunaan interrupt eksternal dalam mendeteksi input dari sensor atau
tombo pada STM32 dan Raspberry Pi Pico.
Jawab :
Pada STM32, interrupt eksternal ditangani oleh sistem EXTI (External Interrupt/Event Controller) yang dapat mengatur trigger (rising, falling, atau both edges), dan terintegrasi dengan NVIC untuk manajemen prioritas. Penanganannya dilakukan melalui callback HAL, yang membuat sistem lebih modular dan aman untuk aplikasi multitasking dan kendali real-time.
Di Raspberry Pi Pico, interrupt pada pin GPIO diakses melalui fungsi
irq()
di MicroPython. Meskipun cukup efektif untuk aplikasi dasar seperti deteksi tombol atau sensor digital, Pico tidak menyediakan manajemen prioritas atau interrupt nesting secara langsung di MicroPython.Jadi, STM32 jauh lebih unggul untuk aplikasi yang membutuhkan interupsi simultan atau kompleks, sedangkan Pico cukup untuk aplikasi sederhana dan reaktif dasar.
4. Analisa bagaimana cara kerja fungsi utime.ticks_ms() pada Raspberry Pi Pico dalam menghitung waktu sejak sistem dinyalakan
Jawab :
fungsi
utime.ticks_ms()
pada Raspberry Pi Pico juga menghasilkan nilai waktu sejak booting dengan satuan milidetik. Namun, karena dijalankan dalam konteks interpreter MicroPython, presisinya bisa terpengaruh oleh beban eksekusi skrip lainnya. saat raspberry pi Pico dinyalakan, sebuah timer tersebut dan mengkonversinya menjadi satuan milidetik. misalnya jika fungsi dipanggil lima detik setelah boot, maka nilainya lkira kira 5000. namun karena keterbatasan ukuran integer (terutama di sistem 32 bit) nilai dari ticks.ms() akan melakukan overflow (kembali ke nol) setelah mencapai batas maksimal, biasanya setiap 249,7 hari (2 milidetik). oleh karena itu, micro pyhton juga menyediakan fungsi seperti untuk menghitung selisih waktu dengan aman meskipun terjadi overflow.
5. Analisa bagaimana perbedaan konfigurasi dan kontrol pin PWM serta pemanfaatan timer
internal pada STM32 dan Raspberry Pi Pico dalam menghasilkan sinyal gelombang persegi.
Jawab :
PWM di STM32 sangat bergantung pada timer internal yang bisa disinkronkan, dikonfigurasi dalam berbagai mode (PWM mode 1/2, one-pulse mode, output compare, dll), dan dipakai untuk aplikasi seperti motor control, inverter, atau kendali dimmer. Setiap timer dapat memiliki beberapa channel output PWM, sehingga mendukung kendali multi-motor secara simultan.
Sedangkan Raspberry Pi Pico memiliki PWM slice berbasis hardware sederhana. Setiap slice dapat diatur independen namun tidak bisa disinkronisasi atau dipicu oleh sumber eksternal seperti timer pada STM32. Meski mendukung frekuensi tinggi dan duty cycle variatif, Pico tidak dirancang untuk kendali motor presisi tinggi atau sistem PWM kompleks.
Jadi, STM32 unggul dalam kontrol multi-channel presisi tinggi, sedangkan Pico cocok untuk PWM dasar dengan konfigurasi cepat dan mudah.
Kesimpulan
STM32 adalah platform mikrokontroler yang dirancang untuk aplikasi teknis tingkat lanjut, dengan kekuatan di presisi, fleksibilitas konfigurasi, dan dukungan real-time. Cocok digunakan dalam robotika, automasi industri, dan sistem tertanam canggih. Raspberry Pi Pico, sebaliknya, lebih diarahkan untuk kemudahan penggunaan, prototyping cepat, dan pengembangan edukatif. Meski fitur-fiturnya lebih sederhana, Pico tetap efektif untuk membangun konsep awal atau sistem ringan. Praktikum ini memberikan pemahaman praktis bahwa pemilihan platform harus mempertimbangkan kompleksitas aplikasi, kebutuhan real-time, dan kemudahan integrasi.
Download file Analisa klik disiniDownload video Demo klik disini
Download Datasheet Potensiometer klik disini
Download Datasheet Resistor klik disini
Download Datasheet IC Rasberry Pi Pico klik disini
Download Datasheet RGB-LED klik disini
Tidak ada komentar:
Posting Komentar