机智云 esp8266 arduino(esp8266接入机智云教程)

作者:电脑培训网 2024-05-07 09:36:57 927

第十章STM32+ESP8266连接机智云,实现小型物联网智能家居项目前言

最近有很多朋友私信,要求我推出一个关于远程控制以及通过APP获取传感器信息的实验教程。老实说,这在嵌入式研究生项目中被认为是高于平均水平的。正好我也对写作感兴趣。整篇文章4700多字。我写得很详细了。跟着文章一步一步来就可以了。

机智云 esp8266 arduino(esp8266接入机智云教程)

主要材料准备

STM32F103C8T6板

ESP8266模块

第9章中的所有模块,几条杜邦线。

1.APP制作

1.1首先利用互联网上的一些自助物联网开发平台制作APP。这里我选择机智云。在浏览器中搜索机智云,进入官网,如下图。

1.2进入官网后,点击右上角的开发者中心。

1.3大多数同学还没有注册机智云账号,请先注册一个。

1.4注册完成后,登录账户,进入如下界面。点击左侧“智能产品”栏中的“+创建”即可开始制作APP。

1.5点击“+创建”后,会进入下图界面选择APP类型。我们点击照明,然后点击灯泡,然后点击自定义方案,最后点击灯光。

1.6完成步骤1.5后,我们就选择了APP的模板类型。会弹出下面的界面。我们只需要如下图红框所示进行设置即可。按照完成操作。之后,单击界面底部的“创建”。

1.7完成步骤1.6后,您将自动进入如下所示的界面。这里我们开始给APP添加内容,点击下图进行编辑。

然后参考下图红框进行填写;

在标志名称方面,我们在取名时尽量做到“一目了然”,即一眼就能知道其含义。因为机智云后面自动生成的单片机程序代码中代表窗口开关的变量名就是根据这个识别名生成的。

显示名称:是稍后在APP上显示的文字。比如我们填写“窗口开关”,那么后面生成的APP上就会有一个地方标注有“窗口开关”的文字。然后我们继续填写下面的读写类型和数据。输入,让APP上“窗口开关”文字旁边显示一个按钮,这样我们一眼就能看出,这个按钮是用来控制窗口开关的;

读写类型:取决于这个功能如何实现:

一般APP上需要手动操作的东西都是可写的。比如需要添加一个按钮或者滑块,选择可写,所以我们实现了窗口的切换,显然是填充的和可写的。

如果只显示数值,则为只读,例如显示温度、湿度值。

数据类型:窗口的状态有“打开”和“关闭”两种状态,因此数据类型为布尔值类型。

填写完标识名称、显示名称、读写类型、数据类型后,点击界面下方的确定。

1.8完成上述步骤后,您将自动来到如下所示的界面。这时候我们只控制窗口开关的APP就已经完成了,那么我们怎么看效果呢?我们先点击下图左侧的虚拟设备。

1.9完成上述步骤后,您将来到以下界面。然后在手机上下载机智云APP

这里我们可以在APP上打开车窗开关,如下图。

然后我们会发现网页上的界面开始动起来,如下图所示。

一个只有控制窗户开闭功能的APP太单调了。我们点击下图左侧的产品信息,回到步骤1.7,继续添加APP的内容。

1.10然后点击左侧新建,参照步骤1.7操作填写识别名称、显示名称、读写类型、数据类型,完成APP新内容的添加。

下面4张图是我添加的功能。

然后按照步骤1.8进入1.9扫描设备二维码,即可看到APP视图。

这时候,你自己的APP就准备好了!按照步骤一步一步来,五分钟内完成!只要有一些手!

2.给ESP8266模块烧录固件

接下来,我们需要烧录ESP8266模块的固件。

2.1首先从机智云官网下载ESP8266固件到本地电脑。

ESP8266GAgent固件下载地址:

2.2确认下载的固件

下载到本地电脑后解压,得到如下文件。本文使用的ESP8266模块烧录下图的bin文件。

2.3ESP8266接线。

按照下图的连接方法将ESP8266连接到USB转TTL模块。连接线后,将USB转TTL模块连接到电脑的USB口,STM32也必须保持供电。

2.4设备烧录。

完成上述步骤后,我们以管理员身份打开资料中提供的刻录工具。

单击“确定”

2.5刻录设置。

1.勾选并选择烧录固件

2.选择步骤3.2时,我们刚刚确认了ESP8266固件

3.设置地址为0

