Tugas Pendahuluan 1



1. Prosedur [kembali]

  1. Menyiapkan software yang digunakan, yaitu Proteus untuk simulasi rangkaian dan STM32CubeIDE untuk pembuatan program.
  2. Membuat rangkaian pada Proteus dengan menambahkan komponen STM32F103C8, PIR sensor, touch sensor, LED, buzzer, dan resistor sesuai dengan diagram pada modul.
  3. Menghubungkan pin input (PIR sensor dan touch sensor) ke port GPIO mikrokontroler serta menghubungkan LED dan buzzer ke pin output.
  4. Membuka STM32CubeIDE, kemudian membuat project baru sesuai dengan tipe mikrokontroler STM32F103C8.
  5. Melakukan konfigurasi pin GPIO pada STM32CubeIDE dengan mengatur pin input untuk sensor dan pin output untuk LED serta buzzer.
  6. Menuliskan program sesuai dengan logika percobaan, yaitu sistem dapat diaktifkan/nonaktifkan dengan touch sensor dan mendeteksi gerakan menggunakan PIR sensor.
  7. Melakukan proses build (compile) program hingga menghasilkan file berekstensi .hex atau .elf.
  8. Mengimpor file hasil compile ke dalam Proteus dengan cara memasukkan file tersebut ke properti mikrokontroler STM32 pada rangkaian.
  9. Menjalankan simulasi di Proteus, kemudian menguji sistem dengan memberikan logika pada touch sensor dan PIR sensor.

2. Hardware dan Diagram Blok [kembali]

    A. Hardware

    1. STM32F103C8

    2. 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
    
    3. PIR Sensor
        Spesifikasi:
        - Wide range on input voltage varying from 4.V to 12V (+5V recommended)
        - Output voltage is High/Low (3.3V TTL)
        - Can distinguish between object movement and human movement
        - Has to operating modes - Repeatable(H) and Non- Repeatable(H)
        - Cover distance of about 120° and 7 meters
        - Low power consumption of 65mA
        - Operating temperature from -20° to +80° Celsius

    4. LED

    5. Buzzer

    6. Resistor


    B. Diagram Blok

3. Rangkaian Simulasi dan Prinsip Kerja [kembali]

    Prinsip Kerja:
   Pada rangkaian kontrol lampu lorong ini, mikrokontroler STM32F103C8 berfungsi sebagai pusat pengolah sinyal yang menerima input dari PIR sensor dan touch sensor, kemudian mengendalikan output berupa LED dan buzzer. Kedua sensor tersebut dihubungkan ke pin input GPIO, sedangkan LED dan buzzer terhubung ke pin output GPIO melalui resistor sebagai pembatas arus.
    Pada kondisi 8, yaitu ketika PIR sensor tidak mendeteksi gerakan dan touch sensor tidak mendeteksi sentuhan, kedua sensor berada pada logika LOW (0). Mikrokontroler akan membaca kondisi ini sebagai tidak adanya aktivitas pada sistem. Karena tidak ada sinyal pemicu dari kedua input tersebut, maka mikrokontroler tidak memberikan sinyal keluaran ke LED maupun buzzer.
    Akibatnya, LED berada dalam kondisi mati (LOW) karena tidak mendapat tegangan dari pin output, dan buzzer tidak berbunyi karena tidak ada sinyal aktif yang diberikan. Kondisi ini menunjukkan keadaan sistem dalam posisi standby atau tidak aktif, di mana tidak ada respon yang diberikan sebelum adanya input berupa sentuhan pada touch sensor atau deteksi gerakan oleh PIR sensor.

4. Flowchart dan Listing Program [kembali]

    A. Flowchart

    B. 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 pir = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);
          uint8_t touch = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1);

           if (pir == GPIO_PIN_RESET && touch == GPIO_PIN_RESET)
          {
              HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);   // LED OFF
              HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);   // BUZZER OFF
          }
          else
          {
              HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // LED ON
              HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET); // BUZZER ON
          }   }
          }


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

          HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1, GPIO_PIN_RESET);

          GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
          GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
          GPIO_InitStruct.Pull = GPIO_PULLDOWN;
          HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

          GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
          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

5. Video Demo [kembali]


6. Kondisi [kembali]

    Kondisi 8: Buatlah rangkaian seperti pada gambar percobaan 1 dengan kondisi ketika sensor PIR tidak mendeteksi gerakan dan sensor touch tidak mendeteksi sentuhan, maka LED mati dan buzzer tidak berbunyi.

7. Video Simulasi [kembali]


8. Download File [kembali]

    Download Rangkaian Tugas Pendahuluan 1 disini
    Download Listing Program disini
    Download Datasheet STM32F103C8 disini
    Download Datasheet PIR Sensor disini
    Download Dastasheet Touch Sensor disini



[menuju awal]




Komentar

Postingan populer dari blog ini