Untuk sebagian besar proyek MicroPython—seperti membuat LED berkedip, membaca data sensor, atau mengendalikan layar berukuran kecil—Raspberry Pi Pico (RP2040), BlackPill STM32F411, ESP8266, dan ESP32 akan memberikan pengalaman yang relatif serupa. Perbedaannya mulai terasa ketika aplikasi melakukan komputasi yang lebih kompleks atau membutuhkan kemampuan pemrosesan numerik yang tinggi.
STM32F411 memiliki Floating Point Unit (FPU) berbasis perangkat keras, dan MicroPython dapat memanfaatkannya secara langsung. Akibatnya, perulangan (loop) yang menjalankan fungsi-fungsi matematika seperti math.sin() dan math.sqrt() dapat dieksekusi sekitar 40–50% lebih cepat pada BlackPill STM32F411 dibandingkan Raspberry Pi Pico. Untuk aplikasi seperti Digital Signal Processing (DSP), sensor fusion, atau algoritma yang melibatkan banyak perhitungan bilangan pecahan (floating-point), keunggulan ini memberikan peningkatan performa yang nyata.
Di sisi lain, ESP32 juga memiliki unit FPU sehingga mampu memberikan kinerja yang baik untuk operasi floating-point, meskipun performanya bergantung pada varian chip yang digunakan (misalnya ESP32, ESP32-S2, ESP32-S3, atau ESP32-C3) serta implementasi MicroPython yang dijalankan. Untuk sebagian besar aplikasi IoT yang memerlukan pemrosesan data sensor, filter digital, atau perhitungan matematis tingkat menengah, ESP32 menawarkan keseimbangan yang sangat baik antara performa komputasi, konektivitas Wi-Fi/Bluetooth, dan biaya.
Sebaliknya, ESP8266 tidak dilengkapi dengan FPU perangkat keras. Semua operasi floating-point dilakukan melalui perangkat lunak (software emulation), sehingga perhitungan matematika yang intensif akan berjalan lebih lambat dibandingkan STM32F411 maupun ESP32. Oleh karena itu, ESP8266 lebih cocok digunakan untuk aplikasi IoT sederhana, seperti pembacaan sensor, komunikasi jaringan, dan pengendalian perangkat, daripada aplikasi yang membutuhkan komputasi numerik secara intensif.
import math, time
start = time.ticks_ms()
for i in range(100000):
x = math.sin(i * 0.001) + math.sqrt(i + 1)
elapsed = time.ticks_diff(time.ticks_ms(), start)
print(f"Elapsed: {elapsed} ms")
# STM32F411: ~180 ms
# RP2040: ~310 ms
# ESP8266 (NodeMCU): ~23937 ms
# ESP32 WROOM: ~3935 msDengan menambahkan decorator @micropython.native dan menaikkan frekuensi clock menjadi 240 MHz (default: 160 MHz), performa komputasi ESP32 sedikit meningkat:
import math, time, machine
machine.freq(240000000)
@micropython.native
def benchmark():
start = time.ticks_ms()
for i in range(100000):
x = math.sin(i * 0.001) + math.sqrt(i + 1)
elapsed = time.ticks_diff(time.ticks_ms(), start)
print(f"Native Elapsed: {elapsed} ms")
benchmark()
# ESP32 WROOM: ~2700 msFirmware MicroPython pada ESP32 tidak langsung mengontrol perangkat keras secara mandiri. Di balik layar, terdapat sistem operasi FreeRTOS. MicroPython pada STM32 dan Pico berjalan langsung di atas silikon tanpa lapisan OS pihak ketiga yang kompleks.









