一、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指令运行情况。
1.直接将ESP-01插入正点原子战舰版 ATK-MODULE。
2.必须短接USART3组下的PB11(RX) GBC_TX , PB10(TX) GBC_RX.