Laporan Akhir 2




Percobaan 5

1. Prosedur [kembali]
 Prosedur Percobaan dengan Raspberry Pi Pico:
1. Tentukan komponen dan Rangkailah Komponen gambar percobaan 5 , yaitu Sambungkan potensiometer ke pin ADC0(GPIO 26). Sambungkan motor servo ke pin (GP15),ke ground dan VCC. Sambungkan buzzer ke pin GPIO 14. Sambungkan sensor DHT22 ke pin GPIO 16.Pastikan semua komponen mendapat suplai 3.3V dan pin GND dari Pico.
2. Sambungkan Raspberry Pi Pico ke laptop menggunakan kabel USB.
3. Konfigurasi Koding dengan membuka software Thonny. Ketik atau paste koding Python yang sudah disiapkan ke editor Thonny. Pastikan konfigurasi pin dalam kode sesuai:
pot = ADC(26)
servo = PWM(Pin(1))
buzzer = PWM(Pin(14))
dht_sensor = dht.DHT22(Pin(16))
4. Upload & Jalankan Program, Simpan file di Raspberry Pi Pico. Klik tombol Run di Thonny untuk menjalankan program.
5. Amati Hasil, putar potensiometer dan amati perubahan sudut motor servo. Perhatikan hasil suhu dan kelembapan yang muncul di monitor Thonny. Jika suhu >35°C atau kelembapan >50%, buzzer akan berbunyi sesuai kondisi:
Suhu tinggi → melodi tertentu.
Kelembapan tinggi → melodi lain.
Keduanya tinggi → melodi gabungan.

2. Hardware dan Diagram Blok [kembali]
  a. Hardware
1) Laptop yang sudah terinstal Software Thonny 
2) Port sambungan kabel dari laptop ke Raspberry Pi Pico(USB)

3) White Board atau Project Board
4) Raspberry Pi Pico
5) Potensiometer



6) Motor Servo 



7) Jumper

8) DHT22



b. Blok Diagram
3. Rangkaian Simulasi dan Prinsip Kerja [kembali]

Rangkaian Simulasi: 
  



Prinsip Kerja:

       Potensiometer ➔ Servo

Potensiometer terhubung ke pin ADC (GPIO 26) Sebagai input analog untuk mengatur posisi servo motor atau menentukan ambang suhu/kelembaban tertentu.Tegangan output dari potensiometer dibaca melalui pin ADC (Analog to Digital Converter) pada Raspberry Pi Pico.
DHT22 (Sensor Suhu & Kelembapan)
    Sensor ini memberi data suhu dan kelembapan secara digital lewat GPIO 16 menggunakan program dari thonny. Raspberry Pi Pico membaca datanya setiap siklus loop.Data suhu dan kelembaban dibaca secara berkala dan digunakan untuk logika kontrol komponen lain. 
    Buzzer
Buzzer dikontrol dengan PWM juga. Program menentukan frekuensi dan durasi nada berdasarkan kondisi suhu/kelembapan, sehingga buzzer bisa memainkan melodi yang berbeda sesuai dengan jenis peringatannya.
    Motor Servo
Posisi motor dikendalikan berdasarkan nilai potensiometer atau hasil pembacaan DHT22 (misalnya membuka saat suhu terlalu tinggi).Sinyal kontrol dari Raspberry Pi Pico dikirim melalui PWM (Pulse Width Modulation).
   
Kesimpulannya, Prinsip kerja dari percobaan menggunakan Raspberry Pi Pico ini adalah memanfaatkan mikrocontroller untuk membaca inputan analog dan digital lalu mengendalikan output berdasarkan hasil pembacaan dari program yang telah dibuat tersebut. Potensiometer berfungsi sebagai input analog yang nilainya dibaca melalui pin ADC0 untuk mengatur sudut motor servo secara real-time. sedangkan untuk Sensor DHT22 berperan untuk membaca suhu dan kelembapan udara secara digital melalui pin GPIO 16 . Hasil pembacaan sensor ini digunakan sebagai acuan untuk mengendalikan dari nada/bunyi buzzer. Motor servo diatur menggunakan sinyal PWM pada pin GPIO 1, sementara buzzer juga dikontrol dengan PWM pada pin GPIO 14 untuk menghasilkan nada. Seluruh proses dikendalikan dalam loop utama program tanpa penggunaan interrupt eksternal, di mana mikrocontroller terus-menerus memantau dan memproses data secara polling. Dengan prinsip kerja ini, Raspberry Pi Pico mampu menjalankan kontrol otomatis berdasarkan kondisi lingkungan dan input dari potensiometer, lalu memberikan respons fisik berupa gerakan servo dan bunyi buzzer secara langsung.

Jadi secara keseluruhan, prinsip kerjanya:
Membaca input analog (potensiometer) ➔ memutar servo.
Membaca data suhu & kelembapan (DHT22) ➔ memutuskan output buzzer.
Semua berlangsung kontinu & otomatis selama program berjalan.


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 1 (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 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. Analisa [kembali]


6. Kondisi [kembali]

Buatlah rangkaian seperti percobaan 8-Motor DC (Dinamo DC), Motor Stepper, Touch Sensor, Potensiometer

7. Video Simulasi [kembali]




8. Download file [kembali]
Datasheet Motor servo [tekan disini]
Datasheet STM32F103C8 [tekan disini]
Datasheet Raspberry Pi Pico [tekan disini]
Datasheet buzzer [tekan disini]
Prograam Thonny [tekan disini]

Tidak ada komentar:

Posting Komentar

                                     BAHAN PRESENTASI UNTUK MATA KULIAH  ELEKTRONIKA   Oleh : Arga Vibrano 2210952034 Elektronika A       Do...