当前位置: 首页 > article >正文

ESP32-idf学习(三)esp32C3连接iot

一、前言

上一篇用蓝牙作为通信方式,虽然勉强完成了控制,但结果显然不是那么符合我们的预期,既然用蓝牙还需要研究一段时间,那我们就先整一些现成的,不需要研究的!iot云平台!这里当然也是通过wifi的方式。

二、开发准备

1、硬件了解

这是官方手册中wifi的特性描述,同样也是2.4g,速率150M是比我之前在stm32上用过的esp8266快的,对我的预期来说那是够够的了,毕竟我顶多就控控灯开关,上报一下传感器数据之类的。

2、例程选择

我一贯都是用mqtt连接的腾讯云,所以我现在也是选择mqtt的例程,然后这里还有ssl、tcp和ws,我选择的是tcp,ssl强调安全加密,ws是适配浏览器环境的,tcp没有加密而且轻量,直接通过1883端口通信。

3、例程分析

这个例程就比较简单了,只对连接mqtt来说的话,其实前边都不是我们需要关心的内容,直接从网络连接 example_connect 这里看起就好

这里有注释,大意就是根据在menuconfig中的选项(wifi或以太网)自动初始化对应的网络模块,而且要提前在menuconfig中设置wifi的参数。(我也是百度翻译的)

但是这个函数,我是没找到,可能不是用C来实现的吧(瞎猜的),因为这里所说的menuconfig,在vscode本来就是点一下那个设置的图标,这里配置后边再说

然后mqtt_app_start就是,mqtt连接的开始

点开,这里有一个config的结构体,但是跟我记忆中的不太一样,我记得好像这个结构体以前是输入端口,username和password之类的就行来着

点进去看看:

现在分了好几个,我将每一个都折叠了

就是mqtt的参数和任务的参数,我看了一下,broker_t设置url,credentials_t设置username、client_id、password,其他保持默认就好,具体设置后边说。至于全部参数的详细作用,其实我也并不能都说得上来,有需要大家自行百度!

三、修改例程

1、设置wifi名称和密码

点一下下边的这个设置,就会发现新大陆兄弟们

直接搜索wifi就好,然后输你的wifi名称和密码,注意是2.4g那个,下边的参数就用默认的就好,改完点右上角保存

2、设置mqtt的参数

因为是测试,所以我直接将腾讯云设备信息下边那里有直接给出来的三元组直接宏定义了,服务器地址要加上mqtt://,不要url会报错

如果是想做成通用点的程序,三元组就要通过计算了,算法官方有:

物联网通信 设备基于 TCP 的 MQTT 接入_腾讯云

服务器地址的话可以通过snprintf,例如:

char endpoint[100];
snprintf(endpoint, sizeof(endpoint), "mqtts://%s.iotcloud.tencentdevices.com", ClientID);

然后只需要在mqtt_app_start这个函数,注释掉本来的url,加上我们的参数,就实现简单的连接了

3、检验是否激活设备

烧录程序:

成功连接wifi后会显示ip地址

后边的就是mqtt订阅成功,成功激活设备了

在平台上看一看

4、增加上报led状态和接收led开/关指令

①增加头文件

②增加宏定义

topic在腾讯云上可以直接看到

③增加变量:

增加了一个灯的开关状态变量

一个任务句柄

一个环形结构

还有一个信号量

④增加函数

1、led相关

2、存储区部分

3、回调函数修改:

4、创建任务

我把原先的mqtt_app_start注释不用,自己创建了一个任务,还有前边一些初始化

任务也很简单,就是有中断有数据接收时,直接进入数据处理,如果是开关的话就执行led开/关的操作,并直接上报灯的状态。如果没有的话就5s上报一次。

但其实这里5s并不准确,因为每次上报会有数据回复,又会跳转到处理数据这里。

四、烧录验证

1、串口打印消息查看

这里是主动上报的,我加了一帧打印计数

这是控制的

2、平台查看

可以看到,数据一直有上报,并且突变时会直接上

3、实际效果

