Percobaan 5. Motor Servo, Buzzer, Potensiomter, & DHT22

1. Prosedur [Kembali]

  1. Rangkai semua komponen sesuai modul
  2. masukkan program dari modul program di modul
  3. Jalankan program dan cobakan sesuai kondisi

2. Hardware dan Diagram Blok [Kembali]

1.     Raspberry Pi Pico

2.     Sensor DHT22 (Sensor suhu dan kelembapan)

3.     Servo motor

4.     Potensiometer

5.     Buzzer

6.     Kabel jumper

7.     Breadboard (opsional, untuk mempermudah koneksi)

3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian :

Prinsip Kerja :

Rangkaian ini bekerja dengan cara membaca nilai dari potensiometer untuk mengatur posisi servo motor. Selain itu, sensor DHT22 digunakan untuk mengukur suhu dan kelembapan di sekitar. Raspberry Pi Pico akan memproses data tersebut, lalu menggerakkan servo sesuai dengan nilai potensiometer, dan menyalakan buzzer jika suhu lebih dari 35°C, kelembapan lebih dari 50%, atau keduanya tinggi. Buzzer akan berbunyi dengan nada berbeda tergantung pada kondisi yang terjadi.

4. Flowchart dan Listing Program [Kembali]

Flowchart :

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(15))
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

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 > 35 and humidity < 50:
            print("🔥💧 Buzzer ON: Suhu & Kelembapan tinggi!")
            play_combined_alert_melody()
        elif temperature > 35:
            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. Video Demo [Kembali]

6. Kondisi [Kembali]

Buatlah rangkaian seperti gambar pada percobaan 5. Jika potensiometer diputar searah jarum jam, servo bergerak searah jarum jam. Jika suhu > 35°C buzzer berbunyi dan kelembapan <50% buzzer berbunyi dengan 3 nada.

7. Video Simulasi [Kembali]

8. Download File [Kembali]

Download File Rangkaian [Klik]

Komentar

Postingan populer dari blog ini

Tugas Besar

Modul 1 Prak. Sistem Digital