Modul 1: Percobaan 4

LAPORAN AKHIR 1

Modul 1: Percobaan 4

 




1. Alat dan bahan[Kembali]
 A. Alat dan Bahan (Modul De Lorenzo)
        a) Raspberry Pi Pico
        b) STM32F103C8
        c) LED 
        d) Push Button 
        e) LED RGB 
        f) Touch Sensor 
        g) PIR Sensor 
        h) Sensor Infrared 
        i) Buzzer 
        j) Breadboard 
        k) Resistor
      

3. Rangkaian Simulasi[Kembali]
 





 
4. Prinsip Kerja[Kembali]

1. Sensor Infrared (IR Obstacle Sensor)

  • Sensor infrared (IR) menggunakan pemancar dan penerima inframerah.
  • Ketika ada objek di depan sensor, cahaya inframerah dipantulkan kembali dan diterima oleh fotodioda, sehingga output sensor menjadi LOW (0).
  • Jika tidak ada objek, maka tidak ada cahaya yang dipantulkan, sehingga output sensor menjadi HIGH (1).
  • Output dari sensor ini terhubung ke PA0 pada STM32.

2. Sensor Sentuh (Touch Sensor)

  • Sensor ini mendeteksi sentuhan manusia pada permukaannya.
  • Jika disentuh, maka output sensor menjadi HIGH (1).
  • Jika tidak disentuh, output sensor tetap LOW (0).
  • Output sensor ini terhubung ke PB1 pada STM32.

3. Mikrokontroler (STM32F103C8)

  • STM32 membaca sinyal dari kedua sensor (IR dan sentuh).
  • Berdasarkan kombinasi dari kedua sensor, STM32 akan mengontrol LED RGB.
  • Pin output PB0, PB7, PB6 digunakan untuk mengendalikan warna LED RGB melalui resistor R1, R2, R3.

4. Kontrol LED RGB

  • LED RGB dikendalikan oleh STM32 berdasarkan kondisi sensor.
  • Contoh skenario kontrol:
    1. Jika IR Sensor mendeteksi objek → LED menyala warna merah.
    2. Jika Touch Sensor disentuh → LED menyala warna biru.
    3. Jika kedua sensor aktif (IR & Touch) → LED menyala warna hijau.
    4. Jika tidak ada aktivitas sensor → LED mati.

5. 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 */



6. Video Percobaan[Kembali]








7. Download[Kembali]
  
Rangkaian Percobaan klik disini
Video Percobaan klik disini
Datasheet LED klik disini
Datasheet Resistor klik disini



























Komentar

Postingan populer dari blog ini

SISTEM DIGITAL

ELEKTRONIKA