Stm32+Esp8266连接阿里云程序移植教程(MQTT协议)

news2024/11/24 13:38:34

Stm32+Esp8266连接阿里云程序移植教程(MQTT协议)

  • 一、前期准备
  • 二、移植过程
  • 三、程序的使用
    • 3.1 连接上阿里云
    • 3.2 传输用户数据到阿里云
    • 3.3 解析从阿里云下发给用户的数据
    • 3.4 关于调试接口

一、前期准备

  1. 自己要的工程文件
  2. 移植所需的文件(如下图)
    获取方式见视频教程: 链接: BiliBili

移植所需文件:
在这里插入图片描述
我自己的工程文件:
在这里插入图片描述

STM32资源占用情况

资源个数
定时器1个
GPIO口1个
串口1个

二、移植过程

(1)将IOT文件夹整体复制到要移植工程的文件夹中,我复制到了HARDWARE文件夹中

(2)打开工程,编译通过,点击品字图标

在这里插入图片描述

(3)添加所有.c文件到工程

在这里插入图片描述

(4)添加IOT文件程序的头文件到工程

在这里插入图片描述
在这里插入图片描述

(5)此时编译工程,会发现报好多错误,那是因为并没用引用头文件

在这里插入图片描述

(6)点开移植所需文件中的sys.h文件,没有的自己把sys.c和sys.h添加进工程就行,添加文件到工程的步骤和上面一样。

  • 先添加.c
  • 在选中魔术棒添加头文件所在文件夹

在这里插入图片描述

在这里插入图片描述

(7)再次编译工程,可以看到不报错了

  • 如果还报错,把自己工程里所有的头文件都放入sys.h中,就向上图那样
  • 这样建立一个公共头文件sys.h做的好处是可以不用理会哪个程序引用了哪个头文件
  • 移植程序报错八成是头文件引用关系不对的缘故

在这里插入图片描述

三、程序的使用

3.1 连接上阿里云

(1)首先将阿里云的三要素准备好,如果不会这步骤的可以去看这个视频,BiliBili: 链接

在这里插入图片描述

(2)打开这个iot_wifi_mqtt.h文件,更改如下4个内容;

  • 改成自己的WIFI和密码(WIFIID和PASSWORD)
  • 把PRODUCTKEY改成自己的
  • 把DEVICENAME改成自己的
  • 把DEVICESECRE改成自己的
    在这里插入图片描述

(3)在主函数中初始化联网程序

  • 打开iot_user.c
  • 添加IOT_init();在主函数初始化中
  • 添加IOT_Connect();在主函数循环中

在这里插入图片描述
在这里插入图片描述

(4)编译通过,至此程序可以成功连接到阿里云了
在这里插入图片描述

3.2 传输用户数据到阿里云

在iot_user中找到Timed_Data_UpLoad()函数,按照下图更改即可

在这里插入图片描述

3.3 解析从阿里云下发给用户的数据

这里给出两大类解析数据的情况:

  • 解析阿里云发送的整型数据(作用:手机联网控制温湿度上下限的大小)
  • 解析阿里云下发的开关类型变量(作用:手机联网控制点灯关灯)

在这里插入图片描述

3.4 关于调试接口

该程序保留了调试的接口

  • 可更改调试串口为自己串口的printf函数
  • 0关闭串口 1打开串口

在这里插入图片描述

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

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

相关文章

CentOS 7.9安装MySQL

下载Linux版MySQL安装包 下载地址https://downloads.mysql.com/archives/community/ 下载解压后 安装,按照从上至下顺序,一条一条执行即可安装完毕。 进入到rpm所在目录rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm rpm -ivh mysql-comm…

计算机网络——CDN

