a. Tentukan percobaan dan kondisi yang akan dilakukan (Kondisi 6)
b. Siapakan alat dan bahan yang akan digunakan
c. Rangkai Rangkaian pada Board sesuai gambar percobaan 1 dengan komponen 4 push button, 2 Mikrokontroler STM32F103C8, 4 Resistor 220 Ohm, 4 LED hubungkan menggunakan jumper.
d. Buatlah program pada software STM32Cube IDE dengan konfigurasi Pin Input dan Output berdasarkan pada Pin GPIO STM32 yang telah dirangkai di simulasi sebelumnya.
e. Kemudian, buatlah program untuk menghasilkan Output LED sesuai kondisi yang telah ditentukan.
f. Hubungkan Laptop dengan STM32F103C8 dengan STlink
C. Blok Diagram
B. Rangkaian Percobaan
Pertama, sistem memulai dengan inisialisasi HAL (Hardware Abstraction Layer) untuk mengatur semua fungsi dasar dari perangkat keras. Kemudian, sistem clock dikonfigurasi agar semua modul bekerja secara sinkron sesuai frekuensi yang diinginkan. Selanjutnya, GPIO diinisialisasi untuk mengatur pin yang digunakan dalam komunikasi dan kontrol perangkat.
Setelah itu, salah satu pin dikonfigurasi sebagai input untuk membaca status tombol, dan pin lain dikonfigurasi sebagai output untuk mengontrol LED. Di dalam loop utama, mikrokontroler terus membaca status tombol. Jika tombol ditekan, maka LED akan dinyalakan dan mikrokontroler dapat mengirimkan sinyal melalui UART ke mikrokontroler kedua, menandakan bahwa tombol ditekan. Jika tombol tidak ditekan, LED akan dimatikan dan mikrokontroler juga dapat mengirimkan sinyal status tersebut ke mikrokontroler kedua.
Setiap pembacaan tombol dan pengiriman sinyal melalui UART disertai dengan delay selama 100 ms untuk menghindari bouncing tombol dan mengatur timing komunikasi. Mikrokontroler penerima yang juga terhubung melalui UART akan membaca data dari UART, kemudian mengontrol LED-nya sendiri sesuai dengan data yang diterima, misalnya jika menerima sinyal tombol ditekan maka LED menyala, dan sebaliknya. Dengan demikian, kedua mikrokontroler berkomunikasi secara serial menggunakan protokol UART untuk menyinkronkan status tombol dan LED di kedua sistem.
} } static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; __HAL_RCC_GPIOA_CLK_ENABLE(); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4, GPIO_PIN_RESET); GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4; 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); } void Error_Handler(void) { __disable_irq(); while (1) { } }
1. Bagaimana protokol komunikasi UART pada kedua STM32F103C8?Jawab: Dari percobaan yang telah dilakukan, digunakan 2 mikrokontroler STM32F103C8 yang dimana akan melakikan komunikasi keduanya. Dimana salah satu menjadi transmitter dan satu lagi menjadi receiver (Penerima) dimana pada bagian transmitter terdapat komponen input berupa push button, sementara pada receiver terdapat komponen output berupa LED. Berdasarkan percobaan, protokol komunikasinya secara UART dimulai dari konfigurasi pin baik RCC, SYS, dan GPIO pada kedua mikrokontroler Tx Rx dalam komunikasi UARTnya. Dalam percobaan input output dikedua STM32 berada pada pin PA1-Pa4, sementara pada pin PA9-PA10 menjadi Tx dan Rx dari kedua mikrokontroler. Perlu diperhatikan bahwa baudrate di kedua STM sama (di 9600 bps). Lalu dilakukan penguploadan kondisi pada program melalui software STM32CubeIDE. Pastikan dalam program terdapat fungsi:
HAL_UART_HandleType(&huart1)
HAL_UART_Transmit(&huart1, (uint8-t)HAL_UART_Receive(&huart1, (uint8-t)
Disini mengisyaratkan bahwa pada kedua mikrokontroler siap mengirim menerima data. Lalu dibuat kondisi yang mnyalakan 1 push button mewakili 1 LED yang aktif jika button di tekan.
HAL_UART_Transmit(&huart1, (uint8-t)