Modul 1 - Laporan Akhir 1



Percobaan 2

Led RGB, Buzzer, Touch Sensor, & PIR 

1. Prosedur[Kembali]

  1. Membuat rangkaian sesuai dengan percobaan 2
  2. Masukkan input dan output dari rangkaian di software  STM32.
  3. Setelah input output selesai disesuaikan pada software STM32 sesuai pada modul, ubah menjadi code 
  4. Code yang diperoleh dari software STM32 dapat diaplikasikan pada software Proteus untuk diterapkan pada STM32f103C8 di dalam Proteus
  5. Selesai.


2. Hardware dan Diagram Blok[Kembali]

Hardware:


1. STM32f103C8

2. Sensor infrared 


3. Touch Sensor




4. LED RGB






5. Resistor 

6. PIR Sensor

7. Buzzer




Diagram Blok





3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

Rangkaian Simulasi:







Prinsip Kerja:

Rangkaian ini terdiri dari sensor PIR untuk mendeteksi gerakan, sensor sentuh untuk mengenali sentuhan, mikrokontroler STM32F103C8 sebagai pengendali utama, serta LED RGB sebagai indikator output. Sensor inframerah bekerja dengan mendeteksi keberadaan objek atau pergerakan, lalu mengirimkan sinyal HIGH pada pin keluarannya saat ada gerakan terdeteksi. Sementara itu, sensor sentuh akan memberikan sinyal HIGH ketika permukaannya disentuh. Mikrokontroler membaca status dari kedua sensor ini untuk menentukan respon yang sesuai.

Selanjutnya, konfigurasi dilakukan menggunakan software STM32 CubeIDE dengan membuka proyek uji coba yang telah dibuat sebelumnya. Pada tampilan Pinout & Configuration, dilakukan pengaturan pin mikrokontroler agar sesuai dengan rangkaian yang telah dirancang di Proteus. Kemudian, mode debug diatur ke Serial Wire, dan bagian RCC dikonfigurasi menggunakan Crystal/Ceramic Resonator. Setelah konfigurasi selesai, proyek disimpan, dan halaman pemrograman akan terbuka secara otomatis dengan kode dasar yang dihasilkan dari pengaturan sebelumnya. Pemrograman dimulai dengan menyertakan #include "main.h", yang merupakan file utama proyek. Kode tambahan kemudian ditulis dalam fungsi while menggunakan logika if-else untuk membaca status sensor. Jika sensor PIR mendeteksi objek dan sensor sentuh menerima sentuhan, maka mikrokontroler akan mengaktifkan LED RGB dengan menyalakan warna merah, hijau, dan biru secara bersamaan. Setelah kode selesai dibuat, langkah berikutnya adalah mengompilasi program menjadi file .hex dan melakukan proses build. File .hex yang dihasilkan kemudian diunggah ke mikrokontroler dalam simulasi Proteus untuk menjalankan rangkaian.

Saat rangkaian dijalankan, LED akan menyala dalam warna tertentu sesuai dengan sinyal dari sensor. Jika kedua sensor memberikan sinyal HIGH secara bersamaan, LED RGB akan menyala kuning. Jika hanya sensor PIR yang mendeteksi gerakan, LED akan menyala hijau. Jika hanya sensor sentuh yang aktif, LED akan berwarna merah. Namun, jika tidak ada objek yang terdeteksi oleh kedua sensor, LED juga akan menyala merah.

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 pir_status = HAL_GPIO_ReadPin(GPIOB, PIR_Pin); 

      uint8_t touch_status = HAL_GPIO_ReadPin(GPIOB, TOUCH_Pin); 

 

      HAL_GPIO_WritePin(GPIOA, GREEN_Pin | RED_Pin | BUZZER_Pin, 

GPIO_PIN_RESET); 

 

      if (pir_status == GPIO_PIN_SET) 

      { 

          HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET); 

          HAL_GPIO_WritePin(GPIOA, BUZZER_Pin, GPIO_PIN_SET); 

      } 

 

      if (touch_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; 

__HAL_RCC_GPIOD_CLK_ENABLE(); 

__HAL_RCC_GPIOA_CLK_ENABLE(); 

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_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 = PIR_Pin|TOUCH_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 






6. Analisa[Kembali]






7. Download File[Kembali]

Download Video Demo [Download]
Download Datasheet STM32F103C8 [Download]
Download Datasheet Sensor PIR [Download]
Download Datasheet Sensor Touch [Download]
Download Datasheet RGB LED [Download]













Tidak ada komentar:

Posting Komentar

  BAHAN PRESENTASI UNTUK MATA KULIAH   ELEKTRONIKA   Oleh : Aulia Riska Farasi 2210953045     Dosen Pengampu : Darwison, M.T.   Darwison, 20...