Laporan Praktikum 2 M1




Percobaan 6
Buzzer, LED RGB, Push Button, dan Sensor Infrared

1. Prosedur
[Kembali]

1. Rangkai semua komponen pada breadboard yang terhubung ke mikrokontroler STM32F103C8.
2. Buat program untuk mikrokontroler STM32F103C8 di software STM32 CubeIDE.
3. Build program yang telah dibuat, lalu inputkan program ke dalam mikrokontroler melalui stlink.
4. Setelah program diinputkan, uji rangkaian yang telah dirangkai sesuai dengan output yang ditentukan.
5. Selesai.

2. Hardware dan Diagram Blok [Kembali]

Hardware :

a) Mikrokontroler STM32F103C8
STM32F103C8 board – Microscale

2. Infrared Sensor

Infrared Sensor Module
3. Push Button

push button 4 kaki di Sabara Mikro | Tokopedia

4. Breadboard
BREADBOARD / PROJECTBOARD / PROTOBOARD 400 HOLES di M-kontrol | Tokopedia
 
5. RGB LED
Jual LED RGB 4 PIN WARNA MERAH HIJAU BIRU 5mm ( ARDUINO ) - Common Cathode  - Jakarta Barat - Ardushop-id | Tokopedia
 
6. Buzzer
Buzzer

Diagram Blok  :


3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi Sebelum dirunning:


Rangkaian Simulasi Setelah dirunning:
 




Prinsip Kerja : 
Rangkaian ini menggunakan mikrokontroler STM32F103C8,  yang mana 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 terhubung 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. Maka pada tampilan pin out dan konfigurasi dari mikrokontrolernya, berdasarkan rangkaian 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 PB0, dan buzzer terhubung ke pin PA8. Selanjutnya dilakukan konfigurasi pada debug dengan memilih serial wire, kemudian pada bagian RCC dipilih crystal / ceramic resonator.
Ketika konfigurasinya telah selesai, save project dan kemudian akan ditampilkan halaman pemrograman. Disini sudah langsung tersedia beberapa program karena konfigurasi yang telah dilakukan sebelumnya. 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 dalam keadaan set, maka outputnya adalah mengaktifkan RGB LED berwarna merah dan juga mengaktifkan buzzer. Kemudian jika push buttonnya ditekan atau dalam keadaan set, maka outputnya adalah mengaktifkan RGB LED berwarna hijau dan juga mengaktifkan buzzer.
Setelah programnya selesai, dilanjutkan dengan build program tersebut dan diinputkan ke mikrokontroler melalui stlink. Setelah programnya diinputkan, dapat dilakukan uji coba pada rangkaiannya, yang mana ketika dijalankan, kondisi awal adalah ketika sensor infrared tidak mendeteksi gerakan dan push button tidak ditekan, maka outputnya adalah RGB LED dan buzzernya tidak aktif. Ketika sensor infrared mendeteksi gerakan, maka outputnya adalah mengaktifkan RGB LED berwarna merah dan juga mengaktifkan buzzer, sedangkan jika push buttonnya ditekan, maka outputnya adalah mengaktifkan RGB LED berwarna hijau dan juga mengaktifkan buzzer. Kemudian apabila sensor infrared mendeteksi gerakan serta push buttonnya ditekan, maka output yang ditampilkan adalah RGB LED yang berwarna jingga akibat perpaduan warna merah dan hijau serta 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, GREEN_Pin | RED_Pin | BUZZER_Pin, GPIO_PIN_RESET);

if (button_status == GPIO_PIN_SET)
{
HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA, BUZZER_Pin, GPIO_PIN_SET);
}

if (ir_status == GPIO_PIN_SET)
{
HAL_GPIO_WritePin(GPIOA, GREEN_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA, BUZZER_Pin, GPIO_PIN_SET);
}

HAL_Delay(100);
}
}

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. Video Demo [Kembali]


6. Analisa [Kembali]





7. Download File [Kembali]

Download HTML [Download]
Download Video Demo [Download]
Datasheet Mikrokontroler STM32F103C8 [Download]
Datasheet Sensor Infrared [Download]
Datasheet Push Button [Download]
Datasheet RGB LED [Download]
Datasheet Buzzer [Download]
 

Tidak ada komentar:

Posting Komentar

  BAHAN PRESENTASI UNTUK MATA KULIAH  MIKROPROSESOR DAN MIKROKONTROLER 2024     Nama : Salahuddin Al Ajubi NIM : 2210951006 Dosen...