Xây dựng thiết bị Matter

1. Giới thiệu

Matter là một giao thức kết nối mang lại những cơ hội thú vị để phát triển các thiết bị thông minh. Trong lớp học lập trình này, bạn sẽ tạo thiết bị theo chuẩn Matter đầu tiên. Để tìm hiểu về Matter, hãy truy cập vào Trung tâm dành cho nhà phát triển Google Home: Matter hoặc trang web của Liên minh Tiêu chuẩn Kết nối.

Kiến thức bạn sẽ học được

  • Cách tích hợp thiết bị thực với Matter.
  • Cách đặt hoa hồng và điều khiển thiết bị Matter bằng Google Home.

Những thứ bạn cần

2. Thiết lập môi trường

Xác định thiết bị nối tiếp

Bước đầu tiên trong việc thiết lập môi trường phát triển là xác định cổng nối tiếp mà thiết bị của bạn đang kết nối với. Thông tin này sẽ cho phép bạn lập trình và tương tác với bảng điều khiển dành cho nhà phát triển của mình.

  1. Kết nối bảng điều khiển dành cho nhà phát triển với máy tính bằng cáp USB.
  2. Tìm thiết bị bảng dành cho nhà phát triển trong hệ thống tệp /dev. Bạn có thể thu hẹp phạm vi tìm kiếm bằng cách chỉ định tiền tố thiết bị của bảng nhà phát triển. ESP32 của Espressif sử dụng /dev/ttyUSBx:
    user@host $ ls /dev/ttyUSB*
    /dev/ttyUSB0
    

Thiết lập thiết bị trung tâm

Thiết lập trung tâm của bạn bằng chính Tài khoản Google mà bạn định dùng cho lớp học lập trình này.

Thiết lập môi trường phát triển

Điều kiện tiên quyết

Các hướng dẫn này đã được kiểm thử trên Debian Linux và sẽ hoạt động trên hầu hết các bản phân phối Linux dựa trên Debian, bao gồm cả Ubuntu. Nếu bạn đang làm việc với một bản phân phối Linux khác, thì quy trình thiết lập phần phụ thuộc có thể khác với quy trình sau đây.

Cài đặt phần phụ thuộc

Chạy lệnh sau để cài đặt các tệp nhị phân gói Linux bắt buộc có thể chưa được cài đặt:

$ sudo apt-get install git gcc g++ pkg-config libssl-dev libdbus-1-dev \
libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev \
python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev screen

Thiết lập SDK

Để tiếp tục lớp học lập trình này, bạn cần có SDK Espressif (Khung phát triển Espressif IoT hoặc "ESP-IDF").

  1. Tạo một thư mục để chứa ESP-IDF:
    $ mkdir ~/esp-idf_tools
    
  2. Sao chép ESP-IDF trên GitHub vào thư mục này:
    $ cd ~/esp-idf_tools
    $ git clone -b v4.4.3 --recursive https://github.com/espressif/esp-idf.git
    
  3. Hoàn tất việc cài đặt chuỗi công cụ:
    $ cd ./esp-idf
    $ ./install.sh
    $ cd ~/
    

Thiết lập SDK theo chuẩn Matter

  1. Sao chép kho lưu trữ nguồn mở theo chuẩn Matter:
    $ git clone https://github.com/project-chip/connectedhomeip.git
    $ cd ./connectedhomeip
    $ git fetch origin v1.0-branch
    $ git checkout FETCH_HEAD
    
  2. Tìm nạp các mô-đun con về kho lưu trữ:
    $ ./scripts/checkout_submodules.py --shallow --platform esp32
    
  3. Tự thân khởi động môi trường phát triển Matter:
    $ source ./scripts/bootstrap.sh
    

3. Bảng điều khiển dành cho nhà phát triển Google Home

Google Home Developer Console là ứng dụng web nơi bạn quản lý các công cụ tích hợp Matter của mình với Google Home.

Mọi thiết bị Matter đã vượt qua chứng nhận Matter của Liên minh Tiêu chuẩn Kết nối (Alliance) đều hoạt động trong hệ sinh thái Google Home. Bạn có thể đưa các thiết bị đang trong quá trình phát triển chưa được chứng nhận vào hệ sinh thái Google Home trong một số điều kiện nhất định. Hãy xem Các hạn chế về việc ghép nối để biết thêm thông tin.

Tạo dự án dành cho nhà phát triển

