LA 2 mikro M1




PERCOBAAN 6

1. Prosedur[Kembali]

1. Rangkai semua komponen pada breadboard yang terhubung ke mikrokontroler STM32.
2. Buat program untuk mikrokontroler STM32 nya.
3. Inputkan program ke dalam mikrokontroler melalui ST-Link V2 Driver.
4. Setelah program diinputkan, uji rangkaian yang telah dirangkai sesuai dengan output yang       ditentukan.
5. Selesai.

2. Hardware dan Diagram Blok[Kembali]

1) Raspberry Pi Pico




2. Push Button

push button 4 kaki di Sabara Mikro | Tokopedia

3. Breadboard
BREADBOARD / PROJECTBOARD / PROTOBOARD 400 HOLES di M-kontrol | Tokopedia
 
4. Buzzer
5. LED RGB


6. ST-Link V2 Driver







Diagram Blok  :

3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

Rangkaian Simulasi: 







Prinsip Kerja:

    Program berfungsi untuk mengontrol LED dan buzzer menggunakan input dari push button serta sensor inframerah (IR) dengan mikrokontroler STM32. Pada awal eksekusi, sistem melakukan serangkaian inisialisasi, dimulai dengan pemanggilan fungsi HAL_Init(), yang mengaktifkan HAL Library agar dapat digunakan dalam program. Selanjutnya, sistem mengonfigurasi clock melalui fungsi SystemClock_Config(), di mana HSI (High-Speed Internal Clock) digunakan sebagai sumber clock utama tanpa PLL, serta memastikan bahwa bus sistem seperti AHB, APB1, dan APB2 berjalan pada kecepatan yang sesuai.

    Setelah konfigurasi clock, sistem menginisialisasi pin GPIO melalui fungsi MX_GPIO_Init(). Dalam proses ini, pin untuk LED merah, LED hijau, dan buzzer dikonfigurasi sebagai output, sedangkan push button dan sensor IR dikonfigurasi sebagai input tanpa pull-up atau pull-down. Semua output kemudian diatur ke LOW (mati) untuk memastikan sistem mulai dalam kondisi awal yang stabil.

    Dalam fungsi main(), sistem memasuki loop utama yang terus berjalan untuk membaca status push button dan sensor IR. Status ini diperoleh menggunakan HAL_GPIO_ReadPin(), di mana nilai yang terbaca dari push button disimpan dalam variabel button_status, sedangkan nilai dari sensor IR disimpan dalam ir_status. Saat push button ditekan (GPIO_PIN_SET), sistem akan menyalakan LED merah dan buzzer, menunjukkan bahwa tombol sedang aktif. Sebaliknya, jika sensor IR mendeteksi keberadaan objek (GPIO_PIN_SET), sistem akan menyalakan LED hijau dan buzzer sebagai indikasi.

    Untuk memastikan stabilitas pembacaan inputnya, program menyertakan HAL_Delay(100), yang memberikan jeda 100 milidetik guna mengatasi efek bouncing pada tombol mekanis. Setelah delay ini, sistem kembali ke awal loop untuk membaca status tombol dan sensor secara terus-menerus. Dengan demikian, program ini memungkinkan kontrol sederhana atas LED dan buzzer berdasarkan kondisi input dari push button serta sensor IR, dengan sistem yang berjalan secara real-time dan responsif terhadap perubahan lingkungan.

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(); SystemClock_Config(); MX_GPIO_Init(); while (1) {
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); } } 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(); } 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(); HAL_GPIO_WritePin(GPIOA, RED_Pin|GREEN_Pin|BUZZER_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_RESET); 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); 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); 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) { }
} #ifdef USE_FULL_ASSERT void assert_failed(uint8_t *file, uint32_t line) { } #endif

5. Video demo[Kembali]


6. Analisa[Kembali]












7. Download File[Kembali]

Rangkaian Simulasi [Download]
Video Simulasi [Download]
Datasheet STM32F103C8 [Download]
Datasheet Resistor [Download]
Datasheet LED [Download]



Komentar

Postingan populer dari blog ini