Percobaan 1 Kondisi 1



 Kontrol Lampu Lorong 


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. PIR Sensor



4. LED



5. Buzzer



6. Resistor 


  • Diagram Blog


c. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

  • Rangkaian Simulasi




  • Prinsip Kerja

Prinsip kerja rangkaian ini didasarkan pada pemanfaatan dua buah sensor sebagai masukan, yaitu sensor PIR (Passive Infrared) untuk mendeteksi keberadaan gerakan dan touch sensor untuk mendeteksi adanya sentuhan, yang kemudian diproses oleh mikrokontroler (STM32) sebagai pusat kendali sistem. Sensor PIR bekerja dengan mendeteksi perubahan radiasi inframerah yang dipancarkan oleh objek, seperti tubuh manusia. Ketika terdapat gerakan di area deteksi, sensor PIR akan menghasilkan sinyal logika tinggi (HIGH). Sebaliknya, jika tidak ada gerakan, maka output dari sensor PIR akan berada pada kondisi logika rendah (LOW).

Di sisi lain, touch sensor berfungsi sebagai input tambahan yang mendeteksi apakah permukaan sensornya disentuh atau tidak. Saat tidak ada sentuhan, touch sensor akan memberikan sinyal logika rendah (LOW), sedangkan ketika disentuh akan menghasilkan sinyal logika tinggi (HIGH). Kedua sinyal dari sensor ini kemudian dibaca oleh mikrokontroler melalui pin input yang telah dikonfigurasi sebelumnya.

Mikrokontroler selanjutnya memproses kedua input tersebut menggunakan logika tertentu, yaitu LED hanya akan menyala jika kondisi sensor PIR bernilai HIGH (terdapat gerakan) dan touch sensor bernilai LOW (tidak ada sentuhan). Dengan kata lain, sistem menerapkan logika AND yang dikombinasikan dengan NOT pada touch sensor. Apabila terdapat gerakan yang terdeteksi oleh sensor PIR tetapi touch sensor dalam keadaan disentuh, maka LED tidak akan menyala karena kondisi logika tidak terpenuhi. Demikian pula jika tidak ada gerakan, maka LED tetap dalam keadaan mati meskipun touch sensor tidak disentuh

Selain itu, pada rangkaian ini juga terdapat buzzer sebagai komponen output tambahan, namun dalam kondisi atau skenario kerja yang dibahas, buzzer tidak digunakan atau tidak diaktifkan. Dengan demikian, hanya LED yang berfungsi sebagai indikator utama dari hasil pemrosesan kedua sensor tersebut.

d. 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 pir_now   = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);
    uint8_t touch_now = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1);

    // LED ON hanya jika PIR aktif dan Touch tidak disentuh
    if (pir_now == GPIO_PIN_SET && touch_now == GPIO_PIN_RESET)
    {
      HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
    }
    else
    {
      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();
  }
}

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(GPIOB, LED_Pin | Buzzer_Pin, GPIO_PIN_RESET);

  GPIO_InitStruct.Pin = PIR_Pin | Touch_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  GPIO_InitStruct.Pin = LED_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);
}

void Error_Handler(void)
{
  __disable_irq();
  while (1)
  {
  }
}

#ifdef USE_FULL_ASSERT
void assert_failed(uint8_t *file, uint32_t line)
{
}
#endif


e. Video Demo [Kembali]


f. Kondisi [Kembali]

Buatlah rangkaian seperti pada gambar percobaan 1 dengan kondisi PIR mendeteksi gerakan dan touch sensor tidak mendeteksi sentuhan maka LED merah hidup

g. Video Simulasi [Kembali]





h. Download File [Kembali]



Kembali ke Halaman Atas

 

 

Komentar

Postingan populer dari blog ini

TUGAS BESAR

Astable Multivibrator D kecil dari 50%

Komparator Non Inverting ,Vref=0