Tugas Pendahuluan 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 ini berpusat pada touch sensor sebagai pemicu utama (trigger awal). Pada kondisi awal, sistem berada dalam keadaan standby, di mana LED dan buzzer masih dalam kondisi mati, dan PIR sensor sebenarnya siap mendeteksi gerakan. Ketika terjadi sentuhan pertama pada touch sensor, sensor akan mengirimkan sinyal logika ke mikrokontroler. Mikrokontroler kemudian memproses sinyal tersebut sebagai perintah untuk mengaktifkan sistem. Setelah itu, mikrokontroler akan menyalakan LED dan mengaktifkan buzzer secara bersamaan sebagai indikator bahwa sistem telah aktif.

Selain itu, pada saat touch sensor sudah terpicu, sistem akan masuk ke kondisi latch (terkunci), yaitu kondisi di mana status output tetap aktif walaupun tidak ada input lanjutan. Pada kondisi ini, PIR sensor dinonaktifkan atau diabaikan, sehingga perubahan yang terjadi pada PIR (misalnya ada atau tidak ada gerakan) tidak lagi mempengaruhi sistem. Dengan demikian, prinsip kerja rangkaian ini adalah berbasis satu kejadian awal (event-driven), di mana satu sentuhan pertama cukup untuk mengubah seluruh keadaan sistem menjadi aktif secara terus-menerus.

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. Kondisi[Kembali]

Percobaan 1 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. 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....