Trong bài này mình sẽ hướng dẫn bạn cách lập trình ESP32 bằng công cụ rất phổ biến của các developer là Microsoft Visual Studio Code (VS Code) – đi kèm với với phần mở rộng PlatformIO IDE.
Công cụ viết code này có rất nhiều ưu điểm so với phần mềm Arduino mà chúng ta đã quen dùng.
Bài hướng dẫn này có thể áp dụng cho trên các hệ điều hành Windows, Mac OS X hoặc Ubuntu.
Arduino IDE hoạt động tốt cho các ứng dụng nhỏ. Tuy nhiên, đối với các dự án nâng cao với hơn 200 dòng code, nhiều file và các tính năng nâng cao khác như tự động hoàn thành và kiểm tra lỗi, VS Code với phần mở rộng PlatformIO IDE là giải pháp thay thế tốt nhất.
Dưới đây là một số lợi thế của việc sử dụng VS Code với PlatformIO IDE so với Arduino IDE truyền thống:
- Tự động phát hiện cổng COM của board mạch
- IntelliSense: Tự động hoàn thành code khi chúng ta đang gõ. VS Code sẽ cố gắng đoán những gì bạn muốn viết, hiển thị các khả năng khác nhau và cung cấp thông tin chi tiết về các tham số của hàm đang được gọi
- Tự động phát hiện và gạch chân các lỗi có trong mã trước khi biên dịch
- Mở nhiều tab và file cùng một lúc
- Bạn có thể ẩn đi từng phần của code
- Và nhiều hơn nữa…
Mục lục
Cài đặt Visual Stduio Code trên Windows
Bạn hãy truy cập vào link https://code.visualstudio.com/ và download phiên bản cho hệ điều hành Window của bạn về máy.
Tiến hành cài đặt theo hướng dẫn từng bước.
Mở VS Code lên, bạn sẽ thấy màn hình Welcome xuất hiện.
Cài đặt Python trên Windows
Để lập trình ESP32 và ESP8266 với PlatformIO IDE, bạn cần cài đặt Python 3.5 trở lên trong máy tính của mình. Ở đây mình đang sử dụng Python version 3.8.5.
Để cài đặt, đầu tiên click vào link python.org/download và tải Python 3.8.5 hoặc một phiên bản mới nhất hiện có. Mở file đã tải xuống để bắt đầu cài đặt theo hướng dẫn.
LƯU Ý QUAN TRỌNG: Bạn nhớ đánh dấu chọn Add Python 3.8 to PATH để câu lệnh Python có thể được chạy từ bất kỳ đâu.
Cài đặt Visual Studio Code trên Mac OS X
Bạn truy cập vào https://code.visualstudio.com/ và download về máy tính phiên bản cho hệ điều hành Mac OS X của bạn.
Sau khi tải xuống file ứng dụng của Visual Studio Code, bạn sẽ được nhắc nhở với thông báo sau. Sau đó nhấn nút “ Open ”.
Hoặc mở thư mục đã Download và mở Visual Studio Code.
Sau khi cài đặt, bạn chạy ứng dụng VS Code và sẽ thấy màn hình “Welcome”.
Cài đặt Python trên MAC OS X
Bạn cần cài đặt Python 3.5 trở lên trong máy tính của mình. Ở đây mình đang sử dụng Python 3.8.5.
Để cài đặt Python, bạn có thể sử dụng Homebrew. Nếu bạn không có sẵn lệnh brew, hãy có thể cài đặt bằng câu lệnh (không bao gồm dấu $):
$ /bin/bash -c "$(curl –fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Sau đó, chạy lệnh sau (không bao gồm dấu $) để cài đặt Python 3
$ brew install python3
Cài đặt VS Code Trên Linux Ubuntu
Bạn truy cập vào https://code.visualstudio.com/ và download về máy tính phiên bản cho hệ điều hành Linux Ubuntu của bạn.
Lưu file cài đặt về máy tính:
Để cài đặt, bạn hãy mở cửa sổ Terminal, di chuyển đến thư mục Downloads của bạn và chạy lệnh sau để cài đặt VS Code.
$ cd Downloads $ sudo apt install ./code_1.49.1-1600299189_amd64.deb
Sau khi quá trình cài đặt hoàn tất, VS Code sẽ có sẵn trong menu ứng dụng của bạn
Mở VS Code và bạn sẽ thấy màn hình “Welcome”
Cài đặt Python trên Ubuntu
Bạn cần cài đặt Python 3.5 trở lên trong máy tính của mình. Ở đây mình đang sử dụng Python 3.8.5.
Mở cửa sổ Terminal và kiểm tra xem Python đã được cài đặt hay chưa.
$ python3 --version
Nếu Python 3 chưa được cài đặt, hãy chạy lệnh sau:
$ sudo apt install python3
Cho dù bạn đã cài đặt Python hay chưa, bạn cần chạy lệnh sau để cài đặt các tiện ích bổ sung của Python.
$ sudo apt install python3-distutils
Cài đặt PlatformIO trên VS Code
Bạn làm theo hướng dẫn các bước sau để cài đặt extension PlatformIO IDE cho VS Code.
- Trong VS Code, nhấp vào biểu tượng “Extensions” hoặc nhấn “Ctrl + Shift + X” để mở tab “Extensions”
- Tìm kiếm “ PlatformIO IDE ”
- Chọn tùy chọn đầu tiên
- Cuối cùng, nhấp vào nút “Install”
(Lưu ý: quá trình cài đặt có thể mất vài phút)
Sau khi cài đặt, hãy đảm bảo rằng phần mở rộng PlatformIO IDE đã được bật như hình dưới đây.
Sau đó, biểu tượng PlatformIO sẽ hiển thị trên thanh bên trái cũng như biểu tượng Home sẽ chuyển hướng bạn đến trang chủ PlatformIO.
Vậy là xong, tiện ích mở rộng PlatformIO IDE đã được thêm vào VS Code thành công.
Nếu bạn không thấy biểu tượng của PlatformIO và các công cụ nhanh ở dưới cùng, bạn có thể cần khởi động lại VS Code để các thay đổi có hiệu lực.
Tổng quan giao diện Visual Studo Code
Màn hình sau đây hiển thị ý nghĩa của từng biểu tượng trên thanh công cụ bên trái và các phím tắt trong VS Code:
Các công cụ quan trọng bao gồm:
- Quản lý file
- Công cụ tìm kiếm
- Quản lý source code version (sử dụng git)
- Debug
- Extensions
Ngoài ra, bạn có thể nhấn Ctrl + Shift + P hoặc đi tới View > Command Palette… để hiển thị tất cả các lệnh có sẵn. Nếu bạn đang tìm kiếm một lệnh và bạn không biết nó nằm ở đâu hoặc phím tắt của nó, bạn chỉ cần đi tới Command Palette và tìm kiếm nó.
Ở dưới cùng, có một thanh màu xanh với các lệnh của PlatformIO.
Ý nghĩa của biểu tượng như sau từ trái sang phải:
- Về trang chủ PlatformIO
- Build / compile code
- Upload code
- Clean
- Serial monitor
- Console
Ngoài ra, bạn cũng có thể nhấn vào biểu tượng của PIO để xem tất cả các lệnh của PlatformIO.
Lập trình bằng PlatformIO IDE
Chúng ta sẽ thử tạo một project đơn giản là bật tắt Led và upload code cho ESP32 bằng PlatformIO trong VS Code.
Trong hướng dẫn này mình sẽ dùng board Node Wifi32.
Tạo một dự án mới
Trong VS Code, nhấp vào biểu tượng Home PlartfomIO. Nhấp vào + New Project để bắt đầu dự án mới.
Đặt tên cho project tùy ý (ví dụ Blink_LED ) và chọn một board thuộc loại ESP32 bất kỳ (ví dụ DOIT ESP32 DEVKIT V1).
Bạn có thể chọn vị trí mặc định để lưu dự án của mình. Nơi lưu mặc định nằm trong đường dẫn này Documents > PlatformIO > Projects.
Nhấp vào “Finish” để tạo project.
Sau khi project được tạo, bạn sẽ thấy các file của project ở tab Explorer.
VS Code và PlatformIO có cấu trúc thư mục khác với project .ino tiêu chuẩn của phần mềm Arduino IDE. Bạn sẽ thấy có nhiều file được tạo trong thư mục của project thay vì chỉ 1 file .ino như bên Arduino IDE. Tuy nhiên, bạn đừng lo lắng, thông thường chúng ta sẽ chỉ cần làm việc với một hoặc hai trong số các file đó thôi.
Cảnh báo: bạn không nên xóa, sửa đổi hoặc di chuyển các thư mục và file platformio.ini. Nếu không, bạn sẽ không thể biên dịch dự án của mình bằng PlatformIO nữa.
File Platformio.ini
File platformio.ini là file cấu hình PlatformIO cho project của bạn. Nó hiển thị các thông tin như platform, board và framework được sử dụng. Bạn cũng có thể thêm các cấu hình khác như các thư viện được đưa vào, tùy chọn upload code, hay tốc độ truyền của Serial Monitor và các cấu hình khác.
Với board mạch Node Wifi32 hay Node Wifi, nếu bạn muốn sử dụng tốc độ truyền là 115200 trong Serial Monitor, bạn chỉ cần thêm dòng sau vào file platformio.ini của mình và lưu lại.
monitor_speed = 115200
Trong file này, bạn cũng có thể bao gồm các thư viện bạn sẽ sử dụng trong dự án của mình bằng cách sử dụng chỉ thị lib_deps, như sẽ thấy ở các phần sau đây.
Thư mục src
Thư mục src là thư mục chứa các file code của bạn. Trong thư mục src, có một filemặc định tên là main.cpp. Mở file đó thì bạn sẽ thấy cấu trúc quen thuộc của một chương trình Arduino gồm 2 hàm là setup() và loop().
Trong PlatformIO, tất cả các file code Arduino của bạn phải bắt đầu bằng #include <Arduino.h>.
Upload code
Bạn copy đoạn code sau vào file main.cpp của bạn .
#include <Arduino.h> #define LED 13 void setup() { // put your setup code here, to run once: Serial.begin(115200); pinMode(LED, OUTPUT); } void loop() { // put your main code here, to run repeatedly: digitalWrite(LED, HIGH); Serial.println("LED is on"); delay(1000); digitalWrite(LED, LOW); Serial.println("LED is off"); delay(1000); }
Đoạn code này bật tắt đèn LED (nối với chân 13) trên board mạch mỗi giây.
Ngoài ra, nếu bạn có lỗi cú pháp ở đâu đó trong chương trình của mình, VS Code sẽ gạch dưới màu đỏ ngay cả trước khi biên dịch.
Sau đó, nhấn Ctrl + S hoặc vào File > Save để lưu file.
Bây giờ, bạn có thể nhấp vào biểu tượng Upload lên để biên dịch và upload code. Ngoài ra, bạn có thể đi tới menu PIO Project Tasks và chọn Upload.
Nếu code được upload thành công, bạn sẽ nhận được thông báo sau.
Và led trên board Node Wifi32 sẽ bật tắt mỗi giây.
Bây giờ, nhấp vào biểu tượng Serial Monitor và bạn sẽ thấy nó in trạng thái LED hiện tại.
Lưu ý: nếu bạn không thấy cửa sổ Terminal, hãy chuyển đến menu Terminal> New Terminal.
Detect COM Port
PlatformIO sẽ tự động phát hiện cổng mà board của bạn được kết nối. Để kiểm tra các thiết bị đã kết nối, bạn có thể truy cập PIO HOME và nhấp vào biểu tượng Devices.
Xử lý sự cố
Nếu khi cố gắng tải lên, bạn gặp lỗi sau: “Failed to connect to NodeWifi32: Timed out waiting for packet header” thì điều đó thường có nghĩa là board của bạn không ở chế độ nhấp nháy khi bạn đang tải mã lên.
Khi điều này xảy ra, bạn cần nhấn nút RESET trên board của NodeWifi32 khi bạn bắt đầu thấy nhiều dấu chấm trong cửa sổ gỡ lỗi.
Thay đổi tốc độ truyền – PlatformIO IDE
Tốc độ truyền mặc định được PlatformIO sử dụng là 9600. Tuy nhiên, có thể thiết lập một giá trị khác như đã đề cập trước đây. Trên File Explorer, trong thư mục dự án của bạn, hãy mở file platformio.ini và thêm dòng sau:
monitor_speed = baud_rate
Ví dụ:
monitor_speed = 115200
Sau đó, lưu file đó lại.
Cài đặt thư viện NodeWifi32 / NodeWifi8266 trên PlatformIO IDE
Làm theo quy trình dưới đây nếu bạn cần cài đặt thư viện trong PlatformIO IDE.
- Nhấp vào biểu tượng Home để chuyển đến Trang chủ PlatformIO. Nhấp vào biểu tượng Libraries trên thanh bên trái.
- Tìm kiếm thư viện bạn muốn cài đặt. Ví dụ Adafruit_BME280 .
Nhấp vào thư viện bạn muốn đưa vào dự án của mình. Sau đó, nhấp vào Add to Project.
Chọn dự án bạn muốn sử dụng thư viện.
Thao tác này sẽ thêm code định danh thư viện bằng cách sử dụng lid_depschỉ thị trên file platformio.ini . Nếu bạn mở file platformio.ini của dự án , nó sẽ trông như thể hiện trong hình ảnh sau.
Ngoài ra, trên cửa sổ thư viện, nếu bạn chọn tab Installation và cuộn một chút, bạn sẽ thấy code định danh cho thư viện. Bạn có thể chọn bất kỳ số nhận dạng nào tùy thuộc vào tùy chọn bạn muốn sử dụng. Các mã nhận dạng thư viện được đánh dấu màu đỏ.
Sau đó, truy cập file platformio.ini của dự án của bạn và dán mã định danh thư viện vào file đó, như sau:
lib_deps = adafruit/Adafruit BME280 Library@^2.1.0
Nếu bạn cần nhiều thư viện, bạn có thể tách tên của chúng bằng cách đặt trên các dòng khác nhau. Ví dụ:
lib_deps =
arduino-libraries/Arduino_JSON @ 0.1.0
adafruit/Adafruit BME280 Library @ ^2.1.0
adafruit/Adafruit Unified Sensor @ ^1.1.4
PlatformIO có trình quản lý thư viện mạnh mẽ được tích hợp sẵn, cho phép bạn chỉ định các thư viện phụ thuộc cho mỗi project trong Project Configuration. PlatformIO sẽ tự động tải xuống các thư viện khi bạn lưu file cấu hình hoặc khi biên dịch code của project.
Mở Project Folder
Để mở thư mục dự án hiện có trên PlatformIO, hãy mở VS Code, chuyển đến Trang chủ PlatformIO và nhấp vào Open Project. Điều hướng qua các file và chọn thư mục dự án của bạn.
PlatformIO sẽ mở tất cả các file trong thư mục dự án.
VS CODE COLOR THEMES
VS Code cho phép bạn chọn giữa các chủ đề màu sắc khác nhau. Đi tới biểu tượng Manage và chọn Color Theme. Sau đó, bạn có thể chọn từ một số chủ đề sáng và tối khác nhau.
Danh sách các phím tắt
Để có danh sách đầy đủ các phím tắt VS Code cho Windows, Mac OS X hoặc Linux, hãy kiểm tra liên kết tiếp theo:
Kết luận,
Trong hướng dẫn này, bạn đã học cách cài đặt và chuẩn bị Visual Studio Code để hoạt động với các board NodeWifi32 và NodeWifi8266. VS Code với phần mở rộng PlatformIO IDE là một sự thay thế tuyệt vời cho Arduino IDE cổ điển, đặc biệt khi bạn đang làm việc trên các bản phác thảo nâng cao hơn cho các ứng dụng lớn hơn.
Để xem tất cả các bài hướng dẫn về lập trình Arduino hoặc lập trình ESP32/ ESp8266 trên Arduino, bạn truy cập vào đây nhé: Tổng hợp các bài hướng dẫn về Arduino. Nếu bạn có bất kỳ ý kiến đóng góp hoặc thắc mắc gì, bạn có thể để lại comment phía dưới hoặc liên hệ với OhStem qua Fanpage để được hỗ trợ nhé!