LAPORAN AKHIR 2
Prosedur
Dalam sistem ini, Raspberry Pi Pico berperan sebagai pengendali utama yang mengatur kerja berbagai komponen seperti potensiometer, servo motor, buzzer, dan sensor suhu dan kelembapan DHT22. Pada awalnya, mikrokontroler ini melakukan inisialisasi terhadap semua periferal yang terlibat, termasuk modul ADC untuk membaca sinyal analog dari potensiometer, modul PWM untuk mengatur pergerakan servo motor dan menghasilkan suara dari buzzer, serta komunikasi digital untuk membaca data dari sensor DHT22.
Potensiometer yang terhubung ke pin GPIO 26 menghasilkan sinyal analog yang kemudian dikonversi menjadi data digital 16-bit oleh ADC internal. Nilai digital tersebut selanjutnya digunakan untuk mengendalikan posisi servo motor. Proses ini dilakukan melalui pemetaan (mapping) nilai ADC ke rentang sudut 0 hingga 180 derajat, yang kemudian dikonversi ke sinyal PWM sesuai. Sinyal PWM ini dikirimkan melalui GPIO 15 untuk mengatur sudut bukaan dari servo motor secara presisi.
Sementara itu, sensor DHT22 yang terhubung ke pin GPIO 16 berfungsi untuk mengukur suhu dan kelembapan lingkungan. Data dari sensor ini dibaca secara berkala oleh sistem dan ditampilkan melalui serial monitor sebagai umpan balik kepada pengguna. Berdasarkan nilai suhu dan kelembapan yang diterima, sistem mengambil keputusan untuk mengaktifkan buzzer sebagai indikator kondisi lingkungan.
Pengambilan keputusan dilakukan berdasarkan ambang batas yang telah ditentukan. Jika suhu melebihi 35°C dan kelembapan juga melebihi 50%, maka buzzer akan memainkan melodi kombinasi sebagai peringatan ganda. Jika hanya suhu yang tinggi (di atas 35°C), buzzer akan mengeluarkan melodi khusus untuk suhu tinggi. Begitu pula jika hanya kelembapan yang tinggi (di atas 50%), buzzer akan memainkan melodi berbeda yang menunjukkan kondisi kelembapan tinggi. Namun, jika suhu dan kelembapan berada dalam kondisi normal, buzzer akan dinonaktifkan sehingga tidak mengeluarkan suara.
Seluruh proses ini berlangsung secara kontinu dalam loop utama program. Dengan demikian, Raspberry Pi Pico dapat terus-menerus memantau kondisi suhu, kelembapan, dan nilai potensiometer, serta merespons secara real-time terhadap perubahan yang terjadi. Hal ini membuat sistem menjadi responsif dan adaptif terhadap dinamika lingkungan sekitarnya.
Rangkaian ini mengandalkan Raspberry Pi Pico sebagai unit kendali utama yang bertugas membaca data dari berbagai sensor dan mengatur aktuator berdasarkan hasil pembacaan tersebut. Sensor DHT22 digunakan untuk mendeteksi kondisi suhu dan kelembapan di lingkungan sekitarnya. Data yang diperoleh dari sensor tersebut kemudian dianalisis oleh Raspberry Pi Pico, dan jika suhu terdeteksi melebihi 35°C atau kelembapan melampaui 50%, sistem akan mengaktifkan buzzer untuk membunyikan nada tertentu sebagai bentuk peringatan. Bila kedua parameter berada di atas ambang batas secara bersamaan, maka buzzer akan menghasilkan nada gabungan sebagai alarm tambahan.
Selain itu, potensiometer digunakan sebagai masukan analog yang diolah melalui modul ADC (Analog to Digital Converter) pada Raspberry Pi Pico. Nilai ADC ini kemudian dipetakan ke rentang sudut antara 0 hingga 180 derajat untuk mengatur posisi servo motor. Setelah pemetaan, nilai tersebut diubah menjadi sinyal PWM yang dikirim ke servo, sehingga posisinya dapat diatur sesuai input dari potensiometer.
Secara keseluruhan, sistem ini bekerja dengan cara memantau kondisi suhu dan kelembapan sekaligus memberikan kontrol manual terhadap posisi servo menggunakan potensiometer. Mekanisme peringatan berbasis suara melalui buzzer juga diterapkan ketika lingkungan melebihi batas yang telah ditentukan. Semua proses ini berlangsung terus-menerus dalam loop utama program, memungkinkan sistem merespons secara real-time terhadap perubahan yang terjadi.
|
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]








Komentar
Posting Komentar