TP 2(Percobaan 2 Kondisi 4)




a. Prosedur[Kembali]

  1. Menyiapkan alat dan bahan
    • Mikrokontroler STM32 Nucleo C031C6
    • Sensor IR
    • Push button (switch)
    • LED hijau dan LED merah
    • Buzzer
    • Resistor
  2. Membuat rangkaian pada software simulasi
    • Membuka software simulasi (misalnya Proteus)
    • Menempatkan semua komponen sesuai kebutuhan
  3. Menghubungkan pin input ke mikrokontroler
    • Pin output switch dihubungkan ke PA0
    • Pin output sensor IR dihubungkan ke PA1
    • Kedua input menggunakan pull-down resistor agar default bernilai 0
    • VCC dan GND dari sensor dihubungkan ke sumber tegangan
  4. Menghubungkan pin output ke mikrokontroler
    • LED hijau dihubungkan ke PB0
    • LED merah dihubungkan ke PB1
    • Buzzer dihubungkan ke PB2
    • Setiap LED diberi resistor sebagai pembatas arus
    • Semua komponen dihubungkan ke GND yang sama
  5. Menuliskan program pada STM32
    • Menggunakan bahasa C pada STM32CubeIDE
    • Mengatur:
      • PA0 dan PA1 sebagai input
      • PB0, PB1, dan PB2 sebagai output
    • Menuliskan logika:
      • Jika PA0 = 1 dan PA1 = 1 → LED hijau ON
      • Selain itu → LED merah dan buzzer ON
  6. Melakukan kompilasi dan upload program
    • Compile program pada STM32CubeIDE
    • Upload program ke board STM32
  7. Melakukan pengujian rangkaian
    • Mengaktifkan switch (PA0 = 1)
    • Mengamati kondisi sensor IR (PA1)
    • Menguji semua kemungkinan kondisi
  8. Mengamati hasil output
    • Jika kondisi terpenuhi → LED hijau menyala
    • Jika kondisi tidak terpenuhi → LED merah dan buzzer menyala
    • Mencatat hasil pengujian

b. Hardware dan Diagram Blok[Kembali]

a) Mikrokontroler STM32 NUCLEO-G474RE








2. Infrared Sensor

Infrared Sensor Module



3. Buzzer


4. Power Supply

 
5. RGB LED
Jual LED RGB 4 PIN WARNA MERAH HIJAU BIRU 5mm ( ARDUINO ) - Common Cathode  - Jakarta Barat - Ardushop-id | Tokopedia

6. Resistor 1k Ohm



7. Switch



8. Adaptor



9. Breadboard

DIAGRAM BLOK



c. Rangkaian Simulasi dan Prinsip Kerja[Kembali]


Prinsip Kerja

Prinsip kerja rangkaian ini didasarkan pada pembacaan dua buah input, yaitu switch pada pin PA0 dan sensor IR pada pin PA1, yang kemudian diproses oleh mikrokontroler STM32 untuk mengendalikan LED dan buzzer sebagai output. Sistem akan terus membaca kondisi kedua input tersebut secara berulang. Switch berfungsi sebagai pengaktif sistem, di mana saat switch dalam kondisi ON (bernilai logika 1), sistem siap bekerja. Sensor IR digunakan untuk mendeteksi keberadaan objek, dengan logika 1 menandakan tidak ada objek yang terdeteksi dan logika 0 menandakan adanya objek yang terdeteksi.

Mikrokontroler memproses kedua sinyal tersebut menggunakan logika AND, yaitu ketika switch dalam kondisi ON dan sensor IR bernilai 1 (tidak mendeteksi objek), maka sistem berada dalam kondisi aman sehingga LED hijau akan menyala, sedangkan LED merah dan buzzer dalam keadaan mati. Sebaliknya, jika salah satu kondisi tidak terpenuhi, yaitu switch dalam keadaan OFF atau sensor IR mendeteksi objek, maka sistem akan mengaktifkan kondisi peringatan dengan menyalakan LED merah dan buzzer, serta mematikan LED hijau. Dengan demikian, rangkaian ini bekerja sebagai sistem indikator sederhana yang membedakan kondisi aman dan kondisi bahaya berdasarkan kombinasi input dari switch dan sensor IR.

d. Flowchart dan Listing Program[Kembali]

Flowchart





Listing Program

main.c

#include "main.h"

void SystemClock_Config(void);

static void MX_GPIO_Init(void);

int main(void)

{

HAL_Init();

SystemClock_Config();

MX_GPIO_Init();

while (1)

{

if (

HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_SET && // switch ON

HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_SET // IR tidak deteksi (push TIDAK ditekan)

)

{

// HIJAU

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);

}

else

{

// MERAH + BUZZER

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);

}

HAL_Delay(50);

}

}

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;

RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;

if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)

{

Error_Handler();

}

RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK |

RCC_CLOCKTYPE_SYSCLK |

RCC_CLOCKTYPE_PCLK1;

RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;

RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;

RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)

{

Error_Handler();

}

}

static void MX_GPIO_Init(void)

{

GPIO_InitTypeDef GPIO_InitStruct = {0};

__HAL_RCC_GPIOA_CLK_ENABLE();

__HAL_RCC_GPIOB_CLK_ENABLE();

// INPUT: PA0 (Switch), PA1 (IR)

GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1;

GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

GPIO_InitStruct.Pull = GPIO_PULLDOWN;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

// OUTPUT: PB0 (LED Hijau), PB1 (LED Merah), PB2 (Buzzer)

GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2;

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_InitStruct.Pull = GPIO_NOPULL;

GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

}

void Error_Handler(void)

{

__disable_irq();

while (1)

{

}

}

main.h

#ifndef __MAIN_H

#define __MAIN_H

#ifdef __cplusplus

extern "C" {

#endif

#include "stm32c0xx_hal.h"

// Function

void Error_Handler(void);

// ===== INPUT =====

#define BUTTON_REVERSE_Pin GPIO_PIN_0

#define BUTTON_REVERSE_GPIO_Port GPIOA

#define IR_SENSOR_Pin GPIO_PIN_1

#define IR_SENSOR_GPIO_Port GPIOA

// ===== OUTPUT =====

#define LED_GREEN_Pin GPIO_PIN_0

#define LED_GREEN_GPIO_Port GPIOB

#define LED_RED_Pin GPIO_PIN_1

#define LED_RED_GPIO_Port GPIOB

#define BUZZER_Pin GPIO_PIN_2

#define BUZZER_GPIO_Port GPIOB

#ifdef __cplusplus

}

#endif

#endif /* __MAIN_H */

e. Video Demo[Kembali]


f. Kondisi[Kembali]

Buatlah rangkaian seperti pada gambar percobaan 2 dengan kondisi ketika Infrared sensor tidak mendeteksi benda dan switch on, maka LED menyala hijau

g. Video Simulasi[Kembali]








h. Download File[Kembali]

FIle Zip  [klik disini]

File  wokwi [klik disini]

Video Rangkaian [klik disini]

Datasheet : 


 









Komentar

Postingan populer dari blog ini

Tugas Besar