出售本站【域名】【外链】

首页 AI人工智能软件 qqAI人工智能 微信AI人工智能 抖音AI人工智能 快手AI人工智能 云控系统 手机AI人工智能

正点原子wifi模块连接原子云

2022-11-19

前言

最近正在作卒业设想,题目问题是对于STM32的一个智能电梯控制系统,此顶用到了WiFi模块。我最初步运用的是ESP8266-01S那款模块去连贯onenet、天工、阿里云那些,但都以失败告末。但正在博主的不懈勤勉下(其真愁坏了),最后找到了正点本子的那款ATK-ESP8266模块乐成连贯了本子云并真现了远程控制罪能。

所以正在那里呢也是给各人分享一下博主的连云历程,也算是记录一下,免得厥后原人忘了怎样连的了。
原文视频教程拜谒B站:

相关软件例程代码我会放正在文章终尾

提示:以下是原篇文章正文内容,下面案例可供参考

一、本子云是什么?

本子云是正点本子推出的一款物联网云平台,我个人感觉要比其余的云平台略微好用一点,运用起来不这么复纯,连贯简略,应付小皂来说及其友好。并且本子哥官方也会有一定的技术撑持(有一说一,本子哥不愧是本子哥,实不是吹的,失真好用,实香)。

二、如何真现远程控制?

其真远程控制应付很多小皂来说是一个很难的罪能,觉得很“高峻上”,其真不然。
远程控制常见的无非蓝牙控制和WiFi控制,蓝牙控制没有什么好说的,距离有限,难度也不大。咱们那里次要讲演WiFi控制。
WiFi控制望文生义,通过WiFi来真现远程控制咱们的方法。要真现远程控制,这么首先咱们就须要晓得WiFi模块的三种形式:

1、AP形式(无线接入点)
AP形式便是WiFi模块原人成为一个热点,此时他就像是一个效逸器(server),能够让手机、电脑等方法连入,构成一个局域网。
!!!留心是手机自动去连贯模块。

2、STA形式(无线末端)
STA(Station)形式的ESP8266就像是一个客户端(client)他可以去连贯手机的热点大概其余的WiFi。
!!!留心是模块自动去连贯WiFi。

3、STA+AP形式(共存)
共存,指的是既可以通过路由器连贯到互联网,也可以做为一个热点被其他方法连贯,从而真现广域网和局域网的无缝切换。

这么正在原文例程中,咱们次要运用STA形式,果为咱们须要让模块接入互联网上云。
详细的远程控制见下图:

移动端控制ATK-ESP8266模块

当咱们远程控制时,咱们须要通过本子云demo发送数据到本子云效逸器,本子云效逸器接管数据之后再下发给ATK-ESP8266模块。同样,接管来自ATK-ESP8266模块的音讯时,咱们也须要将数据从ATK-ESP8266发送至本子云效逸器,再由本子云效逸器下发到咱们的挪动端上。

三、详细轨范 1.硬件筹备

1、ATK-ESP8266
2、STM32F103C8T6
3、USB-TLL(调试信息打印)
4、蜂鸣器(模拟执止机构)
5、杜邦线若干
6、STLINK

ATK-ESP8266

上面是正点本子的ATK-ESP8266模块。

USB-TTL


那是USB-TTL,次要用于调试信息的打印。

2.总体连线

ATK-ESP8266取STM32F103C8T6的连贯干系
只需用到模块的4个引脚

STM32F103C8T6ATK-ESP8266
5V   VCC  
GND   GND  
PB11(USART3_RX)   TXD  
PB10(USART3_TX)   RXD  

ATK-ESP8266的RST引脚取IO-0引脚默许高电平,可以不接。
RST引脚是复位引脚,假如须要软件复位的话,可以接上,将其拉低便可。
IO-0引脚是烧写固件时运用的,烧写时将其拉低。
VCC引脚我问过官方的技术撑持,他们说3.3V也可以给模块供电,但是我个人倡议用5V供电。
串口一定要反接,模块的TX接单片机RX,模块的RX接单片机的TX。

USB-TTL取STM32F103C8T6的连贯干系

STM32F103C8T6USB-TTL
PA9(USART1_TX)   RXD  
PA10(USART1_RX)   TXD  
GND   GND  

正在那里咱们不须要接USB-TTL的5V

单片机运用串口3来通过WiFi模块取云端停行支发数据,运用串口1来输出调试信息。

下面是总体连线图

总体连线图

3.本子云设置

首先咱们进入本子云 https://cloud.alientek.com/ ,没有账号的须要先注册一个账号。

注册好之后就进入了以下页面,咱们首先点击方法打点注册一个方法。

在这里插入图片描述

点击新删方法选择ESP8266

在这里插入图片描述

方法称呼等闲输入

在这里插入图片描述

