详细介绍:技术实践:在基于 RISC-V 的 ESP32 上运行 MQTT over QUIC

news/2025/11/25 14:36:23/文章来源:https://www.cnblogs.com/ljbguanli/p/19268388

详细介绍:技术实践:在基于 RISC-V 的 ESP32 上运行 MQTT over QUIC

大家很高兴与您分享,我们的项目已在 ESP32C3 微控制器上成功达成了完整的 MQTT over QUIC 解决方案。通过将 coreMQTT 库与 QUIC 协议栈(wolfSSL+ngtcp2)集成,我们让这个资源受限的设备也能够执行完整的基于 QUIC 传输的 MQTT 操作,包括连接、发布和订阅。这项突破是物联网通信领域的重要一步,它证明了即便是小型、低功耗的设备也能利用现代、安全且高效的协议。

欢迎您与我们一同探索这一突破性进展,并访问我们的 GitHub 仓库参与制作:

GitHub - emqx/ESP32-QUIC: PoC for ESP32 running QUIC client

项目背景

什么是 QUIC?

QUIC(Quick UDP Internet Connections)是一种基于 UDP 的新一代传输层协议,旨在通过降低延迟和提高安全性来增强网络性能。相较于传统协议,QUIC 具备三大核心优势:更快的连接建立速度、支持多路复用且无队头阻塞(HOL blocking),以及原生集成的 TLS 1.3 加密。

这些特性使 QUIC 特别适用于物联网应用场景,以应对设备常面临的高延迟与不稳定的网络环境1

了解更多关于 EMQ 在 QUIC 上的成就:

什么是 MQTT?

MQTT(消息队列遥测传输)是一种轻量级的发布-订阅消息协议,专为资源受限设备和低带宽、高延迟网络而设计。这一特性使其在物联网通信中广泛应用,助力智能家居、工业自动化等行业达成高效通信2

ESP32C3?就是什么

ESP32C3 由乐鑫信息科技开发的一款低成本、低功耗的物联网微控制器。它采用单核 32 位 RISC-V 处理器,主频高达 160 MHz,拥有 384 KB 闪存、400 KB SRAM(实际可用 320 KB),并集成了 Wi-Fi 和蓝牙 5 (LE)。ESP32C3 开源的 RISC-V 架构提供了极高的灵活性,使其成为物联网项目的热门选择3

什么是 EMQX?

**EMQX是全球首个专为实时智能设计的 MQTT 与人工智能融合平台。**它兼容MQTT 5.0、3.1.1 和 3.1 以及 MQTT over QUIC 等多种消息传输协议,单节点支持超百万 MQTT 连接,集群协助上亿 MQTT 连接。依靠大规模并发消息传输能力,EMQX 已成为智慧城市、工业物联网、汽车制造等行业的理想之选4

什么是 coreMQTT?

coreMQTT 是 AWS IoT 设备 SDK 的一部分,是一个专为资源受限设备设计的轻量级MQTT 客户端库。它支撑高效的发布-订阅通信,非常适合在本计划中通过 QUIC 集成 MQTT 效果5

项目实践:在 ESP32 上运行 MQTT over QUIC

概述

在本项目中,大家在 ESP32C3 上实现了完整的 MQTT over QUIC 解决方案。该设备连接到 WiFi 网络,与 EMQX 服务器建立 QUIC 连接,并运用 coreMQTT 库执行完整的 MQTT 管理——连接、发布消息和订阅主题。这证明了在受限设备上运行高级网络协议的可行性及其在高效物联网通信方面的潜力。

实施细节

该工程利用了三个开源库:

这些库已集成到 ESP-IDF 框架中,其中 ngtcp2 被封装为组件并进行补丁以兼容 ESP32C3。。

该项目包含用于核心功能的 quic_demo_main.c 文件和用于兼容 ESP 事件循环的 esp_ev_compat.c 文件。二进制文件大小约为 1.6 MB(0x16d060 字节),可装入 1.68 MB(0x1a9000 字节)的自定义应用程序分区,剩余约 14% 的可用空间。

为了简化 PoC,大家应用了一些非标准调整,例如禁用 TLS 证书验证,但这些调整并不适用于生产环境。

资源使用情况

由于 ESP32C3 的内存和处理能力有限,我们重点关注了其资源使用情况:

  • 闪存:二进制文件大小约为 1.6 MB,可放入自定义分区中。ESP32C3 内置 384 KB 闪存,但 ESP-IDF 支持外部闪存,允许更大的二进制文件。
  • SRAM 使用情况:ESP32C3 拥有 400 KB SRAM(实际可用 320 KB)。根据日志显示,堆内存利用情况如下:
    • 开始任务前:189,452 字节可用
    • QUIC 任务启动时:可用 160,436 字节
    • QUIC 初始化后:可用 64,792 字节
    • MQTT 连接后:可用 39,564 字节
  • 堆栈内存:根据相关研究,估计约为 1-3 KB,表明运行期间使用量极低8
  • 能源消耗:尚未测量,但计划未来进行分析。

