Laporan Akhir 2



SISTEM DETEKSI JARAK PADA PARKIR MUNDUR


a. 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.

b. 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  :








c. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

  • Rangkaian Simulasi
 








Prinsip Kerja : 

    Sistem ini dikendalikan oleh mikrokontroler STM32 NUCLEO-G474RE yang secara terus-menerus memantau input dari sensor. Agar sistem tetap responsif setiap 10 milidetik tanpa memblokir proses lain (non-blocking), sistem tidak menggunakan jeda waktu statis, melainkan memanfaatkan fungsi HAL_GetTick() sebagai pewaktu.

Mode Operasi Normal

    Pengemudi mengaktifkan mode parkir mundur dengan menekan tombol (switch) yang terhubung pada pin PA0. Setelah aktif, sensor inframerah (IR) pada pin PA1 akan mulai memindai area belakang kendaraan. Mikrokontroler membaca status sensor ini menggunakan fungsi HAL_GPIO_ReadPin(). Jika area belakang kosong, mikrokontroler menyalakan LED Hijau (pin PB0) sebagai tanda bahwa laju mundur aman dilakukan. Jika sensor IR mendeteksi adanya halangan, sistem merespons dengan menyalakan LED Merah (pin PB1) dan membunyikan Buzzer (pin PB2) untuk memperingatkan pengemudi.

Mode Darurat (Deteksi Transisi Cepat)

    Fitur unggulan dari sistem ini adalah kemampuannya mendeteksi potensi tabrakan yang terjadi secara mendadak. Saat sensor IR beralih dari kondisi "tidak mendeteksi" menjadi "mendeteksi objek", sistem akan menghitung selisih waktunya. Waktu awal dicatat pada variabel ir_not_detect_time tepat saat sensor kehilangan objek. Apabila objek baru terdeteksi dalam kurun waktu kurang dari 500 milidetik (menandakan ada benda yang melintas tiba-tiba atau mobil mundur terlalu cepat), sistem akan langsung menonaktifkan mode normal dan beralih ke Mode Darurat.

Respon dan Reset Mode Darurat

    Dalam Mode Darurat, Buzzer akan berbunyi nyaring secara terus-menerus. Sementara itu, LED Merah dan LED Biru akan menyala berkedip secara bergantian setiap 100 milidetik. Efek kedip ini diproses menggunakan metode timestamp comparison agar tidak menghentikan siklus pembacaan mikrokontroler. Mode ini akan mengunci sistem dan tidak akan mati dengan sendirinya. Untuk menghentikan peringatan darurat, pengemudi harus menekan kembali switch PA0. Mikrokontroler akan mendeteksi tekanan ini sebagai transisi sinyal naik (rising edge) melalui variabel switch_last, yang kemudian mereset sistem kembali ke kondisi awal.


d. Flowchart dan Listing Program [Kembali]

  • Flowchart






  • Listing Program


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) { } }




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

e. Video Demo [Kembali]



f. Analisa [Kembali]










g. Download File [Kembali]

File TP [Download]

File Analisa [Download]

Video Demo [Download]

Download Datasheet Sensor Infrared [Download]

Download Datasheet Resistor [Download]

Download Datasheet LED RGB [Download]

Download Datasheet Buzzer [Download] 

Download Datasheet Relay [Download]


Kembali ke Halaman Atas

 

 

 

Komentar

Postingan populer dari blog ini