TP 2 PERCOBAAN 4 KONDISI 1



1. Prosedur [Kembali]

  • Persiapan komponen: Siapkan board NUCLEO-C031C6, sensor PIR (motion detector), sensor suara/getaran (modul biru), LED merah, push button, resistor, dan kabel jumper.

  • Koneksi sensor PIR:

    • Hubungkan pin VCC sensor PIR ke jalur VCC (melalui resistor jika diperlukan)
    • Hubungkan pin GND sensor PIR ke ground
    • Hubungkan pin OUT sensor PIR ke pin digital pada Nucleo (pin A1)
  • Koneksi sensor suara/getaran:

    • Hubungkan VCC modul ke 5V/3.3V Nucleo
    • Hubungkan GND ke ground
    • Hubungkan pin sinyal (DO/AO) ke pin A0 atau A2 pada Nucleo
  • Koneksi LED:

    • Hubungkan anoda LED ke pin digital Nucleo (D7/PWM)
    • Pasang resistor pembatas arus (220-330Ω) secara seri
    • Hubungkan katoda ke ground
  • Koneksi push button:

    • Hubungkan satu terminal ke pin digital Nucleo (D5/PWM)
    • Hubungkan terminal lain ke ground
    • Aktifkan internal pull-up atau pasang resistor eksternal
  • Koneksi power: Pastikan semua ground terhubung ke titik ground yang sama (common ground).

    2. Hardware dan Diagram Blok[Kembali]

    1.  NUCLEO C031C6


    Spessifikasi

    Microcontroller

    ARM Cortex-M3

    Operating Voltage

    3.3 V

    Input Voltage (recommended)

    V

    Input Voltage (limit)

    2  3.6 V

    Digital I/O Pins

    32

    PWM Digital I/O Pins

    15

    Analog Input Pins

    10 (dengan resolusi 12-bit ADC)

    DC Current per I/O Pin

    25 mA

    DC Current for 3.3V Pin

    150 mA

    Flash Memory

    64 KB

    SRAM

    20 KB

    EEPROM

    Emulasi dalam Flash

    Clock Speed

    72 MHz


    Bagian - bagian 



    2.  LED 
    Light Emitting Diode atau sering disingkat dengan LED adalah komponen elektronika yang dapat memancarkan  cahaya monokromatik ketika diberikan tegangan maju. LED merupakan keluarga Dioda yang terbuat dari bahan semikonduktor. Warna-warna Cahaya yang dipancarkan oleh LED tergantung pada jenis bahan semikonduktor yang dipergunakannya. LED juga dapat memancarkan sinar inframerah yang tidak tampak oleh mata seperti yang sering kita jumpai pada Remote Control TV ataupun Remote Control perangkat elektronik lainnya.


    Tabel. Warna dan Material LED

    Warna
    Panjanggelombang [nm]
    Material semikonduktor

    λ > 760
    Gallium arsenide (GaAs)Aluminium gallium arsenide (AlGaAs)

    610 < λ < 760
    Aluminium gallium arsenide (AlGaAs)Gallium arsenide phosphide (GaAsP)Aluminium gallium indium phosphide (AlGaInP)Gallium(III) phosphide (GaP)

    590 < λ < 610
    Gallium arsenide phosphide (GaAsP)Aluminium gallium indium phosphide (AlGaInP)Gallium(III) phosphide (GaP)

    570 < λ < 590
    Gallium arsenide phosphide (GaAsP)Aluminium gallium indium phosphide (AlGaInP)Gallium(III) phosphide (GaP)

    500 < λ < 570
    Indium gallium nitride (InGaN) / Gallium(III) nitride (GaN)Gallium(III) phosphide (GaP)Aluminium gallium indium phosphide (AlGaInP)Aluminium gallium phosphide (AlGaP)

    450 < λ < 500
    Zinc selenide (ZnSe)Indium gallium nitride (InGaN)

    400 < λ < 450
    Indium gallium nitride (InGaN)

    multiple types
    Dual blue/red LEDs,
    blue with red phosphor,
    or white with purple plastic

    λ < 400
    Diamond (235 nm) Boron nitride (215 nm) Aluminium nitride (AlN) (210 nm) Aluminium gallium nitride (AlGaN)Aluminium gallium indium nitride (AlGaInN) – (down to 210 nm)

    multiple types
    Blue with one or two phosphor layers:
    yellow with red, orange or pink phosphor added afterwards,
    or white with pink pigment or dye.

    White
    Broad spectrum
    Blue/UV diode with yellow phosphor


    Bagian bagian

    Komponen LED tampak seperti lampu yang dipakai dalam sebuah rangkaian elektronika, walaupun sejatinya dia adalah Diode yang berpendar.

    Yang harus diperhatikan adalah kaki sebuah LED, dibuat berbeda panjangnya.

    Kaki yang panjang menunjukkan kutub positif, sementara yang pendek menunjukkan kutub negatif

    3. Resistor

    Resistor adalah komponen Elektronika Pasif yang memiliki nilai resistansi atau hambatan tertentu yang berfungsi untuk membatasi dan mengatur arus listrik dalam suatu rangkaian Elektronika (V=I R). 
    Jenis Resistor yang digunakan disini adalah Fixed Resistor, dimana merupakan resistor dengan nilai tetap terdiri dari film tipis karbon yang diendapkan subtrat isolator kemudian dipotong berbentuk spiral. Keuntungan jenis fixed resistor ini dapat menghasilkan resistor dengan toleransi yang lebih rendah.
    Cara menghitung nilai resistor:
    Tabel warna

    Contoh :
    Gelang ke 1 : Coklat = 1
    Gelang ke 2 : Hitam = 0
    Gelang ke 3 : Hijau   = 5 nol dibelakang angka gelang ke-2; atau kalikan 105
    Gelang ke 4 : Perak  = Toleransi 10%
    Maka nilai resistor tersebut adalah 10 * 105 = 1.000.000 Ohm atau 1 MOhm dengan toleransi 10%.

    Spesifikasi

    4. Sensor LDR




    Beberapa karakteristik yang terdapat pada sensor LDR antara lain adalah :

    •  Tegangan maksimum (DC) :  150 V
    •  Konsumsi Arus Maksimum :  100 mW
    •  Tingkatan Resistansi / Tahanan : 10 Ohm hingga 100k Ohm
    •  Puncak Spektral :  540 nm (ukuran gelombang cahaya)
    •  Waktu Respon Sensor : 20ms – 30 ms
    •  Suhu Operasi :  -30o Celcius  –  70o Celcius



    5. Sensor PIR

    Sensor pir adalah sensor yang digunakan untuk mendeteksi adanya pancaran sinar infra merah. Sensor pir ini bersifat pasif, artinya sensor ini tidak memancarkan sinar infra merah tetapi hanya menerima radiasi sinar infra merah dari luar

    Pinout:

     Spesifikasi:

    • Vin : dc 5v 9v.
    • Radius : 180 derajat.
    • Jarak deteksi : 5 7 meter.
    • Output : digital ttl.
    • Memiliki setting sensitivitas.
    • Memiliki setting time delay.
    • Dimensi : 3,2 cm x 2,4 cm x 2,3 cm.
    • Berat : 10 gr.
    Grafik Respons:

    6.Push Button




    Spesifikasi:





    Cara-Kerja-Push-Button

    Prinsip kerja push button pada dasarnya adalah untuk menghubungkan dan memutuskan aliran listrik. Namun, tombol tekan tidak memiliki kunci dan akan kembali ke posisi semula setelah ditekan.

    Ketika tombol tekan ditekan, nilainya menjadi HIGH dan mengalirkan arus listrik. Namun, setelah dilepas, tombol akan bernilai LOW dan memutuskan arus listrik.

    Namun, bagaimana tombol tekan bekerja bisa berbeda tergantung dari jenis tombol tersebut, apakah itu NO atau NC.

    Oleh karena itu, penting untuk memahami konsep dasar dan spesifikasi dari tombol tekan yang akan digunakan pada setiap proyek.

    Blok Diagram




    3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]



    Prinsip Kerja :

    Rangkaian ini berfungsi sebagai sistem deteksi kehadiran berbasis multi-sensor. Sensor PIR mendeteksi pergerakan objek berdasarkan perubahan radiasi inframerah yang dipancarkan oleh makhluk hidup, kemudian mengirimkan sinyal digital HIGH ke mikrokontroler saat gerakan terdeteksi. Secara bersamaan, sensor suara/getaran memantau lingkungan untuk mendeteksi adanya bunyi atau getaran yang melewati ambang batas tertentu. Mikrokontroler NUCLEO-C031C6 memproses kedua input sensor tersebut dan mengaktifkan LED sebagai indikator visual ketika kondisi tertentu terpenuhi. Push button berfungsi sebagai input manual yang dapat digunakan untuk mereset sistem, mengubah mode operasi, atau mengaktifkan/menonaktifkan alarm secara manual. Seluruh sistem bekerja secara terintegrasi di mana mikrokontroler terus-menerus membaca status sensor dalam loop program, membandingkan nilai pembacaan dengan threshold yang telah ditentukan, lalu mengeksekusi aksi output yang sesuai.


    4. Flowchart dan LIsting Program[Kembali]

    Flowchart





    Listing Program

    Main c

    #include "main.h"
    // HANDLE
    ADC_HandleTypeDef hadc1;
    TIM_HandleTypeDef htim3;
    // VARIABLE
    volatile uint8_t emergency_mode = 0;
    uint32_t last_motion_time = 0;
    // fallback tombol
    uint8_t last_button_state = 1;
    // PARAMETER
    #define LDR_THRESHOLD 2000
    #define MOTION_TIMEOUT 5000
    #define LED_OFF 0
    #define LED_DIM 100
    #define LED_FULL 1000
    // ================= CLOCK =================
    void SystemClock_Config(void)
    {
    RCC_OscInitTypeDef RCC_OscInitStruct = {0};
    RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
    RCC_OscInitStruct.HSIState = RCC_HSI_ON;
    HAL_RCC_OscConfig(&RCC_OscInitStruct);
    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK;
    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
    RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
    HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0);
    }
    // ================= GPIO =================
    void MX_GPIO_Init(void)
    {
    __HAL_RCC_GPIOA_CLK_ENABLE();
    __HAL_RCC_GPIOB_CLK_ENABLE();
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    // PIR → PA1
    GPIO_InitStruct.Pin = GPIO_PIN_1;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
    // BUTTON → PB1 (PULL-UP + INTERRUPT)
    GPIO_InitStruct.Pin = GPIO_PIN_1;
    GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
    GPIO_InitStruct.Pull = GPIO_PULLUP;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
    // LED PWM → PA6
    GPIO_InitStruct.Pin = GPIO_PIN_6;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    GPIO_InitStruct.Alternate = GPIO_AF1_TIM3;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
    // IRQ untuk PB1 (EXTI0_1)
    HAL_NVIC_SetPriority(EXTI0_1_IRQn, 0, 0);
    HAL_NVIC_EnableIRQ(EXTI0_1_IRQn);
    }
    // ================= ADC =================
    void MX_ADC1_Init(void)
    {
    __HAL_RCC_ADC_CLK_ENABLE();
    hadc1.Instance = ADC1;
    hadc1.Init.Resolution = ADC_RESOLUTION_12B;
    hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
    hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
    hadc1.Init.ContinuousConvMode = DISABLE;
    HAL_ADC_Init(&hadc1);
    ADC_ChannelConfTypeDef sConfig = {0};
    sConfig.Channel = ADC_CHANNEL_0;
    sConfig.Rank = ADC_REGULAR_RANK_1;
    HAL_ADC_ConfigChannel(&hadc1, &sConfig);
    }
    // ================= PWM =================
    void MX_TIM3_Init(void)
    {
    __HAL_RCC_TIM3_CLK_ENABLE();
    htim3.Instance = TIM3;
    htim3.Init.Prescaler = 64;
    htim3.Init.Period = 1000;
    htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
    HAL_TIM_PWM_Init(&htim3);
    TIM_OC_InitTypeDef sConfigOC = {0};
    sConfigOC.OCMode = TIM_OCMODE_PWM1;
    sConfigOC.Pulse = 0;
    HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1);
    }
    // ================= INTERRUPT =================
    void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
    {
    if (GPIO_Pin == GPIO_PIN_1)
    {
    emergency_mode = !emergency_mode;
    }
    }
    // ================= HELPER =================
    uint16_t read_LDR(void)
    {
    HAL_ADC_Start(&hadc1);
    HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY);
    return HAL_ADC_GetValue(&hadc1);
    }
    void set_LED(uint16_t value)
    {
    __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, value);
    }
    // ================= MAIN =================
    int main(void)
    {
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    MX_ADC1_Init();
    MX_TIM3_Init();
    HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
        while (1)
        {
            // ===== FALLBACK BUTTON =====
            uint8_t current_button = HAL_GPIO_ReadPin(BUTTON_PORT, BUTTON_PIN);
            if (last_button_state == 1 && current_button == 0)
            {
                emergency_mode = !emergency_mode;
                HAL_Delay(50);
            }
            last_button_state = current_button;

            // ===== MODE DARURAT =====
            if (emergency_mode)
            {
                set_LED(LED_OFF);
                continue;
            }

            uint16_t ldr = read_LDR();
            uint8_t pir = HAL_GPIO_ReadPin(PIR_PORT, PIR_PIN);

            // ===== LOGIKA UTAMA =====

            // LDR terang DAN PIR tidak ada gerakan → MATI
            if (ldr < LDR_THRESHOLD && pir == GPIO_PIN_RESET)
            {
                set_LED(LED_OFF);
            }
            else
            {
                // Kondisi selain itu → nyalakan LED
                if (pir == GPIO_PIN_SET)
                {
                    last_motion_time = HAL_GetTick();
                }

                if (HAL_GetTick() - last_motion_time < MOTION_TIMEOUT)
                {
                    set_LED(LED_FULL);
                }
                else
                {
                    set_LED(LED_DIM);
                }
            }

            HAL_Delay(100);
        }
    }

    main.h

    #ifndef __MAIN_H
    #define __MAIN_H
    #include "stm32c0xx_hal.h"
    // ================= PIN DEFINITIONS =================
    // LDR (ADC)
    #define LDR_PORT GPIOA
    #define LDR_PIN GPIO_PIN_0 // PA0
    // PIR SENSOR
    #define PIR_PORT GPIOA
    #define PIR_PIN GPIO_PIN_1 // PA1
    // PUSH BUTTON (INTERRUPT)
    #define BUTTON_PORT GPIOB
    #define BUTTON_PIN GPIO_PIN_1 // PB1
    // LED PWM
    #define LED_PORT GPIOA
    #define LED_PIN GPIO_PIN_6 // PA6 (TIM3_CH1)
    // ================= FUNCTION PROTOTYPES =================
    void SystemClock_Config(void);
    void MX_GPIO_Init(void);
    void MX_ADC1_Init(void);
    void MX_TIM3_Init(void);
    #endif

    5. Video Demo [Kembali]


    6. Kondisi[Kembali]

    Buatlah rangkaian seperti pada gambar percobaan 4 dengan keadaan LDR mendeteksi cahaya terang dan PIR tidak mendeteksi gerakan, maka lampu jalan akan mati


    7. Video Simulasi[Kembali]



    8. Download File [Kembali]

    1. Download HTML [disini]

    2. Download Rangkaian  [disini]

    3. Download Vidio Rangkaian [disini]

    4. Download Datasheet Sensor: 

    5. Download library Komponen: 

    6. Download datasheet Relay [disini]

    7. Download datasheet Motor [disini]

    8. Download datasheet Led [disini]

    9. Download listing program [disini]

    10. Download data sheet [disini]






    TP 2 PERCOBAAN 4 KONDISI 1

    [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Prosedur 2. Hardware dan Diagram Blok 3. Rangkaian Simulasi dan Prinsip Kerja 4. F...