LA 1 MODUL 2

 




1. Prosedur [Kembali]

Pada percobaan ini, alat dan bahan yang diperlukan antara lain sebuah Raspberry Pi Pico, sensor LDR (Light Dependent Resistor), LED, buzzer, resistor 220Ω untuk LED, resistor 10KΩ untuk pull-down pada LDR, breadboard, kabel jumper, laptop atau PC yang sudah terpasang Thonny IDE, serta kabel micro USB sebagai konektor antara Raspberry Pi Pico dan laptop.

Langkah pertama, siapkan seluruh komponen di atas dan letakkan di atas breadboard. Hubungkan salah satu kaki LDR ke jalur 3,3V pada Raspberry Pi Pico, kemudian sambungkan kaki lainnya ke pin GP28 yang berfungsi sebagai input ADC. Pada titik sambungan antara LDR dan pin GP28, pasang resistor 10KΩ yang dihubungkan ke ground sebagai pull-down resistor, agar tegangan di pin ADC dapat stabil saat tidak ada input cahaya.

Berikutnya, hubungkan LED dengan cara menyambungkan kaki anoda (kaki panjang) ke pin GP6 pada Raspberry Pi Pico, dan kaki katoda (kaki pendek) dihubungkan ke ground melalui resistor 220Ω, berfungsi untuk membatasi arus yang masuk ke LED. Kemudian, sambungkan kaki positif buzzer ke pin GP15, sedangkan kaki negatifnya dihubungkan langsung ke ground.

Setelah semua rangkaian selesai, hubungkan Raspberry Pi Pico ke laptop menggunakan kabel micro USB. Buka aplikasi Thonny IDE di laptop, lalu pilih interpreter Raspberry Pi Pico pada menu Run > Select Interpreter. Masukkan program pengendalian LDR, LED, dan buzzer ke dalam Thonny sesuai dengan kebutuhan percobaan. Program ini akan membaca nilai ADC dari LDR, lalu mengatur kondisi LED dan buzzer. Jika nilai ADC lebih kecil dari batas yang ditentukan (misalnya 20000), maka LED akan menyala dan buzzer akan berbunyi. Sebaliknya, jika nilai ADC lebih tinggi (karena intensitas cahaya yang lebih terang), maka LED dan buzzer akan mati.

Setelah program dimasukkan, jalankan program dengan menekan tombol Run di Thonny. Amati hasilnya melalui konsol Thonny untuk melihat nilai ADC yang terbaca, serta periksa apakah LED dan buzzer berfungsi sesuai dengan perubahan kondisi cahaya di sekitar sensor LDR. Dengan demikian, percobaan ini dapat digunakan untuk memahami prinsip kerja sensor cahaya sederhana yang terintegrasi dengan Raspberry Pi Pico menggunakan aplikasi Thonny.

2. Hardware dan Diagram Blog [Kembali]

Hardware 

  • Raspberry Pi Pico
Raspberry Pi Pico adalah mikrokontroler berbasis RP2040, yaitu chip buatan Raspberry Pi yang memiliki dual-core ARM Cortex-M0+ dengan kecepatan hingga 133 MHz. Mikrokontroler ini digunakan untuk berbagai proyek embedded system, seperti robotika, otomasi, dan pemrosesan sinyal, karena memiliki GPIO (General Purpose Input Output) yang fleksibel serta mendukung pemrograman dengan MicroPython dan C/C++.
  • Resistor 220 ohm
Resistor adalah komponen elektronik yang berfungsi untuk menghambat arus listrik dalam suatu rangkaian. Nilai hambatan resistor diukur dalam ohm (Ω) dan sering digunakan untuk mengontrol tegangan, membatasi arus, serta melindungi komponen lain seperti LED dari kerusakan akibat arus berlebih. Resistor tersedia dalam berbagai jenis, seperti tetap, variabel (potensiometer), dan termistor yang peka terhadap suhu.
  • LDR


LDR (Light Dependent Resistor) adalah jenis resistor yang nilai resistansinya berubah tergantung pada intensitas cahaya yang diterimanya. Ketika cahaya jatuh pada permukaan LDR, resistansinya akan menurun, sementara dalam kondisi gelap, resistansinya akan meningkat. Fungsi utama LDR adalah untuk mendeteksi tingkat cahaya, yang sering digunakan dalam aplikasi seperti pengaturan otomatis pencahayaan, sensor cahaya pada perangkat elektronik, serta sebagai input pada sistem pengukuran intensitas cahaya atau pengendalian pencahayaan secara otomatis.
  • Buzzer


