LAPORAN AKHIR 2




MODUL 1

LAPORAN AKHIR 2


1. Prosedur [kembali]

1. Mulailah dengan menjalankan aplikasi simulator Proteus, kemudian buat sebuah project baru. Setelah itu, tambahkan seluruh komponen yang dibutuhkan ke dalam workspace, yaitu mikrokontroler STM32F103C6, sensor sentuh (touch sensor), sensor IR obstacle, LED, resistor dengan nilai 220Ω dan 10kΩ, buzzer, serta push button. 

2. Selanjutnya, lakukan perancangan rangkaian dengan menghubungkan setiap komponen sesuai dengan skematik yang telah ditentukan. Output dari kedua sensor dihubungkan ke pin input mikrokontroler, yaitu PA0 dan PA1, sedangkan aktuator seperti LED dan buzzer dihubungkan ke pin output PB0 dan PB1. Pastikan seluruh koneksi catu daya, termasuk VCC/VDDA dan GND/VSSA, telah terhubung dengan benar agar sistem dapat bekerja secara optimal. 

3. Setelah rangkaian selesai, lakukan proses kompilasi (compile/build) terhadap program yang telah dibuat menggunakan perangkat lunak seperti Arduino IDE atau STM32CubeIDE hingga dihasilkan file dengan ekstensi .hex atau .elf. 

4. Kemudian, pada Proteus, klik dua kali pada komponen mikrokontroler STM32 untuk membuka properti, lalu masukkan lokasi (path) file hasil kompilasi tersebut pada bagian “Program File”. 

5. Langkah berikutnya adalah menjalankan simulasi dengan menekan tombol Play atau Run Simulation yang terletak di bagian kiri bawah tampilan Proteus. 

6. Terakhir, lakukan pengujian dengan mengubah kondisi logika input pada sensor, misalnya dengan melakukan toggle dari nilai 0 ke 1 pada sensor sentuh atau sensor IR, kemudian amati respons sistem melalui LED dan buzzer sebagai indikator output.


2. Hardware [kembali]

a) STM32F103C8


    b) Touch Sensor



    c) PIR Sensor



    d) LED



    e) Buzzer



    f) Resistor



     g) Diagram Blok


3. Rangkaian Simulasi dan Prinsip Kerja [kembali]


Kondisi Siaga (Standby):
Pada saat simulasi dijalankan, mikrokontroler melakukan pembacaan awal terhadap status pin input, yaitu PA0 yang terhubung ke sensor sentuh dan PA1 yang terhubung ke sensor IR. Dalam kondisi normal, ketika tidak terdapat sentuhan maupun objek yang terdeteksi, kedua sensor berada pada logika LOW (0). Akibatnya, seluruh aktuator seperti LED dan buzzer berada dalam kondisi tidak aktif (OFF).

Kondisi Input Aktif:
Apabila terjadi interaksi, seperti seseorang menyentuh gagang pintu (sensor sentuh aktif) atau melintasi area deteksi sensor IR, maka sensor yang bersangkutan akan menghasilkan sinyal logika HIGH (1) ke mikrokontroler. Kondisi ini dapat terjadi pada salah satu atau kedua input, misalnya PA0 berubah menjadi HIGH terlebih dahulu.

Tahap Pemrosesan:
Mikrokontroler akan mendeteksi perubahan status logika pada pin input dari LOW menjadi HIGH. Berdasarkan algoritma atau program yang telah ditanamkan, sistem kemudian memproses kondisi tersebut dan menentukan bahwa perlu dilakukan aktivasi sistem peringatan.

Pembangkitan Output:
Sebagai respons, mikrokontroler mengeluarkan sinyal logika HIGH melalui pin output PB0 dan PB1, baik secara simultan maupun sesuai urutan yang ditentukan dalam program.

Kondisi Aktif (Alarm):
Dengan adanya sinyal HIGH pada pin output, arus listrik mengalir ke LED sehingga LED merah menyala sebagai indikator visual, sementara buzzer aktif menghasilkan suara sebagai indikator audio. Keadaan ini akan terus berlangsung selama sinyal input dari sensor masih berada pada kondisi HIGH (logika 1).


4. Flowchart dan Listing Program [kembali]




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); 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]


6. Kondisi [kembali]

Program memiliki 2 kondisi utama (state):

  • System Enable = 1 (aktif)
  • System Enable = 0 (nonaktif)

Status ini dikontrol oleh touch sensor di PA1.


7. Video Simulasi [kembali]



8. Link Download [kembali]




Komentar

Postingan populer dari blog ini