Laporan Akhir 2




1. Prosedur [Kembali]

  1. Pertama, jalankan aplikasi simulator Proteus dan buat proyek baru. Setelah itu, masukkan seluruh komponen yang diperlukan ke dalam workspace, seperti mikrokontroler STM32F103C6, sensor sentuh, sensor IR obstacle, LED, resistor bernilai 220Ω dan 10kΩ, buzzer, serta push button.
  2. Berikutnya, susun rangkaian dengan menghubungkan setiap komponen sesuai dengan skema yang telah dirancang. Keluaran dari kedua sensor dihubungkan ke pin input mikrokontroler, yaitu PA0 dan PA1, sedangkan perangkat output seperti LED dan buzzer dihubungkan ke pin PB0 dan PB1. Pastikan juga semua jalur catu daya, termasuk VCC/VDDA dan GND/VSSA, terhubung dengan benar agar rangkaian dapat berfungsi dengan baik.
  3. Setelah rangkaian selesai dibuat, lakukan proses kompilasi program menggunakan software seperti Arduino IDE atau STM32CubeIDE hingga menghasilkan file berekstensi .hex atau .elf.
  4. Selanjutnya, buka properti mikrokontroler STM32 di Proteus dengan cara klik dua kali pada komponennya, lalu masukkan lokasi file hasil kompilasi tersebut pada bagian “Program File”.
  5. Kemudian, jalankan simulasi dengan menekan tombol Play atau Run Simulation yang tersedia di bagian kiri bawah tampilan Proteus.
  6. Terakhir, lakukan pengujian dengan cara mengubah kondisi logika input pada sensor, misalnya dengan mengubah nilai dari 0 ke 1 pada sensor sentuh atau sensor IR, lalu perhatikan respons yang ditunjukkan oleh LED dan buzzer sebagai indikator output sistem.

2. Hardware dan Diagram Blok [Kembali]

STM32 NUCLEO-G474RE



Float Switch

Infrared Sensor


LED


Buzzer


Resistor





Relay


Diagram Blok



3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]



Pada saat simulasi dijalankan, mikrokontroler terlebih dahulu membaca kondisi awal pada pin input, yaitu PA0 yang terhubung dengan sensor sentuh dan PA1 yang terhubung dengan sensor IR. Dalam keadaan normal, ketika tidak ada sentuhan maupun objek yang terdeteksi, kedua sensor berada pada logika LOW (0), sehingga seluruh aktuator seperti LED dan buzzer berada dalam kondisi tidak aktif (OFF). Ketika terjadi interaksi, misalnya seseorang menyentuh gagang pintu atau melewati area deteksi sensor IR, sensor yang bersangkutan akan mengirimkan sinyal logika HIGH (1) ke mikrokontroler. Perubahan ini dapat terjadi pada salah satu atau kedua input, misalnya PA0 terlebih dahulu berubah menjadi HIGH. Mikrokontroler kemudian mendeteksi perubahan logika dari LOW menjadi HIGH dan, berdasarkan program yang telah ditanamkan, memproses kondisi tersebut untuk mengaktifkan sistem peringatan. Sebagai respons, mikrokontroler menghasilkan sinyal logika HIGH pada pin output PB0 dan PB1, baik secara bersamaan maupun sesuai pengaturan program. Akibatnya, arus listrik mengalir ke LED sehingga LED merah menyala sebagai indikator visual, sementara buzzer berbunyi sebagai indikator suara. Kondisi ini akan terus berlangsung selama sinyal dari sensor tetap berada pada logika HIGH.

4. Flowchart dan Listing Program [Kembali]


Flowchart



Program :

