Xin chào các bạn, việc lập trình hệ thống nhúng , cũng như việc lập trình các hệ thống AI, BigData sử dụng Python ngày càng gắn bó mật thiết với các kỹ sư, và những người yêu thích lập trình – tìm hiểu công nghệ , để sáng tạo, và để lập nghiệp.
MLAB giới thiệu tới các bạn chuỗi bài viết lập trình cơ bản với MicroPython trên NodeMCU ESP-8266 để các bạn có hiểu biết cơ bản, và thực hành thực chiến luôn.
Chuỗi bài viết là những ngày kỳ công của các bạn kỹ thuật viên tại MLAB tổng hợp, lên ý tưởng và thực hiện, mong được bạn đọc, bạn yêu công nghệ đọc và cho ý kiến góp ý.
I./ Giới thiệu về MicroPython
MicroPython là một biến thể của ngôn ngữ lập trình Python3 được thiết kế đặc biệt để chạy trên các microcontroller (các vi điều khiển) có bộ nhớ hạn chế. Đó là một ý tưởng của Tiến sĩ Damien P. George tại trường đại học Cambridge, người đã viết ra phiên bản đầu tiên năm 2013 cùng với dự án mạch Pyboard trên Kickstarter. Mạch Pyboard có thể coi là phiên bản phần cứng chính thức đầu tiên chạy MicroPython. Năm 2014 thì tiến sĩ George cũng bắt đầu lập website micropython.org, cùng với đó là phiên bản MicroPython 1.0. Và đây cũng là website chính thức cập nhật các thông tin, phiên bản phát triển về sau của MicroPython.
MicroPython là một ngôn ngữ lập trình bậc cao, điều khiển trực tiếp thông qua ngắt (direct control over interrupts), đó là một tính năng mà hiện chưa ngôn ngữ lập trình hướng đối tượng nào làm được (Object-Oriented Language).
Các nguồn Interrupt và tiến trình xử lý Ngắt của MicroPython :
+ Hardware Interrupt : là những ngắt gây ra bởi các thiết bị kết nối với vi điều khiển, mà có những hoạt động kết nối – xử lý dữ liệu cần vi điều khiển phải chú ý. Các ngắt này thường xảy ra tại các chân GPIO của vi điều khiển.
+ Exceptions and traps Interrupt : thường là các ngắt xảy ra khi có một điều kiện ngoại lệ - bất thường trong quá trình thực thi chương trình, hoặc là một điều kiện đặt trước , hoặc một trái thái đặt trước trong chương trình.
+ Software Interrupt (SWI) : ngắt này được đặt trong chương trình ở những vị trí cụ thể mà yêu cầu bắt buộc phải có ngắt với những điều kiện cụ thể. Có thể sử dụng để dừng chương trình ở một số thời điểm cụ thể hoặc đạt được giá trị tính toán đặt trước. Cũng có thể được sử dụng cho các vấn đề đến việc sử dụng bộ nhớ.
Lợi thế của micropython là sử dụng ngôn ngữ bậc cao, dễ dàng sử dụng cho người mới bắt đầu. Có thể thực thi các lệnh trực tiếp ngay trên Terminal thông qua REPL hoặc qua Web REPL. Một khi đã flash firmware hỗ trợ micropython thì việc thực thi chương trình bằng micropython sẽ do trình thông dịch bên dưới chip đảm nhiệm. Bạn có thể thay đổi chương trình mà không phải nạp lại firmware nữa.
Và một điều nữa nếu bạn còn phân vân chưa biết bắt đầu học Python trước hay học MicroPython trước, bạn hoàn toàn yên tâm khi bạn học được MicroPython rồi thì sau này khi bạn học Python cũng rất thuận lợi với các kiến thức bạn đã học được từ MicroPython.
Những board mạch bạn có thể lập trình MicroPython :
+ Pyboard
+ NodeMCU ESP8266(link)
+ NodeMCU ESP32 (link)
+ Arduino : ví dụ Arduino UNO(link)
+ STM32(link)
+ MaixDock(link)
+ HUSKYLENS(link)
+ micro:bit(link)
+ Raspberry Pi(link)
+ BeagleBone Black(link)
+ LattePanda(link)
+ Ngoài ra thì còn các cấu trúc phần cứng khác như : x86, x86-64, ARM : ARM Cortex-M4,… , ARM Thumb, Xtensa.
+ ….
Những link tham khảo chính cho MicroPython :
+ http://docs.micropython.org/en/latest/
+ https://forum.micropython.org/
+ https://github.com/micropython/micropython
+ https://github.com/micropython/micropython-lib
+ https://github.com/pfalcon/pycopy
+ http://wiki.micropython.org/Home
II./ Giới thiệu NodeMCU ESP-8266
Trong list bài hướng dẫn lập trình với MicroPython này MLAB sử dụng thiết bị phần cứng chủ yếu là NodeMCU ESP-8266 xuyên suốt các bài viết. Với các thiết bị khác các bạn tham chiếu – tham khảo để setup và lập trình tương tự như NodeMCU ESP-8266.
+ Tích hợp module ESP-12E
+ Tích hợp CP2102 và cổng chuyển đổi USB to UART
+ Cổng USB cấp nguồn và nạp code hoặc gỡ lỗi UART
+ 2x15 chân GPIO
+ 2 x phím reset
+ Wifi module: ESP-12E, Processor: ESP8266
+ Built-in Flash: 32Mbit
+ Ăng-ten: ăng-ten PCB
+ Giao thức kết nối ngoại vi: UART / SPI / I2C / SDIO / GPIO / ADC / PWM
+ Wifi protocol: IEEE 802.11 b / g / n
+ Dải tần số: 2.4G ~ 2.5G (2400M ~ 2483.5M)
+ Chế độ WIFI:Station / SoftAP / SoftAP+Station
+ Điện áp hoạt động: 5V
+ Mức logic: 3V
+ Kích thước: 48.26mm x 25.4mm
+ Smart home
+ Intelligent building
+ Tư động hóa trong công nghiệp
+ Camera IP
+ Nông nghiệp thông minh
Những link tham khảo với MicroPython trên NodeMCU ESP-8266 :
+ http://docs.micropython.org/en/latest/esp8266/quickref.html
+ https://micropython.org/download/#esp8266