Laporan Akhir 1

[KEMBALI KE MENU SEBELUMNYA]


1. Prosedur [kembali]

  1. Menyiapkan alat dan bahan.
  2. Merangkai komponen pada breadboard sesuai dengan gambar rangkaian percobaan.
  3. Menghubungkan masing masing pin input output.
  4. Mengunggah program menggunakan ST-LINK ke mikrokontroler.
  5. Jalankan Rangkaian

2. Hardware dan Diagram Blok [kembali]

    1. STM32F103C8





    2. Touch Sensor



    3. PIR Sensor



    4. LED



    5. Buzzer



    6. Resistor 


    • Diagram Blog

3. Rangkaian Simulasi dan Prinsip Kerja [kembali]


    Rangkaian ini bekerja menggunakan mikrokontroler STM32F103C8 sebagai pusat kendali yang menerima masukan dari dua sensor, yaitu sensor sentuh dan sensor PIR. Sensor sentuh berfungsi mendeteksi adanya sentuhan, sedangkan sensor PIR mendeteksi gerakan berdasarkan perubahan radiasi inframerah dari tubuh manusia. Kedua sensor menghasilkan sinyal digital berupa logika 0 atau 1 yang kemudian dibaca oleh mikrokontroler untuk diproses sesuai program yang telah dibuat.

    Berdasarkan kondisi input tersebut, mikrokontroler mengendalikan dua output yaitu LED dan buzzer. Jika salah satu sensor atau keduanya aktif (logika 1), maka LED akan menyala sebagai indikator visual dan buzzer berbunyi sebagai alarm suara. Jika kedua sensor tidak aktif (logika 0), maka LED dan buzzer tetap mati. Dengan prinsip ini, rangkaian dapat digunakan sebagai sistem keamanan atau pendeteksi keberadaan manusia secara sederhana.


Prinsip Kerja:
Sistem membaca dua input utama yaitu touch sensor sebagai saklar utama dan sensor PIR sebagai pendeteksi gerakan. Saat touch sensor disentuh, sistem akan mengaktifkan atau menonaktifkan mode kerja (toggle system_enable). Jika sistem aktif, LED (lampu) akan menyala terus sebagai kondisi standby. Ketika sensor PIR mendeteksi adanya gerakan, LED tetap menyala dan buzzer akan berbunyi sesaat sebagai indikator adanya aktivitas. Sebaliknya, jika tidak ada gerakan dan sistem dalam kondisi nonaktif, maka LED akan mati. Dengan demikian, rangkaian ini menggabungkan kontrol manual (touch sensor) dan otomatis (PIR) untuk mengatur nyala lampu dan buzzer.

4. Flowchart dan Listing Program [kembali]

Flowchart



Listing Program

#include "main.h"


/* Variabel */

uint8_t touch_last = 0;


/* Prototype */

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 = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0); // IR sensor

uint8_t touch = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1); // Touch sensor


/* =========================

LOGIKA UTAMA

========================= */

if (ir == GPIO_PIN_SET && touch == GPIO_PIN_RESET)

{

// IR deteksi & Touch tidak disentuh → LED MATI

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);

}

else

{

// Selain kondisi itu → LED NYALA

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);

}


HAL_Delay(50);

}

}

static void MX_GPIO_Init(void)

{

GPIO_InitTypeDef GPIO_InitStruct = {0};


__HAL_RCC_GPIOA_CLK_ENABLE();

__HAL_RCC_GPIOB_CLK_ENABLE();


/* INPUT: IR dan Touch */

GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1;

GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

GPIO_InitStruct.Pull = GPIO_PULLDOWN;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);


/* OUTPUT: LED */

GPIO_InitStruct.Pin = GPIO_PIN_0;

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_InitStruct.Pull = GPIO_NOPULL;

GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);


/* Default LED OFF */

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);

}

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

}

}

void Error_Handler(void)

{

__disable_irq();

while (1)

{

}

}


5. Video Demo [kembali]




6. Kondisi [kembali]

Percobaan 1 Kondisi 9
Buatlah rangkaian seperti pada gambar percobaan 1 dengan kondisi ketika sensor touch disentuh kembali setelah mode manual aktif, maka sistem kembali ke mode otomatis, buzzer berhenti berbunyi, dan sensor PIR kembali aktif mendeteksi gerakan.

7. Video Simulasi [kembali]



8. Download File [kembali]








Comments

Popular posts from this blog

Mikroprosesor dan Mikrokontroler

UTS