一、目标
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
点击下发链接 内有完整代码