STM32学习记录1----ESP8266无线模块的使用


一、ESP8266简介

在这里插入图片描述
ESP8266模块是一种很广泛使用的单片机WIFI通信模块,下面主要描述如何在STM32上代码实现ESP8266的通信。

二、AT指令核心

初始化

	//ESP初始化 
	SendATCmd("+++",500);    //退出透传模式
	SendATCmd("AT\r\n",500);    //测试ESP01模块是否存在
	SendATCmd("ATE0\r\n",500);    //关闭模块回显
	SendATCmd("AT+GMR\r\n",500);    //查看模块版本信息
	SendATCmd("AT+CWMODE=3\r\n",500);    //开启STA+AP模式
	SendATCmd("AT+CIPMUX=0\r\n",500);    //关闭多连接
	
	char str[200];
	sprintf(str,"AT+CWJAP=\"%s\",\"%s\"\r\n","这里输入热点名称","这里输入热点密码");   //账号和密码的输入,建议使用2.4Ghz频段
	SendATCmd(str,3000); //连接无线路由器或者手机热点,等待十秒

每隔10s通过API接口访问心知天气获得实时天气的json字符串

if(osKernelGetTickCount()>tick_for_weather)
{
    
    
  tick_for_weather=osKernelGetTickCount()+10000;
  SendATCmd("AT+CIPSTART=\"TCP\",\"api.seniverse.com\",80\r\n",2000);//连接心知天气TCP服务器	
  SendATCmd("AT+CIPMODE=1\r\n",500);  //开启透传模式
  SendATCmd("AT+CIPSEND\r\n",500);   //开启透传
  SendATCmd("GET https://api.seniverse.com/v3/weather/now.json?key=Srb4ras_BDB82jLDh&location=hangzhou&language=en&unit=c\r\n",3000);
  SendATCmd("+++",500);    //退出透传模式	
}

三、辅助函数

void SendATCmd(char *cmd,int waitms)   //发送AT指令给串口6
{
    
                                     
  if(NULL!=cmd) 
	{
    
    
	HAL_UART_Transmit(&huart6,(uint8_t*)cmd,strlen(cmd),0xFFFF);
	if(waitms>0)
	osDelay(waitms);//延时等待ESP01模块应答时间
	}	
}

四、效果图

在这里插入图片描述
如有不懂请留言哦。

猜你喜欢

转载自blog.csdn.net/taiyuezyh/article/details/124208572