Jumat, 24 April 2026

TP 2 MODUL 2



Tugas Pendahuluan 2 Modul 2

P4K6 Buatlah rangkaian seperti pada gambar percobaan 4 dengan kondisi ketika LDR mendeteksi kondisi gelap dan PIR mendeteksi adanya gerakan, maka LED menyala sangat terang selama 5 detik lalu kembali mati,

1. Prosedur

        1. Buka Wokwi dengan mengunjungi https://wokwi.com.

        2. Tambahkan komponen.

        3. Hubungkan komponen sesuai kondisi

        4. Tambahkan atau ketik Program yang sesuai dengan kondisi rangkaian

        5. Jalankan program simulasi 

2. Hardware dan diagram blok

a. Hardware

1. NUCLEO C031C6



Gambar Mikrokontroler NUCLEO C031C6

NUCLEO-C031C6 merupakan sebuah board pengembangan dari STMicroelectronics yang menggunakan mikrokontroler STM32C031C6 berbasis ARM Cortex-M0+ dengan kecepatan hingga 48 MHz. 

2. Push Button



(a)                                                                    (b)
Gambar push button (a) tampilan hardware, (b) tampilan simulasi

Push button adalah saklar mekanis yang digunakan untuk menghubungkan atau memutuskan arus listrik ketika ditekan. Push button sering digunakan dalam kontrol rangkaian elektronik, seperti tombol power, reset, atau input manual dalam sistem mikrokontroler.


3. LED

                            (a)                                                                         (b)
Gambar LED (a) tampilan hardware, (b) tampilan simulasi

LED adalah dioda semikonduktor yang dapat memancarkan cahaya ketika dialiri arus listrik. LED digunakan dalam berbagai aplikasi seperti indikator elektronik, pencahayaan, dan display. LED hanya bekerja pada arah bias maju dan memiliki berbagai warna yang ditentukan oleh material semikonduktornya.

4. Resistor


                (a)                                                                       (b)
Gambar resistor (a) tampilan hardware, (b) tampilan simulasi

Resistor adalah komponen elektronik pasif yang berfungsi untuk membatasi arus listrik dalam suatu rangkaian. Resistor bekerja berdasarkan hukum Ohm, yang menyatakan bahwa tegangan (V) = arus (I) × resistansi (R). Resistor memiliki satuan Ohm (Ω) dan digunakan dalam berbagai aplikasi seperti pembagian tegangan, kontrol arus, dan proteksi rangkaian elektronik.

5. Ldr sensor




Light Dependent Resistor (LDR) adalah sensor cahaya yang mengubah nilai resistansi berdasarkan intensitas cahaya yang diterimanya. Saat gelap, resistansi LDR tinggi (hambatan besar), dan saat terang, resistansinya rendah (hambatan kecil). Komponen ini banyak digunakan untuk aplikasi otomatis, seperti lampu jalan dan sensor intensitas cahaya.

6.PIR sensor




Sensor PIR (Passive Infrared) adalah perangkat elektronik yang mendeteksi pergerakan manusia atau hewan dengan mengukur perubahan suhu radiasi inframerah di sekitarnya. Sensor ini sangat populer untuk sistem keamanan dan lampu otomatis karena hemat energi, terjangkau, dan mudah dipasang. Teknologi ini mendeteksi perubahan panas, bukan memancarkan energi


b. Diagram Blok





3. Rangkaian simulasi dan prinsip kerja




P4K6 Buatlah rangkaian seperti pada gambar percobaan 4 dengan kondisi ketika LDR mendeteksi kondisi gelap dan PIR mendeteksi adanya gerakan, maka LED menyala sangat terang selama 5 detik lalu kembali mati,


Prinsip Kerja :

Rangkaian tersebut bekerja dengan memanfaatkan mikrokontroler pada board NUCLEO-C031C6 sebagai pusat kendali yang menerima input dari push button dan slide switch, lalu mengontrol LED RGB dan buzzer sebagai output. Push button berfungsi sebagai pemicu (trigger) yang saat ditekan akan mengirimkan sinyal logika ke pin input mikrokontroler, di mana resistor digunakan sebagai pull-down atau pull-up untuk menjaga kestabilan logika agar tidak floating. Slide switch berperan sebagai pemilih kondisi atau mode, yaitu menentukan apakah rangkaian dalam keadaan aktif atau tidak.

Ketika kondisi input terpenuhi, misalnya switch dalam posisi ON dan tombol ditekan, mikrokontroler akan memproses sinyal tersebut dan mengaktifkan output berupa LED RGB serta buzzer. LED RGB akan menyala dengan warna tertentu sesuai pengaturan pin output (merah, hijau, atau biru), sedangkan buzzer akan berbunyi sebagai indikator suara. Sebaliknya, jika switch dimatikan atau tidak ada input dari tombol, maka mikrokontroler tidak memberikan sinyal ke output sehingga LED padam dan buzzer tidak berbunyi.

Dengan demikian, prinsip kerja rangkaian ini adalah sistem kontrol sederhana berbasis input (switch dan tombol) yang diproses oleh mikrokontroler untuk menghasilkan output berupa cahaya (LED RGB) dan suara (buzzer).


4. Flowchart dan Listing Program
a. Flowchart




b. Listing Program

#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(GPIOB, GPIO_PIN_1);

 

    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(GPIOA, GPIO_PIN_1);

 

    // SIANG

    if (ldr < LDR_THRESHOLD)

    {

      set_LED(LED_OFF);

    }

    else

    {

      // MALAM

      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);

  }

}

 

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

P4K6 Buatlah rangkaian seperti pada gambar percobaan 4 dengan kondisi ketika LDR mendeteksi kondisi gelap dan PIR mendeteksi adanya gerakan, maka LED menyala sangat terang selama 5 detik lalu kembali mati,

6. Video simulasi


7. Download File

Download HTML klik disini 
Download file rangkaian klik disini
Download video Simulasi klik disini
Download Datasheet Push Button klik disini
Download Datasheet LED klik disini
Download Datasheet Resistor klik disini
Download Datasheet STM Nucleo klik disini


Tidak ada komentar:

Posting Komentar

TP 2 MODUL 2

[KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Prosedur 2. Hardware dan diagram blok 3. Rangkaian simulasi dan prinsip kerja 4. F...