Async Proses dengan ESP32
--
Kali ini saya ingin bahas 2 hal yang mungkin masih belum familiar bagi kalian yaitu tentang Async dan ESP32. Mungkin bagi para maker atau opreker tidak asing dengan ESP32. Ya ESP32 adalah development board yang cukup populer, development board dari Expressif untuk membuat alat-alat yang terhubung dengan internet atau populer disebut IoT (Internet of Think).
ESP32 selain wifi juga sudah include Bluetooth v4 atau lebih sering disebut BLE (Bluetooth Low Energy). Tapi untuk tutorial kali ini saya akan membahas tentang async process di ESP32.
Sedangkan apa itu async? Async atau multi threading adalah 2 atau lebih proses yang berjalan tanpa saling tunggu (non blocking). Sedangkan kebalikanya disebut synchronous (blocking).
Nah ini spesialnya ESP32 yang dibekali dengan 2 core Xtensa LX6 yang membuatnya dapat memproses 2 proses sekaligus. Selanjutnya apa manfaat dari proses async tersebut? Tentu saja kita bisa manfaatkan untuk proses yang butuh async, contoh kita buat saja kita punya 2 led yang kita
Led1 => jalan setiap 3 detik
Led2 => jalan setiap 5 detik
Yang seharusnya
Led1 nyalah di detik => 3, 6, 9, 12, …dst
Led2 nyalah di detik => 5, 10, 15,20,..dst
Hasil diatas tidak akan diperoleh jika async karena async hanya menggunakan 1 thread seperti pada umumnya mikrokontroller seperti arduino atau ESP8266. Dibawah ini contoh async
Bisa juga tetap sync marathon proses antara kedua core dengan XemaphoreHandle seperti contoh dibawah ini
Kesimpulan
ESP32 cocok untuk jika kita butuh async proses yang membuat proses jadi lebih cepat karena ada 2 core yang berjalan paralel tanpa saling tunggu seperti pada umumnya mikrokontroller
Thanks and credit for Andreas Spiess this article inspired by https://www.youtube.com/watch?v=k_D_Qu0cgu8