TP (Percobaaan 1 Kondisi 7)




a. Prosedur[Kembali]

Langkah-langkah mensimulasikan rangkaian Kontrol Lampu Jalan Percobaan 1 Kondisi 7:

  1. Siapkan seluruh komponen yang dibutuhkan yaitu STM32F103C8, Touch Sensor TTP223, PIR Sensor, LED Merah, Buzzer, Resistor 10k Ω (R1), dan Resistor 220 Ω (R2).
  1. Buka software Proteus dan buat project baru.
  1. Tambahkan komponen-komponen berikut dari library Proteus:
    • STM32F103C8 sebagai mikrokontroler utama
    • Touch Sensor (TOUCH SENSOR dari library TheEngineeringProjects)
    • PIR Sensor (PIR SENSOR dari library TheEngineeringProjects)
    • LED Merah (LED-RED)
    • Buzzer (BUZZER)
    • Resistor R1 = 10k Ω
    • Resistor R2 = 220 Ω
    • Power Supply +5V dan GND
  1. Hubungkan komponen sesuai skema rangkaian pada gambar dengan pemetaan pin:
    • Touch Sensor OUT → PA1 (GPIOA Pin 1)
    • PIR Sensor OUT → PA2 (GPIOB Pin 9)
    • Buzzer (+) → R2 (220Ω) → PB0 (GPIOB Pin 0)
    • LED Merah Anode → R1 (10kΩ) → PB1 (GPIOB Pin 1)
    • VCC semua komponen → +5V
    • GND semua komponen → GND bersama
  1. Pada STM32CubeIDE, buat project baru untuk target STM32F103C8T6 dan masukkan listing program kondisi 7.
  1. Konfigurasi GPIO sesuai kondisi:
    • PA1 → GPIO_MODE_INPUT (Touch Sensor)
    • PA2 → GPIO_MODE_INPUT (PIR Sensor)
    • PB0 → GPIO_MODE_OUTPUT_PP (Buzzer)
    • PB1 → GPIO_MODE_OUTPUT_PP (LED)
  1. Compile program dan generate file .hex.
  1. Load file .hex ke STM32F103C8 pada Proteus melalui menu properties komponen.
  1. Jalankan simulasi dan uji kondisi sesuai ketentuan

b. Hardware dan Diagram Blok[Kembali]

HARDWARE

 1. STM32G474RE

Microcontroller

STM32G474RE (ARM Cortex-M4F)

Operating Voltage

3.3 V

Input Voltage (recommended)

5 V via USB (ST-LINK) atau 7–12 V via VIN

Input Voltage (limit)

4.5  15 V (VIN board Nucleo)

Digital I/O Pins

±51 GPIO pins (tergantung konfigurasi fungsi)

PWM Digital I/O Pins

Hingga 24 channel PWM (advanced, general-purpose, dan high-resolution timers)

Analog Input Pins

Hingga 24 channel ADC (12-bit / 16-bit dengan oversampling)

DC Current per I/O Pin

Maks. 20 mA per pin (disarankan  8 mA)

DC Current for 3.3V Pin

Hingga ±500 mA (tergantung regulator & sumber daya)

Flash Memory

512 KB internal Flash

SRAM

128 KB SRAM (termasuk CCM RAM)

Clock Speed

Hingga 170 MHz

    2. STM32F103C8

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


    3. Touch Sensor

    SPESIFIKASI :

  • Konsumsi daya yang rendah
  • Bisa menerima tegangan dari 2 ~ 5.5V DC
  • Dapat menggantikan fungsi saklar tradisional
  • Dilengkapi 4 lobang baut untuk memudahkan pemasangan
  • Tegangan kerja : 2v s/d 5.5v (optimal 3V)
  • Output high VOH : 0.8 VCC (typical)
  • Output low VOL : 0.3 VCC (max)
  • Arus Output Pin Sink (@ VCC 3V, VOL 0.6V) : 8 mA
  • Arus Output pin pull-up (@ VCC=3V, VOH=2.4V) : 4 mA
  • Waktu respon (low power mode): max 220 ms
  • Waktu respon (touch mode): max 60 ms
  • Ukuran: 24 mm x 24 mm x 7.2 mm

    4. PIR Sensor

    5. LED



    6. Buzzer

    7. Resistor



         DIAGRAM BLOK  


    
                                                                                                                                                           

