stm32+esp8266+机智云手机app

现在很多大学嵌入式毕设都要求云端控制,本文章就教一下大家如何使用esp8266去连接机智云的app去进行显示stm32的外设传感器数据啊,控制一些外设啊等。

因为本文章主要教大家如何移植机智云的代码到自己的工程,所以前面的一些准备工作(烧录esp8266的固件,机智云app的使用等)大家可以去其他博主那里参考一下(如果大家有需要可以评论区提出,需求多的话也可以给大家写出来),但是esp8266的烧录工具和固件我会放到文章最后的网盘链接中,大家自行点赞获取

此次演示的机智云app如下:

这里给大家准备了机智云app的下载链接

机智云APP(下载链接:https://devdocs.gizwits.com/download.html#166419072635445)

大家可以在虚拟设备中用机智云手机app扫码查看自己创建的设备:

app准备好以后就可以到mcu开发里面去自动生成代码了,如下图所示: 

接下来就到了最重要的环节:代码移植环节 

1.将下载下来的代码里面的Gizwits和Utils两个文件复制粘贴到自己的工程文件中

同时别忘记在自己的keil工程代码里把这两个文件的.c和.h文件添加到工程中

2.接下来首先我们打开工程代码中的gizwits_product.c,因为我们用的是标准库函数,所以要把hal库的内容注释掉(如果最后按照我的步骤编译报错,检查一下是否有其它的hal库函数没注释干净

3.接下来依然在这个代码里往下滑,替换一行代码并注释两个函数如下图所示:

NVIC_SystemReset();

4.继续往下滑,继续注释代码,如下图所示:

5.接下来继续往下滑,将hal库的串口代码注释掉换成自己的使用标准库串口代码(并不一定要和我一样用串口3):

			USART_SendData(USART3,buf[i]);while(USART_GetFlagStatus(USART3,USART_FLAG_TC) == RESET);if(i>=2&&buf[i] == 0xFF){USART_SendData(USART3,0x55);while(USART_GetFlagStatus(USART3,USART_FLAG_TC) == RESET);}

 6.接下来gizwits_product.h要进行相应的修改,如下图所示

#include <stm32f10x.h>

7.接下来去你刚刚修改的串口中断函数里面添加相应的头文件和一段代码,如下所示

#include "gizwits_product.h"
gizPutData(&res, 1);

8.接下来开启一个1ms的定时器,在定时器中断函数里运行如下代码:

gizTimerMs();

9.接下来可以对gizwits_product.c内的userHandle( ) 函数进行赋值你想要上传到app的相应的传感器数据(下面会解释这个数据的来源):

10.接下来找到gizwits_product.c内的gizwitsEventProcess函数 ,下图圈出的地方可替换自己想控制的开关变量(这里我演示的是控制PA11口的高低电平,也就是控制一个led的亮灭)。

11.最后是主函数和while循环:初始化的代码中与esp8266通讯的串口是必须的,另一个串口是测试用的,会打印一些信息到上位机上(方便调试),1ms的定时器是必须的,此外下面的三个函数像我一样放着就行了。(图中圈出来的函数是必须的,其他的函数根据你自己的项目添加

	userInit();gizwitsInit();gizwitsSetMode(2);

12.然后是while循环:圈出来的函数是必须有的,此外xinlv和xunyang其实是获取超声波的距离,我懒得改变量名就直接用了。

		userHandle();gizwitsHandle((dataPoint_t *)&currentDataPoint);

13.至此,代码就移植完了,接下来就可以烧录程序到单片机了,然后用手机机智云app去连接esp8266,最重要的是手机和esp8266最好用同一个wifi且必须是2.4G的,没有的话可以用手机热点,手机热点一般是2.4G的,机智云连接流程如下:

14.一键配置后就是输入wifi账号和密码(再提示一下要用2.4G的!!!) 

然后按下图所示点击即可,

15.点击完后根据页面提示点击我已完成上述操作即可,当进入配对页面后,我们可以盯着开热点的手机,如果他的热点多了一个用户,大概率就是esp8266连接上了,这时候如果配对还没结束你也可以不用等了,直接退出就可以看到一个局域网在线的设备,就是你的设备,点击进去即可。

16.最终显示的效果如图所示 ,高度1和高度2是两个超声波测的值,不过由于while循环的速度很快,手机app数据更新的速度很慢,经常会出现oled上面信息更新了,手机上的数据要过一会才会更新,此外,我也测试了蜂鸣器的开关也是正常的在这里就不给大家演示了 。

 通过网盘分享的文件:esp8266烧录固件.zip
链接: https://pan.baidu.com/s/1ZWBkJq87xvhORIBU87RNBQ?pwd=0531 提取码: 0531

 如果大家需要我的工程源码可以一件三连后私聊获取!

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

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

相关文章

时序数据库 TDengine Cloud 私有连接实战指南:4步实现数据安全传输与成本优化

小T导读&#xff1a;在物联网和工业互联网场景下&#xff0c;企业对高并发、低延迟的数据处理需求愈发迫切。本文将带你深入了解 TDengineCloud 如何通过全托管服务与私有连接&#xff0c;帮助企业实现更安全、更高效、更低成本的数据采集与传输&#xff0c;从架构解析到实际配…

【Java面试系列】Spring Boot中自动配置原理与自定义Starter开发实践详解 - 3-5年Java开发必备知识

【Java面试系列】Spring Boot中自动配置原理与自定义Starter开发实践详解 - 3-5年Java开发必备知识 引言 Spring Boot作为Java生态中最流行的框架之一&#xff0c;其自动配置机制和Starter开发是面试中的高频考点。对于3-5年经验的Java开发者来说&#xff0c;深入理解这些原理…

解决Spring Boot Test中的ByteBuddy类缺失问题

目录 解决Spring Boot Test中的ByteBuddy类缺失问题前奏问题描述问题解决第一步&#xff1a;移除ByteBuddy的特定版本号第二步&#xff1a;更新maven-surefire-plugin配置第三步&#xff1a;清理并重新构建项目 结语 解决Spring Boot Test中的ByteBuddy类缺失问题 前奏 今天&…

IntelliJ IDEA使用技巧(json字符串格式化)

文章目录 一、IDEA自动格式化json字符串二、配置/查找格式化快捷键 本文主要讲述idea中怎么将json字符串转换为JSON格式的内容并且有层级结构。 效果&#xff1a; 转换前&#xff1a; 转换后&#xff1a; 一、IDEA自动格式化json字符串 步骤一&#xff1a;首先创建一个临…

眨眼睛查看密码工具类

“眨眼睛查看密码”工具类实现思路&#xff1a; 一、核心功能 实现点击眼睛图标切换密码明文/星号显示&#xff0c;提升表单输入体验。包含以下关键功能&#xff1a; • 初始状态&#xff1a;密码框显示为星号&#xff0c;闭眼图标可见。 • 点击闭眼图标&#xff1a;切换为明…

【GPT入门】第33课 从应用场景出发,区分 TavilyAnswer 和 TavilySearchResults,代码实战

【GPT入门】第33课 从应用场景出发&#xff0c;区分 TavilyAnswer 和 TavilySearchResults&#xff0c;代码实战 1. 区别应用场景 2. 代码使用3.代码执行效果 在langchain_community.tools.tavily_search中&#xff0c;TavilyAnswer和TavilySearchResults有以下区别和应用场景&…

【Java设计模式】第10章 外观模式讲解

10. 外观模式 10.1 外观模式讲解 定义:为子系统提供统一接口,简化调用。类型:结构型模式适用场景: 子系统复杂需简化调用分层系统需统一入口优点: 降低耦合符合迪米特法则(最少知道原则)缺点: 扩展子系统需修改外观类,违反开闭原则10.2 外观模式 Coding // 子系统:…

Dubbo的简单介绍

Dubbo的简单介绍 Dubbo 是一个高性能的 Java RPC 框架&#xff0c;最初由阿里巴巴开发&#xff0c;用于构建分布式服务。它主要用于提供服务间的通信&#xff0c;支持高效的远程调用和服务治理&#xff0c;常用于大规模分布式系统中。Dubbo 提供了以下几个核心功能&#xff1a…

每日一题(小白)数组娱乐篇17

对一个数组进行接收进行操作后输出。输入三个操作数abc&#xff0c;将数组下标a到b的数字加上c&#xff1b;输入四个操作数abcd&#xff0c;将下标c到d的数字复制到a到b&#xff0c;可以借用一个中间量数组实现&#xff1b;两个操作数ab&#xff0c;将数组下标a到b的数字加和输…

总结一下常见的EasyExcel面试题

说一下你了解的POI和EasyExcel POI&#xff08;Poor Obfuscation Implementation&#xff09;&#xff1a;它是 Apache 软件基金会的一个开源项目&#xff0c;为 Java 程序提供了读写 Microsoft Office 格式文件的功能&#xff0c;支持如 Excel、Word、PowerPoint 等多种文件格…

01-Redis-基础

1 redis诞生历程 redis的作者笔名叫做antirez&#xff0c;2008年的时候他做了一个记录网站访问情况的系统&#xff0c;比如每天有多少个用户&#xff0c;多少个页面被浏览&#xff0c;访客的IP、操作系统、浏览器、使用的搜索关键词等等(跟百度统计、CNZZ功能一样)。最开始存储…

在 Ubuntu 上离线安装 Prometheus 和 Grafana

在 Ubuntu 上离线安装 Prometheus 和 Grafana 的步骤如下: 一.安装验证 二.安装步骤 1.准备离线安装包 在一台可以访问互联网的机器上下载 Prometheus 和 Grafana 的二进制文件。 Prometheus 下载地址:Prometheus 官方下载页面Grafana 下载地址:Grafana 官方下载页面下载所…

mapbox基础,加载ESRI OpenStreetMap开放街景标准风格矢量图

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.1 ☘️mapboxgl.Map style属性二、🍀加载ESRI OpenStreetMap开放街景标准风…

Java 集合有序性与重复性总结及记忆技巧

Java 集合有序性与重复性总结及记忆技巧 一、集合分类速查表 集合类型是否有序是否允许重复记忆口诀ArrayList✅ 有序&#xff08;插入顺序&#xff09;✅ 可重复"数组列表&#xff0c;顺序记牢"LinkedList✅ 有序&#xff08;插入顺序&#xff09;✅ 可重复"…

记录学习的第二十三天

老样子&#xff0c;每日一题开胃。 我一开始还想着暴力解一下试试呢&#xff0c;结果不太行&#x1f602; 接着两道动态规划。 这道题我本来是想用最长递增子序列来做的&#xff0c;不过实在是太麻烦了&#xff0c;实在做不下去了。 然后看了题解&#xff0c;发现可以倒着数。 …

MTK-Android12-13 屏幕永不休眠功能实现

MTK-Android12-13 屏幕永不休眠功能实现 文章目录 需求场景参考资料修改文件简要分析实现方案默认休眠时间设置 def_screen_off_timeout息屏时间添加永不休眠 screen_timeout_entries更新休眠时间 updateUserActivitySummaryLocked 总结 需求 屏幕永不休眠功能 备注&#xff…

Lua 中,`math.random` 的详细用法

在 Lua 中&#xff0c;math.random 是用于生成伪随机数的核心函数。以下是其详细用法、注意事项及常见问题的解决方案&#xff1a; Lua 中&#xff0c;math.random 的详细用法—目录 一、基础用法1. 生成随机浮点数&#xff08;0 ≤ x < 1&#xff09;2. 生成指定范围的随机…

HOW - React Error Catch 机制

目录 1. 错误边界&#xff08;Error Boundaries&#xff09;使用场景写法&#xff08;类组件方式&#xff09;&#xff1a;componentDidCatch 2. 事件处理器中的错误3. 异步函数中的错误&#xff08;如 fetch、Promise&#xff09;4. 全局未捕获错误&#xff08;适用于整个 Rea…

1.ElasticSearch-入门基础操作

一、介绍 The Elastic Stack 包含ElasticSearch、Kibana、Beats、LogStash 这就是所说的ELK 能够安全可靠地获取任何来源、任何格式的数据&#xff0c;然后实时地对数据进行搜索、分析和可视化。Elaticsearch,简称为ES&#xff0c;ES是一个开源的高扩展的分布式全文搜索引擎,是…

通过扣子平台将数据写入飞书多维表格

目录 1.1 创建飞书开放平台应用 1.2 创建飞书多维表格 1.3 创建扣子平台插件 1.1 创建飞书开放平台应用 1.1.1 打开地址&#xff1a;飞书开放平台&#xff0c;点击创建应用 注&#xff1a;商店应用需要申请ISV资质&#xff0c;填写企业主体信息&#xff0c;个人的话&#x…