Laporan Akhir 1

   

Laporan Akhir 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

Rangkaian alarm perimeter pintu ini bekerja dengan memanfaatkan sensor infrared (IR) sebagai pendeteksi objek dan touch sensor sebagai saklar kontrol sistem. Mikrokontroler berfungsi sebagai pusat pengolah yang membaca input dari kedua sensor, kemudian mengendalikan output berupa LED dan buzzer sebagai indikator alarm.

Pada sistem ini, touch sensor berperan sebagai tombol ON/OFF (toggle). Ketika touch sensor disentuh, mikrokontroler akan mengubah status sistem dari aktif menjadi nonaktif, atau sebaliknya. Mekanisme ini dideteksi melalui perubahan kondisi dari tidak disentuh ke disentuh (edge detection), sehingga satu sentuhan hanya dihitung satu kali. Selain itu, diberikan delay singkat untuk mencegah pembacaan ganda akibat noise atau getaran pada sensor. Jika sistem dalam keadaan aktif (system_enable = 1), mikrokontroler akan terus memantau kondisi sensor IR. Ketika sensor IR mendeteksi adanya objek (misalnya pintu terbuka atau ada orang melintas), maka mikrokontroler akan mengaktifkan LED dan buzzer sebagai alarm. Sebaliknya, jika tidak ada objek yang terdeteksi, maka LED dan buzzer tetap mati.

Namun, jika sistem dalam keadaan nonaktif (system_enable = 0), maka meskipun sensor IR mendeteksi objek, alarm tidak akan menyala karena sistem sedang dalam mode standby. Dengan demikian, rangkaian ini memiliki dua fungsi utama, yaitu sebagai sistem deteksi gangguan pada pintu menggunakan sensor IR dan sebagai sistem kontrol manual menggunakan touch sensor, sehingga pengguna dapat dengan mudah mengaktifkan atau menonaktifkan alarm sesuai kebutuhan.



d. Flowchart dan Listing Program [Kembali]

  • Flowchart




  • Listing Program

#include "main.h"


uint8_t system_enable = 1;

uint8_t touch_last = 0;


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 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


e. Video Demo [Kembali]


f. Analisa [Kembali]







g. Download File [Kembali]

File Analisa [Klik disini]

Video Demo [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,...