Laporan Akhir 2

[menuju akhir]

1. Prosedur [kembali]

  1. Rancang rangkaian sesuai dengan skema pada percobaan 7.

  2. Tentukan dan atur pin input-output pada software STM32 sesuai dengan kebutuhan rangkaian.

  3. Setelah pengaturan pin selesai dan sesuai dengan modul, hasilkan kode program dari konfigurasi tersebut.

  4. Gunakan kode yang telah diperoleh untuk disimulasikan di software Proteus, dengan memasukkannya ke mikrokontroler STM32F103C8.

  5. Selesai dan rangkaian siap diuji melalui simulasi.

2. Hardware dan Diagram Blok [kembali]

Hardware

  • STM32
  • Push button
  • LED RGB
  • Resistor

  • Sensor Soil Moisture



  • Buzzer

  • Jumper Cable Wire
  • Beard board
Diagram Blok

3. Rangkaian Simulasi dan Prinsip Kerja [kembali]

Rangkaian Simulasi

Prinsip Kerja

        Prinsip kerja rangkaian ini didasarkan pada pemrosesan sinyal digital oleh Raspberry Pi Pico untuk mengontrol nyala LED menggunakan input dari push button. Push button bertindak sebagai saklar yang secara langsung mengatur status satu buah LED. Sistem ini menerapkan logika digital, di mana push button berperan sebagai input dengan kondisi logika LOW (0) saat tidak ditekan dan berubah menjadi HIGH (1) saat ditekan. Sementara itu, LED sebagai output akan menyala atau mati mengikuti kondisi tombol tersebut.

        Ketika tombol ditekan, sinyal HIGH (1) diterima oleh pin GPIO yang dikonfigurasi sebagai input, dan Raspberry Pi Pico mengenali bahwa tombol aktif. Sebagai respon, mikrokontroler akan mengatur pin output yang terhubung ke LED menjadi HIGH (1), sehingga arus mengalir melalui LED dan resistor pembatas, menyebabkan LED menyala. Sebaliknya, saat tombol dilepas, sinyal output akan dikembalikan ke LOW (0), memutus arus dan mematikan LED.

        Untuk memastikan sistem bekerja secara stabil, digunakan resistor pull-down internal pada tombol, yang menjaga agar sinyal tetap berada pada kondisi logika LOW saat tombol tidak ditekan, sehingga mencegah pembacaan yang keliru akibat sinyal mengambang (floating). Selain itu, program juga menyisipkan jeda singkat sekitar 50 milidetik untuk mengatasi efek bouncing, yaitu gangguan sinyal singkat yang terjadi saat tombol ditekan atau dilepas.

4. Flowchart dan Listing Program [kembali]

Flowchart

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, IR_Pin); // Membaca IR sensor (PB10)
    uint8_t touch_status = HAL_GPIO_ReadPin(GPIOB, TOUCH_Pin); // Membaca Touch Sensor (PB6)

    // LED Biru menyala jika IR aktif
    HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, ir_status);

    // LED Hijau menyala jika Touch aktif
    HAL_GPIO_WritePin(GPIOA, GREEN_Pin, touch_status);

    // LED Merah menyala jika tidak ada sensor yang aktif
    if (ir_status == GPIO_PIN_RESET && touch_status == GPIO_PIN_RESET) {
        HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET); // Nyalakan LED RED
    } else {
        HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_RESET); // Matikan LED RED
    }
        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();

 /*Configure GPIO pin Output Level */
 HAL_GPIO_WritePin(GPIOA, RED_Pin|GREEN_Pin, GPIO_PIN_RESET);

 /*Configure GPIO pin Output Level */
 HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_RESET);

 /*Configure GPIO pins : RED_Pin GREEN_Pin */
 GPIO_InitStruct.Pin = RED_Pin|GREEN_Pin;
 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);

 /*Configure GPIO pin : BLUE_Pin */
 GPIO_InitStruct.Pin = BLUE_Pin;
 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
 GPIO_InitStruct.Pull = GPIO_NOPULL;
 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
 HAL_GPIO_Init(BLUE_GPIO_Port, &GPIO_InitStruct);

 /*Configure GPIO pins : IR_Pin TOUCH_Pin */
 GPIO_InitStruct.Pin = IR_Pin|TOUCH_Pin;
 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)
 {
 }
}
#ifdef USE_FULL_ASSERT
void assert_failed(uint8_t *file, uint32_t line)
{
}
#endif /* USE_FULL_ASSERT */

5. Video Demo [kembali]

6. Kondisi [kembali]

    Percobaan 7 Led RGB, Buzzer, Soil Moisture, & Push Button

7. Analisa [kembali]

8. Download File [kembali]

Video Simulasi [klik disini]
Listing Program [klik disini]
Datasheet Raspberry STM32F103C8 [klik disini]
Datasheet Sensor Infrared [klik disini]
Datasheet Sensor Touch[klik disini]
Datasheet LED [klik disini]
Datasheet Resistor [klik disini]


Komentar

Postingan populer dari blog ini

Modul 1 General Input dan Output

Modul 1 Gerbang Logika Dasar & Monostable Multivibrator