#include "main.h" 
uint8_t system_enable = 1; 
uint8_t touch_last = 0; 
void SystemClock_Config(void);
static void MX_GPIO_Init(void); int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); while (1) { uint8_t touch_now = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1); if (touch_now == GPIO_PIN_SET && touch_last == GPIO_PIN_RESET) { system_enable = !system_enable; HAL_Delay(200); } touch_last = touch_now; if (system_enable) { if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_SET) { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET); } else { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET); } } else { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, 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(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]

Program memiliki 2 kondisi utama (state):
  • System Enable = 1 (aktif)
  • System Enable = 0 (nonaktif)

Status ini dikontrol oleh touch sensor di PA1.

7. Video Simulasi [Kembali]

8. Analisa [Kembali]

1. Analisa pengaruh pemilihan GPIO pada masing-masing development board

Pemilihan GPIO (General Purpose Input Output) pada masing-masing development board STM32 sangat berpengaruh terhadap kinerja dan fleksibilitas sistem yang dirancang. Setiap board seperti STM32F103C8 dan STM32 NUCLEO G474RE memiliki jumlah dan karakteristik pin yang berbeda, sehingga menentukan banyaknya perangkat eksternal yang dapat dihubungkan. Selain itu, setiap pin GPIO memiliki fungsi alternatif seperti ADC, PWM, UART, atau SPI, sehingga pemilihan pin yang tidak tepat dapat menyebabkan konflik fungsi. Kemampuan arus pada setiap pin juga menjadi pertimbangan penting karena setiap pin memiliki batas maksimum arus tertentu, sehingga jika tidak diperhatikan dapat merusak komponen. Selain itu, konfigurasi pin seperti input atau output, serta penggunaan pull-up atau pull-down resistor juga mempengaruhi kestabilan sinyal. Dengan demikian, pemilihan GPIO harus dilakukan secara tepat agar sistem dapat bekerja optimal, stabil, dan sesuai dengan kebutuhan aplikasi.

2. Analisa deklarasi pin input/output pada STM32

Deklarasi pin dilakukan pada fungsi MX_GPIO_Init() menggunakan struktur konfigurasi yang menentukan pin, mode (input/output), pull resistor, dan kecepatan. Pin input digunakan untuk membaca sinyal dari sensor, sedangkan pin output digunakan untuk mengendalikan perangkat seperti LED atau buzzer. Proses ini penting agar mikrokontroler dapat mengenali dan mengontrol setiap pin sesuai fungsinya.

3. Analisa proses input dan output pada STM32

STM32 bekerja dengan membaca input menggunakan HAL_GPIO_ReadPin(), kemudian memprosesnya dengan logika program, dan menghasilkan output menggunakan HAL_GPIO_WritePin(). Input berupa logika HIGH atau LOW dari sensor akan menentukan aksi pada output seperti menyalakan LED atau buzzer. Proses ini berlangsung terus-menerus dalam loop sehingga sistem dapat merespons secara real-time.

4. Analisa pengaruh perubahan main.h terhadap main.c

File main.h berisi definisi pin dan port yang digunakan dalam program. Perubahan pada file ini akan langsung mempengaruhi main.c karena semua pin dipanggil melalui definisi tersebut. Hal ini memudahkan pengelolaan program, tetapi jika tidak sesuai dengan rangkaian, dapat menyebabkan sistem tidak bekerja dengan benar.

5. Analisa metode pendeteksian input pada STM32

Metode yang digunakan adalah polling, yaitu membaca input secara terus-menerus, serta deteksi perubahan (edge detection) untuk mendeteksi perubahan kondisi input. Selain itu, digunakan delay untuk mengurangi noise (debouncing). Metode ini sederhana dan cukup efektif, meskipun menggunakan sumber daya CPU lebih besar dibanding interrupt.

6. Analisa kelebihan mikrokontroler dibandingkan rangkaian logika

Mikrokontroler memiliki banyak kelebihan dibandingkan rangkaian logika konvensional. Salah satu keunggulan utamanya adalah fleksibilitas, di mana fungsi sistem dapat diubah hanya dengan memodifikasi program tanpa perlu mengubah rangkaian fisik. Selain itu, mikrokontroler mampu menangani logika yang kompleks seperti perulangan, percabangan, dan pengolahan data secara real-time, yang sulit dicapai dengan rangkaian logika sederhana. Dari segi efisiensi, penggunaan mikrokontroler dapat mengurangi jumlah komponen karena satu chip dapat menggantikan banyak gerbang logika seperti AND, OR, dan NOT. Mikrokontroler juga mendukung berbagai fitur tambahan seperti komunikasi serial, PWM, dan ADC, sehingga lebih multifungsi. Dengan ukuran yang lebih kecil dan konsumsi daya yang relatif rendah, mikrokontroler menjadi solusi yang lebih praktis dan efisien dalam perancangan sistem elektronik modern.


 

 

Komentar

Postingan populer dari blog ini

SUB BAB 2.15 COMPUTER ANALYSIS