Lập Trình ESP32 Trên Visual Studio Code và PlatformIO IDE

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.

Lập trình ESP32

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…

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.

Download Visual Stduio - Lập trình ESP32
Download Visual Stduio – Lập trình ESP32

Tiến hành cài đặt theo hướng dẫn từng bước.

Nhấn vào next để cài đặt - Lập trình ESP32
Nhấn next - Lập trình ESP32
Nhấn Install - Lập trình ESP32
Nhấn vào Install - Lập trình ESP32
Click vào Finish - Lập trình ESP32

Mở VS Code lên, bạn sẽ thấy màn hình Welcome xuất hiện.

Màn hình Welcome của VS Code

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.

Lập trình ESP32 trên Windows - Lập trình ESP32

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.

Cài đặt Visual Studio Code trên Mac OS X - Lập trình ESP32

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 ”.

Hộp thoại cài đặt VS Code - Lập trình ESP32

Hoặc mở thư mục đã Download và mở Visual Studio Code.

Microsoft Visual Studio Code VS Code Tải xuống tệp ứng dụng cho Mac OS X

Sau khi cài đặt, bạn chạy ứng dụng VS Code và sẽ thấy màn hình “Welcome”.

Màn hình welcome của VS Code

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.

Download VS Code phiên bản cho Ubuntu

Lưu file cài đặt về máy tính:

Download file cài đặt VS Code về máy - Lập trình ESP32

Để 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

VS Code

Mở VS Code và bạn sẽ thấy màn hình “Welcome”

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
Python đã được cài đặt sẵn

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.

  1. Trong VS Code, nhấp vào biểu tượng “Extensions” hoặc nhấn “Ctrl + Shift + X” để mở tab “Extensions
  2. Tìm kiếm “ PlatformIO IDE ”
  3. Chọn tùy chọn đầu tiên
  4. 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)

Tìm vài cài đặt extension PlatformIO để lập trình ESP32

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.

PlatformIO đã được cài đặt thành công

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.

Đã cài đặt thành công tiện ích mở rộng 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:

Tổng quan giao diện VS Code - Lập trình ESP32

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.

Biểu tượng Công cụ Nhanh

Ý 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. 

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ạo project mới trong PlatformIO IDE - Lập trình ESP32

Đặ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.

Điền các thông tin khi tạo project trong PlatformIO

Sau khi project được tạo, bạn sẽ thấy các file của project ở tab Explorer.

Các file được tạo ra cho project mới

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.

File cấu hình platformio.ini

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().

Tệp main.cpp của phần mở rộng PlatformIO IDE trong thư mục src

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.

Tải lên mã ESP32 board PlatformIO VS Code Visual Studio

Nếu code được upload thành công, bạn sẽ nhận được thông báo sau.

Tải mã lên ESP32 PlatformIO VS Mã thành công

Và led trên board Node Wifi32 sẽ bật tắt mỗi giây.

led lập trình Esp32 sẽ bật tắt

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.

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.

Phần mở rộng PlatformIO IDE VS

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

Thay đổi theo dõi nối tiếp Tốc độ truyền

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 .
Tìm kiếm thư viện bạn cần cài

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.

Add to Project

Chọn dự án bạn muốn sử dụng thư viện.

Chọn dự á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.

mở file Platformio.ini

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 đỏ.

Các mã nhận diện

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.

Mở dự án trên PlatformIO

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.

Thay đổi màu Chủ đề Sáng tối

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é!

Tags: Lập trình Esp32, lập trình trên PlatformioIDE, lập trình Visual Studio Code

Những bài liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Fill out this field
Fill out this field
Vui lòng nhập địa chỉ email hợp lệ.
You need to agree with the terms to proceed