LAPORAN AKHIR 1
- Rangkai rangkaian pada board berdasarkan kondisi 6 percobaan yang terdapat pada modul 1
- Buat program untuk STM32F103C8 menggunakan software STM32CubeIDE.
- Sesuaikan desain program dengan kondisi percobaan
- Setelah program dibuat, jalankan simulasi rangkaian di STM32CubeIDE.
- Tekan push button untuk menguji dan memastikan bahwa LED RGB serta buzzer berfungsi sesuai dengan kondisi yang telah ditentukan.
- Selesai
2. Hardware dan Diagram Blok[Kembali]
Hardware
- STM32F103C8
- Sensor inframerah (IR)
- LED indikator
- Resistor pembatas arus
- Buzzer
- Push Button
Blok Diagram
3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]
Rangkaian Simulasi
Prinsip Kerja
Rangkaian ini mendeteksi keberadaan objek menggunakan sensor inframerah (IR). Jika sensor IR mendeteksi objek di depannya, ia akan mengirimkan sinyal digital ke mikrokontroler STM32F103C8. Mikrokontroler akan memberikan respons dengan mengaktifkan indikator visual berupa LED RGB dan buzzer.
- LED RGB menyala dengan warna tertentu sesuai dengan kondisi yang terdeteksi.
- Buzzer berbunyi sebagai alarm ketika objek terdeteksi atau tombol ditekan.
- Push Button berfungsi untuk memberikan input tambahan.
- Sumber daya 5V digunakan untuk mengoperasikan seluruh sistem.
- Jika sensor IR mendeteksi gerakan → LED hijau menyala, buzzer berbunyi.
- Jika push button ditekan → LED biru menyala, buzzer berbunyi.
- Jika sensor IR mendeteksi gerakan & push button ditekan → LED menyala cyan (hijau + biru).
1. Inisialisasi Sistem
- Menggunakan HAL (Hardware Abstraction Layer) untuk konfigurasi STM32.
- GPIO (General Purpose Input/Output) diinisialisasi untuk LED, buzzer, sensor IR, dan push button.
- Konfigurasi clock dilakukan menggunakan HSI (High-Speed Internal).
2. Loop Utama (while(1))
- Membaca status tombol push button dari GPIOB, BUTTON_Pin.
- Membaca status sensor IR dari GPIOB, IR_Pin.
- Mengatur LED dan buzzer sesuai kondisi:
- Jika tombol ditekan → LED merah menyala, buzzer aktif.
- Jika sensor IR mendeteksi objek → LED hijau menyala, buzzer aktif.
- Jika keduanya aktif → LED cyan menyala.
3. Fungsi Pendukung:
- SystemClock_Config() → Mengatur sistem clock menggunakan HSI 8 MHz.
- MX_GPIO_Init() → Mengatur mode pin GPIO sebagai input (sensor, tombol) dan output (LED, buzzer).
- Error_Handler() → Digunakan untuk menangani error jika terjadi kesalahan konfigurasi.
4. Flowchart dan Listing Program[Kembali]
Flowchart
Listing Program
#include "main.h"
void SystemClock_Config(void); static void MX_GPIO_Init(void);
int main(void) {
HAL_Init();
/* Configure the system clock */ SystemClock_Config();
MX_GPIO_Init();
/* Infinite loop */ while (1) { /* USER CODE END WHILE */ uint8_t button_status = HAL_GPIO_ReadPin(GPIOB, BUTTON_Pin); uint8_t ir_status = HAL_GPIO_ReadPin(GPIOB, IR_Pin);
HAL_GPIO_WritePin(GPIOA, GREEN_Pin | RED_Pin | BUZZER_Pin, GPIO_PIN_RESET);
if (button_status == GPIO_PIN_SET) { HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOA, BUZZER_Pin, GPIO_PIN_SET); }
if (ir_status == GPIO_PIN_SET) { HAL_GPIO_WritePin(GPIOA, GREEN_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOA, BUZZER_Pin, GPIO_PIN_SET); } HAL_Delay(100);
/* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ }
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(); }
/** Initializes the CPU, AHB and APB buses clocks */ 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();
/*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOA, RED_Pin|GREEN_Pin|BUZZER_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_RESET);
/*Configure GPIO pins : RED_Pin GREEN_Pin BUZZER_Pin */ GPIO_InitStruct.Pin = RED_Pin|GREEN_Pin|BUZZER_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/*Configure GPIO pin : BLUE_Pin */ GPIO_InitStruct.Pin = BLUE_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(BLUE_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pins : BUTTON_Pin IR_Pin */ GPIO_InitStruct.Pin = BUTTON_Pin|IR_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
void Error_Handler(void) { __disable_irq(); while (1) { } /* USER CODE END Error_Handler_Debug */ }
#ifdef USE_FULL_ASSERT void assert_failed(uint8_t *file, uint32_t line) { #endif /* USE_FULL_ASSERT */
|
Percobaan 6 : Buzzer, LED RGB, Push Button, dan Sensor Infrared
Download HTML disini
Download Rangkaian program disini
Download Listing Program disini
Download Datasheet STM32F103C8T6 disini
Download Video disini








.jpeg)
Komentar
Posting Komentar