Học Micropython cơ bản
Hello anh em, lại là mình đây, sau khi hoàn thành serie micropython thì đây sẽ là bài tổng hợp của mình tóm gọn nhẹ nhàng tình cảm lại cho anh em có thể theo dõi.
Micropython về cơ bản là dễ, dễ hiểu dễ đọc, dễ làm, nhanh gọn lẹ và có thể nói là giống mì ăn liền như Arduino. Tùy mỗi người một mục đích khác nhau, 1 nhu cầu khác nhau cũng như khẩu vị riêng. Nếu bạn thực sự muốn thử nghiệm python trên device cũng như microcontroller thì đây là series dành cho bạn. Mình tin với 15-30p xem qua cũng như có kiến thức cơ bản về python rồi thì dăm ba cái này chỉ là muỗi thôi.
Đúng với tinh thần bài tổng hợp để đi theo được series này thì bạn cần chuẩn bị 1 chút những thứ sau
Phần cứng và môi trường
- Board NodeMCU ESP32 hoặc ESP8266 có nạp firmware Micropython bản mới nhất
- PC với hệ điều hành Windows hoặc Ubuntu linux, hoặc cả 2, trong series này mình dùng cả 2, thường thì Ubuntu để xài esptool flash xóa trắng và nạp firmware cho nhanh gọn lẹ, sau khi đã nạp xong Micropython thì mình lại về windows cho quen thuộc
Các bạn có thể tham khảo 2 bài viết sau đây về làm quen cơ bản cũng như setup môi trường ban đầu cho Micropython
Phần mềm
Có yêu cầu nhỏ trước khi bắt đầu là bạn phải biết python cơ bản nhé, nếu không thì cũng không sao, mình sẽ có khóa python easy cho ae theo dõi ngay, python rất đơn giản dễ hiểu cho những người mới bắt đầu nên anh em cũng không cần phải quá lo lắng
Sau khi chuẩn bị đầy đủ môi trường cần thiết thì bạn có thể bắt tay vào nghiên cứu các ngoại vi khác nhau, cách để kết nối với các board khác, điều khiển IO, DHT22, ADC,PWM, giao tiếp I2C, SPI, UART thông qua các bài viết sau
Với những bài viết trên bạn có thể hiểu được cách làm việc của Micropython, cách để thao tác với các ngoại vi thông qua các thư viện, cách đưa file vào Micropython board và điều khiển nó để tương tác với các board khác. Ưu điểm lớn nhất của nó là không cần phải biên dịch code, load file py vào và chạy luôn.
Ưu điểm Micropython
Tiện đây thì có các ưu điểm của micropython mình list theo bài viết này ra cho ae xem luôn:
- Interactive REPL, or read-evaluate-print loop: Cho phép bạn kết nối với một bo mạch và để nó thực thi mã mà không cần biên dịch hoặc tải lên - quá hoàn hảo để nhanh chóng tìm hiểu và thử nghiệm với phần cứng!
- Extensive software library: Giống như ngôn ngữ lập trình Python bình thường, MicroPython có các thư viện được tích hợp để hỗ trợ nhiều tác vụ. Ví dụ: parsing JSON file từ web service, tìm kiếm văn bản bằng regular expression hoặc thậm chí thực hiện lập trình socket dễ dàng với các thư viện tích hợp sẵn cho MicroPython.
- Extensibility. Đối với người dùng cao cấp, MicroPython có thể mở rộng với các function low-level của C/C ++ để bạn có thể trộn code với code high-level MicroPython khi bạn cần.
Micropython có thể làm được gì ?
Bạn có thể tưởng tượng bất kỳ thứ gì mà Arduino Board làm được thì MicroPython cũng làm đc, giống như điều khiển hardware và kết nối device. Bạn có thể dùng GPIO, PWM, I2C,UART, SPI, thậm chí tìm mạng và Wifi, kết nối mạng với Micropython như những ví dụ trên của mình rồi đấy.
Nói tóm lại thì MicroPython làm được rất nhiều thứ. Tất cả mọi thứ mà bạn có thể tưởng tượng ra được.
So sánh Micropython với Arduino
Có một vài điểm khác biệt quan trọng giữa Arduino và MicroPython. Đầu tiên là Arduino là một 'hệ sinh thái' với Arduino IDE, ngôn ngữ lập trình Arduino (dựa trên C/C ++) và phần cứng Arduino như Arduino Uno R3.
MicroPython chỉ là một trình thông dịch ngôn ngữ lập trình và không bao gồm một trình soạn thảo (IDE). Một số board MicroPython hỗ trợ trình chỉnh sửa/ nhắcode dựa trên web, nhưng với hầu hết các board MicroPython, bạn sẽ viết mã trong trình soạn thảo văn bản mong muốn của mình và sau đó sử dụng các công cụ để tải lên và chạy code trên board.
Sự khác biệt quan trọng thứ hai là ngôn ngữ MicroPython được thông dịch(interpreter) thay vì được biên dịch thành tập lệnh để CPU có thể chạy trực tiếp như với ngôn ngữ lập trình C/C++ của Arduino. Được thông dịch có nghĩa là khi code MicroPython chạy, nó phải thực hiện thêm một chút công việc để chuyển đổi từ code MicroPython thành các lệnh mà CPU hiểu được.
Một ưu điểm chính của mã thông dịch là nó có thể gọn gàng và đơn giản hơn nhiều so với các ngôn ngữ biên dịch trực tiếp theo lệnh CPU. Bạn thậm chí có thể viết và chạy mã thông dịch như MicroPython trực tiếp trên board mà không cần biên dịch hoặc tải lên - điều này không thể với Arduino!
Một nhược điểm của mã được thông dịch và MicroPython so với Arduino là performance sẽ thấp hơn và đôi khi sử dụng nhiều bộ nhớ hơn khi thông dịch code. Một chương trình được viết bằng Arduino sẽ chạy nhanh nhất có thể trên CPU của board trong khi mã tương tự trong MicroPython sẽ chậm hơn một chút vì nó phải giải thích mọi lệnh và chuyển đổi nó thành mã CPU (tất nhiên ở đây mình không so sánh với cách lập trình bằng C với thanh ghi hoặc assembly code). Trong thực tế, hiệu suất này hiếm khi là một vấn đềlớn đối với các loại dự án mà bạn có thể tạo với Arduino. Nếu bạn gặp sự cố về performance hoặc bộ nhớ, MicroPython cho phép bạn viết mã bằng C/C ++ hoặc assembly instruction với CPU gốc của board để đạt hiệu suất tối đa. Thế thì quá khủng rồi còn đòi hỏi gì nữa...
Cuối cùng thì không có câu trả lời đơn giản nào cho sự lựa chọn giữa MicroPython và Arduino. Mỗi loại đều có điểm mạnh và điểm yếu cần được xem xét cho các dự án của riêng bạn. Đừng ngại thử MicroPython - đối với một số board như ESP8266, bạn thực sự có thể sử dụng MicroPython hoặc Arduino và chọn đâu là cái tốt nhất cho nhu cầu của mình.
Hướng phát triển
Tất nhiên học xong rồi phải tiếp tục phát triển lên tiếp chứ, thế nguồn ở đâu mà coi bây giờ ? yên tâm nhé bạn tôi ơi, link bên dưới đầy đủ cho bạn ngâm cứu
- MicroPython homepage
- MicroPython pyboard documentation
- MicroPython ESP8266 documentation và MicroPython ESP8266 FAQ forum page
- MicroPython BBC micro:bit documentation
- MicroPython WiPy documentation
- MicroPython Developer Wiki
- Differences between MicroPython and standard desktop Python
Nếu gặp issue thì phải làm sao ? Vào link này giao lưu với các bạn trên thế giới nha bạn
Thế là đủ mọi thông tin cho anh em rồi nhé. Tới giờ bấm nút rồi, thân chào ace và hẹn gặp lại ở series sau.