Laporan Akhir 2




Percobaan 2
Led RGB, Touch Sensor, & Sensor Infrared 


1. Prosedur
[Kembali]

1. Rangkai semua komponen pada breadboard yang terhubung ke mikrokontroler STM32.
2. Buat program untuk mikrokontroler STM32 di software STM32CubeIDE.
3. Inputkan program ke dalam mikrokontroler melalui USB STLINK.
4. Uji rangkaian yang telah dirangkai sesuai dengan output yang ditentukan.
5. Selesai.


2. Hardware dan Diagram Blok [Kembali]

Hardware :

    1. Mikrokontroler STM32F103C8
STM32F103C8 board – Microscale

    2. Resistor

Resistor 220 ohm – Pendidikan Teknik Elektronika
    3. Breadboard

BREADBOARD / PROJECTBOARD / PROTOBOARD 400 HOLES di M-kontrol | Tokopedia

    4. Infrared Sensor

Infrared Sensor Module


 
    5. Touch Sensor


Touch Sensor Module — SunFounder Ultimate Sensor Kit documentation


    6. LED RGB
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]

Rangkaian Simulasi Sebelum dirunning:




Rangkaian Simulasi Setelah dirunning:
 




Prinsip Kerja :
 
Prinsip kerja dari rangkaian ini yaitu mendeteksi adanya objek menggunakan Infrared Sensor dan adanya sentuhan menggunakan Touch Sensor, dengan output LED RGB yang dikontrol oleh mikrokontroler STM32F103C8. Infrared Sensor bekerja dengan mendeteksi pantulan sinyal infrared dari objek di sekitarnya dan diterima oleh photodioda, sedangkan Touch Sensor mendeteksi adanya sentuhan pada permukaan sensor tersebut.Infrared Sensor terhubung pada GPIO pin PB10 dan Touch Sensor terhubung ke GPIO pin PB7 pada mikrokontroler STM32F103C8. Mikrokontroler membaca status sensor menggunakan fungsi HAL_GPIO_ReadPin().

LED Merah akan menyala sebagai pertanda tidak adanya objek atau sentuhan pada kedua sensor. Jika Infrared Sensor mendeteksi adanya objek yang menghasilkan logika HIGH, maka LED hijau akan menyala. Jika Touch Sensor mendeteksi adanya sentuhan yang menghasilkan logika HIGH, maka LED hijau akan menyala. Apabila kedua sensor mendeteksi adanya objek dan adanya sentuhan, maka LED cyan akan menyala. Pengendalian ini dilakukan melalui pernyataan if-else dalam kode program.

Untuk memastikan kestabilan pembacaan sensor, diberikan jeda menggunakan HAL_Delay(10), sehingga sinyal yang diterima lebih akurat. Seluruh proses ini berjalan dalam loop utama (while(1)), memungkinkan sistem merespons perubahan sensor secara real-time.

4. Flowchart dan Listing Program [Kembali]

Flowchart :






Listing Program :

/* USER CODE BEGIN Header */

/**

******************************************************************************

* @file : main.c

* @brief : Main program body

******************************************************************************

* @attention

*

* Copyright (c) 2025 STMicroelectronics.

* All rights reserved.

*

* This software is licensed under terms that can be found in the LICENSE file

* in the root directory of this software component.

* If no LICENSE file comes with this software, it is provided AS-IS.

*

******************************************************************************

*/

/* USER CODE END Header */

/* Includes ------------------------------------------------------------------*/


#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. Video Demo [Kembali]




6. Analisa [Kembali]




7. Download File [Kembali]

Download HTML [Download]
Download Video Demo [Download]
Download Listing Program [Download]
Download Datasheet Mikrokontroler Raspberry Pi Pico [Download]
Download Datasheet PIR Sensor [Download]
Download Datasheet Sensor Touch [Download]
Download Datasheet LED [Download]
Download Datasheet Resistor [Download]

Tidak ada komentar:

Posting Komentar

   BAHAN PRESENTASI UNTUK MATA KULIAH  MIKROPROSESOR DAN MIKROKONTROLER 2024 Nama   : Ichsan Aditia NIM : 221095 3 007 Dosen Pengamp...

Cari Blog Ini