Skip to content

Compiling with PlatformIO

Lê Chí Tuyền edited this page Nov 29, 2023 · 1 revision

Intro

Trang web này hướng dẫn bạn biên dịch Firmware cho mạch AirSENSE Mobile.

Một vài yêu cầu nhỏ

  • Bắt buộc

    • Some experience in C++ programming
    • AirSENSE Mobile PCB và mạch nạp USB to TTL
    • Pin lithium 3.7V
      image
  • Optional

    • Một đầu đọc thẻ microSD
    • ...

PlatformIO

Hệ thống biên dịch cho vi điều khiển PlatformIO, kết hợp với hệ thống chỉnh sửa Visual Studio Code (VSCode). PlatformIO xử lý các chi tiết của việc thiết lập trình biên dịch cho vi điều khiển, các framework phát triển, thư viện và cấu hình bo mạch, tải mã vào vi điều khiển và kiểm thử. VSCode có các công cụ mở rộng để chỉnh sửa và quản lý mã nguồn, với tích hợp click chuột vào PlatformIO và các hệ thống quản lý mã nguồn như git và GitHub. Sự kết hợp giữa PlatformIO và VSCode cung cấp một lựa chọn thay thế cho Arduino IDE nhanh hơn nhiều (sau khi cài đặt ban đầu) và có khả năng mạnh mẽ hơn.

Installation of VSCode & PlatformIO

1. Git

Dự án Grbl_ESP32 sử dụng hệ thống kiểm soát phiên bản Git để theo dõi các thay đổi trong mã nguồn, kết hợp với dịch vụ web GitHub để lưu trữ mã nguồn trên đám mây. Việc sử dụng git không hoàn toàn bắt buộc - bạn có thể chỉ cần tải một tệp .zip với một phiên bản cụ thể của mã nguồn - nhưng git mang lại nhiều lợi ích. Bạn có thể dễ dàng theo dõi các phiên bản khác nhau của mã nguồn, chuyển đổi giữa mã nguồn đã phát hành và mã nguồn thử nghiệm, gửi các thay đổi đề xuất lại cho các nhà phát triển chính, v.v.

Nếu máy tính của bạn đã có git, VSCode sẽ sử dụng cài đặt hiện có. Nếu không, trước hết cài đặt git. Thêm thông tin về Git có thể được tìm thấy tại tài liệu Git.

2. VSCode

Cài đặt Visual Studio Code bằng cách làm theo tài liệu hướng dẫn. Một cài đặt mới của VSCode, ở đây trên hệ điều hành Windows, sẽ trông như thế này.

3. PlatformIO extension

Mở tab tiện ích của VSCode bằng cách nhấp vào biểu tượng "gear" ở góc dưới bên trái và chọn Extensions. Trong ô "Search Extension in Marketplace" ở phía trên, nhập "platformio", chọn tiện ích "PlatformIO IDE", sau đó cài đặt nó bằng nút "Install" màu xanh.

4. GitLens extension (optional)

Tiện ích mở rộng GitLens cung cấp khả năng so sánh mã nguồn và toàn bộ chức năng của Git cho VSCode. Điều này đặc biệt hữu ích đối với những nhà phát triển cần xem chi tiết về cách mã nguồn đã thay đổi theo thời gian. Tìm kiếm "GitLens" trong quản lý Tiện ích, như mô tả ở trên, và cài đặt nó. Xem hình ảnh dưới đây.

5. C/C++ extension

Hầu hết mã nguồn của Firmware được viết bằng ngôn ngữ C/C++. Có nhiều tiện ích mở rộng khác nhau để hỗ trợ phát triển C/C++ - làm nổi bật từ khóa, kiểm tra lỗi ngay lập tức, hiển thị đối số của hàm, v.v. Tiện ích mở rộng C/C++ từ Microsoft hoạt động tốt. Xem hình ảnh dưới đây.

6. Final overview of installed extensions

Tại điểm này, quá trình cài đặt đã hoàn thành. Bước tiếp theo là thiết lập dự án.

Importing AirSENSE-Mobile-VGU vào VSCode/PlatformIO

AirSENSE-Mobile-VGU source code bao gồm một file "platformio.ini" làm cách nào để tìm kiếm dự án.

Nếu bạn đã có mã nguồn AirSENSE-Mobile-VGU trên máy tính của mình, chỉ cần vào File>Open Folder từ thanh menu trên cùng và chọn thư mục chứa AirSENSE-Mobile-VGU . Sự hiện diện của "platformio.ini" trong thư mục đó sẽ kích hoạt tiện ích PlatformIO.

