Laporan Akhir Percobaan 1 (M1)
1. Prosedur [kembali]
1. Siapkan
alat dan bahan seperti STM32F103C8T6, sensor IR, sensor PIR, jumper,
breadboard, resistor, buzzer, dan laptop.
2. Rangkai
komponen sesuai dengan gambar percobaan pada modul.
3. Buka
software STM32CubeIDE, kemudian lakukan konfigurasi pin sesuai rangkaian.
4. Buka
file main.c, lalu copy listing program dari modul dan paste ke dalam main.c.
5. Simpan
program kemudian lakukan build (compile).
6. Hubungkan
board STM32F103C8T6 ke laptop menggunakan kabel USB.
7. Upload
program dengan menekan tombol run/debug pada STM32CubeIDE.
8. Jalankan
sistem dan amati apakah rangkaian bekerja sesuai dengan kondisi yang
diinginkan.
9.
Jika belum sesuai, lakukan pengecekan pada
rangkaian dan program kemudian perbaiki.
2. Hardware dan Diagram Blok [kembali]
A. Hardware
a) STM32F103C8
b) Touch Sensor
c) PIR Sensor
d) LED
e) Buzzer
f) Resistor 1k ohm
g) Adaptor
h) Breadboard
B. Diagram Blok
3. Rangkaian Simulasi dan Prinsip Kerja [kembali]
Prinsip
Kerja:
Program ini membaca sensor PIR (PA0) dan sensor touch (PA1) untuk mengontrol LED (PB0) dan buzzer (PB1). Sensor touch bekerja sebagai toggle, mengubah status system enable saat terjadi perubahan dari LOW ke HIGH, dan buzzer berbunyi singkat sebagai indikator. Saat PIR mendeteksi gerakan (HIGH), LED menyala dan buzzer hanya berbunyi sekali pada deteksi awal. Jika tidak ada gerakan, LED mati saat sistem nonaktif. Namun, jika system enable aktif, LED akan tetap menyala atau masuk mode override tanpa bergantung pada PIR.
4. Flowchart dan Listing Program [kembali]
Ø Flowchart
Ø Listing Program
#include
"stm32f1xx_hal.h"
uint8_t system_enable =
0;
uint8_t touch_last = 0;
uint8_t pir_first_trigger
= 1;
void SystemClock_Config(void);
static void
MX_GPIO_Init(void);
void Error_Handler(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1)
{
uint8_t pir_now = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);
uint8_t touch_now =
HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1);
if (touch_now == GPIO_PIN_SET
&& touch_last == GPIO_PIN_RESET)
{
system_enable = !system_enable;
if (system_enable)
{
HAL_GPIO_WritePin(GPIOB,
GPIO_PIN_1, GPIO_PIN_SET);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOB,
GPIO_PIN_1, GPIO_PIN_RESET);
}
HAL_Delay(200);
}
touch_last = touch_now;
if (pir_now == GPIO_PIN_SET)
{
HAL_GPIO_WritePin(GPIOB,
GPIO_PIN_0, GPIO_PIN_SET);
if (pir_first_trigger)
{
HAL_GPIO_WritePin(GPIOB,
GPIO_PIN_1, GPIO_PIN_SET);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOB,
GPIO_PIN_1, GPIO_PIN_RESET);
pir_first_trigger = 0;
}
}
else
{
pir_first_trigger = 1;
if(!system_enable)
HAL_GPIO_WritePin(GPIOB,
GPIO_PIN_0, GPIO_PIN_RESET);
}
if(system_enable)
HAL_GPIO_WritePin(GPIOB,
GPIO_PIN_0, GPIO_PIN_SET);
}
}
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_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();
GPIO_InitStruct.Pin = GPIO_PIN_0 |
GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_0 |
GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed =
GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
HAL_GPIO_WritePin(GPIOB,
GPIO_PIN_0|GPIO_PIN_1, GPIO_PIN_RESET);
}
void Error_Handler(void)
{
__disable_irq();
while(1)
{
}
}
5. Video Demo [kembali]
6. Analisa [kembali]
7. Download File [kembali]
- Listing Program [Download]
- Vidio Demo [Klik]
- Analisa [Download]
- Datasheet STM32F103C8 [Download]
- Datasheet Touch Sensor [Download]
- Datasheet PIR Sensor [Download]
- Datasheet LED [Download]
- HTML [Download]
Comments
Post a Comment