基于乐鑫 ESP32-C3 的 Matter Light 实践
背景介绍
最近公司在研究 Matter 协议在智能家居领域的市场机会,考虑到易用性和文档支撑等方面,相比较 Telink,产品部门对乐鑫的 Matter-SDK 更感兴趣,因而开展了一些测试工作,毕竟实践出真知嘛。
正文
1.1 Matter 介绍
2019 年 12 月,亚马逊、谷歌、苹果、CSA(连接标准联盟,原 Zigbee 联盟)等联合发起了智能家居互联协议 CHIP (Connected Home over IP),即 Matter 的前身。CHIP 致力于打造一个基于开源生态的新智能家居协议,打破平台间的割裂和开发路径的差异。Matter 可实现智能家居和语音服务的兼容,例如亚马逊 Alexa、苹果 HomeKit 的 Siri、Google Assistant 等。
这就意味着,Matter 可以让设备厂商更容易构建与智能家居和语音服务兼容的设备,例如设备厂商为了支持亚马逊 Alexa、苹果 HomeKit 的 Siri、Google Assistant ,原本需要准备三套方案,现在只要支持 Matter,就可以同时支持这三大平台。
目前,许多消费者都拥有着多种智能家居产品,例如智能锁、摄像头、传感器、智能开关、智能照明等等。在过去,由于不同制造商缺乏互操作性,因此从单个APP或终端控制所有智能设备变得非常困难。而新的 Matter 协议将有助于解决这一挑战,Less is more !。
1.2 环境概览
- 操作系统:Windows 10。
- 虚拟机:VMware WORKSTATION PRO 17。
- 镜像版本:Ubuntu-20.04.2.0。
- 开发板:ESP32-S3(例程问题比较多,后面改用了C3)、ESP32-C3。
- 网络:WIFI、以太网,同时为了能够访问 Github,需要一些科学的方法。
注意:官方教程是推荐直接利用主机进行开发的,如果使用虚拟机,哪怕是官方推荐的 WSL,会出现在利用 CHIP-TOOL 工具对设备进行配网调试时会出现查找蓝牙设备失败的情况。当时因为这个问题处理了很久,后面改用了其他方法,详见后文。
1.3 搭建 IDF 环境
Matter 的开发依赖于 ESP-IDF 的开发环境,在开始之前需要保证本地开发环境处于可用状态。
(1)使用下述命令进行安装准备:
sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
(2)获取 ESP-IDF:
首先导航至安装目录,打开终端运行下述命令:
mkdir -p ~/esp
cd ~/esp
git clone -b v5.1.1 --recursive https://github.com/espressif/esp-idf.git
(3)设置工具:
其中,我这里使用的是 esp32c3 的开发板,如果打算开发其他芯片的项目,可以改成其他名称:
cd ~/esp/esp-idf
./install.sh esp32c3
注意:在工具安装的过程中会从 Github 下载大量文件,如果电脑访问 Github 的速度比较慢,可以设置一个环境变量优先使用乐鑫的下载服务器来下载相应的资源,使用下列指令:
cd ~/esp/esp-idf
export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
./install.sh esp32c3
(4)设置环境变量:
安装的工具还没有被添加到 PATH 环境变量中,为了能够使这些工具在命令行中使用,必须设置一些环境变量。在需要使用 ESP-IDF 的终端中运行以下语句。不过为了方便使用,这里可以创建一个脚本来执行 export.sh。
. $HOME/esp/esp-idf/export.sh
(5)测试环境
将 esp32c3 开发板连接到电脑上,正常情况下运行 ls /dev/tty*
能够查找到类似于 ttyUSB0 名称的设备。如果没能看到,可能使因为设备驱动没有安装,同时检查拔插外设时是否已经允许映射到已运行的虚拟机上。下面是乐鑫提供的开发板驱动下载链接:
- CP210x: CP210x USB 至 UART 桥 VCP 驱动程序
在 esp-idf 的 examples 目录中有一系列示例,我们复制 hello_world 用于开发环境的测试。
cd ~/esp
cp -r $IDF_PATH/examples/get-started/hello_world .
导航至 hello_World 目录,把 esp32c3 设置为目标。
cd ~/esp/hello_world
idf.py set-target esp32
运行下列命令生成项目,该命令将编译应用程序和所有的 ESP-IDF 组件,然后生成引导加载程序、分区表等文件。
idf.py build
烧录前将开发板擦除,之后刷入刚才构建的项目:
idf.py -p /dev/ttyUSB0 erase_flash
idf.py -p /dev/ttyUSB0 flash
如果在flash过程结束时没有问题,主板将重新启动并启动"hello_world"应用程序。通过 IDF监视器,可以看到该程序的运行情况:
idf.py -p /dev/ttyUSB0 monitor
使用 Ctrl+]
退出监视器,至此开发环境搭建和测试完成。
1.4 搭建 Matter
(1)进行安装准备:
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
(2) 获取仓库,进行安装:
cd esp-idf
source ./export.sh
cd ..
git clone --depth 1 https://github.com/espressif/esp-matter.git
cd esp-matter
git submodule update --init --depth 1
cd ./connectedhomeip/connectedhomeip
./scripts/checkout_submodules.py --platform esp32 linux --shallow
cd ../..
./install.sh
cd ..
如果是使用虚拟机进行 clone 的话,这一步可能会报错,例如:connection refused 等。需要在虚拟机中手动配置一下 Porxy 以解决网络问题。
(3)配置环境:
每次打开一个新的终端时都应该使用以下命令来配置 Matter 的开发环境:
cd esp-idf; source ./export.sh; cd ..
cd esp-matter; source ./export.sh; cd ..
可以选择开启 Ccache 来提升编译速度:
export IDF_CCACHE_ENABLE=1
和之前配置 ESP-IDF 一样,以上命令也可以添加到一个脚本当中,以便每次在打开新的终端时快速启动。
(4)烧录固件:
本次测试利用 ESP32C3 自带的小灯,构建一个灯的 Matter 应用。
进入 esp-matter/examples/light 示例目录,选择 IDF 目标为本次的开发板型号:
idf.py set-target esp32c3
进入 esp-matter/examples/light 路径下,运行以下命令将例程烧录至设备:
idf.py flash monitor
(5)设备配网:
这里官方教程使用的是基于蓝牙配网的方案,但是因为我是虚拟机的原因,尝试了很多次并没有成功,因而我改用控制台的方式通过命令给设备进行配网:
matter esp wifi connect <ssid> <password>
(6)利用 CHIP-TOOL 连接板子:
打开交互式环境,可以单开一个新的终端,配置一下 Matter 的环境,运行:
cd esp-idf; source ./export.sh; cd ..
cd esp-matter; source ./export.sh; cd ..
export IDF_CCACHE_ENABLE=1
chip-tool interactive start
连接开发板,其中 0x11 类似于设备的ID,20202021 为识别码:
pairing onnetwork 0x11 20202021
(7)利用指令控制 Matter 小灯:
如果上述操作都没有报错的话,下面就可以开心的利用命令控制 Matter 小灯的亮灭了:
onoff on 0x11 0x1
onoff off 0x11 0x1
1.5 参考文章
基于乐鑫 ESP32-C3 的 Matter Light 实践的更多相关文章
- 乐鑫esp8266基于freeRtos实现私有服务器本地远程OTA升级
目录 一.前言: 二.回顾下OTA的流程: 三.lwip网络框架的知识的使用: 四.如何处理服务器返回的数据? 五.扇区的擦除和烧写? 六.如何调用? 七.好好享用吧! 八.下载: 九.工程截图: 代 ...
- 乐鑫esp8266的 基于Nonos移植红外线1883,实现遥控器控制
代码地址如下:http://www.demodashi.com/demo/12613.html 一.前言. 距离上篇的8266进阶博文有那么一段时间了,那么本文带来的是基于Nonos的红外线H1838 ...
- 基于Ubuntu的ESP32平台搭建
提要:针对于Ubuntu下的ESP32搭建,网上有很多博文,乐鑫官网也有指导手册,对于到家都知道的部分我就一带而过,我主要描述搭建过程中遇到的问题和细节. 1.创建一个ESP的目录 I)在家目录下创建 ...
- ESP8266乐鑫版本的(支持云端升级 (Boot 模式)烧写方法,(V1.5.4官方介绍如下)(BOOT模式)
硬件平台: nodeMCU devkit核心板,带ch340g,应该是仿造的,官方是cp2102驱动,安信可科技有连接https://wiki.ai-thinker.com/esp8266/board ...
- modbus转乐鑫物联网平台上传工具
乐鑫平台推荐个人用户使用 界面比较简洁
- 乐鑫esp8266的串口通讯驱动源文件,nonos和rtos版本
目录 一.前言: 二.esp8266的串口分布情况: 三.esp8266的串口通讯时候,应该怎么接线: 四.esp8266的NONOS非系统,串口编程: 五.esp8266的RTOS实时系统,串口编程 ...
- 实现乐鑫esp8266的无线OTA升级,实现远程在线升级固件
代码地址如下:http://www.demodashi.com/demo/12994.html 一.前言: 写了这么多的8266博文,一直以满意100%的心态去敲写代码固件烧录,以致很少出现 bug ...
- 【快报】基于K2 BPM的新一代协同办公门户实践交流会
2014年2月28日,“基于BPM的新一代协同办公门户”用户实践交流活动在深圳金茂JW万豪酒店3楼Meet Room IV举办.本次会议由K2携手微软共同举办,邀请到的参会企业都是K2 的BPM老客户 ...
- 基于Sql Server 2008的分布式数据库的实践(五)
原文 基于Sql Server 2008的分布式数据库的实践(五) 程序设计 ------------------------------------------------------------- ...
- 基于Sql Server 2008的分布式数据库的实践(四)
原文 基于Sql Server 2008的分布式数据库的实践(四) 数据库设计 1.E-R图 2.数据库创建 Win 7 1 create database V3 Win 2003 1 create ...
随机推荐
- tensorflow 读、存取 图像 数据的 TFRecord 方法 (示例)
1. 利用TFRecord 格式 读.存 取 Mnist数据集的方法 存取 Mnist数据集的方法 (TFRecord格式) import tensorflow as t ...
- 【转载】 AI与人类首次空战,5:0大胜!40亿次模拟造美国怪兽,谁与争锋? (再次证明深度强化学习路线的正确性)
原文: https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_1003478953355572 ...
- ubuntu18.04环境下如何为 vs code 实现ftp功能
如前文所述 https://www.cnblogs.com/devilmaycry812839668/p/14797739.html , 在vs code 自身环境下的ftp功能插件难以使用,而在W ...
- 《最新出炉》系列初窥篇-Python+Playwright自动化测试-63 - Canvas和SVG元素定位
1.简介 今天宏哥分享的在实际测试工作中很少遇到,比较生僻,如果突然遇到我们可能会脑大.懵逼,一时之间不知道怎么办?所以宏哥这里提供一种思路供大家学习和参考. 2.SVG简介 svg也是html5新增 ...
- 如何在AWS上构建Apache DolphinScheduler
引言 随着云计算技术的发展,Amazon Web Services (AWS) 作为一个开放的平台,一直在帮助开发者更好的在云上构建和使用开源软件,同时也与开源社区紧密合作,推动开源项目的发展. 本文 ...
- 手把手教Linux驱动5-自旋锁、信号量、互斥体概述
在Linux系统中有大量的临界资源需要保护,如何让各个任务有条不紊的访问这些资源,这涉及到Linux中并发访问的保护机制设计相关知识.后面会详细介绍这几个机制. (据可靠消息,锁的实现经常出现在笔试环 ...
- 使用 preloadComponents 进行组件预加载
title: 使用 preloadComponents 进行组件预加载 date: 2024/8/18 updated: 2024/8/18 author: cmdragon excerpt: 摘要: ...
- PCIe简介
PCIe简介 Peripheral Component Interconnect Express (PCI),高速串行计算机扩展总线标准,PCIe对外围设备的组织方式是树形结构. 拓扑结构 根: 树的 ...
- Kubernetes 初体验
在 DigitalOcean 创建一个 Kubernetes 集群 下载集群 Config 文件到 ~/.kube 目录 通过环境变量 KUBECONFIG 设置本地 kubectl 工具使用下载的配 ...
- 这应该是全网最详细的Vue3.5版本解读
前言 Vue3.5正式版在这两天发布了,网上已经有了不少关于Vue3.5版本的解读文章.但是欧阳发现这些文章对3.5中新增的功能介绍都不是很全,所以导致不少同学有个错觉,觉得Vue3.5版本不过如此, ...