LA PERCOBAAN 5
1. Prosedur [kembali]
- siapkan komponen yang dibutuhkan seperti ,raspberry pi pico,motor Servo, Buzzer, Potensiomter, & DHT22
- buatlah rangkaian seperti pada modul
- masukkan listing program yang sesuai
- simulasikan rangkaian
2. Rangkaian Simulasi dan Prinsip Kerja [kembali]
DHT22 membaca suhu dan kelembaban lingkungan secara berkala.Potensiometer memberikan nilai tegangan analog yang dikonversi menjadi nilai digital oleh ADC di Raspberry Pi Pico. Mikrokontroler membandingkan nilai dari DHT22 dengan nilai ambang (bisa ditentukan oleh potensiometer atau nilai tetap di program).Jika suhu/kelembaban melampaui batas, maka: Servo motor bisa diputar ke posisi tertentu (misalnya membuka jendela/ventilasi).Buzzer akan menyala untuk memberikan peringatan.
Servo bergerak sesuai dengan logika (misalnya sudut tergantung kelembaban).Buzzer aktif jika kondisi kritis terjadi (misalnya suhu terlalu tinggi).
Servo bergerak sesuai dengan logika (misalnya sudut tergantung kelembaban).Buzzer aktif jika kondisi kritis terjadi (misalnya suhu terlalu tinggi).
3. 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(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
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 > 25 and humidity > 50:
print("🔥💧 Buzzer ON: Suhu & Kelembapan tinggi!")
play_combined_alert_melody()
elif temperature > 25:
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)
4. Kondisi [kembali]
5. Video Simulasi [kembali]
6. Download file [kembali]
- Rangkaian [disini]
-video [disini]
-datasheet raspberry pi pico [disini]
-datasheet buzzer [disini]
-datasheet motor servo [disini]
Komentar
Posting Komentar