LA percobaan 6






1. Prosedur [kembali]

  1. Siapkan alat-alat yang diperlukan 
  2. Hubungkan Sensor IR.
  3. Hubungkan push Button
  4. Hubungkan LED RGB:
    • Anoda LED Merah ke GPIO PA6 melalui resistor 110Ω
    • Anoda LED Hijau ke GPIO PA7 melalui resistor 110Ω
    • Anoda LED Biru ke GPIO PB0 melalui resistor 110Ω
    • Katoda ke GND
  5. Hubungkan Buzzer:
    • Salah satu kaki buzzer ke GND STM32
    • Kaki lainnya ke GPIO PA8
  6. Inputkan Listing Program ke STM32CubeIDE
  7. Jalankan program dan amati respon sensor serta keluaran LED dan Buzzer
2. Hardware dan Diagram Blok [kembali]
  • STM32
STM32 adalah keluarga mikrokontroler berbasis arsitektur ARM Cortex yang dikembangkan oleh STMicroelectronics. Mikrokontroler ini memiliki performa tinggi, konsumsi daya rendah, serta fitur periferal yang lengkap, seperti ADC (Analog to Digital Converter), komunikasi serial (UART, SPI, I2C), dan GPIO yang dapat dikonfigurasi sesuai kebutuhan. STM32 sering digunakan dalam sistem tertanam (embedded systems) untuk berbagai aplikasi, termasuk otomasi, robotika, dan perangkat IoT.
  • LED RGB
LED RGB (Red, Green, Blue) adalah jenis LED yang mampu menghasilkan berbagai warna cahaya dengan mengatur intensitas dari tiga warna dasar: merah, hijau, dan biru. Dengan menggabungkan ketiga warna ini dalam berbagai tingkat kecerahan, LED RGB dapat menghasilkan spektrum warna yang luas. Komponen ini sering digunakan dalam pencahayaan dekoratif, tampilan visual interaktif, dan sistem indikator dalam berbagai perangkat elektronik.
  • Buzzer

Buzzer adalah komponen elektronik yang digunakan untuk menghasilkan suara dalam berbagai frekuensi. Buzzer dapat bekerja berdasarkan prinsip piezoelektrik atau elektromagnetik untuk mengubah sinyal listrik menjadi getaran suara. Dalam sistem tertanam, buzzer sering digunakan sebagai alarm, notifikasi audio, atau indikator peringatan dalam perangkat elektronik seperti jam tangan, sistem keamanan, dan mesin industri.

  • Infrared Sensor
Infrared (IR) sensor adalah perangkat yang berfungsi untuk mendeteksi keberadaan objek atau perubahan suhu berdasarkan radiasi inframerah. Sensor ini bekerja dengan mengirimkan sinyal inframerah dan mengukur refleksi atau perubahan intensitas cahaya inframerah yang diterima. Dalam berbagai aplikasi, sensor inframerah digunakan untuk deteksi gerakan (seperti pada sensor PIR), pengukuran jarak, serta komunikasi data pada perangkat seperti remote control.

  • Push Button
Push button adalah sakelar mekanik yang bekerja saat ditekan dan kembali ke posisi semula saat dilepas. Komponen ini digunakan untuk mengaktifkan atau menonaktifkan sirkuit listrik, seperti dalam sistem kontrol, input pengguna pada perangkat elektronik, dan tombol reset atau start dalam rangkaian mikroprosesor. Push button sering dikombinasikan dengan mikrokontroler untuk menangkap input pengguna dalam berbagai aplikasi interaktif.



DIAGRAM BLOK:





3. Rangkaian Simulasi dan Prinsip Kerja [kembali]

  • Rangkaian Simulasi

  • Prinsip Kerja
Sensor Infrared (IR)
  • Sensor IR mendeteksi keberadaan objek di depannya.

  • Jika ada objek, sensor akan mengeluarkan sinyal HIGH (GPIO_PIN_SET) ke pin yang telah dikonfigurasi pada STM32.


Push Button
  • Push button digunakan untuk mengaktifkan indikator tertentu ketika ditekan.
  • Jika tombol ditekan, sistem akan mengaktifkan LED merah dan buzzer.
Indikator (LED dan Buzzer)
  • LED merah menyala dan buzzer berbunyi jika tombol ditekan.
  • LED hijau menyala dan buzzer berbunyi jika sensor IR mendeteksi objek.

Proses di Mikrokontroler (STM32)
  • Program membaca status tombol dan sensor IR menggunakan HAL_GPIO_ReadPin(GPIOB, BUTTON_Pin) dan HAL_GPIO_ReadPin(GPIOB, IR_Pin).
  • Jika tombol ditekan, LED merah dan buzzer diaktifkan.
  • Jika objek terdeteksi oleh sensor IR, LED hijau dan buzzer diaktifkan.
  • Program berjalan dalam loop dengan delay 100 ms (HAL_Delay(100)) agar tidak terlalu cepat merespons perubahan status input.


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]



Komentar

Postingan populer dari blog ini

TB mikroprosesor

Tugas Besar Kontrol Ladang Jambu

Clipper