Modul 4 Tugas Besar

Sistem Jemuran Pintar Multi-Kondisi: Implementasi 6 Skenario Cuaca dengan Kontrol Atap dan Fan



1. Latar Belakang
 [Kembali]

Dalam kehidupan sehari-hari, menjemur pakaian merupakan salah satu aktivitas rumah tangga yang tak terhindarkan. Di negara-negara dengan iklim tropis seperti Indonesia, proses menjemur pakaian sering kali bergantung pada cuaca. Cuaca yang tidak menentu, seperti hujan tiba-tiba. sering kali menjadi kendala dalam menjemur pakaian secara manual. Hal ini dapat menyebabkan pakaian yang dijemur tidak kering dengan sempurna akibat cuaca yang berubah secara tiba tiba

Selain itu, aktivitas menjemur pakaian secara manual juga membutuhkan waktu dan tenaga. Bagi sebagian orang, terutama mereka yang memiliki kesibukan tinggi atau tinggal di apartemen dengan ruang terbatas, menjemur pakaian bisa menjadi tantangan tersendiri. Dengan perkembangan teknologi yang semakin pesat, kebutuhan akan solusi praktis dan efisien dalam menjemur pakaian semakin meningkat.

Jemuran otomatis hadir sebagai inovasi untuk menjawab permasalahan tersebut. Dengan menggunakan teknologi canggih, jemuran otomatis dirancang untuk dapat menjemur pakaian secara efisien tanpa tergantung pada kondisi cuaca. Sistem jemuran otomatis ini biasanya dilengkapi dengan sensor DHT11, PIR, LDR, & RAIN dengan mekanisme otomatis yang dapat membuka atap secara otomatis