esp32C3基于idf 腾讯云mqtt控制灯亮灭视频-CSDN直播

五、总结

中断这里我把数据存到存储区,然后AI搜了一下这个环形缓冲区结构,再自己修改了下,之前都是用的静态申请空间的。

一整个流程下来,其实跟我之前STM32+ESP8266是没什么区别的。感兴趣可以对比下。

STM32+ESP8266连接腾讯IOT上传数据(四)_stm32通过esp8266上传数据到云平台-CSDN博客

比stm32+eps8266这种方法省了一个cpu,稳定性还没测,我准备到时候把功能写完,再一直挂着试试

相关文章:

ESP32-idf学习(三)esp32C3连接iot

一、前言 上一篇用蓝牙作为通信方式,虽然勉强完成了控制,但结果显然不是那么符合我们的预期,既然用蓝牙还需要研究一段时间,那我们就先整一些现成的,不需要研究的!iot云平台!这里当然也是通过w…...

详解鸿蒙仓颉开发语言中的计时器

今天又到了大家喜闻乐见的科普环节,也可以说是踩坑环节,哈哈哈。今天聊一聊仓颉开发语言中的计时器,这部分可老有意思了。 为什么这么说呢,因为关于仓颉的计时器你几乎搜不到任何的文档,也没有相关的代码提示&#xf…...

【计算机网络】第3章:传输层—拥塞控制原理

目录 一、PPT 二、总结 (一)拥塞的定义 (二)拥塞产生的原因 (三)拥塞控制的目标 (四)拥塞控制方法分类 1. 端到端拥塞控制 2. 网络辅助拥塞控制 (五)…...

Vue3(watch,watchEffect,标签中ref的使用,TS,props,生命周期)

Vue3(watch,watchEffect,标签中ref的使用,TS,props,生命周期) watch监视 情况三:监视reactive定义的对象类型的数据 监视reactive定义的对象类型的数据,默认开启深度监视。地址没变,新值和旧…...

【nssctf第三题】[NSSCTF 2022 Spring Recruit]easy C

这是题目&#xff0c;下载附件打开是个C文件 #include <stdio.h> #include <string.h>int main(){char a[]"wwwwwww";char b[]"dvxbQd";//try to find out the flagprintf("please input flag:");scanf(" %s",&a);if…...

Cocos 打包 APK 兼容环境表(Android API Level 10~15)

使用 Cocos 打包 APK&#xff1a;Android 10 ~ Android 15 兼容版本对照表 ✅ 本表基于 Cocos Creator 3.x 实际测试及官方建议整理 &#x1f4c6; 最后更新时间&#xff1a;2025年6月 &#x1f4a1; 推荐使用 Android Studio 2022 或命令行构建工具 Android 版本API Level推荐…...

数据结构之堆:解析与应用

一、堆的核心定义与性质 堆是一种特殊的完全二叉树&#xff0c;分为最大堆和最小堆&#xff1a; 最大堆&#xff1a;每个节点的值 ≥ 子节点值&#xff0c;根节点为最大值。最小堆&#xff1a;每个节点的值 ≤ 子节点值&#xff0c;根节点为最小值。 关键性质&#xff1a; …...

DBeaver导入/导出数据库时报错解决方案

导出&#xff1a; 报错&#xff1a;mysqldump: Got error: 2026: SSL connection error: error:0A000102:SSL routines::unsupported protocol when trying to connect 在额外的命令参数中添加"--ssl-modeDISABLED"可以关闭SSL服务&#xff0c;从而成功解决问题。这…...

GPIO模拟串口通信

在资源受限的嵌入式项目中,GPIO模拟串口(UART)仍有实际需求。尽管现代MCU多数具备多个硬件串口,但实际项目中仍可能遇到串口数量不足的情况,尤其在低成本、小封装芯片的应用场景中。 一、GPIO模拟串口的基本原理 GPIO模拟串口,顾名思义,就是通过软件控制普通IO口的高低…...

uniapp与微信小程序开发平台联调无法打开IDE

