esp8266与stm32、手机通讯(原子云)——hal库(有代码)

本文所讲: 正点原子的wifi模块esp8266与正点原子开发板战舰V3(stm32f103zet6)及手机app通讯

esp8266分为三种工作模式
STA:8266连接到网络比如wifi、手机热点等。
AP:8266作为热点,由手机连接到8266.
STA+AP:两种模式兼容。
本文章的实现是采用第一种方式。
首先百度搜索原子云(手机通讯就是用原子云app),进入设备管理,新建设备,(图中的是我以前建的,如果你第一次使用原子云下图应该没有设备)。
在这里插入图片描述

选择ESP8266,填写设备名称和密码。
在这里插入图片描述
上图的的编号和你刚才设置的密码接下来会用到。(用你自己的编号)

硬件连接:

在这里插入图片描述

必须短接:PB11(RX)和 GBC_TX 以及 PB10(TX)和 GBC_RX。
此时8266与开发板的串口3相连(波特率为115200)

代码实现:
利用hal库与keil5进行实现。cubemx里配置好串口1(需要在代码里重定义printf函数)和串口3。(既然使用8266了,相信这一步对你来说小菜一碟)

首先了解几个AT指令

AT+CWMODE=1 //设置8266为STA模式
AT+RST //复位
WIFI CONNECTEDWIFI GOT IPAT+CWJAP=“热点名称”,“热点密码”//连接手机热点
AT+ATKCLDSTA=“上面说的编号”,“设置的密码”//连接到原子云

除连接到原子云需要每次上电都配置外,其余指令只需初始化一次,因此我们可以利用串口1和串口助手直接发送AT指令完成前三个指令。

将8266的VCC连到单片机的5V,GND与单片机的GND相连,TXD与单片机的RXD相连,RXD与单片机的TXD相连

发送指令如下图,发送第一个指令时极有可能乱码,再发送一次就好了
在这里插入图片描述

发送复位指令后会出现乱码和一个logo,如下图
在这里插入图片描述
最后发送连接手机热点的指令。在此步骤之前要先打开手机热点,然后就可以出现下图内容。
在这里插入图片描述
完成以上步骤后将8266插到之前的排母上,然后只需在代码里实现连接到原子云即可。

代码实现:
在主函数中添加如下代码
在这里插入图片描述

你可能发现代码好像怪怪的,好像多了好多 \ ,这里要提到转义字符的概念,字符串中是不能直接输出 " 的,解决方法就是在 " 前加 \ ,这样就可以输出 " 了,这里的 \ " 就是转义字符。
在这里插入图片描述

然后编译,下载到单片机,稍等片刻,即可连接到原子云。
在这里插入图片描述

这样就完成了电脑与单片机通讯了吗?并没有!我们现在是在已经连接到手机热点的基础上进行的与原子云连接。那如果将热点关闭,单片机断电。然后打开热点,单片机重新上电会发生什么?你可以试一下,你会发现连接不到原子云了。
这是因为代码的执行速度比8266连接到手机的速度快得多,也就是当8266还没连接到手机时,8266连接原子云的指令已经执行完毕了。

所以在执行连接到原子云的指令之前,应该延时几秒等待8266连接到手机热点,我的8266连接到手机时间是7s左右,所以我延时8s。
在这里插入图片描述
上文说过,单片机重新上电后发送的第一条消息会乱码,所以这里我们发送两次指令,间隔500ms。这样就实现了电脑与单片机通讯。

手机与单片机通讯
下载原子云app。
链接:https://pan.baidu.com/s/1Kzpj4MArcxq1judQC3swPA
提取码:t7vu
安装成功之后进入登陆界面,需要输入的token需要到原子云网页里找,进入原子云网页,点击左下角账号信息,即可看到API TOKEN.
登陆成功后会发现一片空白。
点击分组管理,点击创建分组,分组名称随便起。之后点击操作里的分组设置
在这里插入图片描述
之后勾选,并移动到右面,点击保存。
在这里插入图片描述

按以上步骤操作后,重新登陆原子云app。即可与单片机通讯。

下面举个例子,手机输入123使led亮灭
代码如下:
首先定义有三个元素的数组,

