Minggu, 12 April 2026

Modul 1 : Laporan Akhir 2

 

 [KEMBALI KE MENU SEBELUMNYA]


DAFTAR ISI
1. Prosedur
2. Hardware dan Diagram Blok
3. Rangkaian Simulasi dan Prinsip Kerja
4. Flowchart dan Listing Program
5. Video Demo
6. Analisa
7. Download File


Laporan Akhir Percobaan 2
Sistem Deteksi Jarak pada Parkir Mundur

1. Prosedur 
[Kembali]

1. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
2. Buat program untuk mikrokontroler STM32 NUCLEO-G474RE di software STM32 CubeIDE.
3. Compile program dalam format hex, lalu upload ke dalam mikrokontroler.
4. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.
5. Selesai.

2. Hardware dan Diagram Blok [Kembali]

Hardware :

a) Mikrokontroler STM32 NUCLEO-G474RE








2. Infrared Sensor

Infrared Sensor Module



3. Buzzer


4. Power Supply

 
5. RGB LED
Jual LED RGB 4 PIN WARNA MERAH HIJAU BIRU 5mm ( ARDUINO ) - Common Cathode  - Jakarta Barat - Ardushop-id | Tokopedia

6. Resistor 1k Ohm



7. Switch



8. Adaptor



9. Breadboard



Diagram Blok  :



3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi Sebelum dirunning:






Prinsip Kerja : 
 

Percobaan 2 menggunakan STM32 NUCLEO-G474RE (pada rangkaian diimplementasikan sebagai NUCLEO-C031C6) untuk mensimulasikan sistem deteksi jarak parkir mundur pada kendaraan. Switch pada PA0 berperan sebagai kondisi "gigi mundur aktif" — hanya ketika switch ini dalam kondisi SET (HIGH), mikrokontroler akan membaca data dari IR Sensor pada PA1. Jika IR Sensor mendeteksi objek (GPIO_PIN_RESET karena pull-down), LED Merah pada PB1 dan Buzzer pada PB2 dinyalakan sebagai peringatan, sementara LED Hijau pada PB0 dipadamkan. Sebaliknya, saat tidak ada objek terdeteksi, LED Hijau menyala menandakan area parkir aman. Delay HAL_Delay(50) ditambahkan di akhir setiap iterasi untuk mencegah pembacaan sensor yang terlalu cepat dan menstabilkan debounce, sekaligus menjaga responsivitas sistem tetap baik bagi pengguna.


4. Flowchart dan Listing Program [Kembali]

Flowchart :





Listing Program :

a. main.c

#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)

{

if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET)

{

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);

}

else

{

if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_RESET)

{

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);

}

else

{

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);

}

}

HAL_Delay(50);

}

}

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;

if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)

{

Error_Handler();

}

RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK |

RCC_CLOCKTYPE_SYSCLK

| RCC_CLOCKTYPE_PCLK1;

RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;

RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;

RCC_ClkInitStruct.APB1CLKDivider = 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_GPIOA_CLK_ENABLE();

__HAL_RCC_GPIOB_CLK_ENABLE();

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_PIN_2;

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)

{

}

}


b. main.h

#ifndef __MAIN_H

#define __MAIN_H

#ifdef __cplusplus

extern "C" {

#endif

#include "stm32c0xx_hal.h"

void Error_Handler(void);

#define BUTTON_REVERSE_Pin GPIO_PIN_0

#define BUTTON_REVERSE_GPIO_Port GPIOA

#define IR_SENSOR_Pin GPIO_PIN_1

#define IR_SENSOR_GPIO_Port GPIOA

#define LED_GREEN_Pin GPIO_PIN_0

#define LED_GREEN_GPIO_Port GPIOB

#define LED_RED_Pin GPIO_PIN_1

#define LED_RED_GPIO_Port GPIOB

#define BUZZER_Pin GPIO_PIN_2

#define BUZZER_GPIO_Port GPIOB

#ifdef __cplusplus

}

#endif

#endif


5. Video Demo [Kembali]








6. Analisa [Kembali]

1. Bagaimana pengaruh pemilihan GPIO pada masing-masing development board?

Jawab:

Pada praktikum general input-output, pemilihan GPIO pada STM32 krusial karena tiap pin memiliki mode, fungsi alternatif, serta karakteristik listrik berbeda, sehingga menentukan keberhasilan pembacaan input dan pengendalian output secara optimal tanpa konflik periferal.

 

2. Bagaimana program deklarasi pin I/O pada STM32F103C8?

Jawab:

Deklarasi pin I/O dilakukan dengan mengaktifkan clock GPIO dan mengatur register (mode input/output, pull-up/down, dan tipe output) melalui HAL atau register langsung agar pin dapat beroperasi sesuai fungsi dasar input atau output digital.

 

3. Analisa bagaimana menerima Input dan mengeluarkan Output pada STM32F103C8!

Jawab:

Input dibaca dari register IDR melalui polling atau interrupt (EXTI), kemudian diproses oleh CPU dan menghasilkan output melalui penulisan ke ODR/BSRR, membentuk alur dasar sistem digital yaitu sensing–processing–actuating.

 

4. Analisa pengaruh perubahan program pada main.h terhadap program main.c!

Jawab:

Perubahan pada main.h akan mempengaruhi main.c karena berisi definisi pin dan prototipe fungsi, sehingga perubahan konfigurasi I/O di header akan langsung berdampak pada implementasi dan hasil kompilasi program utama.

 

5. Analisa bagaimana program dalam analisa metode pendeteksian Inputan pada STM32F103C8!

Jawab:

Pendeteksian input pada praktikum ini menggunakan metode polling atau interrupt, dengan perhatian pada debouncing untuk memastikan sinyal input stabil dan valid sebelum diproses menjadi aksi output.

 

6. Analisa kelebihan mikrokontroler dibanding rangkaian logika!

Jawab:

Mikrokontroler lebih unggul dibanding rangkaian Logic Gates dalam konteks general I/O karena fleksibel (programmable), mampu menangani banyak kondisi input-output secara dinamis, dan mengintegrasikan fungsi kontrol dalam satu sistem yang efisien.

 

 





7. Download File [Kembali]

Download HTML [Download]
Download File Rangkaian [Download] [wokwi link]
Download Listing Program [Download]
Datasheet Mikrokontroler STM32 NUCLEO-G474RE [Download]
Datasheet Sensor Infrared [Download]
Datasheet RGB LED [Download]
Datasheet Buzzer [Download]
Download Datasheet Resistor [Download]

Tidak ada komentar:

Posting Komentar

Modul 1 : Laporan Akhir 2

   [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Prosedur 2. Hardware dan Diagram Blok 3. Rangkaian Simulasi dan Prinsip Kerja 4. Flowchart dan...