Laporan Akhir 1 Percobaan 4




1. Prosedur [Kembali]

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

2. 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".

3. 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]




  1. dentifikasi Hardware:

    1. Microcontroller: STM32 Nucleo-C031C6 (Otak pemrosesan).

    2. Input: * Push Button (Simulasi Sakelar Gigi Mundur).

      • Slide Switch/IR Sensor (Simulasi deteksi halangan).

    3. Output: * LED RGB (Indikator visual: Hijau aman, Merah bahaya).

      • Buzzer (Peringatan suara).

    4. Komponen Pasif: Resistor (Pull-down untuk input yang stabil).

    Diagram Blok Loop Tertutup:

3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]


Sistem ini dieksekusi secara terus-menerus (dalam blok while(1)) dengan urutan kejadian sebagai berikut:

Langkah 1: Pengecekan Saklar Utama (Tombol) Mikrokontroler STM32 pertama kali akan melihat status tombol di PA0.

  • Jika tombol TIDAK DITEKAN (LOW), sistem dianggap mati/standby. Mikrokontroler akan secara paksa mematikan aliran listrik ke semua output (LED Merah mati, LED Hijau mati, Buzzer mati) untuk menghemat energi atau memastikan keamanan.

  • Jika tombol DITEKAN (HIGH), sistem aktif dan lanjut ke Langkah 2.

Langkah 2: Pemantauan Sensor IR Saat sistem aktif, STM32 akan memantau sinyal dari saklar simulasi IR di PA1. Ada dua kemungkinan kondisi:

  • Kondisi A: Mendeteksi Benda (Bahaya) Jika sensor mensimulasikan ada benda di depannya, ia akan mengirimkan sinyal LOW ke pin PA1.

    • Respon Sistem: Mikrokontroler mengirimkan tegangan (HIGH) ke pin PB1 dan PB2. Akibatnya, LED Merah menyala dan Buzzer berbunyi sebagai peringatan. Di saat yang sama, tegangan ke PB0 diputus (LOW) sehingga LED Hijau mati.

  • Kondisi B: Perubahan Menjadi Tidak Mendeteksi Benda (Aman) Sesuai permintaan Anda, jika benda tersebut menjauh dan sensor tidak lagi mendeteksinya, sensor akan mengirimkan sinyal HIGH ke pin PA1.

    • Respon Sistem: Mikrokontroler langsung memutus tegangan (LOW) dari pin PB1 dan PB2. Akibatnya, LED Merah mati dan Buzzer langsung berhenti berbunyi. Kemudian, tegangan (HIGH) dialirkan ke pin PB0 sehingga LED Hijau menyala, menandakan area sudah aman atau clear.

Singkatnya, tombol berfungsi sebagai izin nyala sistem, sementara sensor (slide switch) bertindak sebagai pemicu untuk menukar kondisi antara "Peringatan (Merah + Bunyi)" dan "Aman (Hijau + Sunyi)".

4. Flowchart dan Listing Program [Kembali]

Listing Program:

#include "main.h" void SystemClock_Config(void); static void MX_GPIO_Init(void); int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); while (1)
GPIO_PinState flame_state; GPIO_PinState float_state; flame_state = HAL_GPIO_ReadPin(FLAME_PORT, FLAME_PIN); float_state = HAL_GPIO_ReadPin(FLOAT_PORT, FLOAT_PIN); /* ===== FLAME SENSOR ===== */ if (flame_state == GPIO_PIN_SET) { /* Api terdeteksi */ HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET); HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_SET); } else { HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET); HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_RESET); } /* ===== RELAY / POMPA ===== */ if ((flame_state == GPIO_PIN_SET) || (float_state == GPIO_PIN_SET)) { /* Api ATAU tangki penuh → pompa MATI */ HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_RESET); } else { /* Aman & tangki belum penuh → pompa HIDUP */ HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_SET); } HAL_Delay(100); } } static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; __HAL_RCC_GPIOA_CLK_ENABLE(); /* INPUT */ GPIO_InitStruct.Pin = FLAME_PIN | FLOAT_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* OUTPUT */ GPIO_InitStruct.Pin = LED_PIN | BUZZER_PIN | RELAY_PIN; GPIO_InitStruct.Mode = GPI
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* Relay default ON */ HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_SET); } void SystemClock_Config(void) { /* Clock default CubeIDE */ } void Error_Handler(void) { while (1) {} }