空间编码例子:不是发送N个相同颜色值,而是仅发送2个值,颜色和重复个数 时间编码例子:不是发送i1帧的全部编码,而是仅发送帧i差别的地方 视频播放时,先下载manifest file文件——>解析(不…

vscode中关闭cmake自动配置

前言 最近误触了一个操作,导致,一旦使用vscode打开项目,就会去配置cmake。或者你一旦更改cmakelists.txt,就会去配置cmake。 这个操作,结果对不对还另说,关键是增加计算机开销,使得vscode打开后…

【华为】配置BGP协议

边界网关协议BGP是一种实现自治系统AS之间的路由可达,并选择最佳路由的距离矢量路由协议。BGP在不同自治系统之间进行路由转发,分为EBGP(外部边界网关协议)和IBGP(内部边界网关协议)两种情况。 [A]in g0/0/…

使用docker搭建lnmp运行WordPress

一,部署目的 使用 Docker 技术在单机上部署 LNMP 服务(Linux Nginx MySQL PHP)。部署并运行 WordPress 网站平台。掌握 Docker 容器间的互联及数据卷共享。 二,部署环境 操作系统:CentOS 7Docker 版本&#xff1…

Spring 的依赖注入的最常见方式

在 Spring 中,依赖注入的方式有多种选择。下面我们来逐一分析它们的特点、适用场景和注意事项: 1. 构造函数注入 构造函数注入要求在对象创建时提供所有依赖。这种方式确保依赖在对象创建后不可变,特别适合必须强制存在的依赖。所有依赖在对…

Windows的Conda环境下使用PlotNeuralNet来绘制神经网络

项目场景: Windows环境下,使用了anaconda的Python环境管理器,使用PlotNeuralNet来绘制神经网络图 问题描述 在运行以下shell命令的时候 cd pyexamples/ bash ../tikzmake.sh test_simple出现了访问被拒绝的错误,如下所示&#x…

【数据结构】:破译排序算法--数字世界的秩序密码(一)

文章目录 一.排序算法概述1.定义和目的2.排序算法的分类2.1比较排序2.2非比较排序 二.插入排序算法1.InsertSort直接插入排序1.1.插入排序原理1.2.插入排序过程1.3.代码实现1.4.复杂度和稳定性 2.ShellSort希尔排序2.1.希尔排序原理2.2.希尔排序过程2.3.代码实现2.4.复杂度和稳…

LeetCode 132. 分割回文串 II(经典必会)

LeetCode 132. 分割回文串 II 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串。 返回符合要求的 最少分割次数 。 示例 1: 输入:s “aab” 输出:1 解释:只需一次分割就可将 s 分割成 [“…

EditPlus安装使用

1.进入EditPlus官网(https://www.editplus.com/)点击第二行蓝字 2.点击More options第一行蓝字 3.点击exe文件进入安装,点击Accept 4.选择下载路径 4.点击editplus.exe 5.在许可证协议中点击yes 6.输入username和regcode即可使用(也可以试用30天)

Leetcode 岛屿数量

首先检查网格是否为空,如果为空,直接返回 0。遍历网格中的每一个元素,当遇到陆地(1)时,计数器加 1,并且通过 DFS 将与该陆地相连的所有部分标记为已访问(即设为 0)。DFS …

第 22 章 - 你不能错过的Elasticsearch核心知识点-BM25相关性评分算法(进阶)

文章目录 前言分片对 Elasticsearch 相关性评分的影响BM25 算法和它的变量效果应用将 b b b 值设置为 0将 k 1 k1 k1 设置为0 总结 前言 上一章介绍了 Elasticsearch 的读写优化技巧。本章将深入探讨与 Elasticsearch 相关的 BM25 相关性评分公式。 我们将全面解析 BM25 如…

【Java】C++转Java基础知识

1. Java基础知识 1.1 JDK和JVM 在Java中,JDK称为Java开发工具包(Java Development Kit),包含了Java开发需要使用的工具包,前面的版本中JRE和JDK是分开的两个文件夹,从Java9开始,JDK中还包含了JRE(Java Runtime Envir…

STM32外设详解——ADC

来源:铁头山羊 基本概念 ①ADC是模数转换器的统称,stm32f103c8t6内部集成了2个12位主次逼近型ADC,外设名称为ADC1、ADC2。 ② 采样深度为12位意味着ADC可以将0~3.3V的模拟电压等比转换为0~4095的数字值(分割为2的12次方份&…

猫头虎分享:Python库 Selenium 的简介、安装、用法详解入门教程

🐯 猫头虎分享:Python库 Selenium 的简介、安装、用法详解入门教程 🚀 今天,猫头虎带大家深入了解 Selenium,这是一个非常流行的自动化测试工具,用于浏览器自动化。无论你是进行网页数据抓取,还…

Starrocks表的数据库字段类型及与MySQL 的差异

最近有用到Starrocks,实际使用中基本可以当作mysql来使用,但是数据库字段还是有所不同的。 与MySQL相同或相似的基础类型 数值类型 TINYINT、SMALLINT、INT/INTEGER、BIGINT:在Starrocks和MySQL中的定义和用途基本相似。都是用于存储整数&…

YOLO11改进|注意力机制篇|引入Mamba注意力机制MLLAttention

目录 一、【MLLAttention】注意力机制1.1【MLLAttention】注意力介绍1.2【MLLAttention】核心代码 二、添加【MLLAttention】注意力机制2.1STEP12.2STEP22.3STEP32.4STEP42.5STEP5 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【MLLAttention】注意力机制 1.1【MLLAtte…

[Linux#66][TCP->IP] 面向字节流 | TCP异常 | filesocket | 网络层IP

目录 1. 面向字节流 思考:对于UDP协议来说,是否也存在“粘包问题”呢? 2.TCP 异常情况 3.知识 1.UDP实现可靠传输(经典面试题) 2. 网络抓包 | 爬虫 3.打通文件和 socket 的关系 4.网络层:IP 前置知识 1. 面向字节流 udp…

Java+vue部署版本反编译

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&am…

C++STL(2)

queue(队列) queue是一种先进先出的数据结构。 queue提供了一组函数来操作和访问元素,但它的功能相对较简单。 push(x):在队尾插入元素 x pop():弹出队首元素 front():返回队首元素 back():返回队尾元素 empty():检查队列是否为空 size0:返回队列中元素的个数 pri…