Percobaan 1 Kondisi 5



TUGAS PENDAHULUAN DAN LAPORAN AKHIR 1

PERCOBAAN 1

 1. Prosedur [kembali]

  1. Membuat project baru di STM32CubeIDE dengan memilih tipe mikrokontroler STM32F103C8 kemudian melakukan konfigurasi pin dengan mengatur PA0 sebagai input untuk sensor PIR, PA1 sebagai input untuk touch sensor, serta PB0 dan PB1 sebagai output untuk LED dan buzzer.
  2. Melakukan generate code menggunakan fitur yang tersedia di STM32CubeIDE, kemudian menambahkan program utama pada file main.c sesuai dengan kondisi percobaan yaitu saat touch pertama kali aktif maka LED dan buzzer menyala serta sensor PIR dinonaktifkan.
  3. Melakukan proses build atau kompilasi program untuk menghasilkan file berekstensi .hex yang nantinya akan digunakan pada simulasi di Proteus.
  4. Membuat rangkaian pada Proteus dengan menambahkan komponen STM32F103C8, sensor touch, sensor PIR, LED, buzzer, serta sumber tegangan VCC dan GND, kemudian menghubungkan touch sensor ke pin PA1, sensor PIR ke pin PA0, LED ke pin PB0 melalui resistor, dan buzzer ke pin PB1, serta memastikan semua ground terhubung dengan benar.
  5. Memasukkan file .hex hasil kompilasi ke dalam komponen STM32 pada Proteus melalui pengaturan program file.
  6. Menjalankan simulasi pada Proteus kemudian mengamati kondisi output dimana pada kondisi awal LED dan buzzer dalam keadaan mati, saat sensor PIR mendeteksi gerakan maka LED dapat menyala, dan ketika touch sensor disentuh pertama kali maka LED dan buzzer akan menyala secara bersamaan serta sensor PIR tidak lagi mempengaruhi sistem.

 2. Hardware[kembali]

  1. STM32G474RE

Microcontroller

STM32G474RE (ARM Cortex-M4F)

Operating Voltage

3.3 V

Input Voltage (recommended)

5 V via USB (ST-LINK) atau 7–12 V via VIN

Input Voltage (limit)

4.5  15 V (VIN board Nucleo)

Digital I/O Pins

±51 GPIO pins (tergantung konfigurasi fungsi)

PWM Digital I/O Pins

Hingga 24 channel PWM (advanced, general-purpose, dan high-resolution timers)

Analog Input Pins

Hingga 24 channel ADC (12-bit / 16-bit dengan oversampling)

DC Current per I/O Pin

Maks. 20 mA per pin (disarankan  8 mA)

DC Current for 3.3V Pin

Hingga ±500 mA (tergantung regulator & sumber daya)

Flash Memory

512 KB internal Flash

SRAM

128 KB SRAM (termasuk CCM RAM)

Clock Speed

Hingga 170 MHz

    2. STM32F103C8

Microcontroller

ARM Cortex-M3

Operating Voltage

3.3 V

Input Voltage (recommended)

V

Input Voltage (limit)

2  3.6 V

Digital I/O Pins

32

PWM Digital I/O Pins

15

Analog Input Pins

10 (dengan resolusi 12-bit ADC)

DC Current per I/O Pin

25 mA

DC Current for 3.3V Pin

150 mA

Flash Memory

64 KB

SRAM

20 KB

EEPROM

Emulasi dalam Flash

Clock Speed

72 MHz


    3. Touch Sensor

    SPESIFIKASI :

  • Konsumsi daya yang rendah
  • Bisa menerima tegangan dari 2 ~ 5.5V DC
  • Dapat menggantikan fungsi saklar tradisional
  • Dilengkapi 4 lobang baut untuk memudahkan pemasangan
  • Tegangan kerja : 2v s/d 5.5v (optimal 3V)
  • Output high VOH : 0.8 VCC (typical)
  • Output low VOL : 0.3 VCC (max)
  • Arus Output Pin Sink (@ VCC 3V, VOL 0.6V) : 8 mA
  • Arus Output pin pull-up (@ VCC=3V, VOH=2.4V) : 4 mA
  • Waktu respon (low power mode): max 220 ms
  • Waktu respon (touch mode): max 60 ms
  • Ukuran: 24 mm x 24 mm x 7.2 mm

    4. PIR Sensor

    5. LED



    6. Buzzer

    7. Resistor

8. Diagram Blok

 3. Rangkaian Simulasi dan Prinsip Kerja [kembali]


