LA2 Modul 2 up&uc

[menuju akhir]

Laporan Akhir 2 Modul 2

(Percobaan 5)

1. Prosedur[kembali]

  1. Tentukan Komponen dan Rangkai Komponen:

    • Sambungkan potensiometer ke pin ADC0 (GPIO 26).

    • Sambungkan motor servo ke pin GPIO 1.

    • Sambungkan buzzer ke pin GPIO 14.

    • Sambungkan sensor DHT22 ke pin GPIO 16.

    • Pastikan semua komponen mendapat suplai 3.3V dan GND dari Raspberry Pi Pico.

  2. Sambungkan Raspberry Pi Pico ke Laptop:

    • Gunakan kabel USB untuk menghubungkan Raspberry Pi Pico ke laptop.

  3. Konfigurasi Koding di Thonny:

    • Buka software Thonny.

    • Ketik atau paste kode Python yang sudah disiapkan ke editor Thonny.

    • Pastikan konfigurasi pin dalam kode sesuai dengan pengkabelan

  4. Upload & Jalankan Program:

    • Simpan file di Raspberry Pi Pico.

    • Klik tombol Run di Thonny untuk menjalankan program.

  5. Amati Hasil:

    • Putar potensiometer dan amati perubahan sudut motor servo.

    • Perhatikan hasil suhu dan kelembapan yang muncul di monitor Thonny.

    • buzzer akan berbunyi sesuai kondisi:

      • Suhu tinggi :melodi A.

      • Kelembapan tinggi : melodi B.

      • Kedua-duanya tinggi : melodi C.

2. Hardware dan Diagram Blok[kembali]

1) White Board atau Project Board
2) Raspberry Pi Pico
3) Potensiometer

4) Motor Servo 

5) Jumper

6) DHT22

3. Rangkaian Simulasi dan Prinsip Kerja[kembali]

A). Rangkaian 
B). Prinsip Kerja
  1. Potensiometer  dan Servo:
    Potensiometer yang terhubung ke pin ADC (GPIO 26) berfungsi sebagai input analog. Raspberry Pi Pico secara berkala membaca nilai tegangan dari potensiometer melalui ADC dan mengonversinya menjadi nilai yang sesuai untuk mengatur sudut motor servo, yang dikendalikan melalui PWM pada pin GPIO 1. Proses ini berjalan secara real-time dan kontinu.

  2. DHT22 (Sensor Suhu & Kelembapan):
    Sensor DHT22 mengirimkan data suhu dan kelembapan secara digital melalui pin GPIO 16. Raspberry Pi Pico membaca data suhu dan kelembapan setiap siklus program. Berdasarkan nilai suhu dan kelembapan yang diterima, program memeriksa tiga kondisi:

    • Suhu tinggi (> 35°C): menghasilkan melodi A.

    • Kelembapan tinggi (> 50%): menghasilkan melodi B.

    • Suhu dan kelembapan keduanya tinggi: menghasilkan melodi C.

  3. Buzzer:
    Buzzer diatur menggunakan PWM pada pin GPIO 14. Program akan mengubah frekuensi dan durasi nada yang dikeluarkan buzzer berdasarkan kondisi suhu dan kelembapan yang terdeteksi oleh sensor DHT22. Setiap kondisi (suhu tinggi, kelembapan tinggi, atau keduanya) menghasilkan melodi berbeda.

  4. Kontrol Program dan Looping:
    Tidak ada penggunaan interrupt eksternal dalam percobaan ini. Semua input dari potensiometer dan sensor DHT22 dipantau secara terus-menerus dalam loop (polling). Raspberry Pi Pico memproses pembacaan sensor untuk menentukan respons output, seperti posisi motor servo dan suara buzzer.

Kesimpulan:

Percobaan ini menggunakan Raspberry Pi Pico untuk memproses input dari potensiometer (analog) dan sensor DHT22 (digital). Potensiometer mengatur posisi motor servo dengan PWM, sementara sensor DHT22 mengontrol buzzer berdasarkan kondisi suhu dan kelembapan. Buzzer akan mengeluarkan melodi yang berbeda sesuai dengan kondisi lingkungan, sementara motor servo bergerak sesuai input dari potensiometer. Semua proses dilakukan dalam loop utama program tanpa menggunakan interrupt eksternal, di mana Raspberry Pi Pico terus-menerus memantau dan memproses data secara polling.

4. Flowchart dan Listing Program [kembali]

A). Flowchart

B). Listing Program

from machine import Pin, ADC, PWM

import time

import dht


# Inisialisasi potensiometer pada GPIO 26 (ADC0)

pot = ADC(26)


# Inisialisasi motor servo pada GPIO 15 (PWM)

servo = PWM(Pin(1))

servo.freq(50)  # Frekuensi PWM untuk servo


