Laporan Akhir 2
1. Prosedur [kembali]
- Rangkai rangkaian di breadboard sesuai dengan percobaan ke-3 pada modul menggunakan sensor inframerah (IR) dan sensor sentuh sebagai input, serta LED RGB sebagai output.
- Sambungkan breadboard ke komputer yang terinstal software STM32CubeIDE menggunakan kabel USB.
- Buka STM32CubeIDE dan pastikan STM32 terdeteksi dengan baik oleh perangkat lunak.
- Buat dan buka program pada STM32CubeIDE yang telah dibuat untuk mengontrol LED RGB.
- Upload program ke STM32 dan jalankan program untuk mengontrol LED RGB.
- Uji sensor inframerah dan sensor sentuh untuk memastikan LED RGB menyala sesuai dengan kondisi yang ditentukan.
- Selesai.
2. Hardware dan Diagram Blok [kembali]
Hardware
a) Raspberry Pi Pico
Diagram Blok
3. Rangkaian Simulasi dan Prinsip Kerja [kembali]
Rangkaian Simulasi
- Rangkaian sebelum disimulasikan
- Rangkaian setelah disimulasikan
Prinsip Kerja
Prinsip Kerja Program:
- Inisialisasi Sistem:
o HAL_Init();
Program dimulai dengan memanggil fungsi HAL_Init() yang melakukan inisialisasi
HAL (Hardware Abstraction Layer) untuk mengonfigurasi seluruh perangkat keras
mikrocontroller (STM32). Ini adalah langkah awal untuk menggunakan periferal
dan sistem timer di STM32.
- Konfigurasi Clock Sistem:
o SystemClock_Config();
Fungsi ini mengatur konfigurasi clock sistem. Pengaturan ini memastikan bahwa
STM32 berfungsi dengan clock yang tepat dan semua periferal bekerja pada
frekuensi yang sesuai. Biasanya ini digunakan untuk mengatur pengaturan
osilator dan pembagi clock.
- Inisialisasi GPIO:
o MX_GPIO_Init();
Fungsi ini digunakan untuk mengonfigurasi semua pin GPIO yang diperlukan oleh
program, termasuk pin untuk LED dan sensor. Setelah fungsi ini dijalankan,
semua pin yang diperlukan telah siap digunakan.
- Pembacaan Status Sensor:
o uint8_t
ir_status = HAL_GPIO_ReadPin(GPIOB, IR_Pin);
Fungsi ini membaca status sensor inframerah (IR) yang terhubung ke pin IR_Pin
pada port GPIOB. Status ini bisa GPIO_PIN_SET (jika IR mendeteksi gerakan) atau
GPIO_PIN_RESET (jika tidak ada gerakan).
o uint8_t
touch_status = HAL_GPIO_ReadPin(GPIOB, TOUCH_Pin);
Fungsi ini membaca status sensor sentuh (TOUCH) yang terhubung ke pin TOUCH_Pin
pada port GPIOB. Status ini juga bisa GPIO_PIN_SET (jika ada sentuhan) atau GPIO_PIN_RESET
(jika tidak ada sentuhan).
- Mengatur LED Biru Berdasarkan Status IR:
o HAL_GPIO_WritePin(BLUE_GPIO_Port,
BLUE_Pin, ir_status);
Berdasarkan status sensor IR, jika IR aktif (terdeteksi gerakan), maka LED Biru
akan menyala (GPIO_PIN_SET), jika tidak ada gerakan, LED Biru dimatikan (GPIO_PIN_RESET).
- Mengatur LED Hijau Berdasarkan Status Sensor
Sentuh:
o HAL_GPIO_WritePin(GPIOA,
GREEN_Pin, touch_status);
Berdasarkan status sensor sentuh, jika ada sentuhan, maka LED Hijau akan
menyala (GPIO_PIN_SET), jika tidak ada sentuhan, LED Hijau akan dimatikan (GPIO_PIN_RESET).
- Mengatur LED Merah Berdasarkan Kedua Sensor:
o if
(ir_status == GPIO_PIN_RESET && touch_status == GPIO_PIN_RESET)
Bagian ini memeriksa apakah kedua sensor (IR dan TOUCH) tidak aktif, yang
berarti tidak ada gerakan pada sensor IR dan tidak ada sentuhan pada sensor
sentuh. Jika kondisi ini terpenuhi, LED Merah akan menyala (GPIO_PIN_SET).
o HAL_GPIO_WritePin(GPIOA,
RED_Pin, GPIO_PIN_SET);
Jika tidak ada gerakan dan tidak ada sentuhan, LED Merah akan menyala.
o else
{ HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_RESET); }
Jika salah satu sensor (IR atau TOUCH) aktif, LED Merah akan dimatikan (GPIO_PIN_RESET).
- Delay:
o HAL_Delay(10);
Program memberikan delay kecil selama 10 milidetik untuk memastikan bahwa
pembacaan sensor dan penyalakan LED stabil. Ini juga membantu mencegah
pembacaan yang tidak stabil pada sensor dan penyalakan LED yang tidak
diinginkan (misalnya, bouncing pada tombol atau sensor sentuh).
Prinsip kerja rangkaian ini didasarkan pada pemrosesan sinyal digital oleh mikrokontroler STM32 untuk mengontrol penyalaan LED RGB menggunakan sensor inframerah dan sensor sentuh sebagai input. Rangkaian ini bekerja dengan prinsip logika digital, di mana sensor inframerah bertindak sebagai detektor gerakan dan sensor sentuh bertindak sebagai detektor sentuhan. Masing-masing sensor memberikan sinyal yang akan dibaca oleh mikrokontroler. Jika sensor inframerah mendeteksi gerakan, mikrokontroler akan mengaktifkan LED Biru, sedangkan jika sensor sentuh mendeteksi sentuhan, LED Hijau akan menyala.
Jika kedua sensor tersebut tidak aktif (tidak ada gerakan pada sensor inframerah dan tidak ada sentuhan pada sensor sentuh), maka LED Merah akan menyala. Hal ini dilakukan dengan membaca status dari kedua sensor tersebut, dan berdasarkan status ini, mikrokontroler akan mengatur status pin GPIO yang terhubung ke masing-masing LED. Jika salah satu sensor aktif, mikrokontroler akan mematikan LED Merah, namun jika kedua sensor tidak aktif, LED Merah akan menyala.
Untuk memastikan pembacaan sensor yang stabil, program juga memberikan delay kecil untuk menghindari pembacaan yang tidak stabil akibat noise atau efek bouncing dari sensor sentuh. Dengan cara ini, sistem dapat mengontrol LED secara tepat berdasarkan kondisi yang terdeteksi oleh sensor tanpa adanya gangguan atau pembacaan yang salah.
4. Flowchart dan Listing Program [kembali]
Flowchart
Listing Program
5. Video Demo [kembali]
6. Kondisi [kembali]
Percobaan 2
- Sensor Infrared (IR): Ketika sensor mendeteksi gerakan, statusnya akan aktif (logika HIGH), dan LED Biru akan menyala.
- Sensor Touch: Jika tidak ada sentuhan, status sensor adalah tidak aktif (logika LOW), yang menyebabkan LED Hijau mati.
- LED Merah: LED Merah akan menyala ketika kedua sensor (IR dan TOUCH) tidak aktif atau tidak mendeteksi gerakan dan sentuhan.
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