stm32+esp8266+机智云手机app

news2025/4/12 15:08:38

现在很多大学嵌入式毕设都要求云端控制,本文章就教一下大家如何使用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.coloradmin.cn/o/2331145.html

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

相关文章

【android bluetooth 框架分析 01】【关键线程 1】【关键线程介绍】

1. 为什么学习蓝牙协议栈之前&#xff0c;必须先梳理清楚这几大线程&#xff1f; 为什么 学习协议栈之前 最好是要先梳理清楚 关键线程 bt_stack_manager_threadbt_jni_threadbt_main_threadbt_a2dp_sink_worker_thread 1.1 蓝牙协议栈是典型的“多线程异步系统” 蓝牙协议…

CAS与sychronized优化

文章目录 CAS优化sychronized优化 CAS优化 CAS 优化过程: CAS是一种乐观锁机制&#xff0c;它通过比较内存中的值与预期值是否一致来决定是否更新。如果一致&#xff0c;则更新&#xff1b;如果不一致&#xff0c;则说明有其他线程修改了该值&#xff0c;CAS操作失败&#xff…

软考中级-软件设计师 2023年上半年下午题真题解析:通关秘籍+避坑指南

&#x1f4da; 目录&#xff08;快速跳转&#xff09; 大题&#xff08;下午题&#xff09;&#xff08;每题15分&#xff0c;共75分&#xff09;一、数据流图/数据库设计 &#x1f4be;&#x1f33e; 试题一&#xff1a;农事管理服务平台数据流分析问题1&#xff1a;实体识别问…

数据结构|排序算法(二)插入排序 希尔排序 冒泡排序

一、插入排序 1.算法思想 插入排序&#xff08;Insertion Sort&#xff09;是一种简单的排序算法&#xff0c;其基本思想是&#xff1a;将待排序的元素插入到已经有序的序列中&#xff0c;从而逐步构建有序序列。 具体过程如下&#xff1a; 把待排序的数组分为已排序和未排…

案例-流量统计

1.建一个data目录&#xff0c;在data下建log.txt文件 输入手机号码 上行流量 下行流量 2.在com.example.flow下建四个Java类3.flowBean flowMapper flowReducer flowDriver

Codeforces Round 1011 (Div. 2)

Dashboard - Codeforces Round 1011 (Div. 2) - Codeforces Problem - B - Codeforces 题目大意&#xff1a; 给你一个数组&#xff0c;你可以用一段子序列中没有出现的最小非负整数,替换数组中的组序列&#xff0c;经过若干操作&#xff0c;让数组变为长度为1&#xff0c;值…

时序数据异常检测-综述

更新中 异常检测基本概念 广义的Out-of-Distribution(广义的OOD)来描述异常检测的相关问题。OOD包括五个相关的子领域,分别为Anomaly Detection(AD)、Novelty Detection(ND)、Open Set Recogntion(OSR)、Out-of-Distribution(OOD)和Outlier Detection(OD)。这5个…

多类型医疗自助终端智能化升级路径(代码版.下)

医疗人机交互层技术实施方案 一、多模态交互体系 1. 医疗语音识别引擎 # 基于Wav2Vec2的医疗ASR系统 from transformers import Wav2Vec2Processor, Wav2Vec2ForCTC import torchaudioclass MedicalASR:def __init__(self):self.processor = Wav2Vec2Processor.from_pretrai…

蓝桥杯专项复习——双指针

目录 双指针算法&#xff1a;双指针算法-CSDN博客 最长连续不重复子序列 P8783 [蓝桥杯 2022 省 B] 统计子矩阵 双指针优化思路&#xff1a;当存在重复枚举时&#xff0c;可以考虑是否能使用双指针进行优化 双指针算法&#xff1a;双指针算法-CSDN博客 最长连续不重复子序列…

BetaFlight参数配置解读

BetaFlight参数配置解读 &#x1f4cc;相关篇《Betaflight固件编译和烧录说明》&#x1f955;各型号已编译好的配置文件资源&#xff08;.config&#xff09;&#xff1a;https://github.com/betaflight/unified-targets/tree/master/configs/default&#x1f33f;各型号配置头…

Java 容器源码分析

