打印
[应用相关]

ESP8266与STM32

[复制链接]
228|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
实现的最终功能是能够通过手机连上ESP8266作为服务端模式下的wifi,让后在手机上发送相关的指令,esp8266接收后再通过串口发送给单片机 ,间接的来控制我们的外设。

esp8266常用指令介绍
具体的用法可以查看相关的esp8266的手册
下面就只介绍一下配置三种不同模式常用的几个指令




使用特权

评论回复
沙发
尽快回复过|  楼主 | 2024-6-30 18:30 | 只看该作者
模式一:STA模式

//通俗的来讲 该模式就是将esp8266作为客户端 来连接服务端(可以通过我们手机开热点)
1. AT+CWMODE=1                    设置模组为STA模式。(串口助手)
2. AT+CWLAP                            查询附近 WIFI(串口助手)
3. AT+CWJAP="nova5Pro","yin12345"   连接 WIFI(串口助手)
4. AT+CIFSR                       查看路由器分配给模组的IP地址,例如 192.168.43.20(串口助手)
5. AT+CIPMUX=1                    打开多连接(串口助手)
6. AT+CIPSERVER=1,8080         设置模块服务器端口(串口助手).
7. 打开网络调试助手进行设置:请打开电脑去连接路由器的WIFI热点。并且打开网络调试助手,在网络调试助手上输入连接模块的 IP和设置的端口。
8. AT+CIPSEND=0,11                进入数据发送模式为11个字节

使用特权

评论回复
板凳
尽快回复过|  楼主 | 2024-6-30 18:31 | 只看该作者
在电脑终端查看当前Ip ipconfig

使用特权

评论回复
地板
尽快回复过|  楼主 | 2024-6-30 18:31 | 只看该作者
记住该Ip在我们配置的时候会使用到 让后通过网络串口助手打开服务端 在使用另外一个串口助手打开就可以观察到我们客户端的启动情况 和 二者之间的数据收发 在esp8266.c中 打开我最开始注释的就可以了

使用特权

评论回复
5
尽快回复过|  楼主 | 2024-6-30 18:31 | 只看该作者
模式二:AP 模式

//AP模式就是让我们的8266模块作为热点 让我们来连接 实现局域网的无线控制
1.  AT+CWMODE=2                              开启 AP 模式(串口助手)
2.  AT+CWSAP="ESP8266","12345678",11,0     设置模块的 wifi 和密码(串口助手)
3.  AT+CIPSERVER=1,8080                     设置模块服务器端口(串口助手),
4.  打开电脑或者手机上的TCP助手去连接模块建立的AP热点
5.  打开网络调试助手,输入连接模块的 ip 和设置的端口。
6. AT+CIFSR       查看当下的ip
7.  AT+CIPSEND=0,11                          进入数据发送模式为11个字节(串口助手)

使用特权

评论回复
6
尽快回复过|  楼主 | 2024-6-30 18:31 | 只看该作者
下面串口打印出来的信息就可以观察到我们的配置已经成功了
并且可以看到esp8266作为服务端下的IP,我们通过手机或者网络串口助手连接
输入该IP和我们配置的端口号就可以了
注意:

使用特权

评论回复
7
尽快回复过|  楼主 | 2024-6-30 18:32 | 只看该作者

使用特权

评论回复
8
尽快回复过|  楼主 | 2024-6-30 18:32 | 只看该作者
通信连接

上面就实现了简单的通信

模式三:STA+AP 模式

该模式就是上面两种模式的共存模式,一般没有用到 就不做具体介绍了感兴趣的同学可以自己去试试。

使用特权

评论回复
9
尽快回复过|  楼主 | 2024-6-30 18:32 | 只看该作者
最后在讲一下透传模式

透传模式简单的来说就是实现我们发送的数据,发送什么另一端就接收什么,可以一直发送。
如果不开启透传模式,发送数据前都必须先发送指令AT+CIPSEND=num,
例如T+CIPSEND=4  //发送的数据长度不能大于4 要不然在次发送的时候句处于忙的状态。

AT+CIPMODE=<1> :进入透传模式
AT+CIPSEND :之后发送的所有内容将全部当成数据
注意:透传只能在单连接模式下进行,所以在建立连接之前一定要用(AT+CIPMUX=0 设置单连接)
退出透传模式: 发送数据"+++"就可以了。注意:此时“+++”后面,不接“发送新行”!

使用特权

评论回复
10
尽快回复过|  楼主 | 2024-6-30 18:33 | 只看该作者
c 主程序
/***************************************************/
//该程序还是借鉴前面提到的博主,后面会根据自己功能的需求进行相应的修改

#include "stm32f10x.h"
#include "bsp_usart.h"
#include "delay.h"
#include "led.h"
#include "usart3.h"
#include "string.h"
#include "esp8266.h"
/**
  * @brief  主函数
  * @param  无
  * @retval 无
  */
int main(void)
{       
  USART_Config();
        delay_init();
        LED_Init();
       
        usart3_init(115200);

        esp8266_start_trans();       
       
        printf("初始化完成Start Test\n");
       
        USART3_RX_STA=0;
  while(1)
        {       

    if(USART3_RX_STA&0x8000)    //如果消息接收完成,则处理
                {
                        if(strstr((const char*)USART3_RX_BUF,"on"))  //这里是看接收到的消息中有没有自己设置的命令“on”,strstr()函数不会用的可以搜一下
                                {
                                        GPIO_ResetBits(GPIOC,GPIO_Pin_13);
                                }
                        if(strstr((const char*)USART3_RX_BUF,"off"))
                        {
                                GPIO_SetBits(GPIOC,GPIO_Pin_13);
                        }
                        USART3_RX_STA=0;   //消息处理完成,开始重新接收
                        memset(USART3_RX_BUF,0,600);         //将接收区清0
                }

        }       
}
/*********************************************END OF FILE**********************/

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

517

帖子

0

粉丝