Laporan Akhir 1
1. Prosedur [kembali]
- Rangkai rangkaian di breadboard sesuai dengan desain percobaan ke-7 pada modul.
- Sambungkan breadboard ke laptop yang terinstal Thonny IDE menggunakan kabel USB.
- Buka Thonny IDE dan pastikan Raspberry Pi Pico terdeteksi dengan baik.
- Jalankan program pada Thonny IDE yang sudah dibuat untuk mengontrol LED RGB dan buzzer.
- Tekan push button untuk menguji dan memastikan bahwa LED RGB serta buzzer berfungsi sesuai dengan kondisi yang telah ditentukan.
- Selesai.
Hardware
a) Raspberry Pi Pico
Rangkaian Simulasi
Prinsip Kerja
1. Inisialisasi Pin dan Variabel
Pada bagian awal program, pin-pin GPIO Raspberry Pi Pico dikonfigurasi sebagai input dan output:
- LED (Merah, Hijau, Biru) diatur sebagai pin output (
Pin.OUT
), yang akan mengontrol nyala/matinya LED. - Tombol (Red, Green, Blue) diatur sebagai pin input (
Pin.IN
), dengan modePin.PULL_UP
, yang menggunakan resistor internal untuk menarik pin ke level HIGH (1) saat tidak ada tekanan pada tombol.
Variabel-variabel juga diinisialisasi, yang berfungsi untuk menyimpan status LED dan tombol:
redState
,greenState
,blueState
: Menyimpan status LED, apakah menyala (True) atau mati (False).lastRedBtnState
,lastGreenBtnState
,lastBlueBtnState
: Menyimpan status tombol sebelumnya untuk mempermudah deteksi perubahan (debouncing).
2. Fungsi updateLEDs()
Fungsi ini bertanggung jawab untuk mengubah status LED berdasarkan nilai variabel redState
, greenState
, dan blueState
:
- Fungsi ini mengubah nilai logika pada pin-pin LED, yang mengontrol apakah LED menyala (1) atau mati (0).
3. Fungsi buzz(duration)
Fungsi ini digunakan untuk mengendalikan buzzer:
- Ketika tombol ditekan, buzzer akan menyala selama waktu tertentu (
duration
), memberikan umpan balik suara.
4. Loop Utama
Program terus berjalan dalam loop yang tidak pernah berhenti (menggunakan while True
). Di dalam loop ini, ada beberapa langkah yang dilakukan secara berurutan:
a. Pembacaan Status Tombol
redBtnState
,greenBtnState
,blueBtnState
: Membaca nilai tombol merah, hijau, dan biru. Jika tombol ditekan, nilai pin akan menjadi LOW (0), dan jika tidak ditekan, nilai pin akan menjadi HIGH (1).
b. Deteksi Perubahan Status Tombol (Debounce)
Program memeriksa apakah tombol baru saja ditekan, dengan membandingkan status tombol saat ini dengan status tombol sebelumnya:
if redBtnState == 0 and lastRedBtnState == 1:
: Jika tombol merah ditekan (status berubah dari HIGH ke LOW), maka status LED merah akan dibalik (redState = not redState
).- Fungsi ini juga memanggil
buzz(100)
untuk memberikan feedback suara. lastRedBtnState = redBtnState
: Menyimpan status tombol merah yang baru, sehingga bisa digunakan untuk memeriksa perubahan pada iterasi berikutnya.
Proses yang sama dilakukan untuk tombol hijau dan biru.
c. Pembaruan Status LED
Setelah memeriksa dan memperbarui status tombol, program akan memanggil fungsi updateLEDs()
, yang akan mengubah status LED sesuai dengan nilai redState
, greenState
, dan blueState
.
d. Debounce
Setelah memeriksa tombol, program menunggu selama 50 milidetik dengan utime.sleep_ms(50)
. Delay ini untuk menghindari efek bouncing, yaitu ketika tombol ditekan atau dilepas, kontak mekanis dapat menyebabkan pembacaan beberapa perubahan status yang cepat dalam waktu singkat. Dengan menunggu selama 50 milidetik, program dapat mengabaikan perubahan status yang tidak diinginkan.
5. Proses Interaksi
- Jika Tombol Merah Ditekan:
- LED merah akan menyala atau mati bergantung pada status terakhirnya.
- Buzzer akan berbunyi sebentar sebagai umpan balik.
- Jika Tombol Hijau Ditekan:
- LED hijau akan menyala atau mati bergantung pada status terakhirnya.
- Buzzer akan berbunyi sebentar sebagai umpan balik.
- Jika Tombol Biru Ditekan:
- LED biru akan menyala atau mati bergantung pada status terakhirnya.
- Buzzer akan berbunyi sebentar sebagai umpan balik.
6. Output yang Dihasilkan
- LED: Bergantung pada tombol yang ditekan, LED akan menyala (True) atau mati (False). LED yang dikendalikan adalah RGB, sehingga tombol yang berbeda akan mengendalikan LED dengan warna yang sesuai.
- Buzzer: Setelah setiap kali tombol ditekan, buzzer akan menyala untuk memberikan umpan balik suara selama 100 milidetik.
4. Flowchart dan Listing Program [kembali]
Flow Chart
Listing Program5. Video Simulasi [kembali]
6. Kondisi [kembali]
Percobaan 7
Buatlah rangkaian seperti gambar pada percobaan 4 dan output akhir rangkaian keseluruhannya ditunjukkan dengan LED RGB menampilkan warna sesuai dengan input push button dan saat push button LED RGB ditekan buzzer akan berbunyi.
7. Analisa [kembali]
1. Analisa bagaimana pengaruh penggunaan/pemilihan GPIO pada STM32 dan Raspberry Pi Pico.
Jawab :
Pemilihan GPIO pada STM32 dan Raspberry Pi Pico memiliki pengaruh besar terhadap fleksibilitas dan performa sistem. STM32 memiliki GPIO yang lebih kompleks dengan fitur seperti alternate function, pull-up/pull-down resistors, dan interrupt eksternal (EXTI) yang memungkinkan penggunaan lebih luas dalam aplikasi industri dan real-time. Sementara itu, Raspberry Pi Pico memiliki GPIO yang lebih sederhana dan lebih mudah dikonfigurasi, terutama dengan MicroPython. Meskipun Raspberry Pi Pico mendukung PWM, I2C, SPI, dan UART, fleksibilitas pengaturannya masih kalah dibandingkan dengan STM32 yang memiliki lebih banyak mode operasi untuk setiap pin.
2. Analisa bagaimana STM32 dan Raspberry Pi Pico menerima inputan dan menghasilkan output
Jawab :
STM32 menerima input dengan membaca status pin melalui fungsi HAL_GPIO_ReadPin() dalam HAL Library atau dengan mengakses register secara langsung. Output dihasilkan dengan mengubah status pin menggunakan HAL_GPIO_WritePin(), yang memungkinkan pengendalian perangkat eksternal seperti LED atau relay. Sementara itu, Raspberry Pi Pico menggunakan pustaka machine dalam MicroPython untuk membaca input dengan pin.value() dan mengatur output dengan pin.value(1) atau pin.value(0). Kedua mikrokontroler ini dapat bekerja dalam mode polling atau interrupt, tetapi STM32 lebih unggul dalam manajemen interrupt karena memiliki fitur EXTI yang memungkinkan pemrosesan input lebih cepat tanpa polling terus-menerus.
3. Analisa bagaimana program deklarasi pin I/O pada STM32 dan Raspberry Pi Pico
Jawab :
Deklarasi pin pada STM32 memerlukan konfigurasi yang lebih kompleks dibandingkan Raspberry Pi Pico. Pada STM32, pin I/O harus diinisialisasi menggunakan GPIO_InitTypeDef, di mana pengguna harus menentukan mode, kecepatan, dan pull-up/pull-down. Konfigurasi ini umumnya dilakukan dengan HAL_GPIO_Init(). Sebaliknya, Raspberry Pi Pico memiliki deklarasi yang lebih sederhana, cukup dengan Pin(nomor_pin, mode), di mana mode bisa berupa Pin.IN atau Pin.OUT. Hal ini membuat Raspberry Pi Pico lebih mudah digunakan, terutama bagi pemula yang tidak ingin terlalu banyak berurusan dengan konfigurasi hardware.
4. Analisa bagaimana program dalam analisa metode pendeteksian input pada STM32 dan Raspberry Pi Pico
Jawab :
STM32 dan Raspberry Pi Pico memiliki dua metode utama untuk mendeteksi input, yaitu polling dan interrupt. Pada STM32, polling dilakukan dengan HAL_GPIO_ReadPin(), sedangkan interrupt menggunakan EXTI (External Interrupt) yang memungkinkan sistem merespons input secara langsung tanpa harus terus-menerus memeriksa status pin. Raspberry Pi Pico juga mendukung polling dengan pin.value(), tetapi untuk interrupt, digunakan pin.irq(handler=callback, trigger=Pin.IRQ_FALLING), yang memungkinkan eksekusi fungsi tertentu saat terjadi perubahan sinyal pada pin input. Namun, pengelolaan interrupt pada STM32 lebih fleksibel dan memungkinkan prioritas yang lebih kompleks dibandingkan dengan Raspberry Pi Pico.
5. Analisa Fungsi HAL_Delay(100) pada STM32 dan utime.sleep_ms(1) pada Raspberry Pi Pico
Jawab :
Fungsi HAL_Delay(100) pada STM32 bekerja berdasarkan SysTick Timer, sehingga tetap berjalan dengan presisi tinggi tanpa memblokir sepenuhnya eksekusi sistem jika digunakan dalam aplikasi multitasking. Sebaliknya, utime.sleep_ms(1) pada Raspberry Pi Pico menggunakan metode blocking delay, yang dapat menghambat eksekusi kode lainnya selama waktu delay berlangsung. Oleh karena itu, dalam aplikasi real-time yang memerlukan efisiensi tinggi, STM32 memiliki keunggulan dalam mengelola delay tanpa mengganggu proses lain, sedangkan Raspberry Pi Pico lebih cocok untuk tugas yang lebih sederhana dan tidak memerlukan multitasking yang kompleks.
8. Download File [kembali]
Komentar
Posting Komentar