4、SPISPEED选择40MHz

5、SPI模式选择DOUT

6.检查DoNotChgBin

7、选择USB转TTL模块对应的串口

8.选择波特率115200

2.6烧录操作

步骤1.选择正确的串口。串口连接成功后,点击“START”按钮,如下图

会出现

步骤2:拔掉ESP8266上的RST引脚线,即复位ESP8266。就会出现下图所示的情况。

步骤3、等待一段时间后,出现“FINISH”字样,表示烧录成功。

3、代码移植

现在APP已经写完了,ESP8266固件也烧录好了,接下来就是编写STM32程序了。

3.1机智云可以根据我们刚刚创建的APP,自动生成APP与STM32通信的代码工程。这是机智云官方给出的解释。如果你不明白就忽略它。不管怎样,我们将自动生成的代码中APP与STM32通信相关的代码移植到自己的项目中,实现与APP的相互通信。

执行下面两张图的操作即可自动生成代码。

第一的

然后

3.2完成上述操作后,稍等片刻,代码就会自动生成。我们下载并解压得到如下文件。我们只需要使用机智云文件夹和Utils文件夹中的内容即可。

将机智云自动生成代码项目中的机智云文件夹和Utils文件夹复制到资料中提供的基础项目中。基础工程的内容是在第九章代码工程的基础上再增加两个串口函数和一个定时器函数来实现1ms定时。

这里我解释一下,基础工程需要什么条件?答案是:必须具有两个串口功能和一个定时器功能,才能实现1ms定时。这一点可以从下图看出,机智云官网上有提到。因此,如果您不想使用资料提供的基础项目进行移植,而是想使用自己的项目进行移植,只要您的项目还有两个可用的串口和一个定时器,就可以继续。请跟随以下。

3.3然后打开数据中的基础项目。

代码中,两个串口和1s定时器初始化函数在main()函数中,见下图。

3.4将刚刚移植到基础工程的机智云文件夹和Utils文件夹中的C文件和H文件包含到工程中。

3.5接下来打开gizwits_product.c,将HAL相关代码替换为标准库代码。

接下来,对gizwits_product.h进行如下修改。

3.6以上一系列注释添加操作只是将机智云文件夹和Utils文件中的代码内容中所有HAL库函数相关的代码替换为标准库代码。接下来就是将机智云文件夹和Utils文件夹中的代码添加到基础中。项目代码执行。

3.6.1USART2的接收中断中添加gizPutData()。为什么选择USART2?因为在资料提供的基础工程中,USART2负责与ESP8266通信。。

3.6.2在定时器3中断函数中添加gizTimerMS()。为什么是定时器3?因为在资料提供的基础工程中,定时器3是用来实现1ms定时功能的。

3.6.3然后给gizwits_product.c中userHandle()函数中的各个变量赋值。这些变量就是我们在制作APP时设置为只读的数据内容,即温度、湿度、二氧化碳浓度和甲醛浓度。哪个变量是温度,哪个变量是湿度?这个取决于我们之前制作APP时取的标识名。详情请参见下图。

CO2是二氧化碳浓度数据点的标识名称,因此必须将二氧化碳浓度值赋给变量valueCO2,TVCO是甲醛浓度的标识名称。下图显示了完成的程序。

红框中的变量TEMP、HUMP、CO2和TVCO在main()函数中获取了温度值、湿度值、二氧化碳浓度值和甲醛浓度值,见下图。

3.6.4然后在main()函数中添加userInit()函数、gizwitsInit()函数和gizwitsSetMode()函数。这三个函数只需要运行一次,所以不要将它们放在while(1)循环中。。

阐明:

userInit()函数是在APP刚打开时设置APP上数据内容的初始值。这里不需要设置。如果要设置的话,只要打开下图红框中的注释,输入对应的识别名称即可。只要给变量赋值即可。

gizwitsInit()函数是打开一个环形缓冲区,我们直接调用即可。

关于gizwitsSetMode()函数,机智云官网也提供了解释。这里我们可以直接选择AirLink模式,即gizwitsSetMode()函数参数填2。

3.6.5在main()函数的while(1)循环中添加userHandle()函数和gizwitsHandle()函数。

阐明:

userHandle()函数,在步骤2.6.3中,我们给这个函数内部的数据点的数值变量赋值。我们还说过,我们会把这个函数放到main()函数的while(1)循环中,这样它就会不断执行,不断刷新数据点变量中存储的值会通过gizwitsHandle()函数实时上传到APP),使得APP上的温度、湿度、二氧化碳浓度、甲醛浓度数据不断更新。

