Modul 1 : Tugas Pendahuluan 2
2. Buat program untuk mikrokontroler STM32F103C8 di software STM32 CubeIDE.
3. Compile program dalam format hex, lalu upload ke dalam mikrokontroler.
4. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.
Mekanisme Kerja Sistem Alarm Perimeter Pintu
Sistem keamanan ini berbasis mikrokontroler STM32F103C8T6 yang mengintegrasikan dua jenis sensor sebagai unit masukan digital pada pin PA0 dan PA1. Operasional perangkat ini bergantung pada sinyal dari sensor inframerah (IR) dan sensor sentuh (touch sensor) untuk mengendalikan aktuator peringatan.
1. Peran Sensor dan Input Digital
Sensor IR (Deteksi Intrusi): Terkoneksi pada pin PA0, sensor ini memantau kontinuitas pancaran cahaya inframerah. Apabila terdapat objek yang memotong jalur transmisi, sensor akan mengirimkan sinyal berlogika HIGH ke mikrokontroler sebagai indikasi adanya pelanggaran perimeter.
Sensor Sentuh (Kendali Sistem): Dihubungkan ke pin PA1, komponen ini berfungsi sebagai sakelar toggle. Setiap input sentuhan akan memanipulasi variabel internal
system_enable. Mekanisme ini memungkinkan pengguna untuk melakukan aktivasi atau deaktivasi (ARM/DISARM) seluruh sistem alarm secara manual.
2. Logika Pemrosesan dan Output
Mikrokontroler mengeksekusi instruksi di dalam main loop menggunakan STM32 HAL Library. Logika keputusan sistem mengikuti kondisi berikut:
Kondisi Aktif: Jika variabel
system_enablebernilai 1 (aktif) dan sensor IR mendeteksi objek (PA0 = HIGH), maka pin PB0 dan PB1 akan dipicu ke level HIGH. Hal ini secara simultan mengaktifkan LED sebagai peringatan visual dan Buzzer sebagai alarm audio.Kondisi Standby/Nonaktif: Sistem akan memutus aliran arus (output LOW) ke indikator jika salah satu syarat tidak terpenuhi (baik karena perimeter bersih atau sistem sengaja dinonaktifkan via sensor sentuh).
3. Pemantauan Kontinu
Seluruh proses pembacaan status pin masukan dan penulisan status pin keluaran dilakukan secara iteratif tanpa henti. Hal ini memastikan sistem memiliki responsivitas yang tinggi terhadap setiap perubahan status pada area pintu yang dijaga.
/* USER CODE BEGIN Header */
/**
******************************************************************************
* @file : main.c
* @brief : Main program body
******************************************************************************
*/
/* USER CODE END Header */
#include "main.h"
#include "gpio.h"
/* USER CODE BEGIN 0 */
uint8_t mode_system = 1;
uint8_t prev_touch = 0;
/* USER CODE END 0 */
void SystemClock_Config(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1)
{
uint8_t touch = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1);
if (touch == GPIO_PIN_SET && prev_touch == GPIO_PIN_RESET)
{
mode_system = !mode_system;
HAL_Delay(150);
}
prev_touch = touch;
if (mode_system == 1)
{
uint8_t sensor = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);
if (sensor == GPIO_PIN_SET)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
}
else
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);
}
}
else
{
HAL_GPIO_WritePin(GPIOB,
GPIO_PIN_0 | GPIO_PIN_1,
GPIO_PIN_RESET);
}
}
}
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;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
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();
}
}
void Error_Handler(void)
{
__disable_irq();
while (1)
{
}
}






Comments
Post a Comment