Laporan Akhir M3
- Siapkan alat dan bahan yang diperlukan, yaitu dua board STM32 NUCLEO-G474RE, OLED SSD1306, push button, LED hijau, LED merah, buzzer, jumper, dan breadboard.
- Rangkai komponen sesuai konfigurasi pin, hubungkan OLED ke board master pada pin PA13 (SCL) dan PA14 (SDA), hubungkan push button ke pin PA0 master, hubungkan jalur SPI antara master dan slave pada pin PA4 (NSS), PA5 (SCK), PA6 (MISO), dan PA7 (MOSI), serta hubungkan LED hijau ke PB0, LED merah ke PB1, dan buzzer ke PB2 pada board slave.
- Buka software STM32CubeIDE dan buat dua project baru, satu untuk master (nucleoi2c) dan satu untuk slave (nucleoi2c_slave), menggunakan mikrokontroler STM32G474RETx.
- Lakukan konfigurasi pada project master dengan mengaktifkan I2C1 pada pin PA13 dan PA14, mengaktifkan SPI1 sebagai Full Duplex Master pada pin PA5-PA7, serta mengatur PA0 sebagai GPIO Input Pull-up dan PA4 sebagai GPIO Output untuk NSS.
- Lakukan konfigurasi pada project slave dengan mengaktifkan SPI1 sebagai Full Duplex Slave pada pin PA4-PA7 dengan NSS Hard Input, serta mengatur PB0, PB1, dan PB2 sebagai GPIO Output.
- Lakukan Generate Code pada masing-masing project, kemudian masukkan program master dan program slave sesuai listing program yang telah disiapkan.
- Hubungkan masing-masing board ke komputer menggunakan kabel USB, lalu compile dan upload program ke masing-masing board menggunakan fitur Run pada STM32CubeIDE.
- Jalankan program dan amati hasilnya, tekan push button untuk mengendalikan permainan dan perhatikan respon LED serta buzzer pada board slave sesuai kondisi permainan yang berjalan.
2. Hardware dan diagram blok [Kembali]
1. Push Button
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
Sistem ini terdiri dari dua board STM32 NUCLEO-G474RE yang saling terhubung melalui protokol SPI, dengan board master juga terhubung ke layar OLED melalui protokol I2C. Board master menjalankan logika permainan Dino Jump, di mana input berupa tombol push button pada pin PA0 dibaca setiap siklus loop. Ketika tombol ditekan, karakter dino pada layar OLED akan bergerak ke atas mengikuti simulasi fisika gravitasi, sementara kaktus bergerak dari kanan ke kiri secara otomatis dengan kecepatan yang meningkat seiring bertambahnya skor.
Setiap perubahan kondisi permainan pada master langsung dikomunikasikan ke board slave melalui jalur SPI. Master menarik pin NSS ke kondisi LOW, mengirimkan satu byte command via MOSI, lalu melepas NSS ke HIGH sebagai tanda akhir pengiriman. Board slave menunggu data secara blocking menggunakan HAL_SPI_Receive, kemudian memproses command yang diterima melalui mekanisme switch-case untuk menghasilkan respons output yang sesuai.
Terdapat empat command yang digunakan sebagai penghubung antara logika game di master dengan output fisik di slave. Selama game berjalan, master mengirim command 0x01 sehingga LED hijau slave menyala sebagai indikator permainan aktif. Saat tombol ditekan dan dino melompat, master mengirim command 0x03 sehingga buzzer slave berbunyi selama 80ms sebagai efek suara lompat. Ketika posisi kaktus bertabrakan dengan posisi dino, master menetapkan status game over, menampilkan layar "GAME OVER" beserta high score pada OLED, lalu mengirim command 0x02 untuk menyalakan LED merah dan command 0x04 untuk membunyikan buzzer dengan pola bib-bib-biiib. Menekan tombol kembali saat game over akan mereset semua variabel dan permainan dimulai dari awal.
Komentar
Posting Komentar