Senin, 24 Maret 2025

TP 2 Modul 1 Mikro



Tugas Pendahuluan 2 Modul 1

(Percobaan 6 kondisi 4)

1. Prosedur[Kembali]

1. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
2. Buat program untuk mikrokontroler STM32F103C8 di software STM32 CubeIDE.
3. Compile program dalam format hex, lalu upload ke dalam mikrokontroler.
4. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.
5. Selesai.

2. Hardware dan Diagram Blok[Kembali]

a) Mikrokontroler STM32F103C8
STM32F103C8 board – Microscale


2. Infrared Sensor

Infrared Sensor Module


3. Push Button

push button 4 kaki di Sabara Mikro | Tokopedia


4. Power Supply

 
5. RGB LED
Jual LED RGB 4 PIN WARNA MERAH HIJAU BIRU 5mm ( ARDUINO ) - Common Cathode  - Jakarta Barat - Ardushop-id | Tokopedia
 
6. Buzzer
Buzzer

Blok Diagram :


3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

Rangkaian sebelum di running :


Rangkaian sesudah di running :





Prinsip Kerja : 

Rangkaian ini menggunakan STM32F103C8 sebagai mikrokontroler utama,  dimana terdapat 2 input yaitu sensor infrared dan push button, dengan 2 output yaitu RGB LED dan buzzer. Sensor infrared sebagai input dihubungkan ke pin PB7, push button dihubungkan ke pin PB10, untuk outputnya yaitu RGB LED, dimana kaki red terhubung ke pin PA6, kaki green terhubung ke pin PA7, dan kaki blue terhubung ke pin PB0. Untuk buzzernya terhubung ke pin PA8.
Setelah itu lakukan konfigurasi di software STM32 CubeIDE, yang dimulai dari membuka projek percobaan yang telah dikerjakan. Maka pada tampilan pin out dan konfigurasi dari mikrokontrolernya, berdasarkan rangkaian proteus yang telah dibuat, inputannya yaitu infrared yang terhubung ke pin PB7, push button terhubung ke pin PB10, kemudian outputnya yaitu kaki red terhubung ke pin PA6, kaki green terhubung ke pin PA7, kaki blue terhubung ke pin PA9, dan buzzer terhubung ke pin PA8. Selanjutnya dilakukan konfigurasi pada debug dengan memilih serial wire, kemudian pada bagian RCC dipilih crystal / ceramic resonator.

Lau save project dan kemudian akan ditampilkan halaman pemrograman. Disini sudah langsung tersedia beberapa program. Untuk pemrogramannya dimulai dari #include “main.h” yang merupakan fungsi utamanya. Yang perlu ditambahkan disini adalah codingan pada bagian loopnya, yang terletak di dalam kurung kurawal pada bagian while. Program ini menunjukkan dimana pada kondisi awal, seluruh outputnya dalam keadaan reset atau tidak aktif. Disini digunakan fungsi if yang mana jika sensor infrared berlogika 1, maka outputnya akan mengaktifkan RGB LED berwarna merah dan juga mengaktifkan buzzer. Kemudian jika push buttonnya ditekan atau berlogika 1, maka outputnya akan mengaktifkan RGB LED berwarna hijau dan juga mengaktifkan buzzer.

Setelah programnya selesai, dilanjutkan dengan mengcompile programnya ke dalam tipe hex, dan build program tersebut sehingga menghasilkan file dengan tipe hex. Kemudian upload file hex tersebut ke dalam mikrokontroler pada proteus. Setelah rangkaiannya dijalankan, kondisi awal adalah ketika sensor infrared diberi logika 0 dan push button tidak ditekan, maka output yang ditampilkan adalah RGB LED dan buzzernya tidak aktif. Ketika sensor infrared berlogika 1, maka outputnya adalah mengaktifkan RGB LED berwarna merah dan juga mengaktifkan buzzer, sedangkan jika push buttonnya ditekan, maka outputnya adalah mengaktifkan RGB LED berwarna biru dan juga mengaktifkan buzzer. Kemudian apabila sensor infrared diberi logika 1 dan push button ditekan, maka output yang ditampilkan adalah RGB LED gabungan merah dan hijau yaitu warna kuning dan buzzernya akan aktif.


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 button_status = HAL_GPIO_ReadPin(GPIOB, BUTTON_Pin);

uint8_t ir_status = HAL_GPIO_ReadPin(GPIOB, IR_Pin);


HAL_GPIO_WritePin(GPIOA, RED_Pin | BUZZER_Pin, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOB, BLUE_Pin, GPIO_PIN_RESET); // BLUE ada di GPIOB


if (ir_status == GPIO_PIN_SET)

{

HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET); // LED Red ON

HAL_GPIO_WritePin(GPIOA, BUZZER_Pin, GPIO_PIN_SET); // Buzzer ON

}


if (button_status == GPIO_PIN_SET)

{

HAL_GPIO_WritePin(GPIOB, BLUE_Pin, GPIO_PIN_SET); // LED Blue ON (GPIOB)

HAL_GPIO_WritePin(GPIOA, BUZZER_Pin, GPIO_PIN_SET); // Buzzer ON

}


HAL_Delay(100); // Delay kecil untuk stabilisasi


}

}


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


HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_RESET);


GPIO_InitStruct.Pin = RED_Pin|GREEN_Pin|BUZZER_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 = BUTTON_Pin|IR_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



5. Kondisi[Kembali]

Percobaan 6 kondisi 4 :
Buatlah rangkaian seperti gambar pada percobaan 6 dimana jika IR Sensor mendeteksi RGB Berwarna Merah hidup, Push Button ditekan RGB Berwarna Hijau hidup dan jika salah satu input aktif atau keduanya aktif maka buzzer aktif

6. Video Simulasi[Kembali]



7. Download File[Kembali]

Download Html [download]
Download File Rangkaian [download]
Download Video Simulasi [download]
Download Listing Program [download]
Datasheet Mikrokontroler STM32F103C8 [download]
Datasheet Push Button  [download]
Datasheet Infrared Sensor  [download]
Datasheet Buzzer  [download]
Datasheet RGB LED [download]




Related Posts:

0 komentar:

Posting Komentar