Tugas Pendahuluan 1

 

 Tugas Pendahuluan 1



 Percobaan 3 Alarm Perimeter Pintu


a. Prosedur [Kembali]

1. Buka software proteus lalu rangkai komponen sesuai dengan gambar yang ada di modul

2. Buka software STM32CubeIDE lalu lakukan konfigurasi pin pada STM untuk menentukan GPIO input dan GPIO output

3. Masukan Program ke dalam software STM32CubeIDE lalu build untuk mendapatkan file .hex

4. Masukan file .hex ke dalam file library STM32F103C8 pada proteus

5. Simulasikan rangkaian

b. Hardware dan Diagram Blok [Kembali]

  • Hardwere
1. STM32F103C8





2. Touch Sensor



3. IR Sensor






4. LED



5. Buzzer



6. Resistor 


  • Diagram Blog




c. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

  • Rangkaian Simulasi




  • Prinsip Kerja

Prinsip kerja rangkaian dan program pada percobaan ini adalah mikrokontroler STM32 berfungsi sebagai pengendali utama yang membaca dua buah input digital, yaitu dari sensor infrared (IR) dan touch sensor, kemudian mengatur output berupa LED dan buzzer sesuai kondisi logika yang telah diprogram. Berdasarkan kode program, mikrokontroler secara terus-menerus membaca status kedua sensor menggunakan fungsi HAL_GPIO_ReadPin . Sensor IR akan bernilai aktif (HIGH) ketika mendeteksi adanya objek, sedangkan touch sensor bernilai tidak aktif (LOW) ketika tidak disentuh.

Ketika kondisi terpenuhi, yaitu IR mendeteksi objek (HIGH) dan touch sensor tidak disentuh (LOW), maka mikrokontroler menjalankan perintah untuk menyalakan LED dan buzzer secara bergantian (ON-OFF) dengan jeda waktu menggunakan HAL_Delay(300). Proses ini menyebabkan LED terlihat berkedip dan buzzer menghasilkan suara putus-putus. Sebaliknya, jika kondisi tersebut tidak terpenuhi (misalnya tidak ada objek atau touch sensor disentuh), maka mikrokontroler mematikan kedua output tersebut sehingga LED dan buzzer tidak aktif. Dengan demikian, sistem bekerja sebagai indikator berbasis kombinasi dua sensor, di mana output hanya aktif dalam pola tertentu ketika kondisi logika yang diinginkan terpenuhi.



d. Flowchart dan Listing Program [Kembali]

  • Flowchart

  • Listing Program

/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : main.c
  * @brief          : Main program body
  ******************************************************************************
  * @attention
  *
  * Copyright (c) 2026 STMicroelectronics.
  * All rights reserved.
  *
  * This software is licensed under terms that can be found in the LICENSE file
  * in the root directory of this software component.
  * If no LICENSE file comes with this software, it is provided AS-IS.
  *
  ******************************************************************************
  */
/* USER CODE END Header */

/* Includes ------------------------------------------------------------------*/
#include "main.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */

/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/

/* USER CODE BEGIN PV */
uint8_t ir_state;
uint8_t touch_state;
/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* MCU Configuration--------------------------------------------------------*/

  HAL_Init();                 // Inisialisasi HAL
  SystemClock_Config();       // Konfigurasi clock
  MX_GPIO_Init();             // Inisialisasi GPIO

  /* Infinite loop */
  while (1)
  {
    // Membaca input dari sensor
    ir_state = HAL_GPIO_ReadPin(GPIOA, IR_Pin);
    touch_state = HAL_GPIO_ReadPin(GPIOA, Touch_Pin);

    // Kondisi: IR aktif & Touch tidak disentuh
    if (ir_state == GPIO_PIN_SET && touch_state == GPIO_PIN_RESET)
    {
      // LED ON & Buzzer ON
      HAL_GPIO_WritePin(GPIOB, RED_Pin, GPIO_PIN_SET);
      HAL_GPIO_WritePin(GPIOB, Buzzer_Pin, GPIO_PIN_SET);
      HAL_Delay(300);

      // LED OFF & Buzzer OFF (kedip & bunyi putus-putus)
      HAL_GPIO_WritePin(GPIOB, RED_Pin, GPIO_PIN_RESET);
      HAL_GPIO_WritePin(GPIOB, Buzzer_Pin, GPIO_PIN_RESET);
      HAL_Delay(300);
    }
    else
    {
      // Kondisi lain: semua mati
      HAL_GPIO_WritePin(GPIOB, RED_Pin, GPIO_PIN_RESET);
      HAL_GPIO_WritePin(GPIOB, Buzzer_Pin, GPIO_PIN_RESET);
    }
  }
}

/**
  * @brief System Clock Configuration
  * @retval None
  */
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();
  }
}

/**
  * @brief GPIO Initialization Function
  */
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* Enable Clock GPIO */
  __HAL_RCC_GPIOD_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();

  /* Set Output awal LOW */
  HAL_GPIO_WritePin(GPIOB, RED_Pin | Buzzer_Pin, GPIO_PIN_RESET);

  /* Konfigurasi pin input (IR & Touch) */
  GPIO_InitStruct.Pin = IR_Pin | Touch_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  /* Konfigurasi pin output (LED & Buzzer) */
  GPIO_InitStruct.Pin = RED_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(GPIOB, &GPIO_InitStruct);
}

/**
  * @brief  Error Handler
  */
void Error_Handler(void)
{
  __disable_irq();
  while (1)
  {
  }
}

#ifdef USE_FULL_ASSERT
/**
  * @brief  Assert Failed
  */
void assert_failed(uint8_t *file, uint32_t line)
{
  // Bisa ditambahkan debug jika diperlukan
}
#endif

e. Video Demo [Kembali]


f. Kondisi [Kembali]

Percobaan 3 kondisi 4

Buatlah rangkaian seperti pada gambar percobaan 3 dengan kondisi ketika Infrared sensor mendeteksi benda dan Touch sensor tidak mendeteksi sentuhan, maka LED menyala berkedip dan Buzzer berbunyi putus-putus

g. Video Simulasi [Kembali]





h. Download File [Kembali]

File TP [Klik disini]

Video Simulasi [Disini]



Kembali ke Halaman Atas


Tidak ada komentar:

Posting Komentar

  BAHAN PRESENTASI UNTUK MATA KULIAH  ELEKTRONIKA     Oleh : Farhan Hamid 2310951007     Dosen Pengampu : Darwison, M.T.     Darwison, 2010,...