一、哈希表 1、引入 hash 表 在无序数组中按照内容查找&#xff0c;效率底下&#xff0c;时间复杂度是 O(n) 在有序数组中按照内容查找&#xff0c;可以使用折半查找&#xff0c;时间复杂度 O&#xff08;log2n&#xff09; 哈希表可以不进行比较&#xff0c;通过计算得到地…

【Java中级】11章、枚举 - java引用数据类型,枚举介绍、快速入门,了解枚举类的基本使用方式【1】

文章内容&#xff1a; 自定义实现枚举enum关键字实现枚举 ❤️内容涉及枚举的定义&#xff0c;快速入门&#xff0c;注意事项和小题巩固知识点 &#x1f308; 跟着B站一位老师学习的内部类内容&#xff0c;现写这篇文章为学习内部类的小伙伴提供思路支持&#xff0c;希望可以一…

Jmeter 插件【性能测试监控搭建】

1. 安装Plugins Manager 1.1 下载路径&#xff1a; Install :: JMeter-Plugins.org 1.2 放在lib/ext目录下 1.3 重启Jmeter&#xff0c;会在菜单-选项下多一个 Plugins Manager菜单&#xff0c;打开即可对插件进行安装、升级。 2. 客户端(Jmeter端) 2.1 安装plugins manager…

【ES系列】Elasticsearch从入门到精通保姆级教程 | 启篇

🔥 本系列将带你从零开始学习Elasticsearch,通过保姆级教程,手把手教你掌握这个强大的搜索与分析引擎。无论你是完全的新手,还是想系统学习ES的开发者,这个系列都能满足你的需求。 📚博主匠心之作,强推专栏: JAVA集合专栏 【夜话集】JVM知识专栏数据库sql理论与实战【…

Unity中Spine骨骼动画完全指南:从API详解到避坑实战

Unity中Spine骨骼动画完全指南:从API详解到避坑实战 一、为什么要选择Spine? Spine作为专业的2D骨骼动画工具,相比传统帧动画可节省90%资源量。在Unity中的典型应用场景包括: 角色换装系统(通过插槽替换部件)复杂连招系统(动画混合与过渡)动态表情系统(面部骨骼控制)…

C++Cherno 学习笔记day17 [66]-[70] 类型双关、联合体、虚析构函数、类型转换、条件与操作断点

b站Cherno的课[66]-[70] 一、C的类型双关二、C的union&#xff08;联合体、共用体&#xff09;三、C的虚析构函数四、C的类型转换五、条件与操作断点——VisualStudio小技巧 一、C的类型双关 作用&#xff1a;在C中绕过类型系统 C是强类型语言 有一个类型系统&#xff0c;不…

wordpress 利用 All-in-One WP Migration全站转移

导出导入站点 在插件中查询 All-in-One WP Migration备份并导出全站数据 导入 注意事项&#xff1a; 1.导入部分限制50MB 宝塔解决方案&#xff0c;其他类似&#xff0c;修改php.ini配置文件即可 2. 全站转移需要修改域名 3. 大文件版本&#xff0c;大于1G的可以参考我的…

【工具使用】在OpenBMC中使用GDB工具来定位coredump原因

在OpenBMC调试中&#xff0c;有时会产生coredump却不知道从哪里入手分析&#xff0c;GDB工具就可以提供帮助。 1 编译带GDB工具的镜像 OpenBMC镜像中默认没有加入GDB工具&#xff0c;因此首先需要编译一个带GDB工具的OpenBMC镜像用于调试。在recipes-phosphor/packagegroups/…

Linux系统(Ubuntu和树莓派)的远程操作练习

文章目录 一、实验一&#xff08;一&#xff09;实验准备&#xff08;二&#xff09;Ubuntu 下的远程操作&#xff08;三&#xff09;树莓派下的远程操作&#xff08;四&#xff09;思考 二、实验二1.talk程序2. C 编写 Linux 进程间通信&#xff08;IPC&#xff09;聊天程序 一…

高效创建工作流,可实现类似unreal engine的蓝图效果,内部使用多线程高效执行节点函数

文章目录 前言&#xff08;Introduction&#xff09;开发环境搭建&#xff08;Development environment setup&#xff09;运行&#xff08;Run test&#xff09;开发者&#xff08;Developer&#xff09;编译&#xff08;Compile&#xff09;报错 前言&#xff08;Introductio…