LAPORAN AKHIR 2

 




1. Prosedur
[Kembali]

Rangkaian

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.


2. Hardware dan Diagram Blok [Kembali]

Raspberry PI Pico sebagai mikrokontroler utama yang mengendalikan semua komponen input dan output



DHT 22 sebagai sensor untuk mengukur suhu dan kelembapan lingkungan, lalu mengirim datanya ke Pico.




Potensiometer untuk mengubah nilai resistansi untuk menghasilkan tegangan analog sebagai input ke ADC Pico; digunakan untuk mengatur sudut servo.



Buzzer sebagai output suara yang berbunyi sesuai kondisi suhu dan kelembapan (normal atau tinggi).




Motor Servo sebagai motor yang dikendalikan sudutnya berdasarkan nilai dari potensiometer.



3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian




Prinsip kerja

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.


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]

Percobaan 5

7. Video Simulasi [Kembali]





8. Download File[Kembali]

File HTML [disini]
Listing Program [disini]
Video [disini]
Datasheet Raspberry Pi Pico [disini]

Datasheet DHT22 Sensor [disini]


Komentar

Postingan populer dari blog ini

SISTEM DIGITAL

ELEKTRONIKA

MIKROPROSESOR DAN MIKROKONTROLER