今日目標
在前面 28 天裡,我們用 MicroPython 玩轉了各式各樣的感測器、螢幕與馬達。但在實務開發 IoT 專案時,常會遇到裝置跑一跑突然「無預警當機」、「重新開機」或是跳出 MemoryError 的錯誤。
今天我們不接新硬體,而是來聊聊 ESP32 的記憶體管理 ,並盤點開發 MicroPython 時最常踩的三大地雷與除錯秘訣。
程式碼
import time
import gc
from machine import Pin
gc.enable()
gc.collect()
print("=== ESP32 記憶體管理與監控測試啟動 ===")
counter = 0
while True:
free_mem = gc.mem_free()
allocated_mem = gc.mem_alloc()
print(f"--- 迴圈 #{counter} ---")
print(f"剩餘記憶體 (Free): {free_mem} bytes")
print(f"已使用記憶體 (Allocated): {allocated_mem} bytes")
temp_list = [i for i in range(100)]
gc.collect()
counter += 1
time.sleep(3)
心得
今天我們學會了如何透過 gc 模組來掌握 ESP32 的記憶體狀況。良好的記憶體管理與寫程式習慣,是讓物聯網裝置能夠「穩定運作數個月甚至數年」的關鍵。