这些数据表明,该应用程序在 ESP32C3 的限制范围内高效运行,证明 QUIC 适用于物联网应用。

资源类型规格PoC 使用情况备注
闪存384 KB(嵌入式、可扩展)约 1.6 MB(二进制大小)适合定制分区(1.68 MB)
SRAM400 KB(可用 320 KB)MQTT 连接时堆内存剩余 39,564 字节高效的内存管理
堆栈内存未指定约 1-3 KB(估算)运行期间使用量极低
能耗未指定未测量未来需要进行分析

在 ESP32 开发板上开始采用 MQTT over QUIC

若想亲自尝试此计划,请按照以下步骤在您的 ESP32C3 开发板上设置和运行 MQTT over QUIC:

  1. 验证要求:确保您拥有一块至少有 2MB 闪存的 ESP32C3 开发板、一根 USB 线、已安装的 ESP-IDF 以及用于克隆存储库的 Git。
  2. 设置环境:按照 ESP-IDF 入门指南安装 ESP-IDF 并设置环境变量(例如:export IDF_PATH=/path/to/esp-idf)。
  3. 克隆存储库:运行 git clone https://github.com/emqx/ESP32-QUIC,如果存在子模块,则运行 git submodule update --init --recursive
  4. 应用补丁:导航至 components/ngtcp2 目录并应用补丁,例如: git apply ../../patches/ngtcp2.patch
  5. 配置项目:编辑 sdkconfig 文件,设置 WiFi SSID、密码和 EMQX 服务器地址。使用 idf.py menuconfig 进行其他设置。
  6. 构建项目:在项目目录中运行 idf.py build 来编译代码。
  7. 刷写固件:通过 USB 连接 ESP32C3,识别串口(例如: /dev/ttyUSB0),并使用 idf.py -p PORT flash 刷写固件。
  8. 监控应用程序:使用 idf.py -p PORT monitor 查看日志,检查 WiFi、QUIC 和 MQTT 操作是否成功。
  9. 故障排除:验证 WiFi 凭证,确保 EMQX 服务器可访问,并在连接失败时检查日志是否存在内存问题。

有关详细说明,请访问:

GitHub - emqx/ESP32-QUIC: PoC for ESP32 running QUIC client

意义和潜在用例

通过物联网通信的一个里程碑,表明 QUIC 和完整的 MQTT 操作能够在 ESP32C3 上运行。它为实时传感器网络或智能家居等物联网应用实现了更快、更安全、更可靠的通信。RISC-V 架构凸显了开源硬件的潜力,鼓励物联网开发领域的创新。就是该项目

未来工作

大家的下一步措施包括:

相关资源


  1. QUIC 协议 - 百度百科迅速 UDP 网络连接↩︎

  2. MQTT:物联网消息传递标准MQTT - The Standard for IoT Messaging↩︎

  3. ESP32-C3 - Espressif SystemsESP32-C3 Wi-Fi & BLE 5 SoC | 乐鑫科技↩︎

  4. EMQX - MQTT 与 AI 一体化平台EMQX Platform: MQTT 与 AI 一体化平台,加速智能物联网创新↩︎

  5. coreMQTT GitHub 仓库GitHub - FreeRTOS/coreMQTT: Client implementation of the MQTT 3.1.1 specification for embedded devices↩︎

  6. ngtcp2 GitHub 仓库GitHub - ngtcp2/ngtcp2: ngtcp2 project is an effort to implement IETF QUIC protocol↩︎

  7. wolfSSL 官网wolfSSL Embedded SSL/TLS Library - wolfSSL↩︎

  8. 资源受限的物联网环境中 MQTT over QUIC 的纯 HTTP/3 替代方案 https://arxiv.org/pdf/2106.12684↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/976069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python-IPO模型

1、开始/结束为如下形状图形2、输入/输出为如下形状图形3、中间涉及到的处理过程使用如下图形典型的IPO流程

搭建vue前端项目

一、创建项目文件夹 demo mkdir demo二、创建package.json 模式1:交互模式(默认) npm init# 1 package name 项目名称(必须小写,不能有空格,可用连字符 -) 默认当前文件夹名称 # 2 version: (1.0.0) …

2025厦门十大正规留学机构有哪些

2025厦门十大正规留学机构有哪些一、厦门留学机构如何选?这些疑问你有吗?作为一位拥有15年经验的国际教育规划师,我经常被厦门的学生和家长问及如何选择留学中介。在2025年10月23日的今天,留学市场日益复杂,许多人…

完整教程:C++ 模板进阶

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025广州有哪些办理出国留学机构

2025广州有哪些办理出国留学机构一、 广州留学中介怎么选?这些疑问你有吗?作为从事国际教育规划师工作已有十年的专业人士,我经常被广州的学生和家长问及如何选择留学中介。在2025年的今天,留学市场愈发多元,但选…

