LA M1 P3
Langkah-langkah untuk mensimulasikan rangkaian Alarm Perimeter Pintu menggunakan mikrokontroler STM32F103C8 adalah sebagai berikut:
Perancangan Hardware di Proteus
Buka software Proteus dan buat project baru.
Pilih dan susun komponen utama: Mikrokontroler STM32F103C8 (Bluepill), Sensor Touch, IR Sensor (Infrared/Obstacle), LED, dan Buzzer.
Hubungkan komponen tersebut sesuai dengan skema Gambar 5 pada modul. Pastikan jalur input dari kedua sensor dan jalur output ke indikator (LED/Buzzer) terhubung ke pin GPIO yang tepat pada mikrokontroler.
Inisialisasi Hardware pada STM32CubeIDE
Buka STM32CubeIDE dan buat project baru dengan target chip STM32F103C8.
Pada konfigurasi pin (Pinout & Configuration), tentukan pin yang akan bertindak sebagai GPIO_Input (untuk Sensor Touch dan IR Sensor) serta GPIO_Output (untuk LED dan Buzzer).
Lakukan Generate Code untuk mendapatkan kerangka program secara otomatis.
Pembuatan Program dan Logika Kondisi
Tuliskan logika program pada file
main.c.Rancang kode agar memenuhi kondisi alarm perimeter: Sensor Touch bertindak sebagai saklar utama (toggle on/off) untuk mengaktifkan atau menonaktifkan sistem keamanan. Ketika sistem dalam keadaan aktif (ON) dan IR Sensor mendeteksi adanya objek/hambatan yang melewati pintu, program akan memberikan sinyal High untuk menyalakan LED dan membunyikan Buzzer. Jika sistem dinonaktifkan (OFF), alarm tidak akan merespons sensor IR.
Kompilasi dan Konversi File (.hex)
Lakukan proses Build Project pada STM32CubeIDE.
Pastikan pengaturan project sudah diatur untuk menghasilkan output file dalam format Intel HEX (.hex). File ini nantinya akan digunakan sebagai "otak" untuk simulasi di Proteus.
Simulasi Rangkaian
Kembali ke aplikasi Proteus, klik dua kali pada komponen STM32F103C8.
Pada bagian Program File, cari dan pilih file .hex yang sudah di-build tadi.
Jalankan simulasi dengan menekan tombol Play. Lakukan pengujian dengan menekan Sensor Touch untuk menghidupkan sistem, lalu ubah status logika pada IR Sensor untuk melihat apakah LED dan Buzzer merespons sesuai dengan program perlindungan perimeter yang dibuat.
2. Hardware dan Diagram Blok [Kembali]
A. Daftar Hardware (Perangkat Keras)
Berdasarkan Rangkaian Percobaan 3, perangkat keras yang digunakan pada simulasi ini beserta fungsinya adalah:
Mikrokontroler STM32F103C8: Bertindak sebagai otak atau pusat pemrosesan utama (CPU) yang membaca input dari sensor dan mengendalikan output berdasarkan program yang ditanamkan.
Touch Sensor (Modul TTP223): Berfungsi sebagai perangkat input untuk mendeteksi sentuhan fisik dari pengguna.
Infrared Sensor (IR Transmitter & Receiver): Berfungsi sebagai perangkat input untuk mendeteksi adanya halangan atau pergerakan objek yang melewati area perimeter pintu. Sensor ini memancarkan sinar inframerah dan membaca pantulannya jika ada objek yang melintas.
LED (Warna Merah): Bertindak sebagai perangkat output visual (indikator lampu) yang akan menyala ketika kondisi terpenuhi.
Buzzer: Bertindak sebagai perangkat output audio yang akan berbunyi sebagai peringatan/tanda ketika kondisi terpenuhi.
Push Button & Resistor (10k Ohm, 220 Ohm): Komponen pendukung tambahan. Push button biasanya digunakan untuk reset atau input manual tambahan, sedangkan resistor digunakan sebagai penahan arus (misalnya pada LED agar tidak putus).
B. Diagram Blok Sistem (Loop Tertutup)
Sistem ini beroperasi dengan prinsip closed-loop (loop tertutup) secara perangkat lunak, di mana mikrokontroler secara terus-menerus (dalam kalang
while(1)) memantau status masukan dan memperbarui status keluaran, serta menyimpan state atau kondisi terakhir (status sistem keamanan sedang aktif/ON atau nonaktif/OFF yang dipicu oleh sensor sentuh) sebagai umpan balik internal untuk menentukan apakah deteksi dari sensor IR akan dieksekusi menjadi alarm atau diabaikan.Berikut adalah representasi diagram bloknya:
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
A. Rangkaian Simulasi
Rangkaian simulasi "Alarm Perimeter Pintu" dirangkai menggunakan software Proteus. Pusat kendali rangkaian ini adalah mikrokontroler STM32F103C8 (Bluepill) yang membaca sinyal masukan dari dua sensor (Touch Sensor dan IR Sensor) dan mengendalikan indikator keluaran berupa LED Merah dan Buzzer. Terdapat juga komponen tambahan seperti push button dan resistor sebagai pendukung rangkaian listriknya.
B. Prinsip Kerja Rangkaian
Rangkaian "Alarm Perimeter Pintu" ini beroperasi secara berurutan berdasarkan mode keamanan (aktif/nonaktif) yang diatur oleh pengguna, serta deteksi rintangan di lapangan yang diproses oleh mikrokontroler STM32F103C8. Berikut adalah urutan prinsip kerjanya:
1. Kondisi Awal (Pemantauan Sistem)
Saat mikrokontroler pertama kali dihidupkan, sistem secara otomatis menginisialisasi parameter keamanannya. Mikrokontroler secara terus-menerus memantau dua jalur input secara bersamaan: Touch Sensor (sebagai saklar pengatur status) dan IR Sensor (sebagai pendeteksi area perimeter). Pada tahap awal ini, jika tidak ada rintangan yang terdeteksi, pin output belum dialiri arus sehingga LED dalam keadaan padam dan Buzzer tidak berbunyi.
2. Input Pengendali Status Keamanan (Touch Sensor)
Komponen yang bertindak sebagai saklar kontrol utama (toggle) dalam sistem ini adalah Touch Sensor. Ketika pengguna memberikan satu sentuhan pada sensor, mikrokontroler mendeteksi transisi perubahan kapasitansi (rising edge) dan membalikkan memori status internalnya. Sentuhan ini digunakan untuk beralih mode: menghidupkan (ON) atau mematikan (OFF) fungsi alarm sistem.
3. Kondisi Sistem Nonaktif (IR Sensor Diabaikan)
Jika melalui Touch Sensor pengguna menonaktifkan sistem (OFF), program mikrokontroler akan langsung mengubah state keluaran. Sebagai akibatnya, mikrokontroler akan sepenuhnya mengabaikan input dari IR Sensor. Walaupun di kemudian waktu IR Sensor mendeteksi adanya pergerakan atau objek yang lewat (mengirim sinyal HIGH), mikrokontroler tidak akan merespons. Output (LED dan Buzzer) akan dipaksa dalam keadaan nonaktif (padam dan diam).
4. Kondisi Sistem Aktif dan Deteksi Input (IR Sensor)
Sebaliknya, jika sistem diatur dalam kondisi Aktif (ON) melalui Touch Sensor, mikrokontroler mulai "membuka pintu" untuk memproses data dari IR Sensor. Ketika ada objek atau halangan (seperti manusia) yang melintasi perimeter pintu, pancaran inframerah akan memantul kembali ke receiver. IR Sensor merespons hal ini dengan mengirimkan sinyal digital berlogika HIGH (1) ke pin input mikrokontroler.
5. Eksekusi Output (LED dan Buzzer Berbunyi)
Merespons masuknya sinyal HIGH dari IR Sensor pada saat sistem sedang Aktif, mikrokontroler langsung mengeksekusi perintah bahaya. Mikrokontroler mengirimkan sinyal logika HIGH secara bersamaan ke dua pin outputnya. Arus listrik pun mengalir yang mengakibatkan LED menyala (sebagai indikator visual peringatan) dan Buzzer berbunyi nyaring (sebagai alarm audio bahwa perimeter telah ditembus). Ketika objek tersebut menjauh dan IR sensor kembali berlogika LOW (0), alarm akan otomatis berhenti berbunyi, dan sistem kembali ke mode pemantauan (standby).
4. Flowchart dan Listing Program [Kembali]
A. Flowchart Logika
B. Listing Program Bahasa C
1. Deklarasi Library, Variabel Global, dan Prototipe Fungsi
#include "main.h": Memasukkan header file yang berisi definisi khusus dan pustaka HAL untuk STM32.
uint8_t system_enable = 1;: Mendeklarasikan variabel global sebagai status sistem keamanan (1 = Aktif/ON, 0 = Nonaktif/OFF). Nilai awalnya adalah 1 (Aktif).
uint8_t touch_last = 0;: Mendeklarasikan variabel untuk menyimpan memori status sensor sentuh sebelumnya. Digunakan untuk logika edge detection (mendeteksi perubahan).
void SystemClock_Config(void);&static void MX_GPIO_Init(void);: Deklarasi awal (prototipe) fungsi agar bisa dipanggil di dalam fungsimainsebelum fungsi tersebut dijabarkan di bawah.2. Fungsi Utama (
main) dan Inisialisasi Dasar
int main(void): Titik awal jalannya program mikrokontroler.
HAL_Init();: Mereset seluruh periferal dan menginisialisasi pustaka dasar antarmuka perangkat keras (HAL).
SystemClock_Config();: Mengatur kecepatan dan sumber detak (clock) sistem mikrokontroler.
MX_GPIO_Init();: Memanggil fungsi pengaturan pin Input dan Output.3. Logika Utama (Loop
while(1)) - Deteksi Saklar Touch Sensor
while (1): Kalang (loop) tak terbatas, memastikan program berjalan terus-menerus.
uint8_t touch_now = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1);: Membaca status pin PA1 (Sensor Touch) saat ini dan menyimpannya di variabeltouch_now.
if (touch_now == GPIO_PIN_SET && touch_last == GPIO_PIN_RESET): Logika Rising Edge. Kondisi ini hanya bernilai benar (True) TEPAT pada saat sensor disentuh (perubahan dari mati menjadi hidup), mengabaikan sentuhan yang ditahan lama.
system_enable = !system_enable;: Jika disentuh, nilai status keamanan dibalik (toggle). Jika sebelumnya 1 (Aktif) menjadi 0 (Nonaktif), begitu juga sebaliknya.
HAL_Delay(200);: Jeda 200 milidetik untuk debouncing, mencegah satu sentuhan terbaca berkali-kali.
touch_last = touch_now;: Menyimpan status sentuhan saat ini untuk dibandingkan pada perulangan berikutnya.4. Logika Utama - Eksekusi Alarm berdasarkan Status Sistem
if (system_enable): Mengecek apakah sistem dalam keadaan Aktif (bernilai 1).
if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_SET): Jika sistem Aktif, program membaca pin PA0 (Sensor IR). Jika bernilai SET (ada objek/halangan):
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);: Menyalakan output di PB0 (contoh: LED).
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);: Menyalakan output di PB1 (contoh: Buzzer).
else: Jika sistem Aktif, namun sensor IR TIDAK mendeteksi objek:
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);: Mematikan output PB0.
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);: Mematikan output PB1.
else: Kondisi jika sistem dalam keadaan Nonaktif (OFF):
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);&HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);: Langsung mematikan semua output (LED dan Buzzer) tanpa perlu mengecek sensor IR. Alarm diabaikan sepenuhnya.5. Fungsi Konfigurasi Perangkat Keras (Di luar Main)
void SystemClock_Config(void): Fungsi pengaturan detak internal mikrokontroler (HSI Oscillator). Mengatur pembagian arus clock agar sistem berjalan stabil sesuai kebutuhan bawaan.
static void MX_GPIO_Init(void): Fungsi inisialisasi pin (GPIO).
__HAL_RCC_GPIOA_CLK_ENABLE();&__HAL_RCC_GPIOB_CLK_ENABLE();: Mengalirkan clock (daya aktif) ke Port A dan Port B.
HAL_GPIO_WritePin(GPIOB, ... , GPIO_PIN_RESET);: Memastikan pin PB0 dan PB1 dalam kondisi mati saat mikrokontroler baru dihidupkan.Blok Input: Mengonfigurasi Pin PA0 dan PA1 sebagai
GPIO_MODE_INPUTdengan resistor internalGPIO_PULLDOWN.Blok Output: Mengonfigurasi Pin PB0 dan PB1 sebagai
GPIO_MODE_OUTPUT_PP(Push-Pull) untuk memberikan arus ke komponen beban (LED/Buzzer).
void Error_Handler(void): Menangkap dan menghentikan program dalam loop tak terbatas jika terjadi kegagalan saat inisialisasi clock di awal.
Modul 1 Percobaan 3
Alarm Perimeter Pintu
- Rangkaian Proteus .pdsprj disini
- Listing Program .workspace XML disini
- Listing Program .hex disini
- Video Demo Rangkaian disini
- Datasheet Touch Sensor disini
- Datasheet IR Sensor disini
- Datasheet STM32F103C8 disini
- Datasheet LED Red disini
- Datasheet Buzzer Active disini
- Library Touch Sensor disini
- Library IR Sensor disini
Tidak ada komentar:
Posting Komentar