STM32+ESP8266 WiFi连接机智云平台APP远程控制教程
本文档将介绍如何用STM32+ESP8266 WiFi模块从零开始连接上机智云,并通过APP进行远程控制。
机智云官网:机智云|智能物联网操作系统 (gizwits.com)
准备:STM32、ESP8266、手机、可上网的WiFi。
1.创建设备
1.1 注册登陆
请自行注册账号并登陆,这里不作展开。
1.2 创建产品
进入开发者中心,点击创建产品:
以照明产品为例,创建一个自定义方案的灯,如下:

填写产品属性定义信息:

创建之后,显示如下:

点击“去编辑”,创建数据点,如下:
由于LED灯只有开关2个状态,因此是布尔型(bool),同时LED是可以控制开关的,因此是读写类型是“可写”。

1.3 生成代码
产品创建完成后,点击左右功能栏的“MCU开发”:

选择硬件平台型号、Product Secret,如下:


生成代码成功。
2. 代码验证
代码验证包括硬件准备、代码烧录测试等步骤。
硬件准备包括STM32及其外设等连接、WiFi模块烧录机智云固件等。
2.1 WiFi模组烧录
由于机智云平台的连接协议不是开放的,因此我们自行实现连接到云平台,只能按照它的要求,烧录其定制的固件到WiFi模块,这样才能正确连接。
2.1.1 硬件连接
固件烧录的WiFi模块与串口模块接线图:

为了方便,建议购买一个烧录器,如下:

将ESP8266直插进去即可。
2.1.2 软件及固件下载
烧录软件下载:
安信可ESP8266系列接入机智云方案及问题排查指引 - Gizwits

机智云固件下载:
Gizwits

下载如上图固件。
2.1.3 固件烧录
打开烧录工具:ESPFlashDownloadTool_v3.6.1.0.exe
在文件夹:安信可ESP8266系列模组资料\烧录工具\FLASH_DOWNLOAD_TOOLS_V3.6.1.0\
打开后如图:

选择ESP8266 Download Tool:

烧录文件选择机智云提供的固件:
GAgent_00ESP826_04020034_8MbitUser1_combine_201806091441.bin
其他配置项如上图所示。
点击START开始烧录。
等待完成即可。
2.2 硬件电路连接
根据机智云生成代码里面用到的GPIO来连接电路,这样就不需要修改代码,如下:
1、STM32开发板:要与生成代码所选的“硬件平台”对应,如本示例使用的STM32F103C8T6
2、WiFi模组:ESP8266模组,与STM32连接,生成的代码默认用的是UART2。
3、按键2个:按键1(KEY1)与GPIO B10连接,按键2(KEY2)与GPIO B11连接。
原理图如下:

2.3 代码测试
解压生成的代码,打开keil工程,编译、烧录。
烧录程序后运行时,分别按下KEY1和KEY2会有相应打印,如下图:

若运行日志输出具备相关信息(KEY1 PRESS、KEY2 PRESS等),则说明硬件没有问题。
3. 连接云平台
3.1 APP下载
进入机智云官网的下载中心:Gizwits
找到调试APP,可通过二维码下载,如下:

3.2 APP给设备配网
打开APP,先注册登陆,登陆成功后如下图:

点击添加设备,如下:
选择热点配网

进入热点配网,输入WiFi账号和密码:

上面的是路由器的WiFi名称和密码;
下面的是ESP8266发射的WiFi名称和密码。
注:ESP8266的WiFi需要先短按一下KEY2进入热点配网模式,再转到手机的WLAN列表查找XPG-GAgent-开头的WiFi,默认密码是:123456789
如我的ESP8266后面是FBE3,输入如下:

点击下一步,模组类型选择“乐鑫”,进入以下界:

提示将设备调试到待连接状态。
此时将设备上电后,短按一下KEY2按键,再点击“我已完成上述操作”。
进入下一步的界面如下:

点击蓝色字体,自动跳转到手机的WLAN界面,选择ESP8266的热点进行连接。
连接上热点后,再返回APP,可见正在搜索连接设备中,如下:

等待连接成功。
最终可能会提示配置超时:

请确保输入的WiFi名称和密码是否正确。
但经常会出现提示配置超时,但实际上是成功的,此时可点击取消,回到主界面看是否有添加到新设备,若有新设备则表示配网成功。
如下图表示成功配网:

