Laporan Akhir 2 M1




Laporan Akhir 2 Modul 1
(Percobaan 4)

1. Prosedur
[Kembali]

  1. Rangkai sesuai gambar percobaan dengan inputnya PIR danTouch sensor, untuk outputnya yaitu LED RGB. Hubungkan LED, touch sensor, dan PIR sensor dengan kabel jumper sesuai pin pada programnya.
  2. Buatlah program dengan konfigurasi pin input dan output berdasarkan pada pin GP STM32 yang telah dirangkai sebelumnya.
  3. Upload program ke STM32.
  4. Lihat perubahan ketika sensor PIR diberi deteksi gerakan dan touch sensor diberi sentuhan.

2. Hardware dan Diagram Blok [Kembali]

Hardware :


Diagram Blok :



3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]


Rangkaian Simulasi :



Prinsip Kerja : 

     Rangkaian ini menggunakan mikrokontroler STM32 sebagai pusat pengolahan sinyal dari sensor PIR dan sensor sentuh. Sensor PIR mendeteksi pergerakan dan mengirimkan sinyal logika ke salah satu pin input pada STM32, sedangkan sensor sentuh terhubung ke pin input lain. Mikrokontroler memonitor kedua sinyal tersebut dan mengatur keluaran pada tiga LED (merah, hijau, dan biru). Saat sensor sentuh diaktifkan, mikrokontroler akan menyalakan LED hijau dalam jangka waktu tertentu, lalu mematikannya kembali. Apabila sensor sentuh tidak aktif dan sensor PIR tidak mendeteksi pergerakan, LED merah akan menyala, namun akan padam ketika ada pergerakan terdeteksi. LED biru digunakan sebagai indikator yang merefleksikan status sensor PIR secara langsung. Dengan demikian, sistem ini mampu memberikan indikasi visual atas kondisi sentuh dan deteksi gerakan secara real-time.

4. Flowchart dan Listing Program [Kembali]

Flowchart :



Listing Program :

#include "main.h"

// Prototype fungsi
void SystemClock_Config(void);
static void MX_GPIO_Init(void);

int main(void)
{
  // Inisialisasi HAL Library
  HAL_Init();
  
  // Konfigurasi sistem clock
  SystemClock_Config();
  
  // Inisialisasi GPIO
  MX_GPIO_Init();

  while (1)
  {
    // Baca status sensor PIR dan sensor sentuh
    uint8_t pir_status   = HAL_GPIO_ReadPin(GPIOB, PIR_Pin);
    uint8_t touch_status = HAL_GPIO_ReadPin(GPIOB, TOUCH_Pin);

    // LED biru mengikuti status PIR secara langsung
    // Jika pir_status == GPIO_PIN_SET, LED biru menyala, sebaliknya mati
    HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, pir_status);

    // Jika sensor sentuh terdeteksi (HIGH)
    if (touch_status == GPIO_PIN_SET)
    {
      // Matikan LED merah, nyalakan LED hijau
      HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_RESET);
      HAL_GPIO_WritePin(GPIOA, GREEN_Pin, GPIO_PIN_SET);

      // Tahan LED hijau selama 3 detik
      HAL_Delay(3000);

      // Matikan LED hijau
      HAL_GPIO_WritePin(GPIOA, GREEN_Pin, GPIO_PIN_RESET);

      // Tunda lagi 3 detik (opsional, jika memang diinginkan jeda)
      HAL_Delay(3000);
    }
    else
    {
      // Jika sensor sentuh tidak aktif dan PIR tidak mendeteksi gerakan
      // maka LED merah menyala
      if ((pir_status == GPIO_PIN_RESET) && (touch_status == GPIO_PIN_RESET))
      {
        HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET);
      }
      else
      {
        // Jika sensor PIR mendeteksi gerakan, LED merah dimatikan
        HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_RESET);
      }
    }
  }
}

// Konfigurasi clock dasar dengan HSI sebagai sumber clock
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  // Mengaktifkan HSI (High Speed Internal)
  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();
  }

  // Mengatur sumber clock dan pembagian clock
  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;

  // Terapkan konfigurasi clock
  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
  {
    Error_Handler();
  }
}

// Inisialisasi GPIO
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  // Aktifkan clock untuk port yang digunakan
  __HAL_RCC_GPIOD_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();

  // Set default state untuk LED merah dan hijau (mati)
  HAL_GPIO_WritePin(GPIOA, RED_Pin | GREEN_Pin, GPIO_PIN_RESET);

  // Set default state untuk LED biru (mati)
  HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_RESET);

  // Konfigurasi pin LED merah dan hijau (PAx) sebagai output push-pull
  GPIO_InitStruct.Pin   = RED_Pin | GREEN_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);

  // Konfigurasi pin LED biru (Px) sebagai output push-pull
  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);

  // Konfigurasi pin PIR dan TOUCH (PBx) sebagai input
  GPIO_InitStruct.Pin  = PIR_Pin | TOUCH_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}

// Fungsi penanganan error
void Error_Handler(void)
{
  __disable_irq();
  while (1)
  {
    // Di sini dapat ditambahkan penanganan error sesuai kebutuhan
  }
}


5. Kondisi [Kembali]

Kondisi ketika PIR dan Touch sensor mendeteksi LED RGB akan menampilkan warna biru serta cyan selama 3 detik lalu mati selama 3 detik secara berulang, ketika Touch mendeteksi sentuhan maka LED RGB akan menampilkan warna hijau selama 3 detik lalu mati selama 3 detik secara berulang dan PIR mendeteksi gerakan maka LED RGB akan menampilkan warna biru selama 3 detik lalu mati selama 3 detik secara berulang


6. Video Demo [Kembali]



7. Download File [Kembali]

HTML Download
File Rangkaian Download
Video Demo Download
Datasheet STM32 Download
Datasheet PIR Download
Datasheet LED RGB Download
Datasheet Resistor Download
Datasheet Sensor Touch Download















Tidak ada komentar:

Posting Komentar

Kelebihan dan Kekurangan Seorang Pemimpin 

Kelebihan dan Kekurangan Seorang Pemimpin  Seorang pemimpin memainkan peran penting dalam keberhasilan sebuah organisasi, komunitas, atau ne...