Selasa, 30 April 2019

Laporan Akhir 2 Modul 2

 




1. Prosedur
[Kembali]

- Rangkaian



- Prosedur

  1. 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.

  2. Pembacaan Potensiometer
    Potensiometer menghasilkan sinyal analog yang dibaca oleh ADC pada GPIO 26. Nilai analog ini dikonversi menjadi nilai digital 16-bit.

  3. 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.

  4. 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.

  5. 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.

  6. 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.


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 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.


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]




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]


0 comments:

Posting Komentar