TP M1 P1 K7





1. Prosedur[Kembali]

1. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
2. Tulis program untuk IC STM32 di software STM32IDE.
3. Compile program tadi, lalu upload file dengan format .hex ke dalam IC STM32.
4. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.

2. Hardware dan Diagram Blok[Kembali]

  • Hardware
a) STM32F103C8 


    
    c) LED 




    d) Push Button 





    e) LED RGB 


    

    f) Touch Sensor 




    g) PIR Sensor 



    h) Sensor Infrared 


    

    i) Buzzer 



    j) Breadboard 





    k) Resistor

  • Diagram Blog


3. Rangkaian Simulasi[Kembali]

  • Rangkaian sebelum di running


  • Rangkaian Setelah di running

Prinsip Kerja:

Rangkaian ini merupakan sistem kontrol sederhana berbasis mikrokontroler STM32 yang digunakan untuk mengendalikan LED dan buzzer melalui input berupa push button.

Pada kondisi awal, rangkaian dalam keadaan standby. Push button terhubung ke salah satu pin input pada STM32, dan dilengkapi dengan resistor pull-down yang berfungsi menjaga agar nilai input tetap LOW (0) ketika tombol tidak ditekan. Hal ini penting untuk mencegah kondisi floating yang dapat menyebabkan pembacaan sinyal menjadi tidak stabil.

Ketika tombol tidak ditekan, pin input pada STM32 membaca logika LOW. Dalam kondisi ini, mikrokontroler tidak memberikan sinyal ke output, sehingga LED dalam keadaan mati dan buzzer tidak berbunyi.

Saat push button ditekan, terjadi perubahan kondisi pada input. Tegangan dari VCC akan mengalir melalui tombol ke pin input STM32 sehingga terbaca sebagai logika HIGH (1). Mikrokontroler kemudian memproses perubahan ini sesuai dengan program yang telah ditanamkan.

Sebagai respon terhadap input HIGH tersebut, STM32 mengaktifkan pin output yang terhubung ke LED dan buzzer. Arus listrik mengalir ke LED sehingga LED menyala sebagai indikator visual, dan pada saat yang sama buzzer menerima sinyal sehingga menghasilkan bunyi sebagai indikator suara.

Ketika tombol dilepas kembali, koneksi ke VCC terputus dan resistor pull-down kembali menarik nilai input ke LOW. STM32 mendeteksi perubahan ini dan segera mematikan output, sehingga LED padam dan buzzer berhenti berbunyi.

Dengan demikian, keseluruhan sistem bekerja berdasarkan prinsip dasar logika digital, yaitu perubahan kondisi input (LOW ke HIGH) akan menghasilkan respon pada output. Rangkaian ini menunjukkan hubungan langsung antara perangkat input, proses oleh mikrokontroler, dan perangkat output dalam suatu sistem embedded sederhana.

4. Flowchart dan Listing Program[Kembali]

  • Flowchart

  • Listing Program

#include "stm32f1xx_hal.h"


/* Function Prototype */

void SystemClock_Config(void);

static void MX_GPIO_Init(void);

void Error_Handler(void);


/* MAIN PROGRAM */

int main(void)

{

HAL_Init();

SystemClock_Config();

MX_GPIO_Init();


while (1)

{

uint8_t pir_now;

uint8_t touch_now;


// Baca sensor

pir_now = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0); // PIR

touch_now = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1); // Touch


// KONDISI:

// PIR DETEKSI (1) dan TOUCH TIDAK DITEKAN (0)

if (pir_now == GPIO_PIN_SET && touch_now == GPIO_PIN_RESET)

{

// LED ON

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);


// BUZZER ON (support active & passive)

HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_1);

HAL_Delay(1); // bunyi

}

else

{

// LED OFF

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);


// BUZZER OFF

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);

HAL_Delay(50);

}

}

}


/* CLOCK CONFIG */

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_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;

RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;

RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;


if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)

{

Error_Handler();

}

}


/* GPIO INIT */

static void MX_GPIO_Init(void)

{

GPIO_InitTypeDef GPIO_InitStruct = {0};


__HAL_RCC_GPIOA_CLK_ENABLE();

__HAL_RCC_GPIOB_CLK_ENABLE();


// INPUT: PIR (PA0) & TOUCH (PA1)

GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1;

GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

GPIO_InitStruct.Pull = GPIO_PULLDOWN; // biar stabil

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);


// OUTPUT: LED (PB0) & BUZZER (PB1)

GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1;

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);


// Default OFF

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0 | GPIO_PIN_1, GPIO_PIN_RESET);

}


/* ERROR HANDLER */

void Error_Handler(void)

{

__disable_irq();

while (1)

{

}

}



5. Kondisi[Kembali]

Buatlah rangkaian seperti pada gambar percobaan 1 dengan kondisi ketika PIR mendeteksi gerakan dan sensor Touch tidak mendeteksi sentuhan, maka Buzzer menyala

6. Video Simulasi[Kembali]

  

Video Simulas


7. Download File[Kembali]

Video Simulasi [Download]



























Komentar

Postingan populer dari blog ini