5. Video Demo [Kembali]

6. Kondisi [Kembali]

Program ini merepresentasikan sistem proteksi kebakaran + kontrol pompa berbasis dua sensor, yaitu:

  • Flame sensor → deteksi api
  • Float sensor → deteksi level air (misalnya tangki penuh)

Output yang dikontrol:

  • LED → indikator visual
  • Buzzer → alarm suara

7. Video Simulasi [Kembali]

8. Download File [Kembali]

ANALISA

1. Pengaruh Pemilihan GPIO pada Development Board
Setiap pin GPIO pada mikrokontroler memiliki fungsi alternatif (multiplexing), seperti sebagai input analog (ADC), jalur komunikasi (I2C, SPI, UART), maupun I/O digital biasa. Oleh karena itu, pemilihan pin harus dilakukan dengan cermat agar tidak mengganggu fungsi periferal lain yang dibutuhkan. Selain itu, kesalahan dalam pemilihan pin juga dapat menimbulkan risiko kerusakan, terutama jika terjadi ketidaksesuaian level tegangan, misalnya pemberian tegangan 5V pada pin yang hanya mendukung 3.3V.

2. Deklarasi Pin Input/Output pada STM32
Proses konfigurasi pin I/O pada STM32 relatif lebih kompleks dibandingkan platform seperti Arduino. Tahapannya meliputi pengaktifan clock pada port GPIO yang digunakan, pengaturan parameter pin (mode, pull-up/pull-down, dan kecepatan), kemudian melakukan inisialisasi menggunakan pustaka seperti HAL agar konfigurasi tersebut diterapkan pada perangkat keras.

3. Mekanisme Penerimaan Input dan Pengeluaran Output
Pada sisi input, mikrokontroler membaca level tegangan yang masuk ke pin, di mana tegangan mendekati 3.3V diinterpretasikan sebagai logika HIGH (1) dan mendekati 0V sebagai logika LOW (0). Sementara itu, pada sisi output, mikrokontroler mengendalikan kondisi pin untuk menghasilkan logika HIGH dengan memberikan tegangan (source) atau logika LOW dengan menghubungkannya ke ground (sink).

4. Pengaruh Perubahan File main.h terhadap main.c
File main.h berfungsi sebagai tempat deklarasi dan definisi yang berkaitan dengan konfigurasi perangkat keras, seperti penamaan pin. Sedangkan main.c berisi implementasi logika program. Dengan struktur ini, perubahan pada konfigurasi pin cukup dilakukan di main.h, sehingga main.c tidak perlu dimodifikasi secara signifikan karena akan menyesuaikan secara otomatis melalui referensi tersebut.

5. Metode Pendeteksian Input pada STM32 (Polling vs Interrupt)
Terdapat dua metode utama dalam membaca input, yaitu polling dan interrupt. Pada metode polling, mikrokontroler secara terus-menerus memeriksa status pin, yang dapat menyebabkan pemborosan sumber daya CPU dan berpotensi melewatkan perubahan cepat. Sebaliknya, metode interrupt (EXTI) memungkinkan mikrokontroler merespons hanya ketika terjadi perubahan sinyal pada pin, sehingga lebih efisien dan memiliki respons yang lebih cepat, terutama untuk aplikasi real-time seperti sistem alarm.

6. Keunggulan Mikrokontroler dibandingkan Rangkaian Logika
Mikrokontroler menawarkan fleksibilitas yang jauh lebih tinggi karena fungsi logika dapat diubah melalui perangkat lunak tanpa perlu melakukan perubahan fisik pada rangkaian. Selain itu, satu mikrokontroler mampu menggantikan banyak komponen logika diskrit, sehingga desain menjadi lebih sederhana, hemat biaya, serta memiliki kemampuan pemrosesan yang lebih kompleks dan adaptif.




 

Komentar