Buzzer adalah komponen elektronik yang menghasilkan suara sebagai output dari sinyal listrik yang diterimanya. Buzzer biasanya digunakan untuk memberi tanda atau peringatan melalui suara dalam berbagai perangkat, seperti alarm, perangkat pengingat, atau sistem kontrol. Terdapat dua jenis buzzer, yaitu piezoelectric dan elektromagnetik. Buzzer piezoelectric bekerja dengan mengubah sinyal listrik menjadi getaran mekanik yang menghasilkan suara, sedangkan buzzer elektromagnetik menghasilkan suara dengan cara menggerakkan membran menggunakan medan magnet. Buzzer sering digunakan dalam aplikasi yang membutuhkan pemberitahuan atau peringatan suara, seperti alarm keamanan, timer, atau indikator status perangkat.
  • LED Merah
LED merah adalah dioda pemancar cahaya yang menghasilkan warna merah saat diberikan arus listrik. LED ini sering digunakan sebagai indikator status dalam rangkaian elektronik, seperti menunjukkan daya aktif, kesalahan sistem, atau sinyal peringatan. Karena konsumsi dayanya rendah dan umur pakainya panjang, LED merah banyak diaplikasikan dalam perangkat elektronik dan sistem otomatisasi.

Blok Diagram :

3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]


Pada percobaan ini, rangkaian terdiri dari Raspberry Pi Pico yang terhubung dengan sensor LDR, LED, dan buzzer. Sensor LDR berfungsi untuk mendeteksi intensitas cahaya lingkungan, di mana perubahan nilai cahaya akan memengaruhi nilai ADC yang dibaca oleh Raspberry Pi Pico melalui pin GP28. Nilai ADC inilah yang kemudian dikonversi ke nilai lux menggunakan sebuah fungsi konversi di dalam program.

Ketika rangkaian dihubungkan sesuai langkah-langkah sebelumnya, sensor LDR dipasang dengan satu kaki ke tegangan 3,3V dan kaki lainnya ke pin GP28 (sebagai input ADC). Selain itu, kaki ini juga dihubungkan ke ground melalui resistor 10KΩ sebagai pull-down resistor agar sinyal tetap stabil saat tidak ada input. LED dipasang dengan anoda ke pin GP6 dan katoda ke ground melalui resistor 220Ω, sedangkan buzzer dipasang dengan kaki positif ke pin GP15 dan kaki negatif ke ground. Raspberry Pi Pico sendiri dihubungkan ke laptop menggunakan kabel micro USB dan diprogram melalui Thonny IDE.

Prinsip kerja rangkaian ini diawali dengan membaca nilai ADC dari sensor LDR. Nilai ini kemudian dikonversikan menjadi nilai lux menggunakan fungsi adc_to_lux(). Saat program pertama kali dijalankan, nilai lux awal (kondisi normal lingkungan) disimpan sebagai acuan. Setelah itu, program secara berkala membandingkan nilai lux terkini dengan nilai lux normal yang sudah disimpan.

Apabila terjadi perubahan intensitas cahaya yang cukup signifikan — yaitu nilai lux saat ini lebih besar dari lux normal ditambah 50 (lux > lux_normal + 50) — maka program akan mengatur mode kedip LED dan mengaktifkan buzzer. Buzzer diatur menggunakan PWM dengan duty cycle tertentu (duty_u16(30000)) agar dapat menghasilkan suara, dan frekuensinya divariasikan dari 500 Hz hingga 1000 Hz dalam selang 0,1 detik agar menghasilkan efek suara berubah-ubah.

Pada saat bersamaan, LED akan berkedip dengan interval 1 detik. Hal ini dilakukan dengan mencatat waktu saat LED terakhir berganti status (nyala atau mati) menggunakan fungsi utime.ticks_ms(). Jika waktu yang telah berlalu mencapai atau lebih dari 1000 milidetik (1 detik), maka kondisi LED dibalik (ON jadi OFF, OFF jadi ON).

Sebaliknya, jika tidak terjadi perubahan cahaya yang signifikan, maka LED akan dimatikan dan buzzer dihentikan (duty cycle diatur ke 0). Program akan terus membaca sensor LDR setiap 0,1 detik untuk mendeteksi perubahan cahaya secara real-time.

