Micropython và ESP8266 có liên quan gì với nhau? Python có thể chạy được trên các phần cứng nhúng được không ? Hẳn là các bạn có nghe nói nhiều về Micropython, tuy nhiên để chạy thử được micropython thì cũng hơi vất vả, mình xin chia sẻ với các bạn 1 số cách đơn giản để có thể chạy và thử micropython trên ESP8266

Micropython là gì ?

MicroPython là một công cụ tuyệt vời để chạy được Python trên các nền tảng nhúng. Với cách này thì bạn có thể dùng python để điều khiển trực tiếp các ngoại vi, IO,.. của các board nhúng. MicroPython có sẵn một số board làm riêng cho họ, tuy nhiên chúng ta vẫn có thể dùng nó trên board NodeMCU/ ESP8266

Chuẩn bị

Để khỏi mất nhiều thời gian kiếm đồ này nọ khi thử nghiệm thì các bạn cần có

  • NodeMCU (hoặc ESP8266 modul nào đó sẵn có).
  • Dây cáp.
  • Tool flash ESP
  • Máy tính chạy Windows.
  • Phần mềm giao tiếp TeraTerm, Putty hoặc phần mềm tương ứng.

Flash firmware

Bạn hoàn toàn có thể tự build một firmware dùng micropython, tuy nhiên ở bài hướng dẫn này mình chọn cách dễ hơn đó là nạp firmware có sẵn từ micropython.orgesp8266-xx-vxx.bin, các bạn có thể tải cho các board khác tại đây

Cách để flash firmware mới cho ESP8266 mình có nói ở bài hướng dẫn nạp firmware AT cho ESP8266.

Một số ví dụ

Sau khi nạp firmware Micropython xong thì bạn kết nối với Teraterm/ Putty với tốc độ baud là 115200. Ấn nút reset sẽ hiện thông báo như sau

Hello world

Xong giờ mình thử in lời chào “Hello world” bằng lệnh

print("Hello world")

Kết quả sẽ trả về là Hello world

GPIO

Tiếp tục mình sẽ thử bật LED bằng lệnh

import machine
pin = machine.Pin(2, machine.Pin.OUT)
pin.value(0)
pin.value(1)
pin.value()

Trong ví dụ này mình sử dụng LED có sẵn trên NodeMCU ở chân D2, với value(0), value(1) là bật/ tắt LED. value() là kiểm tra trạng thái hiện tại

Kết nối wifi

Ta có thể cấu hình wifi cho ESP8266 với 2 mode là Station và Access point thông qua lệnh

import network
sta_if = network.WLAN(network.STA_IF)
ap_if = network.WLAN(network.AP_IF)

Để kết nối với wifi thì ta cần phải cấu hình ESP8266 là station

sta_if.active(True)
sta_if.connect('<your ESSID>', '<your password>')
sta_if.isconnected()
sta_if.ifconfig()

Nếu các bạn không thích với Micropython thì các bạn có thể quay về lại với các bài viết ESP8266/NodeMCU dùng Arduino cũ của mình.

Tạm kết

Trên đây là các bước cơ bản để bạn có thể chạy được micropython trên ESP8266, nếu bạn cảm thấy hứng thú và muốn tìm hiểu thêm thì vào trang document Micropython ESP8266 Tutorial để nghiên cứu thêm nhé. Nó còn phần chạy script python thì phải build lại firmware Micropython nên mình đành xin thiếu. Một cái khác nữa là phiên bản Micropython cho STM32F4 mình đã thử, các bạn có thể xem tại STM32 và micropython