Nếu bạn chưa có mã nguồn, bạn có thể lấy nó trực tiếp từ trong VSCode. Trong thanh bên của VSCode, nhấp vào biểu tượng "alien" cho PlatformIO để mở "PLATFORMIO: QUICK ACCESS," sau đó chọn Clone Git Project.

Ở phía trên, bạn sẽ thấy một ô nói "Provide repository URL or pick a repository source". Dán đường dẫn https://github.com/Air-SENSE/AirSENSE-Mobile-VGU vào ô đó và nhấp vào dòng Clone from URL... xuất hiện phía dưới.

image

Điều này sẽ mở hộp thoại chọn tệp nơi bạn có thể chọn thư mục sẽ chứa thư mục con mới "Grbl_Esp32". Sau đó, bạn sẽ thấy

image

sau đó

Nhấp vào Open và VSCode sẽ kết nối với mã nguồn Grbl_Esp32.

Cách biên dịch và nạp code AirSENSE-Mobile-VGU

Tiện ích PlatformIO của VSCode thêm một số biểu tượng vào thanh trạng thái ở phía dưới cửa sổ

Bạn có thể di chuột qua biểu tượng để xác nhận chức năng của nó.

Biểu tượng "check mark" biên dịch ("builds") firmware từ mã nguồn nhưng không tải nó lên module ESP32. Quá trình biên dịch, cùng với bất kỳ lỗi nào, sẽ được hiển thị trong bảng "TERMINAL" của VSCode.

Biểu tượng "right arrow" biên dịch và sau đó, nếu thành công, tải lên module ESP32. Đây là biểu tượng mà bạn sẽ sử dụng thường xuyên nhất.

Biểu tượng "trash can" thực hiện bước "clean". Trong hầu hết các trường hợp, PlatformIO có thể phát hiện khi một tệp nguồn đã thay đổi và chỉ biên dịch lại các tệp đã thay đổi đó, từ đó tăng tốc quá trình cho các biên dịch sau khi bạn thực hiện các thay đổi nhỏ. Tuy nhiên, trong một số tình huống - đặc biệt là khi bạn thay đổi trong thư mục Custom/ - quá trình phát hiện thay đổi không hoạt động, vì vậy bạn phải buộc PlatformIO phải biên dịch lại tất cả mọi thứ. Đó là lúc "clean" ra đời - nó hủy bỏ tất cả các kết quả biên dịch trước đó để quá trình biên dịch bắt đầu từ một bảng trắng và biên dịch lại tất cả.

Biểu tượng "power plug" mở một bộ giám sát nối tiếp kết nối với cổng nối tiếp ESP32, để bạn có thể tương tác với USB to TTL qua một cổng COM.

Quy trình bình thường là "Upload" (điều này sẽ thực hiện bước biên dịch tự động), sau đó "Serial Monitor".

Nạp Firmware qua USB

Có 4 dây trên mạch để nạp Code

Bây giờ kết nối 3 dây trên mạch AirSENSE mobile với dây của USB to TTL theo phương pháp sau:

AirSENSE Mobile | USB to TTL
TX -> RX
RX -> TX
GND -> GND

Tốt nhất là dùng một dây BUS 3 và đảo 2 chân rồi dùng dây BUS kết nối USB to TTL với mạch AirSENSE như hình sau:
image

Quy trình nạp trên mạch

  • Biên dịch chương trình trên VScode
  • Cắm pin vào mạch, gạt công tắc nguồn xuống
  • Ấn nút Reset bên phải và nút EN bên trái đồng thời
  • Thả nút Reset ra, nếu VScode chưa vào tiến trình Upload, tiếp tục ấn nút Reset nhưng tay vẫn giữ nút EN.
  • Kết thúc nạp khi trình VScode báo đã hoàn thành flash
  • Ấn Reset lần nữa để chạy code vửa nạp

Chú ý

  • Mỗi lần nạp code phải gạt công tắc nguồn lên để tắt mạch đi và chờ khoảng 1-3s để khởi động lại mạch rồi mới ấn các nút Reset và EN để vào trạng thái flash
  • PlatformIO sẽ nhận diện cổng kết nối của USB to TTL tự động. nhưng đôi lúc sẽ chọn sai, hãy chọn lại.
  • Nạp code xong vào debug Serial không thấy in ra gì, ấn lại nút Reset