LAPORAN AKHIR 1



MODUL 1 PERCOBAAN 3


1. Prosedur [Kembali]

A. Persiapan Alat dan Bahan

  1. STM32F103C8 (Bluepill)
  2. ST-LINK (programmer)
  3. IR Transmitter & IR Receiver
  4. Touch sensor
  5. Buzzer
  6. LED
  7. Resistor 220 Ω

B. Perakitan Rangkaian

  1. Hubungkan IR transmitter & receiver sebagai sensor penghalang (perimeter pintu)
  2. Hubungkan touch sensor sebagai saklar ON/OFF sistem
  3. Hubungkan LED dan buzzer sebagai output alarm
  4. Pastikan semua terhubung ke pin GPIO STM32 sesuai program

C. Pemrograman

  1. Upload program ke STM32 menggunakan ST-LINK
  2. Program menggunakan fungsi:
    • HAL_GPIO_ReadPin() → membaca input
    • HAL_GPIO_WritePin() → mengontrol output

C. Pengujian Sistem

  1. Sistem dinyalakan
  2. Aktif/nonaktifkan sistem dengan touch sensor
  3. Halangi sinar IR (simulasi pintu terbuka)
  4. Amati:
    • LED menyala
    • Buzzer berbunyi

2. Hardware dan Diagram Blok [Kembali]

 a) STM32F103C8


    b) Touch Sensor



    c) IR Sensor




    d) LED



    e) Buzzer



    f) Resistor



     g) Diagram Blok




3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Prinsip kerja dari simulasi Alarm Perimeter Pintu ini bertumpu pada mikrokontroler yang bertugas memproses sinyal dari sensor inframerah (IR). Sistem ini mengandalkan pasangan pemancar (transmitter) dan penerima (receiver) IR. Dalam kondisi normal atau pintu tertutup, sinar inframerah akan terus memancar dan diterima dengan baik oleh receiver, menandakan bahwa situasi aman. Namun, apabila pintu terbuka atau ada objek yang menghalangi, pancaran sinar tersebut akan terputus. Putusnya sinar ini memicu perubahan nilai logika pada sensor, yang langsung dibaca oleh mikrokontroler sebagai tanda adanya gangguan.

Sebagai pengontrol utama, sistem ini juga dilengkapi dengan touch sensor (sensor sentuh) yang berfungsi layaknya saklar utama. Sensor ini beroperasi dengan sistem toggle, yang berarti setiap sentuhan akan membalikkan keadaan sistem: dari menyala (aktif) menjadi mati (nonaktif), dan sebaliknya.

Ketika alarm dalam posisi aktif, mikrokontroler akan terus-menerus memantau status dari sensor IR. Apabila terdeteksi sebuah gangguan (sinar IR terhalang), mikrokontroler akan merespons dengan mengirimkan sinyal keluaran berlogika HIGH. Sinyal ini secara bersamaan akan menyalakan LED sebagai peringatan visual dan membunyikan buzzer sebagai peringatan suara. Sebaliknya, jika rintangan sudah tidak ada, kedua indikator tersebut akan kembali dimatikan.

Mekanisme pemantauan ini berjalan tanpa henti (dalam infinite loop), sehingga sistem dapat mengawasi area pintu secara real-time. Secara keseluruhan, rangkaian ini adalah contoh nyata penerapan dasar sistem tertanam (embedded system), di mana data input diambil dari sensor, diproses oleh otak mikrokontroler, lalu dieksekusi menjadi output berupa peringatan jika terjadi penerobosan.




Listing Program :

#include "main.h"

uint8_t system_enable = 1;

uint8_t touch_last = 0;

void SystemClock_Config(void);

static void MX_GPIO_Init(void);

int main(void)

{

HAL_Init();

SystemClock_Config();

MX_GPIO_Init();

while (1)

{

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;

HAL_Delay(200);

}

touch_last = touch_now;

if (system_enable)

{

if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == 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_RESET);

HAL_GPIO_WritePin(GPIOB, 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();

}

}

static void MX_GPIO_Init(void)

{

GPIO_InitTypeDef GPIO_InitStruct = {0};

__HAL_RCC_GPIOD_CLK_ENABLE();

__HAL_RCC_GPIOA_CLK_ENABLE();

__HAL_RCC_GPIOB_CLK_ENABLE();

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0 | GPIO_PIN_1, GPIO_PIN_RESET);

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

GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1;

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

}

void Error_Handler(void)

{

__disable_irq();

while (1)

{

}

}

#ifdef USE_FULL_ASSERT

void assert_failed(uint8_t *file, uint32_t line)

{

}

#endif

}

5. Video Demo [Kembali]



6. Soal Analisa [Kembali]






7. Video Simulasi [Kembali]



8. Download File [Kembali]

Download rangkaian Proteus klik disini

Download Analisa disini

Download library Touch Sensor klik disini

Download library IR Sensor  klik disini

Download library STM32F103C8 klik disini


Komentar

Postingan Populer