STM32以ESP8266作为wifi模块发送TCP消息

一、NodeMCU作为wifi模块

1.硬件测试型号

NodeMCU型号:ESP8266MOD。无需接外部电源和USB,需要刷AT固件(刷固件的教程在这里),这样才能响应AT指令。

  

STM32型号:正点原子战舰版(STM32F103ZET6),接通电源。

2.硬件针脚连接 

 

 3.下载源代码

WIFI模块ATK-ESP8266讨论链接资料下载

 资料下载后解压,打开源代码工程(位于“【正点原子】WIFI模块ATK-ESP8266资料\2,程序源码\(库函数版本,适合战舰V3和精英STM32开发板)扩展实验13 ATK-ESP8266 WIFI模块测试实验”)

4.修改源代码

原工程中用到了LCD屏幕、LED、KEY,这些其实都不需要,可以去掉。

(1)修改main.c

#include "sys.h"
#include "delay.h"
#include "usart.h" 	
#include "usart3.h"
#include "common.h" 

 int main(void)
 {	 
	u8 key,fontok=0; 	    
 
	delay_init();	    	
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	uart_init(115200);	 
	usart3_init(115200);	
	if(atk_8266_quit_trans() == 0)
	{
		while(atk_8266_send_cmd("AT","OK",20));
 
		while(atk_8266_send_cmd("ATE0","OK",20));
	 
		atk_8266_send_cmd("AT+CWMODE=1","OK",20);
		
		atk_8266_send_cmd("AT+CWJAP_DEF=\"ENJOY2018\",\"enjoy12345\"","OK",1000);
		
		atk_8266_send_cmd("AT+CIPMUX=0","OK",20);
		
		atk_8266_send_cmd("AT+CIPSTART=\"TCP\",\"192.168.43.146\",8088","OK",200);
		
		atk_8266_send_cmd("AT+CIPMODE=1","OK",200);
		
		atk_8266_send_cmd("AT+CIPSEND","OK",200);
	}
	
		
	delay_ms(1000);
	u8 *p;
	p=mymalloc(SRAMIN,32);
	
	while(1)
	{
		int a = rand();
		sprintf((char*)p,"score:%d",a);
		atk_8266_send_cmd(p,"OK",20);
		delay_ms(1000);
	}
}

 (2)修改atk_8266_send_cmd函数

        在atk_8266_send_cmd中增加一行输出AT指出的语句

......
    u3_printf("%s\r\n",cmd);	//发送命令
	printf("cmd:%s\r\n",(u8*)cmd);---//新增行
	if(ack&&waittime)		//需要等待应答
......

4.编译,写入hex到stm32板子。写入完成后按下stm32板子上蓝色开关按钮,重启板子并打开串口调试助手,查看AT指令运行情况。

二、ESP-01作为wifi模块

1.直接将ESP-01插入正点原子战舰版 ATK-MODULE。

2.必须短接USART3组下的PB11(RX)<---> GBC_TX ,    PB10(TX)<---> GBC_RX. 

猜你喜欢

转载自blog.csdn.net/zouxin_88/article/details/124044021