Laporan Akhir 2


1. Prosedur [Kembali]

1. Membuka Wokwi lalu membuat proyek baru dengan memilih board STM32 Nucleo C031C6. Setelah itu menambahkan beberapa komponen pendukung seperti push button sebagai input, LED sebagai indikator cahaya, buzzer sebagai indikator suara, serta resistor yang berfungsi membatasi arus.

2. Selanjutnya merangkai komponen dengan menghubungkan push button ke salah satu pin input mikrokontroler (misalnya PA0) dan diberi konfigurasi pull-down ke GND. LED dihubungkan ke pin output (contohnya PB0) melalui resistor, sedangkan buzzer disambungkan ke pin output lain (misalnya PB1). Semua jalur VCC dan GND juga dipastikan tersambung dengan benar.

3. Kemudian menuliskan program pada editor Wokwi untuk membaca status push button sebagai pengganti sensor jarak. Dalam hal ini, tombol yang ditekan dianggap sebagai kondisi objek mendekat, sedangkan saat tidak ditekan diasumsikan objek berada jauh.

4. Berikutnya ditambahkan logika pada program, dimana ketika tombol tidak ditekan maka LED dan buzzer dalam keadaan mati. Saat tombol mulai ditekan, LED menyala sebagai tanda objek mulai mendekat, dan pada kondisi tertentu (misalnya penekanan penuh atau logika tambahan) buzzer ikut aktif sebagai indikasi jarak sangat dekat.

5. Setelah itu simulasi dijalankan dengan menekan tombol start di Wokwi, lalu dilakukan pengujian dengan menekan dan melepas push button untuk merepresentasikan perubahan jarak objek.

6. Hasil pengamatan menunjukkan bahwa ketika tombol ditekan, LED akan menyala dan buzzer dapat ikut aktif sebagai peringatan. Sebaliknya, saat tombol dilepas, semua output kembali mati, sehingga sistem ini mampu menggambarkan secara sederhana prinsip kerja sensor jarak untuk parkir mundur.

2. Hardware dan Diagram Blok[Kembali]

   a) STM32 NUCLEO G474RE


    b) LED



    c) Buzzer



    d) Resistor



    e) Infrared Sensor



    f) Switch



       g) Diagram Blok


3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]



Prinsip kerja:

Prinsip kerja rangkaian pada gambar tersebut dimulai dari bagian input berupa push button dan saklar yang terhubung ke mikrokontroler STM32 Nucleo C031C6. Push button digunakan sebagai pemicu utama (trigger) yang akan memberikan sinyal logika HIGH ke salah satu pin input ketika ditekan. Resistor yang terpasang berfungsi sebagai pull-down, sehingga saat tombol tidak ditekan, kondisi input tetap LOW dan stabil (tidak floating). Saklar tambahan dapat digunakan sebagai pengatur kondisi atau mode tertentu pada sistem, misalnya mengaktifkan atau menonaktifkan fungsi rangkaian.

Sinyal input yang diterima oleh mikrokontroler kemudian diproses sesuai program yang telah diisikan. Ketika kondisi tertentu terpenuhi (misalnya tombol ditekan), mikrokontroler akan mengirimkan sinyal output ke dua komponen utama, yaitu LED dan buzzer. LED berfungsi sebagai indikator visual, yang akan menyala saat kondisi aktif, sedangkan buzzer berfungsi sebagai indikator suara yang akan berbunyi sebagai tanda adanya respon dari sistem.

Catu daya (VCC) didistribusikan ke seluruh rangkaian untuk menghidupkan komponen, sementara jalur ground (GND) menjadi referensi tegangan bersama. Dengan demikian, keseluruhan sistem bekerja sebagai rangkaian input–proses–output, di mana input dari tombol diproses oleh mikrokontroler, lalu menghasilkan output berupa nyala LED dan bunyi buzzer sebagai bentuk respon terhadap aksi pengguna.

4. Flowchart dan Listing Program[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();

  uint8_t ir_last = 0;

  while (1)
  {
    // Baca IR sensor (PA1)
    uint8_t ir_now = HAL_GPIO_ReadPin(IR_SENSOR_GPIO_Port, IR_SENSOR_Pin);

    // Deteksi perubahan dari 1 (deteksi) ke 0 (tidak deteksi)
    if (ir_last == GPIO_PIN_SET && ir_now == GPIO_PIN_RESET)
    {
      // LED merah mati
      HAL_GPIO_WritePin(LED_RED_GPIO_Port, LED_RED_Pin, GPIO_PIN_RESET);

      // LED hijau nyala
      HAL_GPIO_WritePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin, GPIO_PIN_SET);

      // Buzzer mati
      HAL_GPIO_WritePin(BUZZER_GPIO_Port, BUZZER_Pin, GPIO_PIN_RESET);
    }

    // Update status sebelumnya
    ir_last = ir_now;
  }
}

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;


  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }

  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK;
  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)
{
  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 = BUTTON_REVERSE_Pin | IR_SENSOR_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_PULLDOWN;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  GPIO_InitStruct.Pin = LED_GREEN_Pin | LED_RED_Pin | BUZZER_Pin;
  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
#ifndef __MAIN_H
#define __MAIN_H

#ifdef __cplusplus
extern "C" {
#endif

#include "stm32c0xx_hal.h"

void Error_Handler(void);

#define BUTTON_REVERSE_Pin GPIO_PIN_0
#define BUTTON_REVERSE_GPIO_Port GPIOA

#define IR_SENSOR_Pin GPIO_PIN_1
#define IR_SENSOR_GPIO_Port GPIOA

#define LED_GREEN_Pin GPIO_PIN_0
#define LED_GREEN_GPIO_Port GPIOB

#define LED_RED_Pin GPIO_PIN_1
#define LED_RED_GPIO_Port GPIOB

#define BUZZER_Pin GPIO_PIN_2
#define BUZZER_GPIO_Port GPIOB

#ifdef __cplusplus
}
#endif

#endif

5. Video Demo[Kembali]



6. Soal Analisa[Kembali]





7. Video Simulasi[Kembali]

8. Download File[Kembali]

Tidak ada komentar:

Posting Komentar

    BAHAN PRESENTASI UNTUK MATAKULIAH ELEKTRONIKA 2024 Oleh : MUHAMMAD IKHSAN DEPUTRA NIM. 2310952003   Dosen Pengampu : Dr. Darwison, S. T....