- Buka aplikasi STM32CubeIDE lalu pilih stm project
- Setelah itu masukkan pin Input dan pin Output sesuai dengan gambar rangkaian di modul
- Masukan program yang telah di buat sesuai kondisi pada kedua file tersebut
- Rangkai komponen sesuai dengan gambar rangkaian di modul
- Hubungkan laptop dengan rangkaian yang telah dirangkai
- Selesai
2. Hardware dan Diagram Blok[Kembali]
Sensor PIR digunakan untuk mendeteksi keberadaan gerakan manusia berdasarkan perubahan radiasi inframerah di sekitarnya. Rangkaian ini memiliki dua LED: LED merah yang menyala saat gerakan terdeteksi dan LED kuning yang menyala saat tidak ada gerakan.
Ketika program dijalankan, pin 27 dikonfigurasi sebagai input untuk menerima sinyal dari sensor PIR. Jika sensor mendeteksi gerakan, pin keluaran (GPIO 15) diatur ke HIGH (1) sehingga LED merah menyala, sementara pin GPIO 14 diatur ke LOW (0) sehingga LED kuning mati. Jika tidak ada gerakan, kondisi ini dibalik: LED merah mati dan LED kuning menyala.
Logika utama dari program ini terletak pada loop utama yang secara terus-menerus membaca status sensor PIR menggunakan pir.value(). Jika pir.value() bernilai 1, berarti ada gerakan yang terdeteksi, sehingga LED merah menyala dan LED kuning mati. Sebaliknya, jika pir.value() bernilai 0, berarti tidak ada gerakan, sehingga LED kuning menyala dan LED merah mati.
Program juga menggunakan time.sleep(0.1) untuk memberikan jeda 100 milidetik dalam setiap iterasi loop guna mencegah pembacaan sensor yang terlalu cepat. Ini membantu menghindari false triggering akibat fluktuasi kecil pada sensor PIR.
#include "main.h"
uint8_t system_enable = 1; uint8_t touch_last = 0;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
int main(void)
{
HAL_Init(); SystemClock_Config(); MX_GPIO_Init();
while (1)
{
uint8_t touch_now = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1);
if (touch_now == GPIO_PIN_SET && touch_last == GPIO_PIN_RESET)
{
system_enable = !system_enable; HAL_Delay(200);
}
touch_last = touch_now;
if (system_enable)
{
if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_SET)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
}
else
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);
}
}
else
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, 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, GPIO_PIN_0 | GPIO_PIN_1, GPIO_PIN_RESET);
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);
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1; 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
5. Video Demo[Kembali]
Download HTML klik disini
Download file Analisa klik disiniDownload video Demo klik disini
Download Datasheet Sensor PIR klik disiniDownload Datasheet LED klik disiniDownload Datasheet Resistor klik disini
Tidak ada komentar:
Posting Komentar