Penggunaan jemuran otomatis tidak hanya memberikan kemudahan bagi pengguna, tetapi juga berpotensi meningkatkan efisiensi energi dan waktu. Misalnya, dengan adanya sensor hujan, atap akan otomatis tertutup untuk melindungi pakaian agar tidak terkena hujan. Hal ini sangat membantu orang- orang yang aktivitasnya cenderung banyak di luar rumah dan tidak sempat pulang hanya untuk mengangkat jemuran saat hujan turun. Maka dari itu dibutuhkannya inovasi jemuran berbasis teknologi untuk mengatasi permasalahan ini.

    2. Tujuan [Kembali]
    Tujuan rancangan inovasi cerdas jemuran diantaranya:

    1) Memberikan kemudahan bagi pengguna dalam pengontrolan atap tanpa harus memantau jemuran sepanjang hari
    2) Memberikan solusi praktis dan efisien bagi orang-orang yang memiliki kesibukan tinggi
    3) Memaksimalkan penggunaan ruangan terbatas sebagai jemuran

    3. Daftar dan Alat Komponen [Kembali]


    1. Breadboard





    Spesifikasi:

    - Solderless Breadboard 830 titik, terdiri dari 630 titik terminal dan 200 titik distribusi

    - Setiap titik diidentifikasi dengan huruf dan angka untuk memudahkan pemakaian

    - Re-usable, bisa dipakai berulang-ulang

    - Low static, body plastik

    - Bisa dimasuki kabel berukuran 20-29AWG

    - Size: 165mm (L) x 55mm (W)


    2.Resistor 10k ohm




    Spesifikasi:

    - Resistance : 10k Ohm

    - Power Rating : 250 mW (1/4 W)

    - Tolerance : 0.1 %

    - Temperature Coefficient : 15 PPM / C

    - Voltage Rating : 250 V

    - Operating Temperature Range : - 55 C to + 155 C

    - Length : 7.1 mm

    - Diameter : 2.3 mm


    3. Raspberry Pi Pico





    Spesifikasi

    • Microcontroller : RP2040 (Dual-core Arm Cortex-M0+)

    • Operating Voltage : 3.3V

    • Input Voltage (recommended) : 1.8V – 5.5V (via VSYS pin)

    • Input Voltage (limit) : 1.8V – 5.5V

    • Digital I/O Pins : 26 (multi-function GPIO)

    • PWM Digital I/O Pins : 16 (8 PWM slices, 2 channels per slice, GPIO-multiplexed)

    • Analog Input Pins : 3 (ADC channels on GPIO26, GPIO27, GPIO28)

    • DC Current per I/O Pin : Max 15 mA (recommended max 12 mA)

    • DC Current for 3.3V Pin : Max total 300 mA (shared with all 3.3V-powered peripherals)

    • Flash Memory : 2 MB (external QSPI flash)

    • SRAM : 264 KB (on-chip)

    • EEPROM : Tidak tersedia secara bawaan (bisa disimulasikan di flash)

    • Clock Speed : 133 MHz (default, can be overclocked)

    • Length : 51.0 mm

    • Width : 21.0 mm





    4. DHT11




    Spesifikasi DHT11:

    - Humidity measuring range: 20% -95% (0 degrees -> 50 degrees) Humidity measurement error: + -5%

    - Temperature measurement range: 0 degrees -> 50 degrees temperature measurement error: + -2

    degrees

    - Operating voltage 3.3V-5V

    - Operating current 0.3mA

    - Output Type Digital Output

    - with fixed bolt hole for easy installation

    - small plates PCB size: 3.2cm* 1.4cm


    5. PIR Sensor




    Spesifikasi:

    - Product Type: HC--SR501 Body Sensor Module

    - Operating voltage range: DC 4.5-20V

    - Operating current: 0.125mA

    - Level output: High 3.3 V /Low 0V

    - Trigger: L can not be repeated trigger/H can be repeated trigger(Default repeated trigger)

    - Delay time: 5-300S(adjustable) the range is (second to tens of second)

    - Block time: 2.5S(default)Can be made a range(to tens of seconds

    - Board Dimensions: 32mm*24mm

    - Angle Sensor: Operation Temp: -15-+70 degrees

    - Lens size sensor: Diameter:23mm(Default)


    6.RainDrops Sensor Module

     

    Specification:

    - Small board PCB size: 3.2cm x 1.4cm

    - Operating voltage: 3.3V-5V

    - Voltage: 5V

    - Tegangan kerja 3.3V - 5V

    - Driving ability over 15mA


    7. LDR Sensor 


    Spesifikasi:

    - Tegangan kerja 3.3V - 5V

    - Arus kerja 3.5nA

    - Output digital berupa 0 dan 1

    - Dengan lobang baut untuk instalasi

    - Ukuran 3cm x 1.6cm

    - Dilengkapi indikator power (merah) dan indikator deteksi (hijau)

    - Menggunakan pembanding LM393 comparator yang stabil


    8. LCD I2C




    Spesifikasi:

    - LCD Karakter 1602 dengan I2C modul untuk Arduino

    - Jenis LCM: Karakter

    - Working Current 1,5 mA

    - Menampilkan 2 baris X 16-karakter.

    - Tegangan: 5V DC.

    - Dimensi modul: 80mm x 35mm x 11mm.

    - luas area: 64.5mm x 16mm

    - Fitur IIC / I2C 4 kabel


    9. Motor Servo





    Spesifikasi:

    - Weight: 9g

    - Servo 180 derajat

    - Dimension: 22mm x 11.5mm x 22.5mm

    - Stall torque: 1.8kg/cm(4.8v)

    - Gear type: POM gear set

    - Operating speed: 0.1sec/60degree(4.8v)

    - Operating voltage: 4.8v

    - Arus kerja 2,5 kg: 250mA

    - Temperature range: 0_ 55

    - Dead band width: 1us

    - Power Supply: Through External Adapter

    - servo wire length: 25 cm


    10. LED Merah




    Spesifikasi:

    - Colour : Merah

    - Size : 5mm

    - Lens Colour : Clear Merah

    - Forward Current : 20mA

    - Max Power Dissipation : 80mw Max Continuous

    - Operation Temperature : -40 ~ 85C

    - Storage Temperature : -40 ~ 100C

    - Pin length : 29.5mm

    11. Jumper




    Spesifikasi:

    - Panjang : 15cm

    - Tipe : Male to Male/Male To Female/ Female To Female

    - Pitch : 2.54mm pin header

    4. Landasan Teori [Kembali]



    1) Raspberry Pi Pico

    Raspberry Pi Pico merupakan sebuah papan mikrokontroler berbasis chip RP2040 yang dikembangkan oleh Raspberry Pi Foundation. Berbeda dengan board Raspberry Pi lainnya yang bersifat single-board computer (SBC), Raspberry Pi Pico lebih difokuskan untuk aplikasi embedded system dan pemrograman mikrokontroler. Papan ini bersifat open source hardware, memungkinkan pengguna untuk melakukan eksperimen, pengembangan, dan penerapan dalam berbagai aplikasi elektronika dan IoT.



    Chip utama dari Raspberry Pi Pico, yaitu RP2040, adalah mikrokontroler buatan Raspberry Pi sendiri yang menggunakan arsitektur dual-core ARM Cortex-M0+. Mikrokontroler merupakan chip yang berfungsi sebagai otak dari sistem elektronik, mampu diprogram melalui komputer untuk melakukan proses membaca input, mengolah data, dan menghasilkan output sesuai dengan logika yang telah diprogram. Dengan kemampuan pemrograman menggunakan bahasa seperti C/C++ atau MicroPython, Raspberry Pi Pico menjadi platform yang fleksibel untuk pembelajaran maupun pengembangan proyek elektronika.

    RP2040 memiliki konfigurasi standar 40 pin (dengan 26 GPIO yang tersedia untuk pengguna), yang masing-masing dapat difungsikan sebagai input/output digital, analog, maupun fungsi khusus lainnya. Konfigurasi beberapa pin penting pada Raspberry Pi Pico antara lain:

    1. VBUS: Pin input dari port USB, biasanya sekitar 5V, digunakan untuk mendeteksi apakah papan terhubung ke sumber daya USB.

    2. VSYS: Merupakan pin utama input daya untuk papan, dapat menerima tegangan antara 1.8V hingga 5.5V.

    3. 3V3 (OUT): Output 3.3V dari regulator internal, digunakan untuk memberikan daya ke komponen eksternal.

    4. GND: Ground atau referensi tegangan negatif, tersedia di beberapa pin.

    5. GPIO (0 – 28): Pin general-purpose input/output yang mendukung berbagai fungsi seperti digital I/O, PWM, I2C, SPI, UART, dan ADC (khusus GPIO26, GPIO27, GPIO28).

    6. ADC Pins: Terdapat 3 kanal ADC internal untuk membaca sinyal analog, yakni GPIO26, GPIO27, dan GPIO28.

    7. RUN: Pin reset yang dapat digunakan untuk me-reset sistem mikrokontroler.

    8. SWCLK dan SWDIO: Pin untuk debugging menggunakan protokol SWD (Serial Wire Debug).

    9. BOOTSEL: Tombol yang digunakan untuk memasukkan board ke dalam mode USB bootloader, berguna saat mengunggah firmware baru melalui USB.

    Dengan kecepatan clock default sebesar 133 MHz dan RAM sebesar 264 KB, Raspberry Pi Pico mampu menangani berbagai aplikasi dari yang sederhana hingga kompleks. Selain itu, dukungan terhadap pemrograman menggunakan MicroPython menjadikan Raspberry Pi Pico sangat cocok untuk pendidikan, karena memudahkan pemula dalam memahami konsep pemrograman mikrokontroler.


    2) Komunikasi UART

    UART (Universal Asynchronous Receiver-Transmitter) adalah bagian perangkat keras komputer yang menerjemahkan antara bit-bit paralel data dan bit-bit serial. UART biasanya berupa sirkuit terintegrasi yang digunakan untuk komunikasi serial pada komputer atau port serial perangkat periperal.



    Data dikirimkan secara paralel dari data bus ke UART1. Pada UART1 ditambahkan start bit, parity bit, dan stop bit kemudian dimuat dalam satu paket data. Paket data ditransmisikan secara serial dari Tx UART1 ke Rx UART2. UART2 mengkonversikan data dan menghapus bit tambahan, kemudia di transfer secara parallel ke data bus penerima.


    3) Resistor

    Resistor merupakan komponen elektronika dasar yang digunakan untuk membatasi jumlah arus yang mengalir dalam satu rangkaian.Sesuai dengan namanya, resistor bersifat resistif dan umumnya terbuat dari bahan karbon. Resistor memiliki simbol seperti gambar dibawah ini :




    Resistor mempunyai nilai resistansi (tahanan) tertentu yang dapat memproduksi tegangan listrik di antara kedua pin dimana nilai tegangan terhadap resistansi tersebut berbanding lurus dengan arus yang mengalir, berdasarkan persamaan Hukum OHM :



    Dimana V adalah tegangan, I adalah kuat arus, dan R adalah Hambatan.

    Di dalam resistor, terdapat ketentuan untuk membaca nilai resistor yang diwakili dengan kode warna dengan ketentuan di bawah ini :









    Sebagian besar resistor yang kita lihat memiliki empat pita berwarna. Oleh karena itu ada cara membacanya seperti ketentuan dibawah ini:

    1. Dua pita pertama dan kedua menentukan nilai dari resistansi

    2. Pita ketiga menentukan faktor pengali, yang akan memberikan nilai resistansi.

    3. Dan terakhir, pita keempat menentukan nilai toleransi. Rumus Resistor:

    Seri: Rtotal = R1 + R2 + R3 + … + Rn Dimana:

    Rtotal = Total Nilai Resistor R1 = Resistor ke-1

    R2 = Resistor ke-2 
    R3 = Resistor ke-3 
    Rn = Resistor ke-n

    Paralel: 1/Rtotal = 1/R1 + 1/R2 + 1/R3 + …+ 1/Rn Dimana:

    Rtotal = Total Nilai Resistor R1 = Resistor ke-1

    R2 = Resistor ke-2 
    R3 = Resistor ke-3 
    Rn = Resistor ke-n


    4)LED (Light Emitting Diode)


    Light Emitting Diode atau sering disingkat dengan LED adalah komponen elektronika yang dapat memancarkan cahaya monokromatik ketika diberikan tegangan maju. Warna-warna Cahaya yang dipancarkan oleh LED tergantung pada jenis bahan semikonduktor yang dipergunakannya.



    LED merupakan keluarga dari Dioda yang terbuat dari Semikonduktor. Cara kerjanya pun hampir sama dengan Dioda yang memiliki dua kutub yaitu kutub Positif (P) dan Kutub Negatif (N). LED hanya akan memancarkan cahaya apabila dialiri tegangan maju (bias forward) dari Anoda menuju ke Katoda.

    LED terdiri dari sebuah chip semikonduktor yang di doping sehingga menciptakan junction P dan N. Yang dimaksud dengan proses doping dalam semikonduktor adalah proses untuk menambahkan ketidakmurnian (impurity) pada semikonduktor yang murni sehingga menghasilkan karakteristik kelistrikan yang diinginkan. Ketika LED dialiri tegangan maju atau bias forward yaitu dari Anoda (P) menuju ke Katoda (K), Kelebihan Elektron pada N-Type material akan berpindah ke wilayah yang kelebihan Hole (lubang) yaitu wilayah yang bermuatan positif (P-Type material). Saat Elektron berjumpa dengan Hole akan melepaskan photon dan memancarkan cahaya monokromatik (satu warna).



    LED atau Light Emitting Diode yang memancarkan cahaya ketika dialiri tegangan maju ini juga dapat digolongkan sebagai Transduser yang dapat mengubah energi listrik menjadi energi cahaya.










    Rumus untuk Menentukan Besaran Resistansi dari Sebuah Resistor

    Resistor (ohm) = (Tegangan Input - Tegangan LED) / Arus LED Dimana :

    Nilai resistansi dari resistor adalah R (ohm) Tegangan input adalah Vs (volt)

    Tegangan LED adalah VL (volt) Arus maju LED adalah I (ampere)


    5) Sensor DHT11

    Sensor DHT11 adalah sensor suhu dan kelembaban. Ini menggunakan sensor semikonduktor untuk mengukur suhu dan kelembaban udara sekitarnya. Sensor ini mengubah nilai suhu dan kelembaban menjadi sinyal digital yang kemudian dapat dibaca oleh mikrokontroler atau perangkat lainnya.



    DHT11 merupakan sebuah sensor kelembaban dan suhu, komponen ini mempunyai output sinyal digital yang dikalibrasi dengan sensor kelembaban dan suhu yang kompleks, sinyal transmisi jarak pada ruangan hingga 20 meter. Sensor ini dapat mengukur data kelembaban beserta suhu, kemudian data yang diperoleh, secara otomatis setiap 2 detil sekali sensor ini akan mengirimkan sinyal data ke pinout data pada sensor tersebut.

    Disini kami menggunakannya untuk mengecek suhu dan kelembapan luar ruangan





    Respon suhu: Grafik respon suhu umumnya berupa garis linier yang mengikuti perubahan suhu actual.

    Respon kelembaban: Grafik respon kelembaban umumnya berupa garis

    eksponensial yang mengikuti perubahan kelembaban aktual.


    6) Sensor PIR



    PIR (Passive Infrared Receiver) merupakan sebuah sensor berbasiskan infrared. Akan tetapi, tidak seperti sensor infrared kebanyakan yang terdiri dari IR LED dan fototransistor. PIR tidak memancarkan apapun seperti IR LED. Sesuai dengan namanya ‘Passive’, sensor ini hanya merespon energi dari pancaran sinar inframerah pasif yang dimiliki oleh setiap benda yang terdeteksi olehnya. Benda yang bisa dideteksi oleh sensor ini biasanya adalah tubuh manusia Sensor PIR mendeteksi perubahan suhu yang disebabkan oleh gerakan benda-benda di sekitarnya. Ketika benda bergerak, perbedaan suhu diidentifikasi oleh sensor dan menghasilkan keluaran listrik.





    Sensor PIR ini bekerja dengan menangkap energi panas yang dihasilkan dari pancaran sinar inframerah pasif yang dimiliki setiap benda dengan suhu benda diatas nol mutlak. Seperti tubuh manusia yang memiliki suhu tubuh kira-kira 32 derajat celcius, yang merupakan suhu panas yang khas yang terdapat pada lingkungan. Pancaran sinar inframerah inilah yang kemudian ditangkap oleh Pyroelectric sensor yang merupakan inti dari sensor PIR ini sehingga menyebabkan Pyroelectic sensor yang terdiri dari galium nitrida, caesium nitrat dan litium tantalate menghasilkan arus listrik. Mengapa bisa menghasilkan arus listrik? Karena pancaran sinar inframerah pasif ini membawa energi panas. Prosesnya hampir sama seperti arus listrik yangterbentuk ketika sinar matahari mengenai solar cell. Ini sering digunakan dalam sistem keamanan atau otomatisasi rumah untuk mendeteksi gerakan manusia atau hewan, Disini kami menggunakannya Mendeteksi manusia diruangan untuk menghidupkan lampu



    Grafik Respon Pir terhadap suhu





    Grafik sensor pir terhadap jarak, kecepatan,arah objek:




    7)Sensor Rain:



    Sensor Rain mendeteksi keberadaan air, seperti hujan atau embun. Ada beberapa jenis sensor hujan, tetapi umumnya mereka menggunakan konduktivitas air untuk mendeteksi kelembaban. Ketika air menyentuh permukaan sensor, itu mengubah resistansi listriknya, yang kemudian dapat diukur.
    Berikut ini adalah gambar grafik respon sensitifiras sensor rain



    8)Sensor LDR (Light Dependent Resistor)

     
    Sensor LDR mengubah resistansi berdasarkan intensitas cahaya yang diterimanya. Semakin terang cahaya, semakin rendah resistansinya, dan sebaliknya. Ini memungkinkan sensor untuk mendeteksi perubahan cahaya di sekitarnya. Umumnya digunakan dalam aplikasi seperti kontrol lampu otomatis atau perangkat pengatur kecerahan layar. Dsini kami menggunakannya untuk mendeteksi cahaya matahari.

    Grafik respon penurunan daya disipasi sensor LDR:



    Grafik respon resistansi LDR:




    Grafik respon sensor:


    9) LCD (Liquid Crystal Display)

    LCD adalah layar yang menggunakan kristal cair untuk menampilkan informasi. Ini terdiri dari banyak piksel yang masing-masing dapat dikendalikan untuk menampilkan teks atau grafik. Biasanya, informasi ditampilkan dengan mengatur kecerahan atau kegelapan piksel menggunakan tegangan listrik.

    Pinout LCD 16x2 ditunjukkan di bawah ini.

    · Pin1 (Ground / Source Pin): Ini adalah pin tampilan GND, digunakan untuk menghubungkan terminal GND unit mikrokontroler atau sumber daya.

    · Pin2 (VCC / Source Pin): Ini adalah pin catu tegangan pada layar, digunakan untuk menghubungkan pin catu daya dari sumber listrik.

    · Pin3 (V0 / VEE / Control Pin): Pin ini mengatur perbedaan tampilan, yang digunakan untuk menghubungkan POT yang dapat diubah yang dapat memasok 0 hingga 5V.

    · Pin4 (Register Select / Control Pin): Pin ini berganti-ganti antara perintah atau data register, digunakan untuk menghubungkan pin unit mikrokontroler dan mendapatkan 0 atau 1 (0 = mode data, dan 1 = mode perintah).

    · Pin5 (Pin Baca / Tulis / Kontrol): Pin ini mengaktifkan tampilan di antara operasi baca atau tulis, dan terhubung ke pin unit mikrokontroler untuk mendapatkan 0 atau 1 (0 = Operasi Tulis, dan 1 = Operasi Baca).

    · Pin 6 (Mengaktifkan / Mengontrol Pin): Pin ini harus dipegang tinggi untuk menjalankan proses Baca / Tulis, dan terhubung ke unit mikrokontroler & terus-menerus dipegang tinggi.



    · Pin 7-14 (Pin Data): Pin ini digunakan untuk mengirim data ke layar. Pin ini terhubung dalam mode dua-kawat seperti mode 4- kawat dan mode 8-kawat. Dalam mode 4-kawat, hanya empat pin yang terhubung ke unit mikrokontroler seperti 0 hingga 3, sedangkan dalam mode 8-kawat, 8-pin terhubung ke unit mikrokontroler seperti 0 hingga 7.

    · Pin15 (+ve pin LED): Pin ini terhubung ke +5V
    Pin 16 (-ve pin LED): Pin ini terhubung ke GND.


    Layar LCD 16 x 2 ini memiliki 16 Kolom dan 2 Baris . Baris ke-1 dari modul ini memiliki total 16 kolom 0 hingga 15 dan posisi baris pertama adalah 0. Juga, baris ke-2 memiliki total 16 kolom 0 hingga 15 dan posisi baris kedua adalah posisi 1. Jadi jumlah total kolom adalah 16 x 2 = 32. Ini berarti modul LCD 16 x 2 dapat menampilkan 32 karakter secara bersamaan




    10)Motor Servo

     

    Motor servo adalah jenis motor listrik yang dirancang untuk memberikan output yang presisi dalam menyelesaikan pergerakan tertentu. Motor ini dilengkapi dengan kontroler yang memungkinkan presisi tinggi dalam mengatur posisi atau sudut rotor. Prinsip kerja motor servo didasarkan pada umpan balik atau feedback yang terus-menerus dari posisi rotor.




    Prinsip kerja motor servo:

    1. Umpan Balik (Feedback): Motor servo menggunakan sensor umpan balik, seperti potensiometer, enkoder, atau resolver, untuk terus memonitor posisi atau sudut rotor.

    2. Kontroler:

    - Kontroler servo menerima sinyal perintah untuk mencapai posisi tertentu

    - Kontroler membandingkan posisi aktual (yang diberikan oleh sensor umpan balik) dengan posisi yang diminta.

    3. Error Signal:

    - Jika terdapat perbedaan antara posisi aktual dan yang diminta, tercipta sinyal kesalahan (error signal).

    4. Sinyal Penggerak (Drive Signal):

    - Kontroler menghasilkan sinyal penggerak yang disesuaikan berdasarkan error signal.

    - Sinyal penggerak mengontrol daya yang disuplai ke motor untuk mengoreksi perbedaan posisi.


    5. Pergerakan Presisi:

    - Motor servo merespons dengan mengubah posisi rotor untuk mengurangi error posisi.

    - Proses ini berlanjut sampai posisi yang diminta tercapai.




    Motor servo memiliki respon sudut terhadap sinyal kontrol. Grafik responnya umumnya berupa garis linier yang mengikuti nilai sudut yang diberikan.



    5. Flowchart [Kembali]



    6. Listing Program [Kembali]

    Pi Pico 1 (Tx)
    from machine import Pin, ADC, UART
    import time
    import dht

    # === Setup Sensor ===
    pir = Pin(15, Pin.IN)
    dht_sensor = dht.DHT11(Pin(2))
    ldr = ADC(Pin(26))
    rain = ADC(Pin(27))

    # === UART Setup (TX=GP0, RX=GP1) ===
    uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))

    while True:
        try:
            dht_sensor.measure()
            temp = dht_sensor.temperature()
            humid = dht_sensor.humidity()
        except:
            temp = 0
            humid = 0

        ldr_val = ldr.read_u16()
        rain_val = rain.read_u16()
        rain_percent = int(((rain_val / 65535)) * 100)
        pir_val = pir.value()

        # Format: PIR,LDR,TEMP,HUMID,RAIN
        data = f"{pir_val},{ldr_val},{temp},{humid},{rain_percent}\n"
        uart.write(data)
        print("Kirim:", data.strip())
        time.sleep(2)

    Pi Pico 2 (Rx)

    from machine import Pin, UART, PWM, I2C
    import time
    from i2c_lcd import I2cLcd

    # === Setup Servo ===
    servo1 = PWM(Pin(2))  # Servo otomatis (per 10 detik)
    servo2 = PWM(Pin(3))  # Servo untuk atap berdasarkan data
    servo1.freq(50)
    servo2.freq(50)

    def set_servo_angle(servo, angle):
        min_duty = 1638
        max_duty = 8192
        duty = int(min_duty + (angle / 180.0) * (max_duty - min_duty))
        servo.duty_u16(duty)

    # === Fan Control ===
    relay_fan = Pin(15, Pin.OUT)
    def fan_on(): relay_fan.value(1)
    def fan_off(): relay_fan.value(0)

    # === LED untuk PIR ===
    led_pir = Pin(10, Pin.OUT)

    # === UART Setup ===
    uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))

    # === LCD I2C Setup ===
    i2c = I2C(1, sda=Pin(6), scl=Pin(7), freq=400000)
    devices = i2c.scan()
    if not devices:
        print("LCD tidak terdeteksi!")
        while True:
            pass

    I2C_ADDR = devices[0]
    lcd = I2cLcd(i2c, I2C_ADDR, 2, 16)

    # === Servo1 Incremental Setup ===
    angle_servo1 = 0
    step_angle = 10
    max_angle = 180
    servo_interval = 10000  # 10 detik
    last_servo_time = time.ticks_ms()

    # === UART buffer ===
    buffer = ""

    # Variabel waktu
    last_time = time.ticks_ms()
    angle = 0  # Awal posisi servo


    while True:
        # === Servo 1 gerak otomatis setiap 10 detik ===
        now = time.ticks_ms()
        if time.ticks_diff(now, last_time) > 10000:
            set_servo_angle(servo1, 180)
            time.sleep(1)
            set_servo_angle(servo1, 0)
            last_time = now
        time.sleep(0.1)  # Hindari CPU full load
        # === Baca data dari UART ===
        if uart.any():
            char = uart.read(1).decode()
            if char == '\n':
                try:
                    pir, ldr, temp, humid, rain = buffer.strip().split(',')
                    pir = int(pir)
                    ldr = int(ldr)
                    temp = int(temp)
                    humid = int(humid)
                    rain = int(rain)

                    # === LED berdasarkan PIR ===
                    led_pir.value(1 if pir == 1 else 0)

                    # === Logika cuaca ===
                    if rain <= 70:
                        kondisi = "RAIN"
                        angle_atap = 150
                        fan_status = False

                    elif ldr < 20000:
                        kondisi = "DARK"
                        angle_atap = 150
                        fan_status = False

                    elif humid > 85 and ldr > 30000:
                        kondisi = "WET"
                        angle_atap = 45
                        fan_status = True

                    elif temp > 35 and ldr > 58000:
                        kondisi = "HOT"
                        angle_atap = 0
                        fan_status = True

                    elif humid > 85:
                        kondisi = "HUMID"
                        angle_atap = 90
                        fan_status = True

                    else:
                        kondisi = "NORMAL"
                        angle_atap = 0
                        fan_status = True

                    # === Kontrol servo2 dan fan ===
                    set_servo_angle(servo2, angle_atap)
                    fan_on() if fan_status else fan_off()

                    # === Tampilkan di LCD ===
                    lcd.clear()
                    lcd.move_to(0, 0)
                    lcd.putstr(f"{kondisi} LDR:{ldr}")
                    lcd.move_to(0, 1)
                    lcd.putstr(f"T:{temp}C H:{humid}%")
                    # === Debug print serial ===
                    print(f"[{kondisi}] PIR={pir} LDR={ldr} T={temp}C H={humid}% RAIN={rain}% Atap={angle_atap} Fan={'ON' if fan_status else 'OFF'}")

                except Exception as e:
                    print("Error:", e, "| Data:", buffer)

                buffer = ""
            else:
                buffer += char

        time.sleep(0.1)


    7. Rangkaian Simulasi Sistem [Kembali]









    8. Prinsip Kerja [Kembali]

    1. Sensor PIR (Passive Infrared)

    Sensor PIR dipasang pada Pico 1 untuk mendeteksi adanya pergerakan manusia atau objek panas di sekitar. Sensor ini menghasilkan output digital (1 atau 0) yang dibaca oleh pin GPIO 15. Saat sensor mendeteksi gerakan, nilainya menjadi 1, dan jika tidak ada gerakan, nilainya 0. Data ini kemudian dikirim melalui UART ke Pico 2, di mana LED indikator akan menyala jika gerakan terdeteksi. Dengan demikian, sensor PIR berfungsi sebagai sistem pendeteksi aktivitas atau kehadiran manusia di area pemantauan.


    2. Sensor DHT11 (Suhu dan Kelembapan)

    Sensor DHT11 digunakan pada Pico 1 dan terhubung ke pin GPIO 2. Sensor ini mengukur dua parameter penting, yaitu suhu udara (dalam derajat Celsius) dan kelembapan relatif (dalam persen). Setiap kali loop program berjalan, Pico 1 mengambil nilai terbaru dari sensor ini, dan jika pembacaan gagal, nilai default 0 akan digunakan. Informasi suhu dan kelembapan sangat krusial dalam menentukan kondisi cuaca seperti “HOT”, “WET”, atau “HUMID”. Data ini dikirim ke Pico 2 untuk dianalisis dan digunakan dalam pengambilan keputusan seperti menyalakan kipas atau mengatur posisi atap.


    3. Sensor LDR (Light Dependent Resistor)

    Sensor LDR dihubungkan ke pin ADC GPIO 26 pada Pico 1. Sensor ini mendeteksi intensitas cahaya lingkungan dengan mengubah resistansinya tergantung pada jumlah cahaya yang diterima. Nilai cahaya dikonversi menjadi angka 16-bit (0–65535) melalui ADC. Nilai ini digunakan di Pico 2 untuk menentukan kondisi seperti “DARK”, “WET”, atau “HOT”. Misalnya, jika cahaya sangat rendah, sistem akan menganggap kondisi sedang gelap dan atap akan ditutup. Sebaliknya, cahaya yang sangat terang berkontribusi terhadap kondisi panas jika disertai suhu tinggi.


    4. Sensor Hujan (Rain Sensor)

    Sensor hujan analog terhubung ke pin ADC GPIO 27 pada Pico 1. Sensor ini mengukur tingkat kelembapan dari permukaan sensor, yang menjadi indikator adanya hujan. Nilai ADC dibaca dan dikonversi ke bentuk persentase dari 0 hingga 100%. Jika nilai kelembapan rendah (misalnya di bawah 70%), maka dianggap sedang terjadi hujan, dan Pico 2 akan mengambil tindakan seperti menutup atap (servo diarahkan ke sudut 150°) dan mematikan kipas untuk mencegah kerusakan akibat air. Sensor ini sangat penting dalam melindungi perangkat atau ruangan dari air hujan secara otomatis.

    9. Download File[Kembali]

    Rangkaian [disini]
    Listing Program [disini]
    Video [disini]
    Datasheet Raspberry Pi Pico [disini]

    Datasheet Rain Sensor [disini]

    Datasheet HCSR-04 [disini]

    Datasheet LJ18A3-8-Z/BX [disini]

    Datasheet LCD 16x2 I2C [disini]

    Datasheet Motor Servo SG90[disini]

    Komentar

    Postingan populer dari blog ini

    Modul 1 Prak SIsDIg

    Tugas Besarr

    Modul 2 PrakSisdig