# esp-mdf
**Repository Path**: EspressifSystems/esp-mdf
## Basic Information
- **Project Name**: esp-mdf
- **Description**: ESP-MDF 是由乐鑫官方推出的针对 ESP32 和 ESP32-S2 系列芯片的 WiFi Mesh
开发框架。ESP-MDF 国内镜像仓库,Issues 和 PRs 请仍旧提交到 github。
- **Primary Language**: C
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://github.com/espressif/esp-mdf
- **GVP Project**: No
## Statistics
- **Stars**: 17
- **Forks**: 18
- **Created**: 2020-08-18
- **Last Updated**: 2025-06-09
## Categories & Tags
**Categories**: chips
**Tags**: None
## README
# ESP-WIFI-MESH 开发框架 [[English]](./README.md)
## 注意事项
1. 该版本的 MDF 基于 IDF master 分支,不建议用在产品开发上,如果寻求稳定版 MDF,建议使用 release/v1.0 分支。
1. MDF master 分支已支持 ESP32S2。但以下示例暂时无法在 ESP32S2 上使用,后续将会逐步为 ESP32S2 适配
- function_demo/mconfig
- development_kit/buddy
- development_kit/button
- development_kit/light
- development_kit/sense
- wireless_debug
[](https://docs.espressif.com/projects/esp-mdf/zh_CN/latest/?badge=latest)
ESP-MDF (Espressif Mesh Development Framework) 是基于 [ESP32](https://www.espressif.com/zh-hans/products/hardware/esp32/overview) 芯片的 [ESP-WIFI-MESH](https://docs.espressif.com/projects/esp-idf/en/stable/api-guides/mesh.html) 开发框架。ESP-WIFI-MESH 是一种基于 Wi-Fi 构建的 MESH 网络通信协议。
## 概述
ESP-MDF 在 [ESP-WIFI-MESH](https://docs.espressif.com/projects/esp-idf/en/stable/api-guides/mesh.html) 协议栈的基础上增加了配网、升级、调试机制及应用示例。使用 ESP-MDF 您可以快速上手 ESP-WIFI-MESH 开发。其主要特点如下:
* **快速配网**:在 app 配网的基础上增加了设备间链式配网,以实现大范围快速配网;
* **稳定升级**:通过断点续传、数据压缩、版本回退和固件检查等机制达到高效升级;
* **高效调试**:支持指令终端、通过无线进行日志传输和调试等多种调试方式;
* **局域网控制**:支持 app 控制、传感器控制等;
* **丰富的示例**:提供了基于 ESP-WIFI-MESH 的照明等综合解决方案。
## 框架
ESP-MDF 共分为 Utils、Components 和 Examples 三个部分(如下图所示),他们之间的关系:Utils 是 ESP-IDF APIs 的抽象封装以及第三方库,Components 是基于 Utils APIs 组成的 ESP-MDF 功能模块,Examples 是基于 Components 完成的 ESP-WIFI-MESH 解决方案。
- **Utils**:
- Third Party:第三方的组件
- [Driver](https://docs.espressif.com/projects/esp-mdf/zh_CN/latest/api-reference/third_party/index.html):常用的按键、LED 等驱动
- [Miniz](https://docs.espressif.com/projects/esp-mdf/zh_CN/latest/api-reference/third_party/index.html):无损高性能数据压缩库
- [Aliyun](https://github.com/espressif/esp-aliyun):阿里云物联网套件
- Transmission:设备间数据通信方式
- [Mwifi](https://docs.espressif.com/projects/esp-mdf/zh_CN/latest/api-reference/mwifi/index.html):对 ESP-WIFI-MESH 的封装,在其基础上增加了重包过滤、数据压缩、分包传输和 P2P 组播
- [Mespnow](https://docs.espressif.com/projects/esp-mdf/zh_CN/latest/api-reference/mespnow/index.html):对 ESP-NOW 的封装,在其基础上增加了重包过滤、CRC 校验、数据分包
- Mcommon:ESP-MDF 各组件之间的共用模块
- Event loop:ESP-MDF 的事件处理
- Error Check:ESP-MDF 的错误码管理
- Memory Management:ESP-MDF 的内存管理
- Information Storage:将配置信息存储到 flash 中
- **Components**:
- [Mconfig](https://docs.espressif.com/projects/esp-mdf/zh_CN/latest/api-guides/mconfig.html):配网模块
- [Mupgrade](https://docs.espressif.com/projects/esp-mdf/zh_CN/latest/api-guides/mupgrade.html):升级模块
- Mdebug:调试模块
- [Mlink](https://docs.espressif.com/projects/esp-mdf/zh_CN/latest/api-guides/mlink.html):局域网控制模块
- **Examples**:
- [Function demo](examples/function_demo/):各个功能模块的使用示例
- [Mwifi](examples/function_demo/mwifi):常见组网方式的示例:无路由器、有路由器。先基于此示例进行开发,而后在其基础上添加配网、升级、无线测试等功能
- [Mupgrade](examples/function_demo/mupgrade):设备的升级示例
- [Mconfig](examples/function_demo/mconfig):设备的配网示例
- [Mcommon](examples/function_demo/mcommon):通用模块示例,事件处理 内存管理 信息存储的使用示例
- Debug:性能测试和调试工具
- [Console Test](examples/function_demo/mwifi/console_test):通过串口输入命令的方式,测试 ESP-WIFI-MESH 吞吐量、网络配置、发包时延。
- [Wireless Debug](examples/wireless_debug/):通过无线的方式进行 ESP-MDF 调试
- [Development Kit](examples/development_kit/):ESP32-MeshKit 使用示例, 用于调研和了解 ESP-WIFI-MESH
- [ESP32-MeshKit-Light](examples/development_kit/light/):板载 ESP32 芯片的智能灯,用于 ESP-WIFI-MESH 作为主干网络进行长供电的场景。支持 BLE + ESP-WIFI-MESH, 可实现BLE网关, iBeacon 和 BLE 扫描
- [ESP32-MeshKit-Sense](examples/development_kit/sense/):ESP-WIFI-MESH 在 Deep-sleep + Light-sleep 模式下的低功耗方案,可用于:监测 MeshKit 外设功耗和根据传感器数据控制 MeshKit 外设
- [ESP32-MeshKit-Button](examples/development_kit/button/):ESP-WIFI-MESH 在超低功耗的场景下使用,平常处于断电状态,仅在唤醒时工作,并通过 [ESP-NOW](https://docs.espressif.com/projects/esp-idf/zh_CN/stable/api-reference/network/esp_now.html) 给 ESP-WIFI-MESH 设备发包。
- 云平台: ESP-MDF 对接云平台
- [Aliyun Linkkit](examples/maliyun_linkkit/):ESP-MDF 接入阿里飞燕平台示例
- AWS:ESP-MDF 接入 AWS 平台示例
## 使用 ESP-MDF 进行开发
您首先需要详细阅读 [ESP-WIFI-MESH 通信协议](https://docs.espressif.com/projects/esp-idf/en/stable/api-guides/mesh.html)和[ESP-MDF 编程指南](https://docs.espressif.com/projects/esp-mdf/zh_CN/latest/index.html),并通过 ESP32-MeshKit 开发套件调研和了解 ESP-WIFI-MESH。其次基于 [Function demo](examples/function_demo/)进行您的项目开发,当您可以在开发中遇到问题,首先可在[官方论坛](https://esp32.com/viewforum.php?f=21&sid=27bd50a0e45d47b228726ee55437f57e)和[官方 GitHub ](https://github.com/espressif/esp-mdf/issues)上寻找是否已存在类似问题,若不存在类似问题,您也可直接在网站中提问。
### 开发板指南
#### ESP32-MeshKit 开发套件
ESP32-MeshKit 包含一整套完整的 [ESP-WIFI-MESH 的照明解决方案](https://www.espressif.com/zh-hans/products/software/esp-mesh/overview)(如下图所示),可配套 ESP-Mesh App([iOS 版](https://itunes.apple.com/cn/app/esp-mesh/id1420425921?mt=8)和[安卓版](https://github.com/EspressifApp/Esp32MeshForAndroid/raw/master/release/mesh.apk))使用,既可以调研和了解 ESP-WIFI-MESH,也可以进行二次开发。
![]() ESP32-MeshKit Light |
![]() ESP32-MeshKit Sense |