LA 1 MODUL 1 (MIKRO)



1. Prosedur[Kembali]

Siapkan komponen berikut:
  • Led RGB, Touch Sensor, & Sensor Infrared
Buat rangkaian sesuai dengan skema berikut:
  • Sensor Infrared (IR Obstacle Sensor)

    • OUT dari sensor infrared terhubung ke PA0 pada STM32.
  • Sensor Sentuh (Touch Sensor)

    • OUT dari sensor sentuh terhubung ke PB1 pada STM32.
  • LED RGB (D1)

    • Katoda LED RGB terhubung ke ground.
    • Anoda LED RGB memiliki resistor seri:
      • R1 (110Ω) → Terhubung ke PB0.
      • R2 (110Ω) → Terhubung ke PB7.
      • R3 (110Ω) → Terhubung ke PB6.
  • Pull-up Resistor (R4)

    • Terhubung ke PA8.
  • Jadi, pin STM32 yang digunakan dalam rangkaian ini adalah:

    • PA0 (Input dari IR sensor)
    • PB1 (Input dari Touch sensor)
    • PB0, PB7, PB6 (Output ke LED RGB)
    • PA8 (Kemungkinan digunakan sebagai pull-up atau kontrol)

2. Hardware dan Diagram Blok [Kembali]

Hardware yang digunakan dalam rangkaian ini meliputi:

  • 1. Mikrokontroler:

    • STM32F103C8 (MCU utama)
      • Digunakan untuk memproses sinyal dari sensor dan mengendalikan output ke LED.


    2. Sensor:

    • Infrared Sensor (IR Obstacle Sensor)
      • Digunakan untuk mendeteksi objek di depan sensor berdasarkan pantulan sinyal inframerah.


    • Touch Sensor
      • Digunakan untuk mendeteksi sentuhan sebagai input ke sistem.


    3. LED dan Resistor:

    • RGB LED (D1)
      • LED dengan tiga warna yang dikendalikan oleh STM32.
    • Resistor seri untuk LED RGB:
      • R1 (110Ω), R2 (110Ω), R3 (110Ω) – Membatasi arus ke LED RGB agar tidak rusak.


    • Test Pin
      • Digunakan untuk debugging dan pengukuran sinyal output dari sensor.
    • PCB / Breadboard (opsional)
      • Untuk merakit rangkaian jika diuji secara praktis.



3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]



Prinsip Kerja :

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.


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





6. Kondisi[Kembali]

-

7. Video Simulasi[Kembali]



8. Download File[Kembali]

Download Rangkaian

Datasheet LED

Datasheet Resistor

Komentar

Postingan populer dari blog ini

Modul 1 Sistem Digital

Home

Modul 3 Sistem Digital