gizwitsHandle((dataPoint_t*)currentDataPoint)函数,机智云官网解释了其功能。可以理解为这是一个后台程序,必须放在while(1)循环中才能时刻运行!

3.6.6步骤3.6.5完成后,代码就完成了APP上传感器数据实时更新的功能。事实上,我们不断地向APP发送传感器数据。下一步是完善APP发送命令时设备端的相应处理操作。即当APP发送关闭窗口命令时,我们的设备端就会采取相应的执行动作。

在gizwits_product.c中找到gizwitsEventProcess函数。该函数处理APP发出的命令事件。在该函数内的开关判断函数中,我们可以看到EVENT_WINDOW_ONOFF。我们一看就知道这里是处理窗口切换的地方。为什么?因为我们在步骤1.7中给窗口切换按钮的标识名称叫做WINDOW_ONOFF。我也要求朋友们在选择标志名称时要“清楚”,让他们一眼就能看出它的含义。箭头1所指处表示车窗开关按钮打开时,箭头2所指处表示车窗开关关闭时。知道了箭头1和2的含义后,我们就可以在箭头3和4处写出相应的操作了!

下图是写完相应操作后的截图。

至此,代码迁移工作已经完成。编译0警告0错误后,可以直接进入步骤4。

4成果演示。

4.1完成上一步后,代码移植工作就完成了。按照下图用杜邦线连接所有模块,然后使用Jlink或者STlink将上面完成的代码移植烧录到STM32中。

4.2将TLL转USB模块插入电脑,打开串口助手。你会看到串口正在打印信息。这里我们不关心打印内容。

4.3接下来,打开机智云APP,点击左上角的+,然后一键配置网络。

4.4

4.5

4.6

4.7当APP搜索附属设备时,STM32必须保持供电。以免影响配对。

4.8这时我们看串口打印助手打印的内容。配对过程中,如果出现下图红框内的打印信息,则说明APP已与您的设备配对。

4.9配对完成后,APP返回首页,我们可以看到有一个设备“亮起”,然后点击该设备。

4.10点击设备后,我们会看到左下图的内容,与OLED显示的内容略有不同。主要原因是APP的数据更新速度比OLED显示的慢。

4.11切换窗口演示

想要资料的同学评论区留下邮箱

相关推荐

  • 老师介绍培训机构给我,老师介绍培训机构给我们的启示

    老师介绍培训机构给我,老师介绍培训机构给我们的启示

    大家好,今天小编关注到一个比较有意思的话题,就是关于老师介绍培训机构给我的问题,于是小编就整理了4个相关介绍老师介绍培训机构给我的解答,让我们一起看看吧。家长对…

    老师介绍培训机构给我,老师介绍培训机构给我们的启示 2024-06-02 13:06:31
  • 感知机损失函数(感知器算法的损失函数)

    感知机损失函数(感知器算法的损失函数)

    【损失函数:3】感知损失:PerceptualLoss、总变异损失损失函数1.感知损失1.相关介绍1)什么是PerceptualLoss?2)感知损失是如何构建…

    感知机损失函数(感知器算法的损失函数) 2024-05-06 22:46:07
  • torch.tensor参数(torch.nn.linear函数的参数)

    torch.tensor参数(torch.nn.linear函数的参数)

    [torch.nn.Parameter]参数介绍及使用文章目录torch.nn.Parameter基本介绍参数构造参数访问参数初始化使用内置初始化自定义初始化参…

    torch.tensor参数(torch.nn.linear函数的参数) 2024-05-06 22:25:39
  • chat type(chatplus)

    chat type(chatplus)

    chatgpt功能显示Chatgpt不知道大家在浏览抖音的时候有没有看过一些人工智能取代人类的短视频。他们提到的主角是一个AGI型号——chatgpt。资本对其…

    chat type(chatplus) 2024-05-05 15:18:19
  • vue3中的setup(vue3.0 setup)

    vue3中的setup(vue3.0 setup)

    setup在vue3.0中的使用本文主要介绍setup在vue3.0中的使用。本文非常详细地介绍了这两种用法。对于大家的学习或者工作都有一定的参考价值。有需要的…

    vue3中的setup(vue3.0 setup) 2024-05-03 21:20:21
热门推荐

猜你喜欢