创立好方法之后就像下面一样,记与那个编号,背面会用到。可以看到如今形态是断开的。

在这里插入图片描述

创立好方法之后,咱们须要再创立一个分组。
咱们点击分组打点,选择创立分组,分组称呼原人填写

在这里插入图片描述


而后咱们还须要将咱们创立好的方法添加进分组,刚创立好的分组,方法数质是0个,当咱们把方法添加进分组之后,方法数质会变为1,如下图:

在这里插入图片描述


在这里插入图片描述


最后,咱们点击账号信息,记与那个API,那是咱们登录本子云demo的”账号暗码“

在这里插入图片描述


至此,云实个设置就大罪成功了!

4.WiFi代码局部

由于目前博主的名目还没有完善,暂时名目源码不会给出来,背面完善之后正在放出源码,那里只给出WiFi局部的相关例程代码,欲望能给各人一些启示。
代码参考过那位大佬。那位博主的博客给了我很是大的启示,很是感谢那位博主。

首先是ESP8266配置

printf ( "\r\n正正在配置 ESP8266 ......\r\n" ); //1、向模块发送测试指令 AT ESP8266_AT_Test (); //2、设置模块形式为STA形式 AT+CWMODE=1 ESP8266_Net_Mode_Choose ( STA ); //3、设置要连贯路由器的 ID 和暗码 while ( ! ESP8266_JoinAP ( macUser_ESP8266_ApSsid, macUser_ESP8266_ApPwd ) ); //4、连贯本子云 发送方法编号和暗码 while ( ! ESP8266_ConnectYuanziyun ( yuanziyun_DeviceID, yuanziyun_DevicePassWord ) ); printf ( "\r\n配置 ESP8266 完结\r\n" );

AT指令测试函数,那个函数将发送AT指令到ATK-ESP8266模块,看能否能接管到回复。

