Làm Ứng Dụng Nhấp Nháy Đèn Led Với Micropython

Làm Ứng Dụng Nhấp Nháy Đèn Led Với Micropython

Hôm nay mình sẽ viết một bài khá mới mẻ về lập trình nhúng cụ thể mình sẽ giới thiệu về Micropython, nghe cái tên thì khá là quen thuộc nhưng thực sự nó rất mới và chưa phổ biến ở Việt Nam. Bài viết sẽ đề cập tới cách nó hoạt động như thế nào, khác biệt như thế nào so với lập trình nhúng bằng C,C++ hay sử dụng Arduino. 

Để không làm nhàm chán, cuối bài mình sẽ hướng dẫn nho nhỏ về cách cấu hình, cài đặt môi trường cũng như viết một chương trình đầu tiên. Bắt đầu thôi nào.

Micropython là gì?

Micropython là một phiên bản Python được thiết kế để chạy trên các bộ vi điều khiển nhỏ, rẻ tiền, công suất thấp.

Ví dụ về các bộ vi điều khiển mà Micropython có thể chạy trên bao gồm bo mạch, bảng WiPy và ESP8266 . Thông thường, Python được chạy trên máy tính để bàn hoặc máy tính xách tay (cũng trên các máy chủ lớn tại các trang trại máy chủ). So với máy tính để bàn hoặc máy tính xách tay, vi điều khiển nhỏ hơn nhiều, rẻ hơn và kém mạnh mẽ hơn. Phiên bản "thông thường" của Python không thể chạy trên các bộ vi điều khiển nhỏ, giá rẻ vì Python quá nặng nề và phức tạp để chạy trên chúng. Python thông thường chiếm quá nhiều dung lượng đĩa cứng, quá tốn nhiều RAM để hoạt động và đòi hỏi bộ xử lý mạnh hơn so với vi điều khiển hiện có.

Một điều khá tuyệt vời là một phiên bản Python (Micropython) chạy trên các bộ vi điều khiển nhỏ, giá rẻ như ESP8266. Để có được Micropython chạy hoàn toàn trên các bảng nhỏ này, Micropython chỉ chứa một tập hợp con của tất cả các mô-đun thư viện tiêu chuẩn được gắn với Python "thông thường". Một số thư viện đi kèm với Micropython không có bộ hàm và lớp đầy đủ đi kèm với phiên bản đầy đủ của Python. Điều này cho phép Micropython nhỏ gọn (khoảng 600 kB cho cổng ESP8266) và chỉ sử dụng một lượng RAM nhỏ (giảm xuống 16k theo trang chủ của Micropython đề cập ).

Micropython dùng để làm gì?

Micropython được cài đặt trên các bộ vi điều khiển nhỏ, giá rẻ như ESP8266. Điều này có nghĩa bạn có thể sử dụng vi điều khiển làm cảm biến từ xa để đo những thứ như nhiệt độ, độ ẩm và mức độ ánh sáng. Micropython cũng có thể được sử dụng để nhấp nháy đèn LED, điều khiển mảng đèn LED hoặc chạy màn hình nhỏ. Micropython có thể điều khiển động cơ servo, động cơ bước. Kỹ sư xây dựng có thể sử dụng Micropython để theo dõi mực nước. Kỹ sư có thể sử dụng Micropython để diều khiển robot. Kỹ sư điện có thể sử dụng micropython để đo mức điện áp trong các hệ thống nhúng.

Micropython hoạt động như thế nào?

MicroPython bao gồm một trình biên dịch mã byte MicroPython (phần mở rộng tệp .mpy ). Mã Python có thể được biên dịch thành mã byte hoặc trực tiếp trên vi điều khiển hoặc nó có thể được biên dịch trước ở nơi khác.

Phần mềm MicroPython có thể được xây dựng mà không cần trình biên dịch, chỉ để lại máy ảo có thể chạy các chương trình mpy được biên dịch sẵn.

