LA uP uC M1P8



Percobaan 8

LED RGB, BUZZER, TOUCH SENSOR & PIR

1. Prosedur[Kembali]

1. Persiapkan semua alat dan bahan yang diperlukan.

2. Rangkai semua komponen pada breadboard yang telah disediakan.

3. Download stlink pada laptop, lalu masukkan listing program ke aplikasi STM32 CubeIDE.

4. Rangkaian dihubungkan ke laptop dengan kabel stlink dan dirunning.

5. Amati hasilnya, apakah output sesuai dengan program yang diinputkan.

6. Selesai.

.

2. Hardware dan Diagram Blok[Kembali]

Hardware:

1. Mikrokontroler STM32F103C8

STM32F103C8 board – Microscale

STM32F103C8 adalah salah satu mikrokontroler dari keluarga STM32 yang berbasis arsitektur ARM Cortex-M3 buatan STMicroelectronics. Mikrokontroler ini sering digunakan dalam proyek embedded system, otomasi, robotika, dan Internet of Things (IoT) karena memiliki performa tinggi, konsumsi daya rendah, dan harga yang relatif terjangkau.

2. Buzzer


Buzzer adalah komponen output yang dapat menghasilkan bunyi atau suara saat dialiri arus listrik. Buzzer biasanya digunakan sebagai alat pemberi peringatan suara (alarm).

3. Touch Sensor

Touch sensor kapasitif adalah sensor sentuh yang bekerja dengan mendeteksi perubahan kapasitansi akibat sentuhan manusia.


Touch Sensor Module — SunFounder Ultimate Sensor Kit documentation

4. LED RGB

Jual LED RGB 4 PIN WARNA MERAH HIJAU BIRU 5mm ( ARDUINO ) - Common Cathode  - Jakarta Barat - Ardushop-id | Tokopedia
LED RGB adalah jenis lampu LED yang terdiri dari 3 warna dasar: Merah (Red), Hijau (Green), dan Biru (Blue). Dengan mengatur intensitas ketiga warna ini, kita dapat menghasilkan berbagai warna lain.

5. PIR

PIR (Passive Infrared Sensor) adalah sensor yang digunakan untuk mendeteksi perubahan sinyal inframerah yang dipancarkan oleh objek, terutama manusia dan hewan. Sensor ini bekerja dengan mendeteksi perubahan panas di sekitarnya.


6. Resistor

  • Resistor bekerja berdasarkan Hukum Ohm:

    V=I×RV = I \times R
    • V = Tegangan (Volt)

    • I = Arus listrik (Ampere)

    • R = Resistansi (Ohm)

    Resistor mengurangi arus listrik yang mengalir dalam suatu sirkuit untuk melindungi komponen lain dari kelebihan arus.
  • Diagram Blok:


    3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

    Rangkaian Percobaan:


    Prinsip Kerja Rangkaian:

    Pada dasarnya, sistem ini bekerja dengan dua sensor utama yang memberikan sinyal digital ke STM32, yang kemudian memprosesnya dan mengaktifkan keluaran sesuai dengan kondisi yang telah ditentukan dalam program. Berikut adalah cara kerja setiap komponen dalam sistem ini:

    1. Sensor PIR (Passive Infrared Sensor)
      Sensor PIR berfungsi untuk mendeteksi keberadaan objek berdasarkan pancaran inframerah yang dihasilkan oleh tubuh manusia atau benda dengan suhu tertentu. Sensor ini memiliki tiga pin utama, yaitu VCC (5V), GND, dan OUT. Saat sensor tidak mendeteksi pergerakan, outputnya dalam kondisi LOW (0), dan ketika mendeteksi pergerakan, output berubah menjadi HIGH (1). Pin output sensor PIR ini dihubungkan ke GPIOB dari STM32F103C8T6 untuk dibaca dalam program.
    2. Sensor Sentuh (Touch Sensor)
      Sensor sentuh yang digunakan adalah sensor kapasitif yang bekerja dengan mendeteksi perubahan kapasitansi saat jari manusia menyentuh permukaannya. Sensor ini juga memiliki tiga pin utama, yaitu VCC (5V), GND, dan OUT. Ketika sensor tidak disentuh, outputnya dalam kondisi LOW (0), dan saat disentuh, output berubah menjadi HIGH (1). Pin output sensor sentuh ini dihubungkan ke GPIOB STM32 untuk diproses dalam kode program.
    3. STM32F103C8T6 sebagai Mikrokontroler
      Mikrokontroler ini bertindak sebagai otak sistem, yang menerima sinyal dari sensor PIR dan sensor sentuh, kemudian memproses data tersebut untuk mengontrol LED RGB dan buzzer. Komunikasi antara sensor dan STM32 terjadi melalui port GPIO, di mana sensor PIR dan sensor sentuh terhubung ke pin GPIOB, sedangkan LED RGB dan buzzer dihubungkan ke pin GPIOA.
    4. LED RGB sebagai Indikator Visual
      LED RGB dalam rangkaian ini digunakan sebagai indikator yang akan menyala dengan warna berbeda tergantung pada kondisi sensor. Ada dua warna yang digunakan:

    Merah (RED) untuk PIR Sensor: Jika sensor PIR mendeteksi gerakan, LED merah akan menyala.

    Hijau (GREEN) untuk Touch Sensor: Jika sensor sentuh aktif, LED hijau akan menyala.

    Jingga (ORANGE) jika kedua sensor dalam keadaan aktif maka luaran LED akan menjadi gabungan warna merah dan hijau


    LED RGB dikendalikan oleh STM32 dengan mengatur kondisi GPIOA sebagai output untuk menyalakan warna LED yang sesuai.

    1. Buzzer sebagai Indikator Suara
      Selain LED, sistem ini juga dilengkapi dengan buzzer sebagai indikator suara. Ketika sensor PIR atau sensor sentuh aktif, buzzer akan menyala bersamaan dengan LED yang sesuai. Hal ini memberikan efek peringatan baik secara visual maupun auditori.

    Prinsip Kerja Program:

    Kode program yang digunakan ditulis dalam bahasa C menggunakan HAL (Hardware Abstraction Layer) dari STM32CubeIDE. Program ini mengatur bagaimana STM32 membaca sensor dan mengontrol output LED dan buzzer.

    1. Inisialisasi Perangkat Keras
      Pada bagian awal kode, terdapat fungsi MX_GPIO_Init() yang bertanggung jawab untuk menginisialisasi pin GPIO yang digunakan. Dalam fungsi ini, pin GPIOA diatur sebagai output untuk mengontrol LED dan buzzer, sedangkan pin GPIOB diatur sebagai input untuk membaca sensor PIR dan sensor sentuh.
    2. Konfigurasi Clock Sistem
      Fungsi SystemClock_Config() digunakan untuk mengatur sumber clock dari mikrokontroler. Dalam program ini, clock utama diset menggunakan HSI (High-Speed Internal Oscillator) sebagai sumber utama dengan konfigurasi pembagi clock yang memungkinkan mikrokontroler berjalan dengan frekuensi yang stabil.
    3. Loop Utama dalam Program
      Setelah inisialisasi selesai, program masuk ke dalam loop utama (while(1)), yang terus berjalan tanpa henti untuk membaca input dari sensor dan mengontrol output berdasarkan kondisi sensor.

    Membaca Status Sensor
    Program membaca status sensor dengan menggunakan fungsi HAL_GPIO_ReadPin(GPIOB, PIR_Pin) untuk sensor PIR dan HAL_GPIO_ReadPin(GPIOB, TOUCH_Pin) untuk sensor sentuh. Jika nilai yang dibaca adalah HIGH (1), berarti sensor aktif, sedangkan LOW (0) berarti sensor tidak aktif.

    Mengatur Output LED dan Buzzer
    Setelah membaca status sensor, program mengatur kondisi LED dan buzzer sesuai dengan hasil pembacaan.

        • Jika sensor PIR aktif (HIGH), LED merah menyala dan buzzer berbunyi.
        • Jika sensor sentuh aktif (HIGH), LED hijau menyala dan buzzer berbunyi.
        • Jika tidak ada sensor yang aktif, maka semua output (LED dan buzzer) dimatikan untuk menghemat daya.

    Delay untuk Stabilisasi Sensor
    Program menggunakan HAL_Delay(100) di dalam loop untuk memberikan jeda selama 100 milidetik guna menghindari pembacaan sensor yang terlalu cepat, yang bisa menyebabkan fluktuasi atau noise dalam deteksi sensor.

     

    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 pir_status = HAL_GPIO_ReadPin(GPIOB, PIR_Pin); 
          uint8_t touch_status = HAL_GPIO_ReadPin(GPIOB, TOUCH_Pin); 

     

          HAL_GPIO_WritePin(GPIOA, GREEN_Pin | RED_Pin | BUZZER_Pin, 
    GPIO_PIN_RESET); 

     

          if (pir_status == GPIO_PIN_SET) 
          { 
              HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET); 
              HAL_GPIO_WritePin(GPIOA, BUZZER_Pin, GPIO_PIN_SET); 
          } 

     

          if (touch_status == GPIO_PIN_SET) 
          { 
              HAL_GPIO_WritePin(GPIOA, GREEN_Pin, GPIO_PIN_SET); 
              HAL_GPIO_WritePin(GPIOA, BUZZER_Pin, GPIO_PIN_SET); 
          } 

     

          HAL_Delay(100); 
      } 
    }
    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(); 

     

      HAL_GPIO_WritePin(GPIOA, RED_Pin|GREEN_Pin|BUZZER_Pin, 
    GPIO_PIN_RESET); 
      HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_RESET); 

     

      GPIO_InitStruct.Pin = RED_Pin|GREEN_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(GPIOA, &GPIO_InitStruct); 

     

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

     

      GPIO_InitStruct.Pin = PIR_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 

    5. Video Demo[Kembali]



    6. Analisa[Kembali]

    7. Download File[Kembali]

    Download File HTML Klik Disini
    Download File Video  Klik Disini
    Download File Program Klik Disini
    Download File Datasheet STM32F103C8 Klik Disini
    Download File Datasheet LED RGB Klik Disini
    Download File Datasheet Resistor Klik Disini
    Download File Datasheet Buzzer Klik Disini
    Download File Datasheet PIR Sensor Klik Disini
    Download File Datasheet Touch Sensor Klik Disini











    Tidak ada komentar:

    Posting Komentar

    Home

      BAHAN PRESENTASI UNTUK MATAKULIAH                                                 ELEKTRONIKA 2022 Nama: Hafizh Qisthi Bakri NIM: 22109530...