A. Proteus
- Buka Proteus → New Project
-
Tambahkan komponen:
- STM32F103C8T6
- PIR Sensor
- Touch Sensor
- Buzzer
- LED + resistor
- Resistor pull-up/pull-down (10kΩ)
-
Hubungkan rangkaian:
- PIR → ke pin input (misal PA0)
- Touch → ke pin input (misal PA1)
- Buzzer & LED → ke pin output (misal PB0, PB1)
- VCC ke +5V / 3.3V dan GND ke ground
-
Load file
.hexhasil compile dari STM32CubeIDE ke mikrokontroler - Jalankan simulasi (Run)
-
Uji kondisi:
- PIR aktif (deteksi gerakan)
-
Touch tidak disentuh
→ Buzzer harus menyala
B. STM32CubeIDE
- Buat project baru (STM32F103C8Tx)
-
Atur pin:
- PA0 → GPIO Input (PIR)
- PA1 → GPIO Input (Touch)
- PB0 → GPIO Output (Buzzer)
- PB1 → GPIO Output (LED)
- Generate code
-
Tambahkan logika di
while(1): - Build → Generate file
.hex - Import ke Proteus
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. Sensor PIR (Passive Infrared)
- Digunakan untuk mendeteksi gerakan manusia
- Bekerja berdasarkan perubahan radiasi infra merah
- Output:
- HIGH (1) → ada gerakan
- LOW (0) → tidak ada gerakan
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. Blok Input (Sensor)
Bagian ini berfungsi sebagai "indra" sistem yang mengambil data dari lingkungan:
Sensor PIR (PA0): Terhubung ke pin PA0 sebagai
GPIO_Input. Sensor ini mendeteksi radiasi inframerah dari gerakan manusia. Dalam kondisi 7, sensor ini mengirimkan sinyal High (1) karena mendeteksi gerakan.Sensor Sentuh (PA1): Terhubung ke pin PA1 sebagai
GPIO_Input. Dalam skenario ini, sensor tidak mendeteksi sentuhan, sehingga mengirimkan sinyal Low (0) ke kontroler.
2. Blok Kontroler (STM32F103C8T6)
Ini adalah "otak" dari sistem. Kontroler memproses sinyal masuk berdasarkan algoritma yang telah diprogram (seperti yang terlihat pada konfigurasi pinout Anda):
Pemrosesan Logika: Kontroler memeriksa kondisi:
IF (PA0 == HIGH) AND (PA1 == LOW).Pengambilan Keputusan: Karena kedua syarat terpenuhi (ada gerakan DAN tidak ada sentuhan), kontroler memberikan instruksi untuk mengaktifkan pin output.
3. Blok Output (Aktuator)
Bagian ini adalah eksekutor yang mengubah sinyal elektrik menjadi aksi nyata:
Buzzer (PB0): Menerima sinyal dari pin PB0. Buzzer akan berbunyi sebagai peringatan suara.
LED Red (PB1): Menerima sinyal dari pin PB1. LED akan menyala sebagai peringatan visual.
Driver Circuit: Karena arus dari pin GPIO STM32 terbatas, biasanya terdapat rangkaian driver (seperti transistor) untuk memastikan Buzzer dan LED mendapatkan daya yang cukup.
4. Alur Umpan Balik (Feedback Loop)
Inilah yang membuat sistem ini disebut Closed Loop secara fungsional:
Respons Pengguna: Saat Buzzer berbunyi dan LED menyala, pengguna (manusia) menerima informasi tersebut.
Modifikasi Perilaku: Pengguna mungkin akan bereaksi dengan menyentuh sensor sentuh (untuk mematikan alarm) atau berhenti bergerak.
Input Baru: Reaksi pengguna tersebut akan mengubah status di Sensor Input, sehingga siklus dimulai kembali dengan kondisi data yang baru.
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
Rangkaian simulasi yang dibuat menggunakan mikrokontroler STM32F103C8T6 sebagai pusat kendali yang terhubung dengan dua sensor input, yaitu sensor PIR dan sensor touch, serta dua output berupa buzzer dan LED. Sensor PIR berfungsi untuk mendeteksi adanya gerakan berdasarkan perubahan radiasi infra merah, sedangkan sensor touch digunakan sebagai kontrol tambahan untuk mendeteksi sentuhan dari pengguna. Kedua sensor ini memberikan sinyal digital yang kemudian dibaca oleh mikrokontroler melalui pin GPIO yang telah dikonfigurasi sebagai input.
Ketika sistem dijalankan, mikrokontroler akan secara terus-menerus membaca kondisi kedua sensor tersebut. Jika sensor PIR mendeteksi adanya gerakan (logika HIGH) dan sensor touch tidak mendeteksi sentuhan (logika LOW), maka mikrokontroler akan memberikan sinyal keluaran untuk mengaktifkan buzzer dan LED sebagai indikator bahwa alarm sedang aktif. Sebaliknya, jika tidak ada gerakan atau sensor touch disentuh, maka buzzer dan LED akan dimatikan. Dengan demikian, sistem ini bekerja berdasarkan logika kombinasi dari dua input untuk menghasilkan satu kondisi output tertentu.
Listing Program :
/* USER CODE BEGIN Header */
/**
******************************************************************************
* @file : main.c
* @brief : Sensor PIR + Touch -> Buzzer Control
******************************************************************************
*/
/* USER CODE END Header */
#include "main.h"
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1)
{
// Baca input sensor
GPIO_PinState pir = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);
GPIO_PinState touch = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1);
// Logika kontrol
if (pir == GPIO_PIN_SET && touch == GPIO_PIN_RESET)
{
// PIR aktif & tidak disentuh
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET); // Buzzer ON
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // LED ON (indikator)
}
else
{
// Kondisi lain
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET); // Buzzer OFF
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); // LED OFF
}
HAL_Delay(50); // debounce / stabilisasi
}
}
/**
* @brief System Clock Configuration
*/
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();
}
}
/**
* @brief GPIO Initialization
*/
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
// Enable clock GPIO
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
// =========================
// INPUT: PA0 (PIR), PA1 (Touch)
// =========================
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLDOWN; // agar tidak floating
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// =========================
// OUTPUT: PB0 (LED), PB1 (Buzzer)
// =========================
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);
// Matikan semua output awal
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0 | GPIO_PIN_1, GPIO_PIN_RESET);
}
/**
* @brief Error Handler
*/
void Error_Handler(void)
{
__disable_irq();
while (1)
{
}
}
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