c. Rangkaian Simulasi dan Prinsip Kerja[Kembali]





Prinsip Kerja

Prinsip kerja rangkaian ini didasarkan pada pembacaan dua buah sensor, yaitu sensor PIR dan sensor touch, yang kemudian diproses oleh mikrokontroler STM32 untuk mengendalikan buzzer. Sensor PIR berfungsi mendeteksi adanya gerakan di sekitarnya dengan menghasilkan logika tinggi (1) ketika ada pergerakan, dan logika rendah (0) ketika tidak ada gerakan. Sementara itu, sensor touch digunakan untuk mendeteksi sentuhan, di mana sensor akan bernilai tinggi (1) saat disentuh dan rendah (0) saat tidak disentuh.

Mikrokontroler secara terus-menerus membaca kedua input tersebut dan memprosesnya menggunakan logika digital. Kondisi yang diterapkan adalah buzzer akan menyala hanya ketika sensor PIR mendeteksi gerakan (bernilai 1) dan sensor touch tidak mendeteksi sentuhan (bernilai 0). Sebaliknya, jika tidak ada gerakan atau sensor touch dalam keadaan disentuh, maka buzzer akan tetap dalam kondisi mati. Dengan demikian, sistem ini bekerja menggunakan kombinasi logika AND dan NOT, di mana buzzer aktif hanya pada kondisi tertentu sebagai bentuk respon terhadap adanya gerakan tanpa adanya interaksi sentuhan.


d. Flowchart dan Listing Program[Kembali]

FLOWCHART


LISTING PROGRAM 

/* USER CODE BEGIN Header */

/**

******************************************************************************

* @file : main.c

* @brief : Main program body

******************************************************************************

* @attention

*

* Copyright (c) 2026 STMicroelectronics.

* All rights reserved.

*

* This software is licensed under terms that can be found in the LICENSE file

* in the root directory of this software component.

* If no LICENSE file comes with this software, it is provided AS-IS.

*

******************************************************************************

*/

/* USER CODE END Header */

/* Includes ------------------------------------------------------------------*/

#include "main.h"


/* Private includes ----------------------------------------------------------*/

/* USER CODE BEGIN Includes */


/* USER CODE END Includes */


/* Private typedef -----------------------------------------------------------*/

/* USER CODE BEGIN PTD */


/* USER CODE END PTD */


/* Private define ------------------------------------------------------------*/

/* USER CODE BEGIN PD */


/* USER CODE END PD */


/* Private macro -------------------------------------------------------------*/

/* USER CODE BEGIN PM */


/* USER CODE END PM */


/* Private variables ---------------------------------------------------------*/


/* USER CODE BEGIN PV */


/* USER CODE END PV */


/* Private function prototypes -----------------------------------------------*/

void SystemClock_Config(void);

static void MX_GPIO_Init(void);

/* USER CODE BEGIN PFP */


/* USER CODE END PFP */


/* Private user code ---------------------------------------------------------*/

/* USER CODE BEGIN 0 */


/* USER CODE END 0 */


/**

* @brief The application entry point.

* @retval int

*/

int main(void)

{


/* USER CODE BEGIN 1 */


/* USER CODE END 1 */


/* MCU Configuration--------------------------------------------------------*/


/* Reset of all peripherals, Initializes the Flash interface and the Systick. */

HAL_Init();


/* USER CODE BEGIN Init */


/* USER CODE END Init */


/* Configure the system clock */

SystemClock_Config();


/* USER CODE BEGIN SysInit */


/* USER CODE END SysInit */


/* Initialize all configured peripherals */

MX_GPIO_Init();

/* USER CODE BEGIN 2 */


/* USER CODE END 2 */


/* Infinite loop */

/* USER CODE BEGIN WHILE */

while (1)

{


uint8_t touch_now = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1);

uint8_t pir_now = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_2);