/* * 函数名:ESP8266_AT_Test * 形容 :对WF-ESP8266模块停行AT测试启动 * 输入 :无 * 返回 : 无 * 挪用 :被外部挪用 */ void ESP8266_AT_Test ( void ) { char count = 0; macESP8266_RST_HIGH_LEVEL(); Delay_ms ( 1000 ); while ( count < 10 ) { if( ESP8266_Cmd ( "AT", "OK", NULL, 500 ) ) return; //假如接管到模块返回的OK指令,就间接返回 ESP8266_Rst(); //否则复位模块,从头发送AT测试指令 ++ count; } }

设置ATK-ESP8266形式为STA形式

/* * 函数名:ESP8266_Net_Mode_Choose * 形容 :选择WF-ESP8266模块的工做形式 * 输入 :enumMode,工做形式 * 返回 : 1,选择乐成 * 0,选择失败 * 挪用 :被外部挪用 */ bool ESP8266_Net_Mode_Choose ( ENUM_Net_ModeTypeDef enumMode ) { switch ( enumMode ) { case STA: return ESP8266_Cmd ( "AT+CWMODE=1", "OK", "no change", 2500 ); case AP: return ESP8266_Cmd ( "AT+CWMODE=2", "OK", "no change", 2500 ); case STA_AP: return ESP8266_Cmd ( "AT+CWMODE=3", "OK", "no change", 2500 ); default: return false; } }

ATK-ESP8266模块连贯热点

/* * 函数名:ESP8266_JoinAP * 形容 :WF-ESP8266模块连贯外部WiFi * 输入 :pSSID,WiFi称呼字符串 * :pPassWord,WiFi暗码字符串 * 返回 : 1,连贯乐成 * 0,连贯失败 * 挪用 :被外部挪用 */ bool ESP8266_JoinAP ( char * pSSID, char * pPassWord ) { char cCmd [120]; sprintf ( cCmd, "AT+CWJAP=\"%s\",\"%s\"", pSSID, pPassWord ); return ESP8266_Cmd ( cCmd, "OK", NULL, 5000 ); }

ATK-ESP8266模块连贯本子云

/* * ESP8266_ConnectYuanziyun * 形容 :WF-ESP8266模块连贯本子云 * 输入 :pSSID,本子云上方法ID * :pPassWord,本子云上方法暗码 * 返回 : 1,连贯乐成 * 0,连贯失败 * 挪用 :被外部挪用 */ bool ESP8266_ConnectYuanziyun ( char * pSSID, char * pPassWord ) { char cCmd [120]; sprintf ( cCmd, "AT+ATKCLDSTA=\"%s\",\"%s\"", pSSID, pPassWord ); return ESP8266_Cmd ( cCmd, "OK", "CONNECTED", 5000 ); }

以上是ATK-ESP8266模块配置局部,下面是数据支发局部

while ( 1 ) { sprintf ( cStr, "\r\nNow Floor:1 \r\n"); printf ( "%s", cStr ); //打印数据 ESP8266_SendString ( ENABLE, cStr, 0, Single_ID_0 ); //通过透传形式 发送信息到本子云 Delay_ms ( 1500 ); if ( strEsp8266_Fram_Record .InfBit .FramFinishFlag ) { USART_ITConfig ( macESP8266_USARTx, USART_IT_RXNE, DISABLE ); //禁用串口接管中断 strEsp8266_Fram_Record .Data_RX_BUF [ strEsp8266_Fram_Record .InfBit .FramLength ] = '\0'; //接管到的数据终尾添加完毕符 printf ( "\r\n%s\r\n", strEsp8266_Fram_Record .Data_RX_BUF ); //调试口打印接管到的数据 //strstr是C语言中的函数,做用是返回字符串中初度显现子串的地址。 // 若接管到的字符串中包孕字符串 "1" 蜂鸣器响一次 if ( ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "1" ) ) != 0 ) { GPIO_SetBits(GPIOA,GPIO_Pin_11); Delay_ms ( 500 ); GPIO_ResetBits(GPIOA,GPIO_Pin_11); } // 若接管到的字符串中包孕字符串 "2" 蜂鸣器响两次 else if ( ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "2" ) ) != 0 ) { for(i = 0 ; i < 2 ; i++) { GPIO_SetBits(GPIOA,GPIO_Pin_11); Delay_ms ( 500 ); GPIO_ResetBits(GPIOA,GPIO_Pin_11); Delay_ms ( 500 ); } } // 若接管到的字符串中包孕字符串 "3" 蜂鸣器响三次 else if ( ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "3" ) ) != 0 ) { for(i = 0 ; i < 3 ; i++) { GPIO_SetBits(GPIOA,GPIO_Pin_11); Delay_ms ( 500 ); GPIO_ResetBits(GPIOA,GPIO_Pin_11); Delay_ms ( 500 ); } } strEsp8266_Fram_Record .InfBit .FramLength = 0; strEsp8266_Fram_Record .InfBit .FramFinishFlag = 0; USART_ITConfig ( macESP8266_USARTx, USART_IT_RXNE, ENABLE ); //使能串口接管中断 } } 5.测试局部

ATK-ESP8266模块曾经乐成上云。

在这里插入图片描述


可以看到,WiFi模块曾经能够和本子云停行数据交互了,本子云能够支到来自模块的信息,并且模块也能够支到来自本子云的信息。

在这里插入图片描述

下面咱们再来试一试挪动实个控制。
挪动端咱们须要用到本子云demo那个软件,各人可以找官方的技术撑持要。咱们须要通过本子云demo将数据上传到本子云,本子云正在将数据下发到模块,从而真现远程控制。
首先咱们打开本子云demo那个软件:

在这里插入图片描述


打开后填入咱们前面提到的的API

在这里插入图片描述


点击登录之后就可以进入本子云,并且能够咱们创立的方法正在线,并且连入了手机热点

在这里插入图片描述


咱们点击那个方法,将进入以下界面,而后,咱们点击订阅方法音讯,将会提示订阅乐成,如图:

在这里插入图片描述


至此,咱们的手机就能够远程取ATK-ESP8266模块停行数据支发了,下面咱们来试一下:

在这里插入图片描述


可以看到,咱们通过手机发送“3”,串口输出打印了“3”,注明ATK-ESP8266模块曾经乐成支到了来自手机的数据并且单片性能够一般办理。同时单片机发送给手机的信息,正在APP上也能够一般显示。
注明咱们曾经根柢真现了WiFi远程控制那个罪能!
但是那个例程代码正在接管数据局部有一个小bug,便是strstr函数是检索子串正在字符串中初度显现的位置的,所以纵然输入了一些其余的无关字符,但假如蕴含了你想要的子串,这么依然会执止相应函数。
果此,要处置惩罚惩罚那个问题咱们只须要将strstr函数变动为字符串比较函数strcmp便可。

总结

以上便是原日要讲的内容,原文仅仅简略引见了如何运用ATK-ESP8266连贯本子云,此中可能有讲的不好的,以至讲错的处所,欲望各人了解,果为博主也是学生党一枚,果为作卒业设想所以才接触那个模块没多暂(轻点喷)。有很多大神都讲得比我好,我也参考过很多大神的文章,简曲觉得原人有很多有余,那里只是给各人分享一下我的经历,也是我自己第一次写文章,有余之处多见本。(如有侵权,请正在评论区留言,会即刻增除)。

由于某些同学将无偿给代码当成我应作之事,所以昨天起(2022.4.24)代码不再无偿分享
须要例程代码私聊发送,如没回复也可B站私信我

视频解说请看B站:

热门文章

随机推荐

推荐文章

友情链接: 永康物流网 本站外链出售 义乌物流网 本网站域名出售 手机靓号-号码网