Laporan Akhir 1
1. Prosedur [kembali]
- Menyiapkan alat dan bahan.
- Merangkai komponen pada breadboard sesuai dengan gambar rangkaian percobaan.
- Menghubungkan masing masing pin input output.
- Mengunggah program menggunakan ST-LINK ke mikrokontroler.
- Jalankan Rangkaian
2. Hardware dan Diagram Blok [kembali]
3. Rangkaian Simulasi dan Prinsip Kerja [kembali]
Rangkaian ini bekerja menggunakan mikrokontroler STM32F103C8 sebagai pusat kendali yang menerima masukan dari dua sensor, yaitu sensor sentuh dan sensor PIR. Sensor sentuh berfungsi mendeteksi adanya sentuhan, sedangkan sensor PIR mendeteksi gerakan berdasarkan perubahan radiasi inframerah dari tubuh manusia. Kedua sensor menghasilkan sinyal digital berupa logika 0 atau 1 yang kemudian dibaca oleh mikrokontroler untuk diproses sesuai program yang telah dibuat.
Berdasarkan kondisi input tersebut, mikrokontroler mengendalikan dua output yaitu LED dan buzzer. Jika salah satu sensor atau keduanya aktif (logika 1), maka LED akan menyala sebagai indikator visual dan buzzer berbunyi sebagai alarm suara. Jika kedua sensor tidak aktif (logika 0), maka LED dan buzzer tetap mati. Dengan prinsip ini, rangkaian dapat digunakan sebagai sistem keamanan atau pendeteksi keberadaan manusia secara sederhana.
4. Flowchart dan Listing Program [kembali]
#include "main.h"
/* Variabel */
uint8_t touch_last = 0;
/* Prototype */
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1)
{
uint8_t ir = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0); // IR sensor
uint8_t touch = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1); // Touch sensor
/* =========================
LOGIKA UTAMA
========================= */
if (ir == GPIO_PIN_SET && touch == GPIO_PIN_RESET)
{
// IR deteksi & Touch tidak disentuh → LED MATI
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
}
else
{
// Selain kondisi itu → LED NYALA
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
}
HAL_Delay(50);
}
}
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/* INPUT: IR dan Touch */
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: LED */
GPIO_InitStruct.Pin = GPIO_PIN_0;
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);
/* Default LED OFF */
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, 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)
{
}
}
5. Video Demo [kembali]
7. Video Simulasi [kembali]
- Download File Rangkaian (klik disini)
- Download Video Penjelasan Rangkaian (klik disini)
- Download Video Demo (klik disini)
- Download Analisa (klik disini)
- Download Datasheet Touch Sensor (klik disini)
- Download Datasheet PIR Sensor (klik disini)
- Download Datasheet Resistor (klik disini)
- Download Datasheet LED (klik disini)
- Download Datasheet Buzzer (klik disini)
Comments
Post a Comment