Percobaan 1 Kondisi 2



1. Prosedur [Kembali]

1. Membuat proyek baru pada STM32CubeIDE dengan memilih mikrokontroler STM32F103C8, kemudian melakukan pengaturan pin dengan menjadikan PA2 sebagai input untuk sensor PIR, PA1 sebagai input untuk touch sensor, serta PB0 dan PB1 sebagai output yang terhubung ke LED dan buzzer.
2. Selanjutnya dilakukan proses generate code menggunakan fitur yang tersedia di STM32CubeIDE, lalu menambahkan kode utama pada file main.c sesuai dengan skenario percobaan, yaitu ketika touch sensor pertama kali aktif maka LED dan buzzer menyala, sementara sensor PIR dinonaktifkan.
3. Setelah itu, program di-build atau dikompilasi hingga menghasilkan file dengan ekstensi .hex yang akan digunakan dalam simulasi menggunakan Proteus.
4. Kemudian merancang rangkaian pada Proteus dengan menambahkan komponen STM32F103C8, sensor touch, sensor PIR, LED, buzzer, serta sumber tegangan VCC dan GND. Koneksi dilakukan dengan menghubungkan touch sensor ke pin PA1, sensor PIR ke PA0, LED ke PB0 melalui resistor, dan buzzer ke PB1, serta memastikan semua jalur ground terhubung dengan baik.
5. Berikutnya, file .hex hasil kompilasi dimasukkan ke dalam komponen STM32 di Proteus melalui pengaturan program file.
6. Terakhir, simulasi dijalankan untuk mengamati hasilnya, dimana pada kondisi awal LED dan buzzer dalam keadaan mati. Saat sensor PIR mendeteksi adanya gerakan, LED dapat menyala. Namun ketika touch sensor disentuh untuk pertama kalinya, LED dan buzzer akan menyala bersamaan, dan sensor PIR tidak lagi mempengaruhi sistem.

2. Hardware dan Diagram Blok[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]


Prinsip kerja:

    Prinsip kerja rangkaian ini berpusat pada pembacaan kondisi dari PIR sensor dan touch sensor sebagai input utama sistem. Pada kondisi awal, kedua sensor berada dalam keadaan tidak aktif, yaitu PIR sensor tidak mendeteksi adanya gerakan dan touch sensor tidak mendeteksi adanya sentuhan. Dalam keadaan ini, mikrokontroler akan memproses sinyal dari kedua sensor tersebut dan memberikan perintah agar LED tetap dalam kondisi mati sebagai indikator bahwa tidak ada aktivitas yang terdeteksi.

    Ketika salah satu sensor mulai aktif, baik PIR mendeteksi gerakan maupun touch sensor mendeteksi sentuhan, sinyal tersebut akan dikirimkan ke mikrokontroler untuk diproses. Mikrokontroler kemudian akan mengubah kondisi output sesuai logika yang telah diprogram. Namun, pada kondisi yang ditentukan dalam percobaan ini, fokus utamanya adalah saat kedua sensor sama-sama tidak aktif, sehingga LED harus berada dalam keadaan mati. Dengan demikian, prinsip kerja rangkaian ini bergantung pada pemantauan kondisi kedua sensor secara terus-menerus untuk menentukan status LED sebagai indikator sistem.

4. Flowchart dan Listing Program[Kembali]



Listing Program:
#include "stm32f1xx_hal.h" // Memanggil library utama untuk STM32 seri F1

void SystemClock_Config(void);   // Deklarasi pengaturan clock
static void MX_GPIO_Init(void);  // Deklarasi pengaturan pin GPIO
void Error_Handler(void);        // Deklarasi fungsi error

int main(void) // Fungsi utama program
{
    HAL_Init();            // Inisialisasi HAL
    SystemClock_Config();  // Konfigurasi clock sistem
    MX_GPIO_Init();        // Inisialisasi GPIO

    while (1) // Program berjalan terus-menerus
    {
        // Membaca status sensor
        uint8_t touch_now = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1); // Touch Sensor di PA1
        uint8_t pir_now   = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_2); // PIR Sensor di PA2

        // KONDISI:
        // Jika PIR tidak mendeteksi gerakan DAN Touch tidak mendetksi sentuhan
        if (pir_now == GPIO_PIN_RESET && touch_now == GPIO_PIN_RESET)
        {
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); // LED mati
        }
        else
        {
            // Jika salah satu sensor aktif (PIR atau Touch)
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // LED menyala
        }
    }
}

void SystemClock_Config(void) // Fungsi konfigurasi clock sistem
{
    RCC_OscInitTypeDef RCC_OscInitStruct = {0};
    RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

    // Menggunakan clock internal HSI
    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();

    // Konfigurasi jalur clock
    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();
}

static void MX_GPIO_Init(void) // Fungsi konfigurasi GPIO
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};

    __HAL_RCC_GPIOA_CLK_ENABLE(); // Aktifkan clock Port A
    __HAL_RCC_GPIOB_CLK_ENABLE(); // Aktifkan clock Port B

    // PA1 (Touch) dan PA2 (PIR) sebagai INPUT
    GPIO_InitStruct.Pin = GPIO_PIN_1 | GPIO_PIN_2;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    // PB0 (LED) sebagai OUTPUT
    GPIO_InitStruct.Pin = GPIO_PIN_0;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

    // Nilai awal LED mati
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
}

void Error_Handler(void) // Fungsi jika terjadi error
{
    __disable_irq(); // Matikan semua interrupt

    while (1)
    {
        // Sistem berhenti di sini jika error
    }
}

5. Video Demo[Kembali]


6. Kondisi[Kembali]

Percobaan 1 Kondisi 2

Buatlah rangkaian seperti pada gambar percobaan 1 dengan kondisi ketika PIR tidak mendeteksi gerakan dan sensor Touch tidak mendeteksi sentuhan, maka LED akan mati

7. Video Simulasi[Kembali]


8. Download File[Kembali]

Tidak ada komentar:

Posting Komentar

BAHAN PRESENTASI UNTUK ELEKTRONIKA 2024 Oleh : IBNU KHAIRUDDIN NIM. 2310952018   Dosen Pengampu : Dr. Darwison, S. T., M. T. NIDN. 001409640...