一旦配网成功,在WiFi名称及密码不变的情况下,不需要再进行配网,每次开机会自动回连。
3.3 APP远程控制设备
在APP主界面中,点击绑定的设备“LED”进入设备详情,如下:

点击LED按键,切换开关状态,如打开再关闭,可见日志输出也对应:

打开keil工程,可找到处理在如下位置:

如上图,我们只需在对应位置添加打开或关闭LED的操作代码即可实现APP远程控制LED的功能。
4.云平台开发板及更多功能
可能有部分同学缺少硬件或对硬件不熟悉,曾哥也为此设计了一套简单的机智云平台开发板,并配套了详细的教程,有需要的同学可联系曾哥。
此开发板可实现基本的指令下发、数据上传等数据上下行功能,指令下发如APP远程控制LED开关,数据上行如上传温湿度到云平台,同时预留OLED屏也可拓展更多功能。
硬件清单:
stm32f103c8t6最小系统板、ESP8266 WiFi模块、按键*2、LED*3、温湿度传感器DHT11、0.96寸OLED屏、USB电源模块等。
机智云平台开发板实物:

原理图及PCB:


整套开发板配套完善资料,可快速入门并上手,亦可用于二次开发,大大提升项目开发效率。
写在最后:
资料/指导答疑/技术交流/选题/帮助,请点链接:
stm32.txt · zengzr/share_contact - Gitee.com
如有任何问题,请联系作者,谢谢!
- - - 作者:曾哥,专注嵌入式。写于2024-9-10
相关文章:
STM32+ESP8266 WiFi连接机智云平台APP远程控制教程
本文档将介绍如何用STM32ESP8266 WiFi模块从零开始连接上机智云,并通过APP进行远程控制。 机智云官网:机智云|智能物联网操作系统 (gizwits.com) 准备:STM32、ESP8266、手机、可上网的WiFi。 1.创建设备 1.1 注册登陆 请自行注册账号并登陆…...
学懂C++(六十):C++ 11、C++ 14、C++ 17、C++ 20新特性大总结(万字详解大全)
一、引言 随着计算机科学与技术的飞速发展,编程语言也在不断进化以满足日益增长的需求。C是一门集高性能和灵活性于一身的编程语言,自1983年诞生以来不断演进,逐渐成为了众多领域的主流编程语言。为了进一步提升开发效率和代码质量࿰…...
杭电1008电梯
提供两种做法,第一种不知道为啥不ac。。。 #include<iostream> using namespace std; //不清楚为什么报错了 int a[10000],x[10000]; int main(){int n;while(cin>>n,n!0){for(int i0;i<n;i){cin>>a[i];if(i0) x[i](65)*a[i]-5;else {if(a[i-…...
【Python小知识 - 2】:在VSCode中切换Python解释器版本
文章目录 在VSCode中切换Python解释器版本 在VSCode中切换Python解释器版本 在VSCode中按下快捷键CtrlShiftP,出现命令框。 输入以下命令: Python: Select Interpreter输入命令回车后即出现不同的Python解释器选项,选择想要切换的Python解释器…...
ubuntu meson安装
安装 sudo python3 -m pip install meson sudo python3 -m pip install ninja问题 libdrm ERROR: Dependency “libdrm” not found, tried pkgconfig and cmake Unable to correct problems, you have held broken packages. sudo apt-get update --fix-missing sudo apt in…...
记者协会评审系统-需求分析
记者协会评审系统-需求分析 文章目录 记者协会评审系统-需求分析一、参与角色二、业务流程2.1 作品推荐收集2.2 初步审核2.3 评审功能(初评)2.4&5 定评和审定三、功能清单2.1 基础功能2.2 业务功能2.3.1.单位投稿功能2.3.2.推荐作品分类管理2.3.3. 稿件初审2.3.4.评审功能…...
python 检索与该查询最相似的句子 使用库hflayers和sentence_transformers来实现遇到的问题
此篇文章总结遇到三个问题(3. OSError: We couldn’t connect to ‘https://huggingface.co’ to load this file, couldn’t find it in the cached files and it looks like sentence-transformers/all-mpnet-base-v2 is not the path to a directory containing a file nam…...
计算机毕业设计 在线新闻聚合平台的设计与实现 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...
【机器学习随笔】概率论与实际问题的对应
主要从直观看待问题的角度,对概率分布进行分类。 一、时间维度 1、一个事件两次发生的时间间隔或者说,单位时间内发生了两次的概率,用指数分布 2、多个事件发生的时间间隔,用Gamma分布。 3、单位时间了发生了k次的概率,…...
C++初阶学习——探索STL奥秘——模拟实现list类
1、基本框架 list 由三个类构建而成: 节点类:每个节点必须的三部分(指向前一个节点的指针、指向后一个节点的指针、当前节点存储的数据) 迭代器类:此时的迭代器为双向迭代器,比较特殊,需要对其进行封装,如 it并非使迭代器单纯向后移动&…...
生命之光不灭:帕金森综合征晚期,如何携手共度温暖岁月
在岁月的长河中,每个人都是自己故事的作者,而面对帕金森综合征这一挑战,尤其是步入晚期的老人,他们的故事更显坚韧与温情。今天,就让我们一起探索,如何在科学护理与人文关怀的双重滋养下,让帕金…...
Matlab simulink建模与仿真 第十五章(信号源库)
参考视频:simulink1.1simulink简介_哔哩哔哩_bilibili 一、信号源库中的模块概览 注:部分模块在第二章中有介绍,本章不再赘述。 二、from输入源模块 1、From Workspace模块 (1)该模块可从MATLAB工作区、模型工作区…...
Java笔记 2 java概述和基础知识
第2章 Java概述与基础知识 Java 历史 Java技术体系平台 Java 重要特点 Java 虚拟机[JVM] JDK,JRE JDK 基本介绍 JRE 基本介绍 JDK、JRE 和JVM 的包含关系 Java 快速入门 注意细节 Java 转义字符 Java 常用的转义字符 注释(comment) Java 中的注释类型 关于文档注释 …...
在使用ST-Link下载程序时出现“Error: Flash Download failed - Cortex-”
使用ST-Llink下载程序出现这种错误的本质是下载地址不正确 下面是一个STM32 F103C6T6A芯片的Memory map,注意RAM和flash的起始地址 解决办法:把keil中的debug设置成和自己芯片一直的下载起始地址...
长沙自闭症青少年学校:实现孩子的全面成长
在长沙自闭症青少年学校的选择中,星贝育园以其独特的教育理念、专业的师资力量和全面的康复服务脱颖而出,为自闭症青少年及其家庭提供了重要的支持和帮助。以下是对星贝育园的一些详细评价: 教育理念与承诺 星贝育园秉承“实现孩子的全面成…...
系统 IO
"裸奔"层次:不带操作系统的编程 APP(应用程序) -------------------------------- Hardware(硬件) 特点:简单,应用程序直接操作硬件(寄存器) 缺点: 1. 搞应用开发的必须要了解硬件的实现细节,能够看懂原理图…...
Mysql InnoDB 存储引擎简介
InnoDB 存储引擎是 Mysql 的默认存储引擎,它是由 Innobase Oy 公司开发的 Mysql 为什么默认使用 InnoDB 存储引擎 InnoDB 是一款兼顾高可靠性和高性能的通用存储引擎 在 Mysql 5.5 版本之前,默认是使用 MyISAM 存储引擎,在 5.5 及其之后版…...
驾校预约学习系统的设计与实现
摘 要 伴随着信息技术与互联网技术的不断发展,人们进到了一个新的信息化时代,传统管理技术性没法高效率、容易地管理信息内容。为了实现时代的发展必须,提升管理高效率,各种各样管理管理体系应时而生,各个领域陆续进到…...
Python--读取文件时出现的报错
在使用 Python 读取文件时,尤其是涉及到文件编码的场景,常常会遇到编码解码问题。常见的编码问题主要发生在尝试解码不同编码格式的文件时,比如将使用 GBK 编码的文件按 UTF-8 解码,或者相反。 常见编码错误及其原因:…...
基于http请求的一种安全校验认证方案记录
目录 需求简述 设计方案 参考代码 可优化点 需求简述 日常的开发对接过程中,经常会遇到需要给其他合作伙伴或者其他系统通过接口的方式提供数据,或者有些接口是需要提供通用能力出去的。 从安全的角度考虑,我们往往需要给接口加一些安全校…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...
