Jumat, 14 Maret 2025

M1 - Tugas Pendahuluan 1

M1 - Tugas Pendahuluan 1



1. Prosedur[Kembali]

Prosedur Percobaan 2 Kondisi 3

1. Buka software proteus

2. Cari Komponen yang akan digunakan sesuai dengan modul

3. Hubungka komponen sesuai dengan arahan yang ada pada modul dan untuk pin yang di pakai sesuaikan juga


4. Konfigurasi STM32 di STM32CubeIDE dan perbaiki code yang ada pada modul agar bisa  digunakan sesuai dengan kondisi yang di minta


5. build program yang telah di perbaiki tadi di software stm32cube

6. masukan file yang telah di ubah tadi pada stm32 yang telah di rangkai pada proteus

7. simulasikan dan lihat apa yang terjadi pada program

2. Hardware dan Diagram Blok[Kembali]

1.STM32F103C8

    sebagai mikrokontroler utama


2.Sensor Infrared
    
    sebagai pendeteksi objek atau benda    


3.Touch Sensor

    sebagai pendeteksi sentuhan


4.LED RGB

    sebagai ouput atau keluaran nanti nya


5.Resistor

    sebagai pengaman led agar tidak rusak karena arus lebih





3. Rangkaian Simulasi Dan Prinsip Kerja[Kembali]


Prinsip Kerja

    Ketika sistem mulai bekerja, STM32F103C8 akan pertama-tama membaca status sensor Infrared (PB10), yang berfungsi untuk mendeteksi keberadaan gerakan di sekitar sensor. Jika sensor Infrared mendeteksi adanya gerakan, maka STM32 tidak akan melanjutkan proses ke tahap berikutnya, dan LED RGB tetap dalam kondisi mati. Namun, jika sensor Infrared tidak mendeteksi gerakan, STM32 akan melanjutkan untuk membaca status sensor Touch (PB7). Pada tahap ini, jika sensor Touch tidak disentuh, maka LED RGB tetap mati karena sistem belum mendapatkan sinyal input yang sesuai untuk menyalakan LED. Sebaliknya, jika sensor Touch disentuh, STM32 akan mengaktifkan LED RGB dengan warna Cyan. Warna Cyan dihasilkan dengan cara menyalakan pin output hijau (PA7) dan biru (PB0), sementara pin merah (PA6) dibiarkan mati. Sistem akan terus memantau perubahan pada sensor Infrared dan sensor Touch, sehingga ketika terjadi perubahan kondisi, STM32 akan segera memperbarui status LED sesuai dengan logika yang telah ditentukan.


4. Flowchart dan Listing[Kembali]




Listing Program

#include "main.h"


void SystemClock_Config(void);

static void MX_GPIO_Init(void);


int main(void)

{

    HAL_Init();

    SystemClock_Config();

    MX_GPIO_Init();

    

    while (1)

    {

        uint8_t ir_status = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_10); // Membaca IR sensor (PB10)

        uint8_t touch_status = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_7); // Membaca Touch Sensor (PB7)

        

        // Kondisi: IR tidak mendeteksi gerakan dan Touch mendeteksi sentuhan

        if (ir_status == GPIO_PIN_RESET && touch_status == GPIO_PIN_SET) {

            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);  // Nyalakan LED Biru (PB0)

            HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_SET); // Nyalakan LED Hijau (PA7)

            HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET); // Matikan LED Merah (PA6)

        } 

        else {

            // Matikan semua LED jika kondisi tidak terpenuhi

            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);

            HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET);

            HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET);

        }

        

        HAL_Delay(10); // Delay kecil untuk stabilisasi pembacaan sensor

    }

}


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

    

    /* Konfigurasi GPIO untuk LED */

    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6|GPIO_PIN_7, GPIO_PIN_RESET);

    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);

    

    GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;

    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

    GPIO_InitStruct.Pull = GPIO_NOPULL;

    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    

    GPIO_InitStruct.Pin = GPIO_PIN_0;

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

    

    /* Konfigurasi GPIO untuk sensor */

    GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_7;

    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

    GPIO_InitStruct.Pull = GPIO_NOPULL;

    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

}


void Error_Handler(void)

{

    __disable_irq();

    while (1) {}

}



5. Video Demo[Kembali]


6. Kondisi[Kembali]

TP 1 Percobaan 2 Kondisi 3

Buatlah Rangkaian seperti gambar percobaan 2 dengan kondisi ketika sensor Infrared tidak mendeteksi gerakan dan sensor touch mendeteksi sentuhan maka LED RGB akan menampilkan warna Cyan


7. Video Simulasi[Kembali]




8. Download File[Kembali]

Download Rangkaian Klik Disini

Download Vidio Simulasi Klik Disini

Download Datasheet Mikrokontroler STM32F103C8 Klik Disini

Download Datasheet Push Button Klik Disini

Download Datasheet Buzzer Klik Disini

Download Vidio Simulasi Klik Disini


Related Posts:

0 komentar:

Posting Komentar