uint8_t buffer[3];

之后在主函数的while里添加以下代码,
在这里插入图片描述
方便你cv

HAL_UART_Receive(&huart3, buffer,3,0xffff);
     if(strcmp(buffer,"123") == 0)
      {
          HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);//我自己定义的
      } 

别忘了添加头文件

> #include <string.h>

之后编译,下载到单片机中。即可发现led一直在闪烁。

至此,本文所讲内容结束了,大家也可以尝试用串口中断来实现消息的发送。其实当你把这个功能和项目里其他功能结合时可能会出现一些逻辑上的问题,并不是直接cv就可以的。这里博主希望各位可以在学习过程中自己解决问题,最后希望我们一起进步。

### 回答1: ESP8266 是一种常用的 WiFi 模块,STM32 是一种微控制器。要连接手机 APP,通常需要在 ESP8266 上运行一个服务器程序,并在 STM32 上运行一个客户端程序。客户端程序和服务器程序之间通过 WiFi 通信,并且手机 APP 与服务器程序之间通过网络连接。 需要注意的是,这种连接方式需要你对网络编程和通信协议有一定了解。 ### 回答2: ESP8266STM32是两款常用的单片机,它们的连接可以实现很多功能。其中,连接手机APP是很常见的应用,可以让用户通过APP控制ESP8266STM32,实现远程控制、数据采集等功能。 连接ESP8266STM32需要使用串口通信,因为ESP8266STM32都有串口接口。首先需要定义好通信协议,即ESP8266STM32之间如何交互和传输信息。可以使用简单的命令字符串来实现控制,如发送“LED ON”可以控制LED灯的开启。同时,也需要在APP中定义好与ESP8266STM32通信的协议和格式。 ESP8266STM32的连接方式有很多种,可以通过WiFi连接,也可以通过蓝牙连接。其中,WiFi连接和蓝牙连接都有各自的优缺点。WiFi连接能够实现更长的传输距离和更大的带宽,但是需要连接到WiFi网络,可能存在网络不稳定的问题,同时也需要对网络安全进行保护。而蓝牙连接则适合于近距离传输,具有更低的功耗和更简单的连接方式,但是传输距离有限。 在连接ESP8266STM32之前,也需要下载相应的驱动和库文件,并对ESP8266STM32进行相应的配置。同时,还需要对APP进行相应的开发,包括界面设计、协议定义、UI逻辑等方面的开发。 总之,将ESP8266STM32连接到手机APP可以实现很多有趣的功能。但是需要对硬件、软件进行相应的配置和开发,才能实现连接与控制。同时,也需要注意网络安全和数据传输的保护,确保用户数据的安全性。 ### 回答3: ESP8266是一款非常流行的Wi-Fi芯片,而STM32则是一款非常强大的单片机。将ESP8266STM32相结合,可以实现无线模块和单片机的连接。同时,连接手机APP,也可以实现无线控制。 实现ESP8266STM32的连接,可以采用UART串口通信的方式。具体步骤如下: 1.首先,在STM32上选择一路UART口,用来和ESP8266模块通信。 2.将ESP8266连接到STM32的UART口,并且将ESP8266的波特率设置为STM32选定的波特率。然后,可以使用AT指令进行通信。 3.在STM32开发板上,编写代码,实现与ESP8266的通信。可以通过发送AT指令,来控制ESP8266模块的功能。 4.开发手机APP,并与ESP8266模块进行连接。使用手机APP,可以发送指令到ESP8266,然后ESP8266通过串口将指令发送给STM32,实现控制。 需要注意的是,ESP8266的功耗较低,需要电源的供给。同时,使用ESP8266时需要注意其版本,一些较早的版本可能无法实现和STM32的正常通信。 在实现ESP8266STM32连接手机APP的过程中,除了硬件连接以外,还需要编写软件程序实现控制。需要掌握一些编程语言的知识,例如C语言、AT指令等等。因此,对于初学者而言,可能需要一些时间和精力来学习这些知识。不过,只要掌握了基本知识,就能够比较容易地实现ESP8266STM32连接手机APP的控制。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值