Tugas Pendahuluan M2 P5K2





Percobaan 5 (Motor Servo, Buzzer, Potensiomter, & DHT22)
Kondisi 2 : Buatlah rangkaian seperti gambar pada percobaan 5. Jika potensiometer diputar searah jarum jam, servo bergerak searah jarum jam. Jika suhu > 35°C buzzer berbunyi, jika kelembapan <50% buzzer berbunyi, jika kedua kondisi tadi memnuhi buzzer jugaberbunyi. Dimana masing masing keadaan tadi memiliki bunyi yang berbeda

1. Prosedur [kembali]

    1. Buat rangkaian percobaan 3 di website wokwi sesuai dengan kondisi percobaan.
    2. Program sesuai kondisi di wokwi.
    4. Running simulasi di wokwi
    5. Selesai.

2. Hardware dan Diagram Blok [kembali]

Hardware :
1. Raspberry Pi Pico 

2. Servo

3. Buzzer

4. DHT22


5. Potensiometer



Blok Diagram :


3. Rangkaian Simulasi dan Prinsip Kerja [kembali]

Pada percobaan ini, Raspberry Pi Pico digunakan sebagai unit kendali utama yang terhubung dengan sejumlah komponen, yaitu sensor suhu dan kelembapan DHT22, potensiometer, motor servo, dan buzzer. Potensiometer berperan sebagai input analog yang digunakan untuk mengatur arah dan sudut putaran motor servo—semakin diputar searah jarum jam, nilai ADC yang terbaca meningkat, sehingga Raspberry Pi Pico mengeluarkan sinyal PWM yang mengontrol pergerakan servo sesuai perubahan tersebut. Sensor DHT22 berfungsi untuk mengukur suhu dan kelembapan lingkungan. Data yang diperoleh diproses oleh Raspberry Pi Pico, dan jika suhu melebihi 35°C, buzzer akan berbunyi dengan melodi bernada rendah. Sementara itu, jika kelembapan turun di bawah 50%, buzzer akan berbunyi dengan melodi bernada tinggi. Apabila kedua kondisi tersebut terjadi secara bersamaan, buzzer akan menghasilkan bunyi gabungan (melodi kombinasi). Setiap kondisi menghasilkan pola atau frekuensi suara yang berbeda, memungkinkan pengguna mengenali situasi hanya melalui suara buzzer. Sistem ini menggabungkan pengendalian motor, pembacaan sensor digital, input analog, serta pengeluaran sinyal audio dalam satu rangkaian pemantauan berbasis mikrokontroler.

4. Flowchart dan Listing Program [kembali]

Flow chart :

Listing Program:
from machine import Pin, ADC, PWM
import time
import dht

# Inisialisasi potensiometer pada GPIO 26
pot = ADC(26)

# Inisialisasi servo pada GPIO 15
servo = PWM(Pin(15))
servo.freq(50)

# Inisialisasi buzzer pada GPIO 14
buzzer = PWM(Pin(14))
buzzer.duty_u16(0)

# 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 memainkan nada buzzer
def play_buzzer_note(freq, duration_ms):
    buzzer.freq(freq)
    buzzer.duty_u16(32768)  # Volume sedang
    time.sleep_ms(duration_ms)
    buzzer.duty_u16(0)
    time.sleep_ms(50)

# Melodi jika suhu > 35°C
def melody_low_temp():
    play_buzzer_note(523, 200)   # C5
    play_buzzer_note(587, 200)   # D5
    play_buzzer_note(659, 200)   # E5

# Melodi jika kelembapan < 50%
def melody_high_humidity():
    play_buzzer_note(784, 200)   # G5
    play_buzzer_note(880, 200)   # A5
    play_buzzer_note(988, 200)   # B5

# Melodi kombinasi (suhu > 35 dan kelembapan < 50)
def melody_combined():
    play_buzzer_note(1047, 200)  # C6
    play_buzzer_note(1175, 200)  # D6
    play_buzzer_note(1319, 200)  # E6

# Loop utama
while True:
    # Baca nilai potensiometer dan gerakkan servo
    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}% | sudut {servo_angle}")

        # Cek kondisi dan mainkan melodi yang sesuai
        if temperature > 35 and humidity < 50:
            print("🌡️ Suhu tinggi & 💧 Kelembapan rendah — Combined melody")
            melody_combined()
        elif temperature > 35:
            print("🌡️ Suhu tinggi — Low temp melody")
            melody_low_temp()
        elif humidity < 50:
            print("💧 Kelembapan rendah — High humidity melody")
            melody_high_humidity()
        else:
            buzzer.duty_u16(0)  # Matikan buzzer

    except OSError:
        print("⚠️ Gagal membaca sensor DHT22.")

    time.sleep(0.5)


5. Kondisi [kembali]

Percobaan 5 Kondisi 2
Buatlah rangkaian seperti gambar pada percobaan 5. Jika potensiometer diputar searah jarum jam, servo bergerak searah jarum jam. Jika suhu > 35°C buzzer berbunyi, jika kelembapan <50% buzzer berbunyi, jika kedua kondisi tadi memnuhi buzzer jugaberbunyi. Dimana masing masing keadaan tadi memiliki bunyi yang berbeda

6. Video Simulasi [kembali]


7. Download file [kembali]

HTML Download
File Rangkaian Download
Video Percobaan Download
Datasheet Raspberry Pi Pico  Download
Datasheet Push Button Download
Datasheet LED RGB Download
Datasheet Resistor Download
Datasheet Buzzer Download




Komentar

Postingan populer dari blog ini

Modul 2 Praktikum Sistem Digital

Modul 1 (GPIO) Praktikum Mikroprosesor dan Mikrokontroller

Modul 1 Praktikum Sistem Digital