A. Persiapan Alat dan Bahan
- STM32F103C8 (Bluepill)
- ST-LINK (programmer)
- IR Transmitter & IR Receiver
- Touch sensor
- Buzzer
- LED
- Resistor 220 Ω
B. Perakitan Rangkaian
- Hubungkan IR transmitter & receiver sebagai sensor penghalang (perimeter pintu)
- Hubungkan touch sensor sebagai saklar ON/OFF sistem
- Hubungkan LED dan buzzer sebagai output alarm
- Pastikan semua terhubung ke pin GPIO STM32 sesuai program
C. Pemrograman
- Upload program ke STM32 menggunakan ST-LINK
- Program menggunakan fungsi:
-
HAL_GPIO_ReadPin()→ membaca input -
HAL_GPIO_WritePin()→ mengontrol output
C. Pengujian Sistem
- Sistem dinyalakan
- Aktif/nonaktifkan sistem dengan touch sensor
- Halangi sinar IR (simulasi pintu terbuka)
- Amati:
- LED menyala
- Buzzer berbunyi
2. Hardware dan Diagram Blok [Kembali]
A. Hardware
1. STM32F103C8T6 (Mikrokontroler)
- Berfungsi sebagai otak sistem
- Membaca sinyal dari sensor (PIR & Touch)
- Mengolah logika program
- Mengontrol output (LED & buzzer)
- Memiliki GPIO (input/output digital)
Peran utama:
2. IR Transmitter & IR Receiver
- Berfungsi sebagai sensor penghalang (perimeter)
- Cara Kerja
- R transmitter memancarkan sinar
- IR receiver menerima sinar
- Jika terhalang → sinyal berubah → dianggap “pintu terbuka”
3. Sensor Touch (Kapasitif)
- Mendeteksi sentuhan jari manusia
- Output:
- HIGH (1) → disentuh
- LOW (0) → tidak disentuh
- Bisa digunakan untuk mematikan alarm
4. Buzzer
- Komponen output berupa suara
- Aktif saat diberi logika HIGH
Peran dalam sistem:
Sebagai alarm peringatan ketika ada gerakan
5. LED
- Indikator visual
- Menyala saat kondisi tertentu terpenuhi
Peran dalam sistem:
Memberi tanda visual bahwa sistem aktif / alarm menyala
6. Resistor (10kΩ)
-
Digunakan sebagai:
- Pull-up
- Pull-down
- Menjaga kestabilan sinyal input
Peran dalam sistem:
Mencegah kondisi floating (tidak stabil) pada pin input
7. Power Supply (3.3V / 5V)
- Memberikan tegangan ke seluruh rangkaian
Peran dalam sistem:
Sumber energi agar semua komponen bekerja
B. Diagram Blok
1. Tahap Deteksi (Input)
Sistem memulai dengan memantau area perimeter menggunakan IR Sensor. Sensor IR memancarkan cahaya infra merah; jika ada objek (seperti orang melewati pintu), pantulan cahaya akan diterima oleh receiver dan mengirimkan sinyal logika ke pin PA1 pada STM32.
2. Tahap Pengolahan (Controller)
STM32 secara kontinu membaca data dari pin input.
Logika Deteksi: Jika pin PA1 mendeteksi adanya rintangan (perimeter ditembus), mikrokontroler akan mengeksekusi perintah untuk mengaktifkan alarm.
Logika Kendali: Pin PA0 (Touch Sensor) bertindak sebagai input interaktif, misalnya untuk mematikan alarm atau sebagai syarat tambahan agar alarm aktif.
3. Tahap Aksi (Output)
Setelah logika terpenuhi, STM32 akan mengirimkan sinyal tegangan tinggi (High) ke:
PB1: Mengaktifkan Buzzer untuk menghasilkan suara peringatan.
PB0: Menyalakan LED sebagai indikator visual melalui resistor 220 Ohm.
4. Alur Umpan Balik (Feedback Loop)
Sistem ini disebut loop tertutup secara fungsional karena:
Suara buzzer dan nyala LED memberikan informasi kepada pengguna.
Pengguna merespons dengan menyentuh Touch Sensor (PA0).
Sinyal dari Touch Sensor kembali masuk ke Controller untuk mengubah status output (misalnya mematikan buzzer), sehingga siklus kontrol kembali ke titik awal (kondisi aman).
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
Prinsip kerja simulasi pada Percobaan Kendali Alarm Perimeter Pintu didasarkan pada deteksi gangguan sinyal inframerah yang diproses oleh mikrokontroler sebagai pusat kendali sistem. Sistem menggunakan pasangan IR transmitter dan IR receiver, di mana transmitter memancarkan sinar inframerah secara kontinu dan receiver menerima sinyal tersebut dalam kondisi normal. Ketika tidak ada penghalang (pintu tertutup), sinar inframerah diterima dengan baik sehingga sistem menganggap kondisi aman. Sebaliknya, ketika sinar inframerah terputus akibat adanya objek atau pintu terbuka, maka terjadi perubahan logika pada output sensor yang kemudian dideteksi oleh mikrokontroler sebagai indikasi adanya gangguan.
Selain itu, sistem dilengkapi dengan touch sensor yang berfungsi sebagai saklar untuk mengaktifkan atau menonaktifkan sistem alarm. Touch sensor bekerja dengan prinsip toggle, di mana setiap sentuhan akan mengubah kondisi sistem dari aktif menjadi nonaktif atau sebaliknya. Ketika sistem dalam keadaan aktif, mikrokontroler akan terus membaca kondisi dari IR receiver secara berulang melalui proses looping. Jika terdeteksi adanya gangguan (sinar IR terhalang), maka mikrokontroler akan memberikan sinyal keluaran berupa logika HIGH untuk mengaktifkan LED sebagai indikator visual dan buzzer sebagai alarm suara. Sebaliknya, jika tidak ada gangguan, maka kedua output tersebut akan dimatikan.
Seluruh proses ini berlangsung secara kontinu dalam sebuah loop tak hingga, sehingga sistem mampu melakukan pemantauan secara real-time terhadap kondisi di sekitar pintu. Dengan demikian, sistem alarm perimeter pintu ini merupakan implementasi sederhana dari konsep input–proses–output dalam sistem tertanam, di mana input berasal dari sensor, diproses oleh mikrokontroler, dan menghasilkan output berupa indikator peringatan ketika terjadi pelanggaran pada area yang dipantau.
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
Download rangkaian Proteus klik disini
Download library Touch Sensor klik disini
Download library PIR Sensor klik disini
Download library STM32F103C8 klik disini





Tidak ada komentar:
Posting Komentar