经测试属于网络问题。本机需要联网。否则会出现Hbuilder运行微信小程序到模拟器时无法打开 微信开发者工具 这个页面出不来会一直显示异常。这期间微信小程序开发工具的端口是通的 需要先联网...

第十二节:第五部分:集合框架:Set集合的特点、底层原理、哈希表、去重复原理

Set系列集合特点 哈希值 HashSet集合的底层原理 HashSet集合去重复 代码 代码一&#xff1a;整体了解一下Set系列集合的特点 package com.itheima.day20_Collection_set;import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; import java.util.…...

【C++项目】:仿 muduo 库 One-Thread-One-Loop 式并发服务器

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;C从入门到精通 目录 &#x1f525; 前言 一&#xff1a;&#x1f525; 项目储备知识 &#x1f98b; HTTP 服务器&#x1f98b; Reactor 模型&#x1f380; 单 Reactor 单线程&#xff1a;单I/O多路…...

基于大数据的个性化购房推荐系统设计与实现(源码+定制+开发)面向房产电商的智能购房推荐与数据可视化系统 基于Spark与Hive的房源数据挖掘与推荐系统设计

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

FFmpeg学习笔记

1. 播放器的架构 2. 播放器的渲染流程 3. ffmpeg下载与安装 3.0 查看PC是否已经安装了ffmpeg ffmpeg 3.1 下载 wget https://ffmpeg.org/releases/ffmpeg-7.0.tar.gz 3.2 解压 tar zxvf ffmpeg-7.0.tar.gz && cd ./ffmpeg-7.0 3.3 查看配置文件 ./configure …...

Chrome 通过FTP,HTTP 调用 Everything 浏览和搜索本地文件系统

【提问1】 Chrome调用本地 everything.exe, everything 好像有本地 FTP 服务器&#xff1f; 【DeepSeek R1 回答】 是的&#xff0c;Everything 确实内置了 HTTP/FTP 服务器功能&#xff0c;这提供了一种相对安全的浏览器与本地应用交互的方式。以下是完整的实现方案&#x…...

GpuGeek如何成为AI基础设施市场的中坚力量

AI时代&#xff0c;算力基础设施已成为支撑技术创新和产业升级的关键要素。作为国内专注服务算法工程师群体的智算平台&#xff0c;GpuGeek通过持续创新的服务模式、精准的市场定位和系统化的生态建设&#xff0c;正快速成长为AI基础设施领域的中坚力量。本文将深入分析GpuGeek…...

【Hot 100】45. 跳跃游戏 II

目录 引言跳跃游戏 IIdp解题贪心解题 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;算法专栏&#x1f4a5; 标题&#xff1a;【Hot 100】45. 跳跃游戏 II❣️ 寄语&#xff1a;书到用时方恨少&#xff0c;事非经过不知难&#xff01; 引言 跳跃…...

Codeforces Round 1026 (Div. 2) C. Racing

Codeforces Round 1026 (Div. 2) C. Racing 题目 In 2077, a sport called hobby-droning is gaining popularity among robots. You already have a drone, and you want to win. For this, your drone needs to fly through a course with n n n obstacles. The i i i-…...

Python库CloudScraper详细使用(绕过 Cloudflare 的反机器人页面的 Python 模块)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、CloudScraper概述1.1 CloudScraper 介绍1.2 安装二、基本使用方法2.1 创建scraper实例2.2 发送请求2.3 带参数的请求2.4 自定义浏览器指纹2.5 设置代理2.6 自定义请求头三、高级配置3.1 处理Cloudflare挑战-自动处理…...

oracle sql 语句 优化方法

1、表尽量使用别名&#xff0c;字段尽量使用别名.字段名&#xff0c;这样子&#xff0c;可以减少oracle数据库解析字段名。而且把 不需要的字段名剔除掉&#xff0c;只保留有用的字段名&#xff0c;不要一直使用 select *。 2、关联查询时&#xff0c;选择好主表 。oracle解析…...

Python数学可视化——显函数、隐函数及复杂曲线的交互式绘图技术

