Tugas Pendahuluan 1 ( Mikro M1 )
Tugas Pendahuluan Modul 1 Percobaan 1 kondisi 9
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
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.
#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)
{
}
}
- Download File Rangkaian (klik disini)
- Download Video Penjelasan Rangkaian (klik disini)
- Download Datasheet Touche 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