IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> K005 基于51/32 测试ESP-01S -> 正文阅读

[嵌入式]K005 基于51/32 测试ESP-01S

一. 硬件清单

1.STM32F103C8T6/STC89C52RC
2.ESP-01S模块
3.SWD或者JLINK
4.CH340串口模块
5.杜邦线若干

二. 资料清单

程序代码
文档资料
相关软件

三. ESP-01S简介

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四. 接线

因为51单片机只有一个串口,为了方便移植和测试,32也只用一个串口,32需要用两个串口的可自行更改。
请添加图片描述

五. 代码说明

以STM32F103C8T6为例

1. 串口通信配置

void USART_Config(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	USART_InitTypeDef USART_InitStructure;

	// 打开串口GPIO的时钟
	DEBUG_USART_GPIO_APBxClkCmd(DEBUG_USART_GPIO_CLK, ENABLE);
	
	// 打开串口外设的时钟
	DEBUG_USART_APBxClkCmd(DEBUG_USART_CLK, ENABLE);

	// 将USART Tx的GPIO配置为推挽复用模式
	GPIO_InitStructure.GPIO_Pin = DEBUG_USART_TX_GPIO_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(DEBUG_USART_TX_GPIO_PORT, &GPIO_InitStructure);

  // 将USART Rx的GPIO配置为浮空输入模式
	GPIO_InitStructure.GPIO_Pin = DEBUG_USART_RX_GPIO_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_Init(DEBUG_USART_RX_GPIO_PORT, &GPIO_InitStructure);
	
	// 配置串口的工作参数
	// 配置波特率
	USART_InitStructure.USART_BaudRate = DEBUG_USART_BAUDRATE;
	// 配置 针数据字长
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;
	// 配置停止位
	USART_InitStructure.USART_StopBits = USART_StopBits_1;
	// 配置校验位
	USART_InitStructure.USART_Parity = USART_Parity_No ;
	// 配置硬件流控制
	USART_InitStructure.USART_HardwareFlowControl = 
	USART_HardwareFlowControl_None;
	// 配置工作模式,收发一起
	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
	// 完成串口的初始化配置
	USART_Init(DEBUG_USARTx, &USART_InitStructure);
	
	// 串口中断优先级配置
	NVIC_Configuration();
	
	// 使能串口接收中断
	USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE);	
	
	// 使能串口
	USART_Cmd(DEBUG_USARTx, ENABLE);	    
}

2. 初始化指令配置

//定义相关字符串数组
char  RST[]="AT+RST\r\n"; //重启
//ESP-01S默认波特率115200,如果不是需要用串口助手调到115200或者用程序去调
char  UART[]="AT+UART=115200,8,1,0,0\r\n";//配置波特率,数据位,停止位,校验位,流控
char  CWMODE2[]="AT+CWMODE=3\r\n";// AP+Station模式
char  CIPMUX[]="AT+CIPMUX=1\r\n"; //多连
char  CIFSR[]="AT+CIFSR\r\n"; //查询本机地址
char  CIPSERVER[]="AT+CIPSERVER=1,8080\r\n";//TCP服务器
char  CWSAP[]="AT+CWSAP=\"TEST\",\"12345678\",1,3\r\n";//设置WIFI敏名称,密码,通道号,加密方式

//配置相关指令
void ManyConnect_AP(void)
{
	
		Usart_SendString(DEBUG_USARTx,RST);//重启
		DelayMs(500);
		while(!Usart_AT_flage);
		
		if(strstr(Usart_Receive, "OK") )
		{
					
                Usart_SendString(DEBUG_USARTx,"RST_OK\r\n");
                DelayMs(10);	//此处不延时会出现异常,ESP-01S和串口打印用不同串口时可不用此延时
                Clear_Usart_Receive();
		}
		Clear_Usart_Receive();
//		ESP8266_Set("UART_OK\r\n");
		Usart_SendString(DEBUG_USARTx,UART);//配置波特率,数据位,停止位,校验位,流控
		while(!Usart_AT_flage);
		
		if(strstr(Usart_Receive, "OK") )
		{
					
                Usart_SendString(DEBUG_USARTx,"UART_OK\r\n");
                DelayMs(10);	//此处不延时会出现异常,ESP-01S和串口打印用不同串口时可不用此延时
                Clear_Usart_Receive();
		}
		
		
		Usart_SendString(DEBUG_USARTx,CWMODE2);// AP+Station模式

		while(!Usart_AT_flage);
		if(strstr(Usart_Receive, "OK") )
		{
				
				Usart_SendString(DEBUG_USARTx,"CWMODE2_OK\r\n");
                DelayMs(10);            //此处不延时会出现异常,ESP-01S和串口打印用不同串口时可不用此延时
				Clear_Usart_Receive();
		}
		
		Usart_SendString(DEBUG_USARTx,CWSAP);//设置WIFI敏名称,密码,通道号,加密方式
		while(!Usart_AT_flage);
		if(strstr(Usart_Receive, "OK") )
		{
				
				Usart_SendString(DEBUG_USARTx,"CWSAP_OK\r\n");
                DelayMs(10);            //此处不延时会出现异常,ESP-01S和串口打印用不同串口时可不用此延时
				Clear_Usart_Receive();
		}
		
		Usart_SendString(DEBUG_USARTx,CIPMUX);//多连
		while(!Usart_AT_flage);
		if(strstr(Usart_Receive, "OK") )
		{
					
                Usart_SendString(DEBUG_USARTx,"CIPMUX_OK\r\n");
                DelayMs(10);    //此处不延时会出现异常,ESP-01S和串口打印用不同串口时可不用此延时
                Clear_Usart_Receive();
		}
		
	
	
		Usart_SendString(DEBUG_USARTx,CIPSERVER);//TCP服务器
		while(!Usart_AT_flage);
		if(strstr(Usart_Receive, "OK") )
		{
					
                Usart_SendString(DEBUG_USARTx,"CIPSERVER_OK\r\n");
                DelayMs(10);			//此处不延时会出现异常,ESP-01S和串口打印用不同串口时可不用此延时
                Clear_Usart_Receive();
                Usart_Connect_Buf_Flag=1;
		}
//		Clear_Usart_Receive();
	
}

3. 接受数据判断与验证

/*判断接收数据是否正常,并把接收到数据通过
串口打印出来,此处可添加其它响应函数,如点灯
等等。
*/
int main(void)
{	
	unsigned char  *PBuf;
  /*初始化USART 配置模式为 115200 8-N-1,中断接收*/
	DelayInit();
  USART_Config();

	ManyConnect_AP();
	Clear_Usart_Receive();
    while(1)
	{	

        PBuf=strchr(Usart_Receive,'+');
         if((PBuf[0]=='+')&&(PBuf[1]=='I')&&(PBuf[2]=='P')&&(PBuf[3]=='D')
             &&(PBuf[6]==',')&&((PBuf[9]>='0')&&(PBuf[9]<='9')))
         {
                PBuf[10]='\r';
                PBuf[11]='\n';
                
                Usart_SendString(DEBUG_USARTx,PBuf);	
                DelayMs(10);					 
                Clear_Usart_Receive();
             
                    
         }
	}	
}


4. 手机APP操作

请添加图片描述

5. 最终上位机显示

在这里插入图片描述

六. 资料获取

加群私聊群主可免费获得,群号:1041406448。相关模块例程也将持续更新

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-11 17:39:56  更:2021-10-11 17:40:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:41:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码