Tại sao Mircopython mà không phải các nền tảng khác như C/C++ hay Arduino?

Như các bạn đã biết, ngôn ngữ Python đã và đang dần khẳng định được chính mình. Không chỉ chỉ với cái tên mạnh mẽ, Python dần được mọi người yêu quý và biết đến với cú pháp đơn giản dễ học nhưng lại cực kỳ chặt chẽ. Không chỉ ứng dụng trong web, khoa học và tính toán, game hay ứng dụng desktop. Python còn lấn sân sang cả hệ thống nhúng nữa điển hình là MicroPython. Vì sử dụng ngôn ngữ bậc cao nên MicroPython không cần đòi hỏi bạn quá chuyên sâu kiến thức về phần cứng nhưng bạn có thể làm ra những sản phấm không hề thua kém so với các nền tảng khác. Là ngôn ngữ thông dịch nên không cần phải biên dịch chương trình và nạp vào vi điều khiển như Arduino, C ,... Thật mới mẻ phải không nào ! 

2. Làm đèn led nhấp nháy với Mircopython

2.1. Yêu cầu phần cứng và phần mềm bao gồm :

Phần cứng:

  • Kit RF Thu Phát Wifi ESP8266 NodeMCU Lua
  • Cáp microUSB
  • 1 đèn Led
  • 1 trở 330 ôm
  • 1 board test

Phần mềm:

  • Cài đặt sẵn sẵn Python. Nếu chưa có click Vào đây để cài đặt.
  • Dowload firmware MicroPython. Nếu chưa có click Vào đây để cài đặt, bạn nên dùng phiên bản ổn định nhé.

2.2. Làm một mạch đơn giản:

2.3. Bắt đầu lập trình:

Đầu tiên chúng ta cần công cụ để cài đặt firmware

pip install esptool

Chúng ta cần xóa bộ nhớ Esp8266 với esptool.py bằng lệnh

esptool.py --port COM3 erase_flash

Note: Bạn cần vào Device Manager để xem máy tính đang kết nối với Esp8266 bằng cổng COM nào nhé



Cài đặt firmware 

esptool.py --port COM3 --baud 115200 write_flash --flash_size=detect 0 esp8266-20191220-v1.12.bin

Noteesp8266-20191220-v1.12.bin là tên firmware bạn vừa mới tải về

Cài đặt ampy để có thể truy cập vào file hệ thống

pip install adafruit-ampy
pip install adafruit-ampy --upgrade

Lệnh log những file trong bộ nhớ

ampy -p COM3 -b 115200 ls

Nếu log được như vậy chúng ta đã hoàn thành việc cài đặt

 Tạo một file main.py

import time
from machine import Pin

led = Pin(14, Pin.OUT)
while(True):
    led.on()
    time.sleep(0.5)
    led.off()
    time.sleep(0.5)

Lệnh chạy file main.py vào Esp8266

ampy -p COM3 -b 115200 run main.py

Note: Lệnh này chạy nhưng khi resest thì chương trình sẽ bị mất

Lệnh ghi file main.py vào Esp8266

ampy -p COM3 -b 115200 put main.py

Và còn nhiều lệnh nữa 

ampy --help

Tạm Kết.

Trên đây là bài viết mở đầu về MicroPython, và chúng ta thấy rằng thiết kế và lập trình ra một hệ thống nhúng với MicroPython không hề khó tí nào. Trong những bài tiếp theo, mình sẽ hướng dẫn một số các khái niệm cơ bản khác để có một nền tảng xây dựng như dự án lớn hơn.  Xây dựng smarthome từ việc build server đến làm phần cứng, dùng Esp8266 kết nối với FptAi để làm một cô trợ lý nhắc nhở việc học hoặc những dự án IOT khác. Thật hấp dẫn phải không nào các bạn, khả năng sáng tạo của chúng ta là vô hạn. Nếu thấy hay các bạn ủng hộ mình bằng cách share bài mình nhé. Hẹn gặp các bạn sớm.