TP 1 M1 PERC 1 KONDISI 2 PRAK UPUC



1. Prosedur[Kembali]

  1. Pahami terlebih dahulu kondisi yang akan digunakan
  2. Buka software Proteus 8.17
  3. Persiapkan alat dan bahan
  4. Buat rangkaian sesuai dengan kondisi dan modul
  5. Buka software STM32Cube IDE 
  6. Setelah membuka software, pilih perangkat STM32F103C8T6 
  7. Sesuaikan konfigurasi pin sesuai dengan rangkaian proteus 
  8. Buat kode program untuk mengoperasikan rangkaian tersebut sesuai dengan kondisi 
  9. Konfigurasi kan program dengan software Proteus
  10. Jalankan simulasi rangkaian.  
  11. Proses selesai

2. Hardware dan Diagram Blok[Kembali]

    Hardware

    


STM32F103C8


Touch Sensor


PIR Sensor


LED


Buzzer

Resistor

    Diagram Blok


3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

Rangkaian Simulasi

Prinsip Kerja

Prinsip kerja rangkaian Kontrol Lampu Lorong ini berbasis pada sistem deteksi ganda menggunakan mikrokontroler STM32F103C8 sebagai pusat kendali. Sistem bekerja dengan cara memantau input digital dari Sensor PIR untuk mendeteksi pergerakan manusia dan Touch Sensor sebagai pemicu manual atau interaktif. Ketika salah satu atau kedua sensor mengirimkan logik tinggi (High) ke pin input (PA0 atau PA1), STM32 akan memproses data tersebut sesuai algoritma pemrograman untuk mengaktifkan pin output (PB0 dan PB1). Akibatnya, arus akan mengalir melalui Resistor pembatas arus untuk menyalakan LED sebagai penerangan lorong dan mengaktifkan Buzzer sebagai indikator suara. Dalam skema closed-loop, mikrokontroler akan terus memindai ulang status sensor; jika tidak ada lagi pergerakan atau sentuhan terdeteksi dalam jangka waktu tertentu, sistem secara otomatis akan memutus arus pada output untuk mematikan lampu dan alarm guna efisiensi energi.

1. Kondisi Awal

          Saat rangkaian dinyalakan, STM32 melakukan inisialisasi HAL, konfigurasi clock HSI, dan inisialisasi GPIO. Pin Touch dan PIR dikonfigurasi sebagai input, sedangkan pin LED dan Buzzer dikonfigurasi sebagai output.

2. Pembacaan Sensor (Loop Utama)

  • STM32 terus-menerus membaca status kedua sensor secara bersamaan di dalam while(1):
  • Touch Sensor → membaca apakah permukaan sensor disentuh
  • PIR Sensor → membaca apakah ada gerakan yang terdeteksi

3. Logika Kondisi

  • Sistem hanya akan mengaktifkan LED jika salah satu kondisi terpenuhi secara bersamaan:
  • Touch == GPIO_PIN_SET jika sensor disentuh
  • PIR == GPIO_PIN_SET jika gerakan terdeteksi
  • Jika salah satu sensor tidak aktif, LED akan tetap hidup.

4. Kondisi Terpenuhi

    Jika Touch tidak aktif atau PIR tidak mendeteksi gerakan, STM32 langsung mematikan LED (GPIO_PIN_RESET) dan kembali membaca sensor dari awal.

4. Flowchart dan Listing Program[Kembali]

Flowchart

Listing Program

#include "stm32f1xx_hal.h" void SystemClock_Config(void); static void MX_GPIO_Init(void); void Error_Handler(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); // ========================= // LOGIKA AND // ========================= if (pir_now == GPIO_PIN_SET && touch_now == GPIO_PIN_SET) { // Kedua sensor aktif → LED nyala HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // Hijau HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET); // Merah } else { // Selain itu → LED mati HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); 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(); // PA0 = PIR, PA1 = Touch GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // PB0 & PB1 = LED 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); // LED awal mati HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0 | GPIO_PIN_1, GPIO_PIN_RESET); } // ========================= // ERROR HANDLER // ========================= void Error_Handler(void) { __disable_irq(); while (1) { } }

5. Video Demo[Kembali]


6. Kondisi[Kembali]

    Buatlah rangkaian seperti pada gambar percobaan 1 dengan kondisi sensor Touch aktif dan PIR mendeteksi gerakan serta LED hidup berkedip

8. Download File[Kembali]

Rangkaian dan Program Proteus Download

Datasheet STM32F103C8 Download

Datasheet Touch Sensor Download

Datasheet PIR Sensor Download













   

Komentar

Postingan populer dari blog ini

Sistem Irigasi Pintar untuk Budidaya Raspberry pada Greenhouse Mini