Sabtu, 10 Mei 2025

Penerapan kode program FreeRTOS - Free Real Time Operating Sytem, pada pemograman multitasking ESP32

Penerapan kode program FreeRTOS - Free Real Time Operating Sytem, pada pemograman multitasking ESP32

By. Iyon Manakarra

A.     Pendahuluan

1.      Apa itu  FreeRTOS

FreeRTOS (Free Real-Time Operating System) adalah sistem operasi real-time open-source yang ringan dan dirancang untuk mikrokontroler dan sistem embedded. FreeRTOS memberikan kemampuan multitasking (menjalankan beberapa tugas atau task secara bergantian) dengan penggunaan sumber daya yang sangat efisien — ideal untuk perangkat dengan memori dan prosesor terbatas seperti Arduino, ESP32, STM32, dan lainnya.

2.      Fitur Utama FreeRTOS :

a.      Multitasking: Menjalankan beberapa task secara konkuren menggunakan penjadwalan berbasis prioritas.

b.      Task Management: Setiap task bisa dibuat, dijeda, dimulai ulang, atau dihentikan.

c.      Inter-task Communication:

-       Queue (antrian pesan)

-       Semaphore & Mutex (sinkronisasi antar-task)

-       Event Groups

d.      Timer: Mendukung software timer untuk menjalankan fungsi tertentu setelah waktu tertentu.

e.      Lightweight: Biasanya hanya membutuhkan beberapa KB RAM.

f.       Portabilitas Tinggi: Bisa digunakan di banyak arsitektur mikrokontroler (ARM Cortex-M, AVR, ESP32, dsb.).

3.      Percobaan Uji coba Program sederhana menggunakan FreeRtos

a.      Deskripsi :

Program ini merupakan contoh sederhana penggunaan FreeRTOS pada Arduino untuk menjalankan dua tugas (task) secara paralel. Tugas pertama (TaskBlink) mengendalikan sebuah LED yang terhubung ke pin GPIO2 untuk berkedip dengan interval 500 milidetik, sedangkan tugas kedua (TaskSerial) secara berkala mencetak pesan "Running serial task..." ke Serial Monitor setiap 1 detik.

b.      Skematik ESP-32 :

c.      Kode Program Sketch :

#include <Arduino.h>

 

void TaskBlink(void *pvParameters) {

  pinMode(2, OUTPUT);

  while (1) {

    digitalWrite(2, HIGH);

    vTaskDelay(500 / portTICK_PERIOD_MS);

    digitalWrite(2, LOW);

    vTaskDelay(500 / portTICK_PERIOD_MS);

  }

}

void TaskSerial(void *pvParameters) {

  while (1) {

    Serial.println("Running serial task...");

    vTaskDelay(1000 / portTICK_PERIOD_MS);

  }

}

void setup() {

  Serial.begin(115200);

  xTaskCreate(TaskBlink, "Blink Task", 1000, NULL, 1, NULL);

  xTaskCreate(TaskSerial, "Serial Task", 1000, NULL, 1, NULL);

}

void loop() {

  // kosong, semua dijalankan oleh FreeRTOS

}

 

d.      Hasil Pengujian Program :

Berdasarkan hasil pengujian, program berhasil menjalankan dua task secara paralel tanpa gangguan. LED pada pin GPIO2 berkedip dengan stabil setiap 500 milidetik, menunjukkan bahwa TaskBlink berjalan sesuai waktu yang ditentukan. Secara bersamaan, Serial Monitor menampilkan pesan "Running serial task..." dengan interval yang konsisten setiap 1 detik, menandakan bahwa TaskSerial juga berfungsi dengan baik. Tidak ditemukan konflik atau gangguan antara kedua task, yang menunjukkan bahwa FreeRTOS berhasil melakukan penjadwalan multitasking secara efisien dan real-time. Sistem tetap responsif dan stabil selama pengujian.

e.      Link Video Hasil Simulasi  :

Nama Video               : Penerapan kode program FreeRTOS - Free Real Time Operating Sytem, pada

  pemograman multitasking ESP32

Link durasi ke            : https://youtu.be/mFPd69qe7fg

Menit                           : 00:00 – 01:30





Tidak ada komentar:

Posting Komentar

Mari berdiskusi dan silahkan memberi komentar berupa kritik dan saran yang bersifat membangun ya sobat smua....!