Cari Blog Ini

Laporan Akhir 2 - M1 Prak uP & uC



Percobaan 4
LED RGB, PIR & Touch Sensor

1. Prosedur[Kembali]

  1. Rangkai sesuai gambar percobaan dengan inputnya yaitu sensor PIR, Touch sensor dan outputnya yaitu LED RGB. Hubungkan LED, touch sensor, dan PIR sensor dengan kabel jumper sesuai pin pada programnya.
  2. Buatlah program dengan konfigurasi pin input dan output berdasarkan pada pin GP STM32 yang telah dirangkai sebelumnya. Kemudian buatlah program untuk menghasilkan output LED RGB sesuai kondisi yang telah ditentukan.
  3. Upload program ke STM32.
  4. Lihat perubahan ketika sensor PIR diberi deteksi gerakan dan touch sensor diberi sentuhan.

2. Hardware dan Diagram Blok[Kembali]

A. Hardware


B. Blok Diagram


3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

A. Rangkaian Simulasi


B. Prinsip Kerja

Rangkaian ini bekerja dengan sensor PIR dan sensor touch sebagai input dan LED RGB sebagai output.

Pertama, sensor PIR mendeteksi gerakan dan sensor sentuh mendeteksi sentuhan sehingga output LED RGB berwana biru dan cyan aktif 3 detik dan mati 3 detik berulang.

Kedua, sensor sentuh mendeteksi sentuhan sehingga output LED RGB berwana hijau aktif 3 detik dan mati 3 detik berulang.

Ketiga, sensor sentuh mendeteksi sentuhan sehingga output LED RGB berwana biru aktif.

Keempat, sensor PIR tidak mendeteksi gerakan dan sensor sentuh tidak mendeteksi sentuhan sehingga output LED RGB berwana merah aktif.

4. Flowchart dan Listing Program[Kembali]


#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(BLUE_GPIO_Port, BLUE_Pin, pir_status);

 

if (touch_status == GPIO_PIN_SET) {

HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOA, GREEN_Pin, GPIO_PIN_SET);

HAL_Delay(3000);

HAL_GPIO_WritePin(GPIOA, GREEN_Pin, GPIO_PIN_RESET);

HAL_Delay(3000);

} else {

if (pir_status == GPIO_PIN_RESET && touch_status == GPIO_PIN_RESET) { HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET);

} else {

HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_RESET);

   }

  }

 }

}

 

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, GPIO_PIN_RESET);

HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_RESET);

 

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

 

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)

{

}

}



5. Video Demo[Kembali]


6. Kondisi[Kembali]

Kondisi ketika PIR dan Touch sensor mendeteksi LED RGB akan menampilkan warna biru serta cyan selama 3 detik lalu mati selama 3 detik secara berulang, ketika Touch mendeteksi sentuhan maka LED RGB akan menampilkan warna hijau selama 3 detik lalu mati selama 3 detik secara berulang dan PIR mendeteksi gerakan maka LED RGB akan menampilkan warna biru selama 3 detik lalu mati selama 3 detik secara berulang


7. Download File[Kembali]

Rangkaian Simulasi Klik Disini

Video Demo Klik Disini

DataSheet STM32 Klik Disini 

DataSheet Sensor PIR Klik Disini 

DataSheet Sensor Touch Klik Disini 

DataSheet LED RGB Klik disini

DataSheet Resistor Klik disini

Library Sensor PIR Klik Disini

Library Sensor Touch Klik Disini 

BAHAN PRESENTASI MATA KULIAH MIKROPROSESOR DAN MIKROKONTROLER 2024      Oleh : Zumar Ahmad (2210951027) Dosen Pengampu : Dr. Darwison, M.T. ...