Laporan Akhir 2
1. Prosedur [kembali]
1. Menyiapkan alat dan bahan berupa STM32 NUCLEO-G474RE, infrared sensor, buzzer, LED
RGB, resistor 1k ohm, switch, adaptor, breadboard, dan kabel jumper.
2. Merangkai rangkaian sesuai dengan ketentuan pada modul percobaan 2 dengan menghubungkan
sensor dan switch sebagai input serta LED RGB dan buzzer sebagai output ke pin GPIO
mikrokontroler.
3. Menghubungkan board STM32 NUCLEO-G474RE ke laptop menggunakan kabel USB.
4. Membuat project baru pada software STM32CubeIDE sesuai dengan tipe board yang digunakan.
5. Mengatur konfigurasi GPIO dengan menjadikan pin input sebagai GPIO input dan pin output
sebagai GPIO output.
6. Melakukan generate code pada STM32CubeIDE.
7. Memasukkan listing program percobaan 2 ke dalam file main.c serta menyesuaikan konfigurasi
pin pada file main.h.
8. Melakukan proses build dan upload program ke mikrokontroler melalui koneksi USB.
9. Menguji sistem dengan mengaktifkan switch dan mengamati respon LED serta buzzer terhadap
pembacaan infrared sensor.
2. Hardware dan Diagram Blok [kembali]
A. Hardware
1. STM32 NUCLEO-G474RE
3. Rangkaian Simulasi dan Prinsip Kerja [kembali]
Prinsip Kerja:
Sistem deteksi jarak pada parkir mundur bekerja dengan memanfaatkan dua input yaitu switch dan
infrared sensor yang diproses oleh mikrokontroler. Switch berfungsi sebagai pengaktif atau
penonaktif sistem. Ketika switch dalam kondisi tidak aktif (logika LOW), maka seluruh output
berupa LED dan buzzer berada dalam kondisi mati.
Ketika switch dalam kondisi aktif (logika HIGH), sistem mulai bekerja dengan membaca kondisi
infrared sensor. Jika sensor tidak mendeteksi objek (logika LOW), maka LED indikator pertama akan
menyala, yang menunjukkan bahwa jarak masih aman. Namun, jika sensor mendeteksi adanya objek
(logika HIGH), maka LED indikator lainnya akan menyala bersamaan dengan buzzer sebagai
peringatan bahwa objek sudah berada pada jarak dekat.
Dengan demikian, sistem ini memberikan indikasi visual melalui LED dan indikasi suara melalui
buzzer berdasarkan kondisi jarak yang dideteksi oleh sensor, serta hanya aktif ketika switch
dihidupkan.
4. Flowchart dan Listing Program [kembali]
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.APB1CLK
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
5. Video Demo [kembali]
6. Analisa [kembali]
7. Download File [kembali]



Komentar
Posting Komentar