Laporan Akhir 1
Persiapan Kode (Editor Sebelah Kiri)
Pastikan kode program sudah lengkap dan tidak ada error penulisan. Berdasarkan tangkapan layar, kamu sudah mendefinisikan pin berikut:
PA0: Push Button (Gigi Mundur)
PA1: Sensor IR (Objek)
PB0: LED Hijau
PB1: LED Merah
PB2: Buzzer
Memulai Simulasi
Klik tombol "Play" (ikon segitiga hijau) yang berada di bagian tengah atas area simulasi.
Wokwi akan melakukan kompilasi kode.
Jika berhasil, status di bagian bawah akan berubah menjadi "Running".
Menguji Logika Rangkaian
Setelah simulasi berjalan, kamu bisa melakukan interaksi berikut untuk melihat apakah sistem bekerja sesuai logika if (switchState == HIGH) pada kode:
Langkah A: Aktifkan Sistem (Gigi Mundur) Klik pada Push Button (tombol hijau di kiri atas). Jika ini ditekan, sistem dianggap aktif.
Langkah B: Simulasi Deteksi Objek Klik pada komponen Slide Switch (yang bertindak sebagai Sensor IR di bawah tombol). Geser atau klik untuk mengubah status inputnya.
Langkah C: Amati Output
LED RGB: Perhatikan apakah warna berubah dari Hijau ke Merah saat sensor mendeteksi "objek".
Buzzer: Jika jarak objek terlalu dekat (berdasarkan logika program), komponen bulat hitam di kanan atas akan mengeluarkan animasi gelombang suara.
2. Hardware dan Diagram Blok [Kembali]
Microcontroller: STM32 Nucleo-C031C6 (Otak pemrosesan).
Input: * Push Button (Simulasi Sakelar Gigi Mundur).
Slide Switch/IR Sensor (Simulasi deteksi halangan).
Output: * LED RGB (Indikator visual: Hijau aman, Merah bahaya).
Buzzer (Peringatan suara).
Komponen Pendukung: Resistor (Pull-down untuk input yang stabil).
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
Tentu, ini adalah parafrase dari deskripsi sistem STM32 tersebut agar lebih profesional, terstruktur, dan mudah dipahami untuk kebutuhan dokumentasi teknis maupun laporan proyek:
Deskripsi Operasional Sistem Keamanan Berbasis STM32
Sistem ini bekerja secara iteratif dalam siklus Infinite Loop (while(1)), di mana logika kontrol dipisahkan menjadi dua tahapan utama: kendali daya sistem dan kendali peringatan berbasis sensor.
1. Kendali Aktivasi (Main Power Switch)
Mikrokontroler melakukan pemindaian awal pada Pin PA0 untuk menentukan status operasional sistem:
Mode Standby (Input LOW): Jika tombol tidak ditekan, sistem memasuki mode non-aktif. Seluruh output pada Port B (PB0, PB1, PB2) dipaksa ke kondisi LOW. Hal ini menjamin LED Merah, LED Hijau, dan Buzzer dalam keadaan mati total untuk efisiensi daya.
Mode Aktif (Input HIGH): Jika tombol ditekan, sistem mendapatkan izin operasional untuk melanjutkan ke tahap pemantauan sensor.
2. Logika Deteksi Sensor IR (Monitoring Tahap Kedua)
Ketika sistem dalam posisi aktif, mikrokontroler mengevaluasi sinyal dari simulasi sensor IR pada Pin PA1 dengan pembagian kondisi sebagai berikut:
A. Status Bahaya (Objek Terdeteksi)
Jika sensor mengirimkan sinyal LOW (logika Active Low untuk deteksi benda):
Output Peringatan: Pin PB1 (LED Merah) dan PB2 (Buzzer) diatur ke status HIGH (Aktif).
Output Indikator: Pin PB0 (LED Hijau) dimatikan (LOW).
Hasil: Sistem memberikan peringatan visual dan audio secara simultan.
B. Status Aman (Clear Area)
Jika objek menjauh dan sensor mengirimkan sinyal HIGH:
Output Peringatan: Arus ke Pin PB1 dan PB2 segera diputus (LOW), sehingga LED Merah mati dan Buzzer berhenti berbunyi.
Output Indikator: Pin PB0 (LED Hijau) diaktifkan (HIGH).
Hasil: Sistem memberikan sinyal visual bahwa kondisi telah kembali normal atau aman.
Gemini berkata
Tentu, ini adalah parafrase dari deskripsi sistem STM32 tersebut agar lebih profesional, terstruktur, dan mudah dipahami untuk kebutuhan dokumentasi teknis maupun laporan proyek:
Deskripsi Operasional Sistem Keamanan Berbasis STM32
Sistem ini bekerja secara iteratif dalam siklus Infinite Loop (while(1)), di mana logika kontrol dipisahkan menjadi dua tahapan utama: kendali daya sistem dan kendali peringatan berbasis sensor.
1. Kendali Aktivasi (Main Power Switch)
Mikrokontroler melakukan pemindaian awal pada Pin PA0 untuk menentukan status operasional sistem:
Mode Standby (Input LOW): Jika tombol tidak ditekan, sistem memasuki mode non-aktif. Seluruh output pada Port B (PB0, PB1, PB2) dipaksa ke kondisi LOW. Hal ini menjamin LED Merah, LED Hijau, dan Buzzer dalam keadaan mati total untuk efisiensi daya.
Mode Aktif (Input HIGH): Jika tombol ditekan, sistem mendapatkan izin operasional untuk melanjutkan ke tahap pemantauan sensor.
2. Logika Deteksi Sensor IR (Monitoring Tahap Kedua)
Ketika sistem dalam posisi aktif, mikrokontroler mengevaluasi sinyal dari simulasi sensor IR pada Pin PA1 dengan pembagian kondisi sebagai berikut:
A. Status Bahaya (Objek Terdeteksi)
Jika sensor mengirimkan sinyal LOW (logika Active Low untuk deteksi benda):
Output Peringatan: Pin PB1 (LED Merah) dan PB2 (Buzzer) diatur ke status HIGH (Aktif).
Output Indikator: Pin PB0 (LED Hijau) dimatikan (LOW).
Hasil: Sistem memberikan peringatan visual dan audio secara simultan.
B. Status Aman (Clear Area)
Jika objek menjauh dan sensor mengirimkan sinyal HIGH:
Output Peringatan: Arus ke Pin PB1 dan PB2 segera diputus (LOW), sehingga LED Merah mati dan Buzzer berhenti berbunyi.
Output Indikator: Pin PB0 (LED Hijau) diaktifkan (HIGH).
Hasil: Sistem memberikan sinyal visual bahwa kondisi telah kembali normal atau aman.
Tabel Ringkasan Logika Pin
4. Flowchart dan Listing Program [Kembali]
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
- Flame sensor → deteksi api
- Float sensor → deteksi level air (misalnya tangki penuh)
Output yang dikontrol:
- LED → indikator visual
- Buzzer → alarm suara
Gemini berkat
Analisa
1. Strategi Alokasi GPIO pada Development Board
Pemilihan pin GPIO (General Purpose Input Output) memerlukan perencanaan yang matang karena adanya fitur multiplexing, di mana satu pin dapat berfungsi sebagai input analog (ADC), protokol komunikasi (I2C/SPI), atau I/O digital. Integrasi yang tidak tepat dapat menyebabkan konflik periferal. Selain itu, aspek keamanan elektrikal sangat krusial; pengembang harus memastikan pin yang digunakan bersifat 5V-Tolerant jika berhadapan dengan sensor luar, guna menghindari kerusakan permanen akibat perbedaan level logika (3.3V vs 5V).
2. Hierarki Konfigurasi Pin I/O STM32
Berbeda dengan abstraksi sederhana pada Arduino, konfigurasi STM32 melibatkan manajemen sumber daya yang lebih mendalam. Langkah-langkahnya mencakup aktivasi Peripheral Clock Control (melalui RCC), penentuan karakteristik fisik pin (seperti pull-up/pull-down resistor dan output speed), serta inisialisasi melalui Hardware Abstraction Layer (HAL). Pendekatan ini memberikan kendali penuh terhadap konsumsi daya dan performa tiap pin.
3. Dinamika Sinyal Digital (Input/Output)
Secara teknis, mikrokontroler bekerja dengan memetakan level tegangan fisik ke dalam domain logika digital. Ambang tegangan mendekati (3.3V) diterjemahkan sebagai logika 1 (HIGH), sedangkan tegangan mendekati (0V) sebagai logika 0 (LOW). Pada sisi output, efektivitas beban (LED dan Buzzer) bergantung pada kemampuan pin dalam melakukan sourcing (menyuplai arus) atau sinking (menyerap arus) untuk mencapai level tegangan yang diinginkan.
4. Modularitas Kode: Sinergi main.h dan main.c
Pemisahan antara deklarasi (main.h) dan implementasi (main.c) menciptakan struktur kode yang modular. Dengan mendefinisikan alias atau label pin di dalam file header, perubahan tata letak perangkat keras di masa depan tidak akan mengganggu logika utama program. Hal ini mempermudah pemeliharaan kode (maintainability) dan portabilitas sistem.
5. Optimasi Respons: Polling vs Interrupt
Dalam mendeteksi sinyal, metode Polling (pemeriksaan rutin dalam loop) sering kali kurang efisien dan berisiko mengalami latensi. Sebagai alternatif, penggunaan External Interrupt (EXTI) jauh lebih unggul untuk aplikasi kritis seperti alarm. Dengan interrupt, CPU dapat menjalankan tugas lain dan hanya akan beralih ke rutin penanganan (ISR) saat terjadi perubahan transisi sinyal secara instan, sehingga meningkatkan efisiensi daya dan kecepatan respons.
6. Keunggulan Komputasi terhadap Logika Diskrit
Penggunaan mikrokontroler menggeser paradigma dari hard-wired logic ke software-defined logic. Fleksibilitas ini memungkinkan perubahan fungsionalitas sistem hanya melalui pembaruan firmware tanpa modifikasi sirkuit fisik. Selain menyederhanakan desain PCB dan menekan biaya produksi, mikrokontroler mampu menangani algoritma yang jauh lebih kompleks dan adaptif dibandingkan rangkaian gerbang logika konvensional.
Komentar
Posting Komentar