# Inisialisasi buzzer sebagai PWM pada GPIO 14

buzzer = PWM(Pin(14))

buzzer.duty_u16(0)  # Tidak ada suara saat awal


# Inisialisasi sensor DHT22 pada GPIO 16

dht_sensor = dht.DHT22(Pin(16))


# Fungsi mapping nilai

def map_value(value, in_min, in_max, out_min, out_max):

    return int((value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)


# Fungsi untuk membunyikan buzzer dengan nada tertentu

def play_buzzer_note(frequency, duration_ms):

    buzzer.freq(frequency)

    buzzer.duty_u16(32768)  # Volume setengah

    time.sleep_ms(duration_ms)

    buzzer.duty_u16(0)

    time.sleep_ms(50)  # Jeda antar nada


# Fungsi melodi untuk suhu tinggi

def play_high_temp_melody():

    play_buzzer_note(880, 200)   # A5

    play_buzzer_note(988, 200)   # B5

    play_buzzer_note(1047, 200)  # C6


# Fungsi melodi untuk kelembapan tinggi

def play_high_humidity_melody():

    play_buzzer_note(659, 200)   # E5

    play_buzzer_note(698, 200)   # F5

    play_buzzer_note(784, 200)   # G5


# Fungsi melodi kombinasi suhu dan kelembapan tinggi

def play_combined_alert_melody():

    play_buzzer_note(1047, 200)  # C6

    play_buzzer_note(1175, 200)  # D6

    play_buzzer_note(1319, 200)  # E6


# Loop utama

while True:

    # Baca potensiometer

    pot_value = pot.read_u16()

    servo_angle = map_value(pot_value, 0, 65535, 0, 180)

    servo_duty = map_value(servo_angle, 0, 180, 1638, 8192)

    servo.duty_u16(servo_duty)


    # Baca suhu dan kelembapan dari DHT22

    try:

        dht_sensor.measure()

        temperature = dht_sensor.temperature()

        humidity = dht_sensor.humidity()

        print(f"Suhu: {temperature}°C | Kelembapan: {humidity:.1f}%")


        # Cek kondisi dan mainkan melodi sesuai kondisi

        if temperature > 30 and humidity > 50:

            print("🔥💧 Buzzer ON: Suhu & Kelembapan tinggi!")

            play_combined_alert_melody()

        elif temperature > 30:

            print("🔥 Buzzer ON: Suhu tinggi!")

            play_high_temp_melody()

        elif humidity > 50:

            print("💧 Buzzer ON: Kelembapan tinggi!")

            play_high_humidity_melody()

        else:

            buzzer.duty_u16(0)  # Matikan suara jika normal

    except OSError:

        print("⚠️ Gagal membaca sensor DHT22.")


    time.sleep(0.5)


5. Analisa [kembali]

1. Analisa bagaimana perbedaan implementasi PWM antara STM32 dan Raspberry Pi Pico serta dampaknya terhadap kontrol motor dan LED.

jawab :

Pada percobaan yang dilakukan, implementasi PWM pada STM32 dan Raspberry Pi Pico menunjukkan perbedaan mencolok dalam hal presisi dan kemampuan kendali perangkat. STM32, yang digunakan untuk mengontrol motor DC dan stepper berdasarkan input dari sensor touch dan potensiometer, memanfaatkan PWM berbasis hardware timer yang memungkinkan pengaturan kecepatan motor secara halus dan responsif terhadap perubahan input, seperti saat motor stepper dimatikan dan motor DC diaktifkan ketika sensor disentuh. Sementara itu, Raspberry Pi Pico yang diprogram menggunakan Thonny IDE digunakan untuk membaca data dari sensor DHT22 dan potensiometer, lalu menghasilkan sinyal PWM untuk mengontrol buzzer dan motor servo. PWM pada Pico digunakan untuk mengatur nada buzzer berdasarkan kondisi suhu dan kelembapan, serta menggerakkan motor servo, namun karena PWM Pico bersifat software dan terbatas dalam presisi, responsnya tidak seakurat STM32, terutama saat harus menjalankan beberapa fungsi sekaligus. Hal ini tentu saja membuat perbedaan respon pwm pada stm 32 dan respberry pi pico

2. Analisa bagaimana cara pembacaan nilai sensor analog menggunakan ADC pada STM32 dan Raspberry Pi Pico

jawab:

Pada percobaan yang dilakukan, pembacaan nilai sensor analog menggunakan ADC pada STM32 dan Raspberry Pi Pico menunjukkan perbedaan dalam kecepatan dan presisi. STM32 menggunakan ADC 12-bit yang mampu membaca sinyal analog dengan cepat dan akurat, serta mendukung fitur seperti DMA untuk mengakses data secara efisien tanpa membebani prosesor utama. Ini memungkinkan pembacaan sensor yang lebih responsif, seperti pada sensor touch yang mengendalikan motor DC dan stepper. Di sisi lain, Raspberry Pi Pico juga menggunakan ADC 12-bit, namun dengan jumlah pin ADC terbatas (hanya tiga pin ADC), sehingga pembacaan sensor dilakukan secara bergantian, yang bisa memperlambat proses jika banyak sensor yang perlu dibaca. Meskipun ADC Pico cukup efektif untuk aplikasi sederhana, kecepatan dan presisi pembacaan sensor pada STM32 lebih unggul, dalam pengolahan data secara real-time 

3. Analisa bagaimana penggunaan interrupt eksternal dalam mendeteksi input dari sensor atau tombo pada STM32 dan Raspberry Pi Pico.

jawab:

Pada STM32, interrupt eksternal digunakan untuk mendeteksi perubahan input pada sensor atau tombol secara otomatis, memungkinkan respons cepat tanpa perlu memantau status sensor terus-menerus. Hal ini menghemat sumber daya dan mempercepat proses. Sementara itu, Raspberry Pi Pico menggunakan polling, di mana sistem secara berkala memeriksa status sensor dalam loop utama, yang kurang efisien karena tidak dapat merespons perubahan input secara otomatis. Jadi, STM32 lebih efektif untuk aplikasi yang membutuhkan respons cepat, sementara Pico lebih cocok untuk aplikasi yang tidak memerlukan reaksi langsung.

4. Analisa bagaimana cara kerja fungsi HAL_GetTick() pada STM32 dan utime.ticks_ms() pada Raspberry Pi Pico dalam menghitung waktu sejak sistem dinyalakan

jawab:

Fungsi HAL_GetTick() pada STM32 dan utime.ticks_ms() pada Raspberry Pi Pico keduanya digunakan untuk mengukur waktu yang telah berlalu sejak sistem dinyalakan. HAL_GetTick() bekerja dengan mengandalkan timer internal (SysTick) yang diatur untuk menghasilkan interrupt setiap milidetik, mencatat waktu dalam bentuk milidetik. Sedangkan utime.ticks_ms() pada Raspberry Pi Pico menggunakan timer internal yang menginkrementasi waktu sejak reboot, juga dalam milidetik. Meskipun keduanya berfungsi serupa, HAL_GetTick() lebih presisi dan terintegrasi dalam sistem STM32, sementara utime.ticks_ms() lebih sederhana dan cocok untuk aplikasi dasar di Pico.

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:

Pada STM32, konfigurasi PWM dilakukan dengan mengatur pin GPIO dalam mode alternatif dan menghubungkannya ke timer internal yang memiliki presisi tinggi. Timer ini memungkinkan kontrol yang lebih akurat terhadap frekuensi dan duty cycle PWM, menghasilkan sinyal gelombang persegi yang stabil. Di sisi lain, Raspberry Pi Pico menggunakan pustaka Python (machine.PWM) untuk mengonfigurasi pin PWM, yang lebih sederhana namun terbatas dalam presisi. Timer internal di Pico dapat mengatur frekuensi dan duty cycle, namun kurang presisi jika dibandingkan dengan STM32 yang menggunakan hardware timer dengan lebih banyak fitur. Dengan demikian, STM32 menawarkan kontrol PWM yang lebih canggih dan presisi tinggi, sedangkan Pico lebih cocok untuk aplikasi sederhana dengan kontrol PWM yang lebih mudah diatur meskipun kurang presisi.


Soal tambahan 

1. kenapa percobaan 8 untuk penggunaan motor dc menggunakan transistor?

jawab:

Transistor diguanakan untuk melindungi komponen lain dari tegangan balik (back EMF) yang dihasilkan oleh motor DC, yang bisa merusak rangkaian kontrol. Dengan demikian, transistor bertindak sebagai pelindung, memastikan rangkaian kontrol tetap aman dari kerusakan akibat back EMF.

2. kenapa pin 15 diganti dengan pin 1 pada percobaan 5

jawab:

pin 15 dan pin 1 keduanya dapat digunakan untuk PWM, penggantian dilakukan untuk alasan kemudahan dalam pengelolaan kode dan pin 1 lebih sesuai dengan layout perangkat keras yang digunakan dalam percobaan tersebut.

6. Video Simulasi [kembali]





7. Download file [kembali]

Video Praktikum[download]
Datasheet Raspberry Pi Pico [download]
Datasheet buzzer [download]
Datasheet Motor servo [download]




[menuju awal]


Tidak ada komentar:

Posting Komentar

     BAHAN PRESENTASI     MATA KULIAH ELEKTRONIKA 2022 Oleh Zahara 2210953017 DOSEN PENGAMPU DR. DARWISON, M.T. Referensi  1. Darwison, 2010...

Postingan Populer