ESP8266与手机透传通信实现(STM32F103C8T6 HAL库)附带APP和完整代码

一、目标

        stm32f103c8t6用串口发送AT指令控制esp8266发送数据到手机APP上,同时手机也可以发送数据到stm32f103c8t6主控,控制LED的亮灭。

         将esp8266模块的GND、VCC、TXD、RXD、CH-PD与单片机对应引脚连接,其中TXD与RXD要反接,模块在工作时CH-PD要处于高电平状态。

二、串口助手实验过程  

        步骤:1 esp8266配置wifi模式  AT+CWMODE=1

                   2 esp8266重启  AT+RST

                   3 开启手机热点

                   4 esp8266连接手机热点  AT+CWJAP="热点名称","热点密码"

                   5 esp8266设置成单路模式  AT+CIPOMUX=0   

                   6 esp8266开启透传模式   AT+CIPMODE=1

                   7 打开手机APP,建立tcp server配置端口号,点击激活就可以看到服务器的ip地址

                   8 esp8266建立TCP连接   AT+CIPSTART="TCP","ip地址",端口号

                   9 进入透传模式 AT+CIPSEND  

        

        具体作如下:

        打开手机热点再以下步骤

       在助手串口助手输入AT指令,发送的时候注意勾选“发送新行”

配置完以上就可以打开手机app,建立一个服务端

点击激活以后就会弹出ip地址,如下图,记住ip地址 

接下来就可以建立tcp连接,输入AT指令,填好ip地址、端口号,就可以发送,返回CONNECT则连接成功,就可以接着发送进入透传模式的AT指令

出现这个箭头表示可以发送数据了,同时app上会出现esp8266连接的图标

到这里就配置完成,接下来就可以发送数据了。

串口助手发送数据到手机app(注意要取消勾选“发送新行”)

 app上就接收到从串口助手发送过来的数据了

 手机app发送数据到串口助手

在输入框输入内容,点击发送

 串口助手收到数据

三、stm32f103c8t6发送AT指令控制esp8266与手机APP通信

        如果是esp8266的第一次配置,建议先用串口助手配置,直接下载代码会连接失败。

用串口助手配置后,重新上电会自动连接手机热点,这样就可以省下前面好几个步骤了。

        我用的是串口3来做收发指令。对应引脚 TX–PB10  RX–PB11

        esp8266配置代码

void esp8266_start_trans(void)//ESP8266配置
{
	
//第一次配置esp8266模块需解开以下注释 (esp8266第一次配置建议用串口助手)	
/*	
	esp8266_send_cmd("AT+CWMODE=1","OK",50);//设置为AP模式
	esp8266_send_cmd("AT+RST","ready",20);//重启
	HAL_Delay(1000);       
	HAL_Delay(1000);
	HAL_Delay(1000);`
	HAL_Delay(1000);
	esp8266_send_cmd("AT+CWJAP=\"heimao\",\"840777967\"","OK",200);//连接WiFi名称、密码 
	HAL_Delay(1000);`
	HAL_Delay(1000);
*/
	esp8266_send_cmd("AT+CIPMUX=0","OK",20);//配置单路连接模式
	HAL_Delay(1000);
	esp8266_send_cmd("AT+CIPMODE=1","OK",20);//开启透传模式
	HAL_Delay(1000);
	esp8266_send_cmd("AT+CIPSTART=\"TCP\",\"192.168.234.24\",8080","OK",200);//建立TCP连接
	HAL_Delay(1000);
	esp8266_send_cmd("AT+CIPSEND","OK",50);//进入透传模式
	HAL_Delay(1000);
}

接收代码

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  UNUSED(huart);

	if(huart->Instance == USART3)
	{	
		if(Uart3_Rx_Cnt >= 255)  //检测是否溢出
		{
			Uart3_Rx_Cnt = 0;
			memset(RxBuffer,0x00,sizeof(RxBuffer)); //清除缓存区	        
		}
		else
		{		
			RxBuffer[Uart3_Rx_Cnt] = usart3_buffer;   //接收数据缓存
			Uart3_Rx_Cnt++;
		}
			HAL_UART_Receive_IT(&huart3, (uint8_t *)&usart3_buffer, 1);
		}
	}

操作步骤:

        1 完成stm32f103c8t6与esp8266的接线

        2 打开手机热点

        3 打开手机APP,建立tcp server配置端口号,点击激活就可以看到服务器的ip地址

        4 下载代码

        5 连接成功

操作展示

        已提前开启热点

esp8266_1

点击下发链接 内有完整代码

https://live.csdn.net/v/294693

物联沃分享整理
物联沃-IOTWORD物联网 » ESP8266与手机透传通信实现(STM32F103C8T6 HAL库)附带APP和完整代码

发表评论