1. Perakitan dan Persiapan Komponen
Seluruh komponen dirakit dengan benar sesuai fungsinya: potensiometer dihubungkan ke pin ADC0 (GPIO 26), motor servo ke GPIO 1, buzzer ke GPIO 14, dan sensor DHT22 ke GPIO 16 pada Raspberry Pi Pico. Semua komponen mendapatkan suplai daya 3.3V dan GND dari board. Setelah perakitan selesai, Raspberry Pi Pico disambungkan ke laptop menggunakan kabel USB.
2. Pemrograman di Thonny IDE
Setelah Raspberry Pi Pico terhubung, Thonny IDE dibuka di laptop. Kode Python dimasukkan ke editor, dengan memastikan bahwa konfigurasi pin pada kode sesuai dengan pengkabelan yang telah dilakukan. File kemudian disimpan di Raspberry Pi Pico dan program dijalankan dengan menekan tombol Run.
3. Pengujian dan Pengamatan Sistem
Saat program berjalan, pengguna dapat memutar potensiometer dan mengamati perubahan sudut pada motor servo. Sensor DHT22 akan menampilkan data suhu dan kelembapan di monitor Thonny. Buzzer akan berbunyi dengan melodi berbeda tergantung kondisi lingkungan: melodi 1 untuk suhu tinggi, melodi 2 untuk kelembapan tinggi, dan melodi 3 jika keduanya tinggi.
2. Hardware dan Diagram Blok[kembali]
3. Rangkaian Simulasi dan Prinsip Kerja[kembali]
A). Rangkaian
B). Prinsip Kerja
Percobaan ini menggunakan Raspberry Pi Pico untuk mengendalikan motor servo dan buzzer berdasarkan input dari potensiometer dan sensor DHT22. Potensiometer yang terhubung ke pin ADC (GPIO 26) berfungsi sebagai input analog yang dibaca secara berkala oleh Raspberry Pi Pico. Nilai tegangan yang dihasilkan potensiometer dikonversi menjadi nilai digital melalui ADC, lalu digunakan untuk menentukan sudut putaran motor servo. Motor servo dikendalikan menggunakan sinyal PWM melalui pin GPIO 1, dan proses pengaturan ini berlangsung secara real-time dan terus-menerus selama program berjalan.
Sensor suhu dan kelembapan DHT22 terhubung ke pin GPIO 16 dan mengirimkan data secara digital. Setiap siklus program, Raspberry Pi Pico membaca nilai suhu dan kelembapan dari sensor tersebut. Berdasarkan data yang diterima, program mengevaluasi tiga kemungkinan kondisi lingkungan: jika suhu melebihi 35°C, buzzer akan membunyikan melodi 1; jika kelembapan melebihi 50%, buzzer membunyikan melodi 2; dan jika kedua kondisi tersebut terpenuhi, buzzer membunyikan melodi 3. Buzzer dikendalikan melalui PWM pada pin GPIO 14, di mana frekuensi dan durasi nada disesuaikan dengan kondisi yang terdeteksi.
Seluruh sistem bekerja dalam sebuah loop utama tanpa penggunaan interupsi eksternal. Raspberry Pi Pico melakukan pemantauan secara polling terhadap nilai potensiometer dan sensor DHT22 untuk kemudian menentukan output yang sesuai. Dengan pendekatan ini, percobaan berhasil menunjukkan bagaimana Raspberry Pi Pico dapat memproses input analog dan digital secara bersamaan untuk menghasilkan kontrol output motor dan suara yang responsif terhadap perubahan lingkungan.
4. Flowchart dan Listing Program [kembali]
A). Flowchart
B). 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
# Loop utama
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 > 30 and humidity > 50:
print("🔥💧 Buzzer ON: Suhu & Kelembapan tinggi!")
play_combined_alert_melody()
elif temperature > 30:
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. Analisa [kembali]
6. Video Simulasi [kembali]
7. Download file [kembali]
Tidak ada komentar:
Posting Komentar