Bắt đầu bằng cách truy cập vào Google Home Developer Console:

  1. Nhấp vào Tạo dự án.
  2. Nhập một tên dự án riêng biệt, rồi nhấp vào Create project (Tạo dự án). Hộp thoại Tạo dự án mới
  3. Nhấp vào + Thêm công cụ tích hợp. Thao tác này sẽ đưa bạn đến màn hình Tài nguyên quan trọng. Tại đây, bạn có thể xem tài liệu về phát triển Matter và đọc về một số công cụ.
  4. Khi bạn sẵn sàng tiếp tục, hãy nhấp vào Tiếp theo: Phát triển, để hiển thị trang Danh sách kiểm tra cơ bản.
  5. Nhấp vào Tiếp theo: Thiết lập
  6. Trên trang Thiết lập, hãy nhập Tên sản phẩm.
  7. Nhấp vào Chọn loại thiết bị và chọn loại thiết bị từ trình đơn thả xuống (trong trường hợp này là Light).
  8. Trong phần Mã nhà cung cấp (VID), hãy chọn Kiểm tra VID rồi chọn 0xFFF1 trên trình đơn thả xuống của mục Kiểm thử VID. Trong Mã sản phẩm (PID), hãy nhập 0x8000 rồi nhấp vào Lưu và tiếp tục, sau đó nhấp vào Lưu ở trang tiếp theo. Hãy dùng các giá trị VID/PID chính xác này. Các bước sau này trong lớp học lập trình sẽ phụ thuộc vào các giá trị đó.
    Thiết lập dự án
  9. Bây giờ, bạn sẽ thấy mối liên kết tích hợp của mình trong phần Tích hợp cơ bản.
  10. Khởi động lại trung tâm của bạn để đảm bảo thiết bị này nhận được cấu hình dự án tích hợp Matter mới nhất. Nếu sau này phải thay đổi VID hoặc PID, bạn cũng cần khởi động lại sau khi lưu dự án để sự thay đổi có hiệu lực. Hãy xem bài viết Khởi động lại thiết bị Google Nest hoặc Google Wifi để biết hướng dẫn khởi động lại từng bước.

4. Xây dựng thiết bị

Tất cả ví dụ trong vấn đề Matter đều được đặt trong thư mục ví dụ trong kho lưu trữ GitHub. Hiện có một số mẫu, nhưng trọng tâm của lớp học lập trình này là lighting-app (ứng dụng chiếu sáng).

Ví dụ này là một thiết bị đơn giản xuất hiện trong Google Home dưới dạng đèn Bật/Tắt, phản hồi các lệnh Bật và Tắt. Việc điều khiển đèn điện thực tế sẽ không thuộc phạm vi của lớp học lập trình này.

Định cấu hình bản dựng

  1. Định cấu hình SDK Matter và kích hoạt môi trường tạo bản dựng Matter:
    $ cd ~/esp-idf_tools/esp-idf
    $ source export.sh
    $ cd ~/connectedhomeip
    $ source ./scripts/activate.sh
    
  2. Bật Ccache, giúp tăng tốc quá trình xây dựng:
    $ export IDF_CCACHE_ENABLE=1
    
  3. Chuyển đến thư mục bản dựng lighting-app ESP32 và thiết lập cấu trúc mục tiêu:
    $ cd ./examples/lighting-app/esp32
    $ idf.py set-target esp32
    
    1. Chạy tiện ích cấu hình:
      $ idf.py menuconfig
      
    2. Chọn Demo -> Device Type và đặt Device Type thành ESP32-DevKitC.
    3. Nhấn phím mũi tên trái để quay lại trình đơn cấp cao nhất.
    4. Chọn Component config --->.
    5. Chọn CHIP Device Layer --->.
    6. Chọn Device Identification Options --->.
    7. Đặt Vendor ID thành VID do Liên minh chỉ định hoặc VID thử nghiệm của bạn.
    8. Đặt Product ID thành PID mà bạn đặt cho tích hợp Matter trong Google Home Developer Console.
    9. Nhấn S để Lưu.
    10. Nhấn Return để chấp nhận đường dẫn mặc định nơi cấu hình sẽ được lưu.
    11. Nhấn Return để đóng hộp thoại xác nhận lưu.
    12. Nhấn Q để thoát khỏi tiện ích cấu hình.

Chạy bản dựng

Gọi tập lệnh bản dựng:

idf.py build

Quá trình tạo phải hoàn tất mà không có lỗi nào.

Lập chương trình cho thiết bị

  1. Kết nối bảng dành cho nhà phát triển với máy tính bằng cáp USB.
  2. Xoá mọi chương trình cơ sở trước đó trên thiết bị (nếu chỉ có một bảng dành cho nhà phát triển kết nối với máy tính, bạn có thể bỏ qua tuỳ chọn -p {device} – thiết bị sẽ được tự động phát hiện):
    idf.py -p {device} erase-flash
    
  3. Sao chép ứng dụng mới vào Bảng điều khiển dành cho nhà phát triển bằng:
    idf.py -p {device} flash
    

Bạn có thể xem thêm thông tin về các tuỳ chọn cài đặt ROM tại trang tài liệu về Espressif esptool.py.

