MicroPython Người mới

Nạp MicroPython cho ESP32 và chạy code bằng Thonny

Viết Python chạy thẳng trên vi điều khiển. Không cần biên dịch, sửa code là thấy kết quả ngay.

14.08.20267 phút đọc

MicroPython là bản Python rút gọn chạy được trên vi điều khiển. Khác với Arduino, bạn không phải nạp lại cả chương trình mỗi lần sửa: gõ lệnh vào cửa sổ dòng lệnh là bo chạy ngay.

Linh kiện cần có

Linh kiệnSố lượngGiá tham khảo
Bo ESP32 DevKit V11~90.000đ
Cáp micro USB1~25.000đ
LED và điện trở 220Ω1~1.500đ
Nút nhấn 4 chân1~2.000đ

Giá tham khảo ở các cửa hàng linh kiện tại Việt Nam, tháng 10/2026. Giá thay đổi theo thời điểm và nơi bán.

Sơ đồ nối dây

Chân linh kiệnNối vào
LED (+) qua điện trở 220ΩGPIO 2
LED (−)GND
Nút nhấn chân 1GPIO 15
Nút nhấn chân 2GND

Rút nguồn trước khi cắm dây. Kiểm tra lại toàn bộ sơ đồ rồi mới cắm USB.

Các bước thực hiện

Bước 1. Cài Thonny

Tải tại thonny.org. Đây là trình soạn thảo Python nhẹ, có sẵn công cụ nạp firmware cho ESP32 nên không cần cài thêm gì.

Bước 2. Nạp firmware MicroPython

Cắm ESP32 vào máy. Trong Thonny vào Tools → Options → Interpreter, chọn MicroPython (ESP32), chọn cổng COM, rồi bấm Install or update MicroPython. Chọn biến thể ESP32 / SPIRAM hoặc ESP32 / generic tuỳ bo, bấm Install và chờ khoảng hai phút.

Bước 3. Thử ngay ở cửa sổ Shell

Sau khi nạp xong, khung Shell ở dưới hiện dấu nhắc >>>. Gõ thử print("xin chao") và nhấn Enter, bo trả lời ngay.

Bước 4. Lưu chương trình vào bo

Viết code vào khung soạn thảo, bấm File → Save as và chọn MicroPython device. Đặt tên main.py thì mỗi lần cắm điện bo sẽ tự chạy file này.

Mã nguồn

main.py
from machine import Pin
import time

led = Pin(2, Pin.OUT)
nut = Pin(15, Pin.IN, Pin.PULL_UP)

dangBat = False
lanTruoc = 0

while True:
    # Nut noi xuong GND nen khi nhan se doc ra 0
    if nut.value() == 0 and time.ticks_ms() - lanTruoc > 300:
        dangBat = not dangBat
        led.value(dangBat)
        print("LED", "bat" if dangBat else "tat")
        lanTruoc = time.ticks_ms()

    time.sleep_ms(20)

Giải thích code

Pin.PULL_UP bật điện trở kéo lên có sẵn bên trong chip, nhờ vậy không cần gắn điện trở ngoài cho nút nhấn. Chân sẽ ở mức 1 khi thả và xuống 0 khi nhấn.

Đoạn so sánh time.ticks_ms() dùng để chống rung phím: tiếp điểm cơ khí nảy vài lần trong vài mili giây, nếu không chặn thì một lần nhấn bị tính thành nhiều lần.

Lỗi thường gặp

  • Thonny báo không tìm thấy thiết bịChưa cài driver CP210x hoặc CH340, hoặc đang có Arduino IDE giữ cổng COM. Đóng Arduino IDE lại.
  • Nạp firmware bị lỗi giữa chừngGiữ nút BOOT trên bo trong lúc bấm Install.
  • Lưu file xong cắm điện không tự chạyFile phải tên đúng là main.py và nằm trong bộ nhớ bo, không phải trong máy tính.