Dengan demikian, prinsip kerja rangkaian ini adalah mengendalikan output LED dan buzzer berdasarkan perubahan nilai lux dari sensor LDR, dengan kondisi LED berkedip dan buzzer berbunyi saat lingkungan menjadi lebih terang dari kondisi normalnya, serta mematikan kedua komponen tersebut saat kondisi cahaya kembali normal atau tidak berubah signifikan.

4. Flowchart dan Listing Program [Kembali]

  • Flowchart

  • Listing Program
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]

 



6. Kondisi [Kembali]

Ketika LDR membaca lebih terang dari normal sebesar 50 lux, LED merah hidup berkedip tiap 1 detik dan buzzer aktif duty cycle 46% (duty_u16(30000)) dengan frekuensi berubah dari 500 Hz sampai 1000 Hz.Saat cahaya normal (selisih ≤ 50 lux dari lux normal), LED mati dan buzzer tidak bunyi.

7. Analisa [Kembali]

ANALISA MODUL 2: PWM, ADC, INTERRUPT, & MILLIS 

1. Analisa bagaimana perbedaan implementasi PWM antara STM32 dan Raspberry Pi Pico serta dampaknya terhadap kontrol motor dan buzzer
jawab:
STM32 memiliki timer khusus yang lebih fleksibel dan presisi untuk menghasilkan sinyal PWM, memungkinkan kontrol motor dan buzzer yang sangat halus dan akurat. Konfigurasi melibatkan register-register timer dan pemilihan fungsi alternatif pin.
Raspberry Pi Pico juga dapat menghasilkan PWM, seringkali dengan kontrol perangkat lunak atau blok PWM khusus yang mungkin tidak sefleksibel STM32 dalam pengaturan detail. Namun, untuk banyak aplikasi dasar, performanya sudah memadai.


2. Analisa bagaimana cara pembacaan nilai sensor analog (LDR) menggunakan ADC pada STM32 dan Raspberry Pi Pico
jawab:
 STM32 biasanya memiliki beberapa saluran ADC dengan resolusi tinggi (misalnya 12-bit), memungkinkan pembacaan nilai analog dengan akurasi tinggi melalui konfigurasi register ADC.
 Raspberry Pi Pico juga memiliki ADC, meskipun spesifikasinya bisa berbeda. Pembacaan nilai analog dilakukan melalui fungsi-fungsi yang disediakan oleh SDK Pico.


3. Analisa bagaimana penggunaan interrupt eksternal dalam mendeteksi input dari sensor atau tombo pada STM32 dan Raspberry Pi Pico.
jawab:
Baik STM32 maupun Raspberry Pi Pico mendukung interrupt eksternal, yang memungkinkan mikrokontroler merespon perubahan sinyal pada pin tertentu tanpa perlu terus-menerus melakukan polling.
Konfigurasi melibatkan pemilihan pin dan jenis pemicu interrupt. STM32 seringkali menawarkan lebih banyak pilihan konfigurasi interrupt dibandingkan Pico.


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 bekerja dengan membaca nilai counter dari timer internal (bagian dari chip RP2040) yang terus berjalan sejak sistem dinyalakan. Nilai yang dikembalikan adalah jumlah milisekon yang telah berlalu.
STM32 juga memiliki mekanisme serupa menggunakan SysTick timer atau general-purpose timer yang perlu dikonfigurasi untuk menghitung waktu

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:
STM32 memberikan kontrol yang lebih mendalam dalam konfigurasi pin PWM (melalui fungsi alternatif dan register timer) dan pemanfaatan timer internal untuk menghasilkan sinyal gelombang persegi dengan frekuensi dan duty cycle yang sangat presisi.
Raspberry Pi Pico juga menggunakan timer internal untuk menghasilkan PWM, tetapi konfigurasinya seringkali lebih disederhanakan melalui fungsi-fungsi SDK. Tingkat kontrol detail mungkin tidak sebanyak pada STM32.

8. Download File [Kembali]

 Datasheet raspberry Pi Pico klik disini

- Datasheet LED klik disini

- Datasheet resistor klik disini 

- Datasheet buzzer klik disini

- Data Sheet LDR [klik disini]

 

Tidak ada komentar:

Posting Komentar

  BAHAN PRESENTASI UNTUK MATA KULIAH  SISTEM DIGITAL 2024 OLEH: Afifah Febry Nabilla 2210952001 Dosen Pengampu: Darwison, M.T Referensi:  a....