LA1M1



Laporan Akhir 1 Modul 1

(Percobaan 2)

1. Prosedur[Kembali]

1. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.

2. Buat program untuk mikrokontroler STM32F103C8 di software STM32 CubeIDE.

3. Compile program dalam format hex, lalu upload ke dalam mikrokontroler.

4. Jalankan simulasi rangkaian pada proteus.

5. Selesai.

.

2. Hardware dan Diagram Blok[Kembali]

Hardware:

1. Mikrokontroler STM32F103C8

STM32F103C8 board – Microscale


2. Infrared Sensor

Infrared Sensor Module


3. Touch Sensor

Touch Sensor Module — SunFounder Ultimate Sensor Kit documentation



4. Power Supply


5. RGB LED

Jual LED RGB 4 PIN WARNA MERAH HIJAU BIRU 5mm ( ARDUINO ) - Common Cathode  - Jakarta Barat - Ardushop-id | Tokopedia

Diagram Blok:


3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

Prinsip Kerja:

Rangkaian ini terdiri dari sensor inframerah untuk mendeteksi gerakan, sensor sentuh untuk mendeteksi sentuhan, mikrokontroler STM32F103C8 sebagai pengendali utama, dan LED RGB untuk menampilkan hasil output. Sensor inframerah bekerja dengan mendeteksi keberadaan objek atau gerakan, dan akan memberikan sinyal HIGH pada pin output-nya saat gerakan terdeteksi. Sementara itu, sensor sentuh mendeteksi sentuhan pada permukaannya, dan akan memberikan sinyal HIGH pada pin output-nya saat disentuh. Kedua sensor ini terhubung ke mikrokontroler yang membaca statusnya. 

Langkah berikutnya adalah melakukan konfigurasi di software STM32 CubeIDE dengan membuka proyek percobaan yang telah dikerjakan sebelumnya. Pada tampilan Pinout & Configuration, dilakukan pengaturan pin mikrokontroler sesuai dengan rangkaian Proteus yang telah dibuat. Kemudian, konfigurasi pada bagian debug diatur ke mode Serial Wire, dan pada bagian RCC dipilih opsi Crystal/Ceramic Resonator. Setelah seluruh konfigurasi selesai, proyek disimpan, dan halaman pemrograman akan terbuka secara otomatis. Halaman ini sudah berisi kode dasar yang dihasilkan dari konfigurasi sebelumnya. Pemrograman dimulai dengan menyertakan #include "main.h", yang merupakan fungsi utama proyek. Kode tambahan perlu ditulis pada bagian loop, tepatnya di dalam kurung kurawal pada fungsi while. Program menggunakan logika if-else untuk membaca kondisi sensor. Jika sensor inframerah mendeteksi keberadaan objek dan sensor sentuh mendeteksi sentuhan, maka mikrokontroler akan mengaktifkan LED RGB sehingga warna merah, hijau, dan biru menyala bersamaan. Setelah program selesai ditulis, langkah selanjutnya adalah mengompilasi kode menjadi file berformat .hex dan melakukan proses build untuk menghasilkan file tersebut. Terakhir, file .hex diunggah ke mikrokontroler dalam simulasi Proteus untuk menjalankan rangkaian.

Setelah rangkaiannya dijalankan, jika kedua sensor memberikan sinyal HIGH secara bersamaan, mikrokontroler akan mengaktifkan pin output yang terhubung ke LED RGB, sehingga LED berwarna cyan. Jika sensor IR mendeteksi adanya objek, maka LED akan menhasilkan warna biru. Kemudian jika sensor Touch mendeteksi adanya objek maka LED akan menghasilkan warna hijau. Dan jika kedua sensor tidak mendeteksi adanya objek, maka LED akan berwarna merah. Catu daya diberikan dari sumber tegangan +5V yang stabil, dengan resistor pembatas arus digunakan untuk melindungi LED dari kerusakan akibat arus berlebih. Dengan demikian, LED RGB hanya akan menampilkan warna putih jika sensor inframerah mendeteksi gerakan dan sensor sentuh mendeteksi sentuhan secara bersamaan.


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 ir_status = HAL_GPIO_ReadPin(GPIOB, IR_Pin);  // Membaca IR sensor 

(PB10) 

   uint8_t touch_status = HAL_GPIO_ReadPin(GPIOB, TOUCH_Pin); // Membaca 

Touch Sensor (PB6) 

 

   // LED Biru menyala jika IR aktif 

   HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, ir_status); 

 

   // LED Hijau menyala jika Touch aktif 

   HAL_GPIO_WritePin(GPIOA, GREEN_Pin, touch_status); 

 

   // LED Merah menyala jika tidak ada sensor yang aktif 

   if (ir_status == GPIO_PIN_RESET && touch_status == GPIO_PIN_RESET) { 

       HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET);  // Nyalakan LED 

RED 

   } else { 

       HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_RESET); // Matikan LED 

RED 

   } 

HAL_Delay(10); // Delay kecil untuk stabilisasi pembacaan sensor 

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(); 

/*Configure GPIO pin Output Level */ 

HAL_GPIO_WritePin(GPIOA, RED_Pin|GREEN_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 */ 

GPIO_InitStruct.Pin = RED_Pin|GREEN_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 : IR_Pin TOUCH_Pin */ 

GPIO_InitStruct.Pin = IR_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 /* USE_FULL_ASSERT */

5. Analisa[Kembali]





6. Video Demo[Kembali]

7. Download File[Kembali]

Download HTML [Download]
Download Video Demo [Download]
Download Listing Program [Download]
Download Datasheet STM32F103C8 [Download]
Download Datasheet Sensor Infrared [Download]
Download Datasheet Sensor Touch [Download]
Download Datasheet RGB LED [Download]







Tidak ada komentar:

Posting Komentar