Tugas Pendahuluan 1 - P2K6

[menuju akhir]

1. Prosedur[kembali]

  • Rangkai semua komponen di Proteus sesuai dengan percobaan pada modul 
  • Buat program untuk STM32 di STM32CubeIDE, sesuaikan konfigurasinya dengan rangkaian pada proteus dan kondisi yang dipakai
  • Masukkan Program ke STM32 di rangkaian proteus
  • Simulasikan rangkaian

2. Hardware dan Diagram Blok[kembali]

1. STM32F103C8


2. LED

3. Resistor



4. Touch Sensor

Sensor Sentuh


5. IR sensor
IR Sensor Module pin diagram/pin out/Pin Configuration

3. Rangkaian Simulasi dan Prinsip Kerja[kembali]

Rangkaian Simulasi: Saat IR sensor tidak mendeteksi gerakan dan touch sensor mendeteksi adanya sentuhan, maka RGBLED berwarna cyan

Prinsip Kerja:

        Rangkaian ini menggunakan mikrokontroler STM32F103C8 dengan dua inputan, yaitu sensor infrared yang terhubung ke pin PB10 dan sensor touch yang terhubung ke pin PB7, dan satu buat output berupa LED RGB yang dimana masing masing kaki RGB terhubung ke Pin PA6 , PA7 dan PB 0. Konfigurasi sistem dilakukan melalui STM32 CubeIDE dengan menetapkan pengaturan pin sesuai skema rangkaian di Proteus. Setelah itu, opsi debug dipilih menggunakan Serial Wire, dan clock diatur ke Crystal/Ceramic Resonator supaya sistem tersebut dapat bekerja dengan stabil. Setelah konfigurasi selesai, CubeIDE akan secara otomatis menghasilkan kode dasar sesuai dengan pengaturan yang telah dibuat sebelumnya.

    Dalam pemrograman, kode tambahan ditulis pada loop utama dan pada blok while menggunakan struktur if-else untuk mengontrol RGB LED berdasarkan inputan pada sensor. Jika pada sensor infrared tidak mendeteksi adanya objek (logika 0) dan sensor touch mendeteksi sentuhan (logika 1), maka LED hijau/Pin PA7 dan LED biru/pin PB0 akan menyala maka LED akan menghasilkan warna Cyan, sementara LED merah/pin PA6 tetap mati. Namun, jika kondisi berbeda—misalnya sensor infrared mendeteksi objek (logika 1) atau sensor touch tidak tersentuh (logika 0)—maka seluruh LED akan dimatikan.

    Setelah pemrograman selesai, proyek dikompilasi menjadi file hex dan diunggah ke mikrokontroler dalam simulasi pada Proteus. Saat dijalankan, sistem akan menampilkan output sesuai logika yang diprogram: RGB LED mati pada kondisi awal, menyala dengan warna cyan jika sensor touch aktif tanpa deteksi objek oleh sensor infrared, dan kembali mati untuk kondisi lainnya. Dengan demikian, sistem dapat mengontrol RGB LED berdasarkan pembacaan sensor secara otomatis.

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, GPIO_PIN_10); // Membaca Infrared Sensor (PB10)

uint8_t touch_status = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_7); // Membaca Touch Sensor (PB7)


// LED Biru menyala jika IR aktif

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, ir_status);


// LED Hijau menyala jika Touch aktif

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, touch_status);


// Jika IR tidak mendeteksi gerakan (LOW) dan Touch mendeteksi sentuhan (LOW), LED RGB menyala Cyan (Hijau + Biru)

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

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET); // Matikan LED Merah

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_SET); // Nyalakan LED Hijau

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // Nyalakan LED Biru

}

else {

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_SET); // Nyalakan LED Merah jika kondisi tidak terpenuhi

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET); // Matikan LED Hijau

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); // Matikan LED Biru

}


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

__HAL_RCC_GPIOB_CLK_ENABLE();


// Konfigurasi output untuk LED RGB

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6 | GPIO_PIN_7, GPIO_PIN_RESET); // Matikan LED R & G

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); // Matikan LED B


GPIO_InitStruct.Pin = GPIO_PIN_6 | GPIO_PIN_7; // PA6 untuk Red, PA7 untuk Green

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 = GPIO_PIN_0; // PB0 untuk Blue

HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);


// Konfigurasi input untuk sensor

GPIO_InitStruct.Pin = GPIO_PIN_10 | GPIO_PIN_7; // PB10 untuk Infrared, PB7 untuk Touch

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. Kondisi [kembali]

Buatlah Rangkaian seperti gambar percobaan 2 dengan kondisi ketika sensor Infrared tidak mendeteksi gerakan dan sensor touch mendeteksi sentuhan maka LED RGB akan menampilkan warna Cyan


6. Video Simulasi [kembali]



7. Download file [kembali]

Rangkaian [download]
Video simulasi [download]
Datasheet Raspberry Pi Pico [Download]
Datasheet Push Button [Download]
Datasheet Resistor [Download]
Datasheet LED [Download]

[menuju awal]

Komentar

Postingan populer dari blog ini

HOME

Modul 1

HOME