Prinspi Kerja: 
Prinsip kerja sistem pada percobaan kontrol lampu lorong ini dimulai dari pembacaan input oleh sensor PIR dan touch yang terhubung ke mikrokontroler STM32 sebagai pusat pengendali. Pada kondisi awal, sensor PIR berfungsi mendeteksi adanya pergerakan sehingga mikrokontroler akan mengaktifkan LED sebagai indikator. Ketika touch sensor disentuh untuk pertama kali, mikrokontroler mengubah kondisi sistem dengan menyalakan LED dan buzzer secara bersamaan serta menonaktifkan pengaruh dari sensor PIR. Selanjutnya, sistem akan terus bekerja secara berulang dengan membaca kondisi input dan memberikan respon output sesuai logika yang telah diprogram, sehingga tercipta suatu siklus kontrol sederhana antara input, proses, dan output.

 4. Flowchart dan Listing Program [kembali]
Listing Program:
#include "stm32f1xx_hal.h"   // Library HAL STM32

/* Function Prototype */
void SystemClock_Config(void);   // Fungsi konfigurasi clock
static void MX_GPIO_Init(void);  // Fungsi inisialisasi GPIO
void Error_Handler(void);        // Fungsi error handler

int main(void)
{
    HAL_Init();                 // Inisialisasi HAL (reset peripheral & setup dasar)
    SystemClock_Config();       // Konfigurasi clock sistem
    MX_GPIO_Init();             // Inisialisasi GPIO (input & output)

    while (1)                   // Loop utama (program berjalan terus)
    {
        // ===== BACA INPUT =====
        uint8_t touch = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1); 
        // Membaca pin PA1 (touch sensor)
        // Jika disentuh → HIGH (1)
        // Jika tidak → LOW (0)

        // ===== TOUCH → LED (PB0) & BUZZER (PB1) =====
        if (touch == GPIO_PIN_SET)   // Jika touch aktif
        {
            // Menyalakan LED (PB0) dan buzzer (PB1)
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0 | GPIO_PIN_1, GPIO_PIN_SET);
        }
        else   // Jika touch tidak aktif
        {
            // Mematikan LED dan buzzer
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0 | GPIO_PIN_1, GPIO_PIN_RESET);
        }
    }
}

/* ===== SYSTEM CLOCK ===== */
void SystemClock_Config(void)
{
    RCC_OscInitTypeDef RCC_OscInitStruct = {0};   // Struktur konfigurasi oscillator
    RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};   // Struktur konfigurasi clock

    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; 
    // Menggunakan oscillator internal (HSI)

    RCC_OscInitStruct.HSIState = RCC_HSI_ON;      
    // Mengaktifkan HSI

    RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; 
    // Nilai kalibrasi default

    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; 
    // Tidak menggunakan PLL (clock tidak dikalikan)

    if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
        Error_Handler();   // Jika gagal → masuk error

    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK |
                                  RCC_CLOCKTYPE_SYSCLK |
                                  RCC_CLOCKTYPE_PCLK1;
    // Mengatur jenis clock yang digunakan

    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; 
    // Sumber clock utama = HSI

    RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; 
    // Clock AHB tidak dibagi

    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; 
    // Clock APB1 tidak dibagi

    if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
        Error_Handler();   // Jika gagal → error
}

/* ===== GPIO INIT ===== */
static void MX_GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};   // Struktur konfigurasi GPIO

    __HAL_RCC_GPIOA_CLK_ENABLE();   // Aktifkan clock untuk port A
    __HAL_RCC_GPIOB_CLK_ENABLE();   // Aktifkan clock untuk port B

    // ===== INPUT: PA1 (TOUCH) =====
    GPIO_InitStruct.Pin = GPIO_PIN_1;          // Pin PA1
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;    // Mode input
    GPIO_InitStruct.Pull = GPIO_NOPULL;        // Tanpa pull-up/pull-down
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);    // Inisialisasi port A

    // ===== OUTPUT: PB0 (LED), PB1 (BUZZER) =====
    GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1; 
    // Pin PB0 dan PB1

    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; 
    // Mode output push-pull

    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 
    // Kecepatan rendah (cukup untuk LED & buzzer)

    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); 
    // Inisialisasi port B

    // ===== KONDISI AWAL =====
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0 | GPIO_PIN_1, GPIO_PIN_RESET);
    // Pastikan LED & buzzer mati saat awal
}

/* ===== ERROR HANDLER ===== */
void Error_Handler(void)
{
    __disable_irq();   // Matikan interrupt jika error
    while (1)          // Loop tak hingga (program berhenti)
    {
    }
}

 5. Video Demo [kembali]


 6. Kondisi [kembali]

Percobaan 1 Kontrol Lampu Lorong

Kondisi 5 : Buatlah rangkaian seperti pada gambar percobaan 1 dengan kondisi sensor Touch mendeteksi sentuhan pertama kali, maka LED menyala dan Buzzer berbunyi, serta PIR dinonaktifkan

7. Video Simulasi [kembali]


8. Link Download [kembali]
















Tidak ada komentar:

Posting Komentar

 BAHAN PRESENTASI MATA KULIAH ELEKTRONIKA      Oleh : Husni Mubarok (2310952012) Dosen Pengampu : Dr. Darwison, M.T. DEPARTEMEN TEKNIK ELEKT...