Python数学可视化——显函数、隐函数及复杂曲线的交互式绘图技术 一、引言 在科学计算和数据分析中&#xff0c;函数与方程的可视化是理解数学关系和物理现象的重要工具。本文基于Python的Tkinter和Matplotlib库&#xff0c;实现一个功能完善的函数与方程可视化工具&#xff…...

代码随想录打卡|Day51 图论(dijkstra(堆优化版)精讲、Bellman_ford 算法精讲)

图论part09 dijkstra&#xff08;堆优化版&#xff09;精讲(不熟悉) 代码随想录链接 题目链接 import java.util.*;class Edge {int to; // 邻接顶点int val; // 边的权重Edge(int to, int val) {this.to to;this.val val;} }class MyComparison implements Comparator<…...

【深度剖析】流处理系统性能优化:解决维表JOIN、数据倾斜与数据膨胀问题

目录 前言:为什么你的流处理作业总是慢? 一、维表JOIN优化:从普通连接到高性能查询 1.1 时态表的双面性 1.2 Lookup Join 优化 1.3 多表JOIN优化策略 二、数据倾斜:单分区也会遇到的隐形杀手 2.1 单分区数据倾斜 2.2 热点键打散技术 2.3 时间窗口预聚合 三、数据…...

PostgreSQL优化实践:从查询到架构的性能提升指南

## 引言 PostgreSQL作为先进的开源关系型数据库&#xff0c;在复杂查询处理与高并发场景中表现卓越&#xff0c;但不当的使用仍会导致性能瓶颈。本文系统性梳理优化路径&#xff0c;覆盖SQL编写、索引策略、参数调优等关键环节&#xff0c;配合代码示例与量化建议&#xff0c;…...

AI入门——AI大模型、深度学习、机器学习总结

以下是对AI深度学习、机器学习相关核心技术的总结与拓展&#xff0c;结合技术演进逻辑与前沿趋势&#xff0c;以全新视角呈现关键知识点 一、深度学习&#xff1a;从感知到认知的技术革命 核心突破&#xff1a;自动化特征工程的范式变革 深度学习通过多层神经网络架构&#x…...

【AI论文】论文转海报:迈向从科学论文到多模态海报的自动化生成

摘要&#xff1a;学术海报生成是科学交流中一项关键但具有挑战性的任务&#xff0c;需要将长上下文交织的文档压缩成单一的、视觉上连贯的页面。 为了应对这一挑战&#xff0c;我们引入了第一个用于海报生成的基准和度量套件&#xff0c;该套件将最近的会议论文与作者设计的海报…...

智慧零工平台前端开发实战:从uni-app到跨平台应用

智慧零工平台前端开发实战:从uni-app到跨平台应用 本文将详细介绍我如何使用uni-app框架开发一个支持微信小程序和H5的零工平台前端应用,包含技术选型、架构设计、核心功能实现及部署经验。 前言 在当今移动互联网时代,跨平台开发已成为提高开发效率的重要手段。本次我选择…...

【Linux】基础文件IO

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;Linux 前言 无论是日常使用还是系统管理&#xff0c;文件是Linux系统中最核心的概念之一。对于初学者来说&#xff0c;理解文件是如何被创建、读取、写入以及存储…...

opencv调用模型

在 C++ 中,OpenCV 的 cv::dnn::readNetFromONNX() 函数用于加载 ONNX 格式的深度学习模型,将其转换为 OpenCV DNN 模块可用的网络对象 (cv::dnn::Net)。以下是详细说明: 函数原型 #include <opencv2/dnn.hpp>cv::dnn::Net cv::dnn::readNetFromONNX(const String&am…...

由浅入深一文详解同余原理

由浅入深一文详解同余原理 一、同余原理的基本概念1.1 同余的定义1.2 剩余类与完全剩余系 二、同余原理的基本性质2.1 自反性2.2 对称性2.3 传递性2.4 加减性2.5 乘性2.6 幂性 三、同余原理的运算与应用3.1 同余运算在计算中的应用3.2 密码学中的应用3.3 日期与周期问题 四、案…...