5. Kết nối với thiết bị

  1. Mở cửa sổ đầu cuối.
  2. Hãy ghi lại thư mục bạn đang dùng, sau đó kết nối với thiết bị mới theo chuẩn Matter bằng GNU screen:
    $ screen -L {device} 115200
    
  3. Nếu bạn thấy một bảng điều khiển trống, hãy nhấn nút ĐẶT LẠI để bắt đầu quá trình khởi động thiết bị.

6. Phí hoa hồng thiết bị

Lưu ý: Bước này sẽ chỉ thành công nếu bạn đã thiết lập dự án của mình trong Google Home Developer Console.

Nest Hub

Bạn cần có một thiết bị trung tâm để lắp đặt thiết bị của mình trên nền tảng Matter. Đây là thiết bị Google Nest, chẳng hạn như Nest Hub (thế hệ 2), hỗ trợ Matter và sẽ vừa là Bộ định tuyến biên cho các thiết bị hỗ trợ Thread, vừa làm đường dẫn thực hiện cục bộ để định tuyến các ý định trong Nhà thông minh.

Hãy tham khảo danh sách này để xem những trung tâm nào hỗ trợ Matter.

Trước khi bắt đầu quy trình chạy thử, hãy kiểm tra để đảm bảo rằng:

  • Thiết bị trung tâm của bạn được ghép nối với chính Tài khoản Google mà bạn đã dùng để đăng nhập trên Google Home Console.
  • Thiết bị trung tâm của bạn kết nối với cùng một mạng Wi-Fi với máy tính mà bạn đang dùng để chạy Thiết bị Matter ảo.
  • Trung tâm của bạn có cùng cấu trúc mà bạn đang sử dụng trên Ứng dụng Google Home. ("Nhà" trong Google Home Graph thể hiện cấu trúc của bạn).

Ghép nối thiết bị

Làm theo hướng dẫn ghép nối ESP32 để ghép nối thiết bị của bạn.

Lưu ý: Nếu bạn đang sử dụng M5STACK, hãy lưu ý rằng màn hình của M5STACK sẽ vẫn trống sau khi được cài đặt ROM, vì vậy, bạn sẽ phải xem mã QR bằng URL xuất hiện trong bảng điều khiển. Hoặc, bạn có thể nhập mã ghép nối thủ công.

Ví dụ về kết quả đầu ra của bảng điều khiển hiển thị URL của mã QR:

I (1926) chip[DL]: Done driving station state, nothing else to do...
I (1936) chip[SVR]: SetupQRCode: [MT:X.XXXXXXXXXXXXXXXXX]
I (1936) chip[SVR]: Copy/paste the below URL in a browser to see the QR Code:
I (1946) chip[SVR]: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3XX.KXXXXXXXXXXXXXXXX
I (1956) chip[SVR]: Manual pairing code: [XXXXXXXXXXX]]

Khắc phục sự cố

Không thể uỷ quyền

Để biết thêm các mẹo khắc phục sự cố, hãy xem trang Khắc phục sự cố quan trọng.

7. Điều khiển thiết bị

Sau khi thiết bị theo chuẩn Matter xuất hiện trong ứng dụng Google Home dưới dạng bóng đèn, bạn có thể thử điều khiển thiết bị bằng Trợ lý Google, ứng dụng Google Home hoặc Trình mô phỏng Trợ lý Google trong Tiện ích Google Home dành cho Mã VS.

Trợ lý Google

Dùng Trợ lý Google trên điện thoại hoặc trung tâm để bật/tắt trạng thái thiết bị bằng lệnh thoại, chẳng hạn như nói "Ok Google, bật/tắt đèn của tôi".

Hãy xem phần Điều khiển các thiết bị nhà thông minh bằng lệnh thoại trong bài viết Điều khiển các thiết bị nhà thông minh được thêm vào ứng dụng Google Home để biết thêm ví dụ về các lệnh.

Ứng dụng Google Home

Bạn có thể nhấn vào nhãn BậtTắt bên cạnh biểu tượng bóng đèn xuất hiện trên ứng dụng Google Home.

Hãy xem phần Điều khiển thiết bị bằng ứng dụng Google Home để biết thêm thông tin.

Trình mô phỏng Trợ lý Google

Trong Tiện ích Google Home dành cho Mã VS, bằng cách sử dụng Trình mô phỏng Trợ lý Google, bạn có thể tạo lời nói cho thiết bị của mình bằng một giao diện giống như trò chuyện.

8. Xin chúc mừng!

Bạn đã tạo và thiết lập thành công thiết bị Matter đầu tiên của mình. Tuyệt vời!

Trong lớp học lập trình này, bạn đã tìm hiểu cách:

  • Cài đặt môi trường phát triển Matter từ các yêu cầu đến trạng thái hoạt động.
  • Tạo và chạy thiết bị theo chuẩn Matter.
  • Phí hoa hồng và kiểm soát thiết bị của bạn từ Google Home.

Để tìm hiểu thêm về Matter, hãy khám phá các tài liệu tham khảo sau: