Senin, 24 Maret 2025

TP 1 Modul 1 Mikro



Tugas Pendahuluan 1

(Percobaan 4 kondisi 1)

1. Prosedur[Kembali]

1. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
2. Buat program untuk mikrokontroler STM32F103C8 di software STM32 CubeIDE.
3. Compile program dalam format hex, lalu upload ke dalam mikrokontroler.
4. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.
5. Selesai.

2. Hardware dan Diagram Blok[Kembali]

a) Mikrokontroler STM32F103C8

STM32F103C8 board – Microscale

2. Infrared Sensor

\






3. Touch Sensor

Touch Sensor Module — SunFounder Ultimate Sensor Kit documentation


4. Power Supply

 
5. RGB LED
Jual LED RGB 4 PIN WARNA MERAH HIJAU BIRU 5mm ( ARDUINO ) - Common Cathode  - Jakarta Barat - Ardushop-id | Tokopedia

Blok Diagram :



3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

Rangkaian sebelum di running :



Rangkaian sesudah di running :


Prinsip Kerja : 

Rangkaian ini menggunakan STM32F103C8 sebagai mikrokontroler utama, dimana terdapat 2 input yaitu PIR sensor dan touch sensor, dengan outputnya RGB LED. PIR sensor dihubungkan ke pin PB10 sebagai input dan touch sensor dihubungkan ke pin PB7 sebagai input juga. RGB LED sebagai output dimana kaki red terhubung ke pin PA6, kaki green terhubung ke pin PA7, dan kaki blue terhubung ke pin PA9. 
Setelah itu lakukan konfigurasi di software STM32 CubeIDE, yang dimulai dari membuka projek percobaan yang telah dikerjakan. Maka pada tampilan pin out dan konfigurasi dari mikrokontrolernya, berdasarkan rangkaian proteus yang telah dibuat, PIR sensor sebagai input yang terhubung ke pin PB10, touch sensor terhubung ke pin PB7, kemudian outputnya yaitu kaki red terhubung ke pin PA6, kaki green terhubung ke pin PA7, dan kaki blue terhubung ke pin PA9. Selanjutnya dilakukan konfigurasi pada debug dengan memilih serial wire, kemudian pada bagian RCC dipilih crystal / ceramic resonator.
Lalu save project dan kemudian akan ditampilkan halaman pemrograman. Disini sudah langsung tersedia beberapa program karena konfigurasi yang telah dilakukan sebelumnya. Untuk pemrogramannya dimulai dari #include “main.h” yang merupakan fungsi utamanya. Yang perlu ditambahkan disini adalah codingan pada bagian loopnya, yang terletak di dalam kurung kurawal pada bagian while. Program ini menggunakan fungsi If Else, dimana jika PIR sensor mendeteksi adanya orang namun sensor touch tidak mendeteksi sentuhan, maka output yang dibaca mikrokontroler adalah menghidupkan lampu merah pada RGB LED serta memberi kodingan dengan menghidupkan LED selama 3000ms (3 detik) lalu mematikannya selama 3000ms(3detik) secara berulang. Lalu untuk else if yang kedua, yaitu jika Touch sensor mendeteksi sentuhan dan PIR sensor tidak mendeteksi orang, maka ouput nya adalah menghidupkan lampu biru pada RGB LED selama 3000ms (3 detik) lalu mematikannya selama 3000ms (3 detik) secara berulang. Setelah itu, kondisi else if yang ketiga yaitu saat kedua sensor mendeteksi, maka outputnya adalah gabungan dari warna biru dan merah pada lampu RGB LED selama 3 detik dan mati selama 3 detik secara berulang.
Setelah programnya selesai, dilanjutkan dengan mengcompile programnya ke dalam tipe hex, dan build program tersebut sehingga menghasilkan file dengan tipe hex. Kemudian upload file hex tersebut ke dalam mikrokontroler pada proteus. Setelah rangkaiannya dijalankan, kondisi awal adalah ketika sensor PIR dan sensor touch diberi logika 0, maka output yang ditampilkan adalah RGB LED tidak aktif, kemudian ketika sensor PIR berlogika 1 dan sensor touch tetap berlogika 0, maka outputnya adalah mengaktifkan RGB LED berwarna merah. Lalu untuk kondisi touch sensor berlogika 1 dan PIR berlogika 0, maka output mengaktifkan RGB LED berwarna biru. Lalu untuk kondisi kedua sensor berlogika 1, maka output akan berwarna gabungan merah dan biru (ungu) 

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(BLUE_GPIO_Port, BLUE_Pin, pir_status); 
 if (touch_status == GPIO_PIN_SET)

 HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_RESET); 
 HAL_GPIO_WritePin(GPIOA, GREEN_Pin, GPIO_PIN_SET); 
 HAL_Delay(3000);
 HAL_GPIO_WritePin(GPIOA, GREEN_Pin, GPIO_PIN_RESET);
 HAL_Delay(3000);

else { 
 if (pir_status == GPIO_PIN_RESET && touch_status == GPIO_PIN_RESET) { HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET); 
 } else { 
 HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_RESET);
    } 
   }
  } 
}

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, GPIO_PIN_RESET); HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_RESET); 

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

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) 
   { 
   } 
}

5. Kondisi[Kembali]

Percobaan 4 kondisi 1 :
Buatlah rangkaian seperti gambar pada percobaan 4 dengan kondisi ketika PIR mendeteksi gerakan maka LED RGB akan menampilkan warna merah selama 3 detik lalu mati selama 3 detik secara berulang dan ketika Touch mendeteksi sentuhan maka LED RGB akan menampilkan warna biru selama 3 detik lalu mati selama 3 detik secara berulang

6. Video Simulasi[Kembali]



7. Download File[Kembali]

Download Html [download]
Download File Rangkaian [download]
Download Video Simulasi [download]
Download Listing Program [download]
Datasheet Mikrokontroler STM32F103C8 [download]
Datasheet PIR Sensor [download]
Datasheet Touch Sensor  [download]
Datasheet RGB LED [download]

Related Posts:

0 komentar:

Posting Komentar