MODUL 3 - LAPORAN AKHIR
LAPORAN AKHIR
PERCOBAAN 7
2. Prinsip Kerja Rangkaian[Kembali]
A, Proses di STM32
- STM32 melakukan inisialisasi pada pin-pin GPIO yang terhubung ke push button (PB12, PB13, PB14) sebagai input dengan konfigurasi pull-up. Meskipun tidak eksplisit dalam kode yang diberikan, diasumsikan ada inisialisasi lain yang mungkin diperlukan oleh sistem.
- Dalam loop utama (
while(1)
), STM32 secara berulang membaca status logika dari ketiga pin push button. - Deteksi Tombol Ditekan:
- Jika pin PB12 berlogika LOW (tombol 1 ditekan), STM32 akan mengirimkan string "MERAH\r\n" melalui UART1.
- Jika pin PB13 berlogika LOW (tombol 2 ditekan), STM32 akan mengirimkan string "HIJAU\r\n" melalui UART1.
- Jika pin PB14 berlogika LOW (tombol 3 ditekan), STM32 akan mengirimkan string "BIRU\r\n" melalui UART1.
- Fungsi
send_uart()
digunakan untuk mengirimkan string data melalui antarmuka UART1. Fungsi ini menggunakanHAL_UART_Transmit()
dari library HAL STM32 untuk mengirimkan data sebagai array byte. - Setelah mengirim data, terdapat penundaan (
HAL_Delay(300)
) yang berfungsi sebagai debouncing untuk menghindari pembacaan ganda akibat pantulan mekanis tombol. Selanjutnya, program akan menunggu dalam loopwhile
hingga tombol yang ditekan dilepas (kembali ke logika HIGH) sebelum melanjutkan pembacaan input berikutnya.
B. Proses pada Raspberry Pi Pico
- Raspberry Pi Pico melakukan inisialisasi pada modul UART0 dengan kecepatan baud 9600, menggunakan pin GPIO0 (TX) dan GPIO1 (RX). Selain itu, inisialisasi juga dilakukan pada antarmuka I2C0 menggunakan pin GPIO4 (SDA) dan GPIO5 (SCL) untuk berkomunikasi dengan LCD I2C yang memiliki alamat 0x27. Objek
I2cLcd
dibuat untuk memudahkan interaksi dengan LCD. - Setelah inisialisasi I2C, program menunggu sejenak (
utime.sleep_ms(100)
) agar LCD siap, kemudian membersihkan layar dan menampilkan pesan awal "Menunggu input...". - Dalam loop utama (
while True
), Raspberry Pi Pico terus memeriksa apakah ada data yang tersedia di buffer UART menggunakanuart.any()
. - Jika ada data yang tersedia, program akan membaca satu baris data (hingga karakter newline
\n
) menggunakanuart.readline()
. - Fungsi
process_uart_data()
dipanggil untuk memproses data yang diterima.- Data didekode dari format byte ke string UTF-8 dan spasi di awal/akhir string dihapus menggunakan
.decode('utf-8').strip()
. - Layar LCD dibersihkan.
- Program melakukan pengecekan terhadap string yang diterima:
- Jika string adalah "MERAH", LCD menampilkan "Warna: Merah".
- Jika string adalah "HIJAU", LCD menampilkan "Warna: Hijau".
- Jika string adalah "BIRU", LCD menampilkan "Warna: Biru".
- Jika string tidak sesuai dengan salah satu dari string di atas, LCD akan menampilkan "Data: [data yang diterima]".
- Blok
try-except
digunakan untuk menangani potensi error selama proses dekode atau pemrosesan data, dan jika terjadi error, pesan error akan ditampilkan pada LCD.
- Data didekode dari format byte ke string UTF-8 dan spasi di awal/akhir string dihapus menggunakan
- Setelah pemrosesan data (atau jika tidak ada data yang diterima), program memberikan jeda singkat (
utime.sleep_ms(100)
) sebelum kembali memantau data UART.
1. Jelaskan bagaimana proses komunikasi yang terjadi pada percobaan (UART dan I2C) !
Jawab:
Proses komunikasi yang terjadi pada percobaan ini melibatkan dua protokol, yaitu UART dan I2C. UART (Universal Asynchronous Receiver Transmitter) digunakan sebagai jalur komunikasi antara STM32 dan Raspberry Pi Pico. STM32 mengirimkan data dalam bentuk teks melalui pin TX, dan Pico menerimanya melalui pin RX. Komunikasi ini bersifat asinkron, di mana kedua perangkat tidak berbagi clock tetapi harus disinkronkan dengan baudrate yang sama, dalam hal ini 9600 bps. Setelah data diterima oleh Pico, protokol I2C (Inter-Integrated Circuit) digunakan untuk mengirimkan data ke LCD. I2C adalah komunikasi sinkron yang menggunakan dua jalur, yaitu SDA (data) dan SCL (clock), dengan Pico sebagai master dan modul LCD sebagai slave yang memiliki alamat unik di bus I2C.
2. Jelaskan bagaimana proses data digital dikirimkan antara kedua Dev.board !
Jawab:
Proses pengiriman data digital antara kedua board, STM32 dan Raspberry Pi Pico, dilakukan melalui komunikasi UART. STM32 akan mendeteksi tombol yang ditekan (pushbutton), kemudian mengirimkan data dalam bentuk string (misalnya “MERAH”, “HIJAU”, atau “BIRU”) melalui pin TX-nya ke RX milik Pico. Data dikirim sebagai rangkaian bit digital yang merepresentasikan karakter ASCII dari string tersebut. Di sisi Pico, data diterima dalam bentuk byte, kemudian di-decode menjadi string menggunakan metode .decode('utf-8')
. Proses ini memungkinkan data digital berpindah dari satu board ke board lainnya secara efisien dengan format yang mudah diolah kembali.
3. Jelaskan bagaimana proses data yang dikirimkan menampilkan karakter pada LCD !
Jawab:
Setelah data diterima oleh Raspberry Pi Pico melalui UART, data tersebut kemudian ditampilkan ke LCD menggunakan komunikasi I2C. Pico memproses data string yang telah diterimanya, lalu mengirimkan perintah tampilan ke LCD melalui modul I2cLcd
, yang mengatur sinyal-sinyal ke chip ekspander PCF8574 pada modul LCD. Karakter yang akan ditampilkan dikonversi menjadi format 4-bit sesuai dengan kebutuhan LCD HD44780. Data dikirim secara serial melalui jalur SDA dan SCL, lalu LCD menginterpretasikan data tersebut menjadi karakter yang muncul di layar. Fungsi lcd.putstr()
secara otomatis mengatur pengiriman perintah dan data karakter agar dapat muncul sesuai pada baris dan kolom LCD.
Komentar
Posting Komentar