- Prosedur
Inisialisasi Komponen
Raspberry Pi Pico menginisialisasi semua komponen yang terhubung: ADC untuk potensiometer, PWM untuk servo motor dan buzzer, serta komunikasi digital untuk sensor DHT22.-
Pembacaan Potensiometer
Potensiometer menghasilkan sinyal analog yang dibaca oleh ADC pada GPIO 26. Nilai analog ini dikonversi menjadi nilai digital 16-bit. -
Kontrol Servo Motor
Nilai digital dari potensiometer dipetakan (mapping) ke sudut antara 0 hingga 180 derajat, lalu dikonversi lagi ke nilai PWM yang sesuai untuk mengatur posisi servo motor pada GPIO 15. -
Pembacaan Sensor Suhu dan Kelembapan
Sensor DHT22 yang terhubung ke GPIO 16 akan mengukur suhu dan kelembapan. Data ini dibaca secara periodik dan ditampilkan melalui serial monitor. -
Pengambilan Keputusan Berdasarkan Data Sensor
-
Jika suhu > 35°C dan kelembapan > 50%, maka buzzer memainkan melodi peringatan kombinasi.
-
Jika hanya suhu > 35°C, maka buzzer memainkan melodi suhu tinggi.
-
Jika hanya kelembapan > 50%, maka buzzer memainkan melodi kelembapan tinggi.
-
Jika kondisi normal, buzzer akan dimatikan.
-
-
Loop Berkelanjutan
Semua proses di atas berjalan terus-menerus dalam loop utama program, sehingga sistem dapat terus memantau dan merespons perubahan suhu, kelembapan, dan input dari potensiometer secara real-time.
Rangkaian ini bekerja dengan menggunakan Raspberry Pi Pico sebagai pusat kendali untuk membaca data dari sensor dan mengontrol aktuator berdasarkan data tersebut. Sensor DHT22 digunakan untuk mengukur suhu dan kelembapan di lingkungan sekitar. Nilai suhu dan kelembapan tersebut kemudian diproses oleh Raspberry Pi Pico. Jika suhu melebihi 35°C atau kelembapan melebihi 50%, maka buzzer akan membunyikan nada tertentu sebagai alarm. Jika keduanya tinggi, buzzer akan membunyikan nada kombinasi sebagai peringatan tambahan.
Sementara itu, potensiometer berfungsi sebagai input analog yang dibaca oleh ADC (Analog to Digital Converter) di Raspberry Pi Pico. Nilai dari potensiometer ini digunakan untuk mengatur sudut servo motor. Nilai ADC dari potensiometer akan dipetakan menjadi rentang sudut antara 0 hingga 180 derajat, kemudian dikonversi ke sinyal PWM yang sesuai untuk mengatur posisi servo.
Dengan kata lain, sistem ini memantau suhu dan kelembapan sekaligus memungkinkan pengguna mengatur posisi servo melalui potensiometer, dan memberikan peringatan suara melalui buzzer jika kondisi lingkungan melebihi ambang batas tertentu. Seluruh proses berjalan secara berulang dalam sebuah loop, memungkinkan pembacaan dan respons sistem secara terus-menerus.
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)
File HTML [disini]
Listing Program [disini]
Video [disini]
Datasheet Raspberry Pi Pico [disini]
Datasheet DHT22 Sensor [disini]
0 comments:
Posting Komentar