if (pir_now == GPIO_PIN_SET && touch_now == GPIO_PIN_RESET)

{

HAL_GPIO_WritePin(GPIOB, Buzzer_Pin, GPIO_PIN_SET);// ON

}

else

{

HAL_GPIO_WritePin(GPIOB, Buzzer_Pin, GPIO_PIN_RESET);// OFF

}


HAL_Delay(50); // delay biar stabil

/* USER CODE END WHILE */


/* USER CODE BEGIN 3 */

}

/* USER CODE END 3 */

}


/**

* @brief System Clock Configuration

* @retval None

*/

void SystemClock_Config(void)

{

RCC_OscInitTypeDef RCC_OscInitStruct = {0};

RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};


/** Initializes the RCC Oscillators according to the specified parameters

* in the RCC_OscInitTypeDef structure.

*/

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;

RCC_OscInitStruct.HSIState = RCC_HSI_ON;

RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;

RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;

if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)

{

Error_Handler();

}


/** Initializes the CPU, AHB and APB buses clocks

*/

RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK

|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;

RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;

RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;

RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;

RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;


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

{

Error_Handler();

}

}


/**

* @brief GPIO Initialization Function

* @param None

* @retval None

*/

static void MX_GPIO_Init(void)

{

GPIO_InitTypeDef GPIO_InitStruct = {0};

/* USER CODE BEGIN MX_GPIO_Init_1 */


/* USER CODE END MX_GPIO_Init_1 */


/* GPIO Ports Clock Enable */

__HAL_RCC_GPIOD_CLK_ENABLE();

__HAL_RCC_GPIOA_CLK_ENABLE();

__HAL_RCC_GPIOB_CLK_ENABLE();


/*Configure GPIO pin Output Level */

HAL_GPIO_WritePin(GPIOB, Led_Pin|Buzzer_Pin, GPIO_PIN_RESET);


/*Configure GPIO pins : Touch_Pin IR_Pin */

GPIO_InitStruct.Pin = Touch_Pin|IR_Pin;

GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

GPIO_InitStruct.Pull = GPIO_NOPULL;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);


/*Configure GPIO pins : Led_Pin Buzzer_Pin */

GPIO_InitStruct.Pin = Led_Pin|Buzzer_Pin;

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


/* USER CODE BEGIN MX_GPIO_Init_2 */


/* USER CODE END MX_GPIO_Init_2 */

}


/* USER CODE BEGIN 4 */


/* USER CODE END 4 */


/**

* @brief This function is executed in case of error occurrence.

* @retval None

*/

void Error_Handler(void)

{

/* USER CODE BEGIN Error_Handler_Debug */

/* User can add his own implementation to report the HAL error return state */

__disable_irq();

while (1)

{

}

/* USER CODE END Error_Handler_Debug */

}

#ifdef USE_FULL_ASSERT

/**

* @brief Reports the name of the source file and the source line number

* where the assert_param error has occurred.

* @param file: pointer to the source file name

* @param line: assert_param error line source number

* @retval None

*/

void assert_failed(uint8_t *file, uint32_t line)

{

/* USER CODE BEGIN 6 */

/* User can add his own implementation to report the file name and line number,

ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

/* USER CODE END 6 */

}

#endif /* USE_FULL_ASSERT */



e. Video Demo[Kembali]


f. Kondisi[Kembali]

Buatlah rangkaian seperti pada gambar percobaan 1 dengan kondisi ketika PIR mendeteksi gerakan dan sensor Touch tidak mendeteksi sentuhan, maka Buzzer menyala

g. Video Simulasi[Kembali]

  


h. Download File[Kembali]

FIle Zip  [klik disini]

File Rangkaian Proteus [klik disini]

Datasheet Sensor: 

Datasheet Led  [klik disini]









Komentar

Postingan populer dari blog ini

Tugas Besar