windows下 自动检测网络状态,并重连至指定wifi的脚本

1、新建bat文件 @echo off chcp 65001 >nul 2>&1 setlocal enabledelayedexpansionREM ===== 配置参数 ===== shell:startup REM wifi_name 要连接的无线网名称 set wifi_name=wifiname REM test_interval …

2025港澳留学中介排名

2025港澳留学中介排名作为从事国际教育规划工作逾十二年的专业人士,我时常遇到家长和学生们提出各类关于港澳留学中介选择的疑问。2025年,随着全球留学市场的复苏,港澳地区作为近水楼台的教育高地,关注度持续攀升。…

2025北京留学中介机构名单

2025北京留学中介机构名单一、北京留学中介怎么选?这份排名帮你避开坑洼2025年,计划出国留学的北京家庭,面对市场上众多的中介机构,是否感到无从下手?究竟北京本地的留学中介哪家口碑更胜一筹?想要申请美国顶尖名…

2025年金刚砂耐磨地坪材料搅拌机制造企业权威推荐榜单:石墨增碳剂搅拌机/塑料粉混合机/石墨粉搅拌机源头厂家精选

金刚砂耐磨地坪材料作为工业地坪的核心选择,其搅拌设备的混合均匀度与生产效率直接关系到材料性能与施工质量。根据建材机械行业数据统计,2024年中国干粉砂浆设备市场规模已突破80亿元,其中搅拌机在生产线中的价值占…

2025年武汉优质的华新水泥生产厂家推荐榜单,华新水泥有哪些鑫俊熙层层把关品质优

行业背景与评选标准 随着武汉城市建设步伐加快,华新水泥作为基础建材的重要品类,其供应商选择备受关注。本文基于企业生产能力、产品质量、服务体系及市场口碑等维度,对武汉地区华新水泥供应商进行综合评估,旨在为…

计算机视觉:pyqt5+yoloV5目标检测平台 python实战 torch 目标识别 大数据项目 目标跟踪(建议收藏)✅ - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

odoo12 跟踪所有的模型调用的onchange 方法

明白,你现在使用的是 Odoo 12,它的 onchange 机制确实和 Odoo 13+ 完全不同。 你贴出的 Odoo 12 的源码: def _onchange_eval(self, field_name, onchange, result):...在 Odoo 12 中,onchange 方法的核心逻辑集中…

对于高增量数据库的解决方案记录(暂时修改)

对于高增量数据库的解决方案记录(暂时修改)ALTER TABLE t_paper_question MODIFY paper_id varchar(32) NOT NULL COMMENT 试卷; -- 先删除原主键 ALTER TABLE t_paper_question DROP PRIMARY KEY; -- 添加新复合主键…

2025年北京阅卷考试软件公司权威推荐榜单:自动阅卷软件/网上阅卷的软件/答题卡扫描源头公司精选

数据显示,2025年中国在线教育市场规模预计突破6000亿元,其中超过90%的高校已部署或正在升级在线考试系统。在这一背景下,北京阅卷考试软件公司凭借其创新的技术和服务,正推动着教育评价体系的智能化变革。 本文将基…

2025年11月五大GEO优化公司:技术融合驱动增长新生态

随着AI大模型与全域搜索技术深度融合,GEO(全域搜索优化)已成为企业突破流量边界、实现精准增长的核心抓手。数据显示,2025年GEO优化驱动的全域营销转化效率较传统搜索模式提升4.0倍,核心场景首屏覆盖率平均提升70…

《基于IPD流程的研发项目管理》公开课(2025年12月12-13日)

《基于IPD流程的研发项目管理》公开课(2025年12月12-13日)【课程背景】 随着国内产品创新环境的逐渐形成,许多企业管理者创新意识逐步提升,产品研发项目管理的规范性被提上日程,研发的效率和质量、成本等因素引起…

HarmonyOS应用性能调优与内存管理实战 - 指南

HarmonyOS应用性能调优与内存管理实战 - 指南2025-11-25 14:22 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

CF1450C2 Errich-Tac-Toe (Hard Version)

考虑刻画不合法条件。 给网格染色 \(col_{(x,y)}=(x+y)\mod 3\),则连续三个同色棋子

使用 Privoxy 将 socks5 转为 http/https

使用 Privoxy 将 socks5 转为 http/https安装 Privoxysudo apt install privoxy -y配置 Privoxy编辑配置文件 /etc/privoxy/config,添加以下内容(将 127.0.0.1:1080 替换为 ss 的地址和端口): forward-socks5 / 12…

迅为如何在RK3576开发板上部署YOLOv5;基于RK3576构建智能门禁系统

迅为如何在RK3576开发板上部署YOLOv5;基于RK3576构建智能门禁系统迅为如何在RK3576开发板上部署YOLOv5;基于RK3576构建智能门禁系统在边缘计算浪潮澎湃的今天,一颗强大、全能的核心处理器是构建高端AIoT项目的基石。…