国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32使用ESP8266模塊AT指令連接心知天氣API獲取天氣信息

這篇具有很好參考價(jià)值的文章主要介紹了STM32使用ESP8266模塊AT指令連接心知天氣API獲取天氣信息。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

由于之前使用STM32單片機(jī)來開發(fā)一些物聯(lián)網(wǎng)的小項(xiàng)目,接觸到了WIFI模塊ESP8266,所以寫下來記錄一下。本文主要介紹的是STM32通過發(fā)送AT指令集來控制ESP8266 WIFI模塊連接WiFi并與心知天氣API建立TCP連接獲取天氣信息。

一、硬件連接

ESP8266我使用的是正點(diǎn)原子的ATK-ESP8266,已經(jīng)提前燒錄好AT指令集固件,至于固件的燒錄可以參考正點(diǎn)原子的教程或者去安可信官網(wǎng)查找相關(guān)資料即可。STM32單片機(jī)設(shè)計(jì)有USB轉(zhuǎn)串口即可。

STM32 VCC    ->  ESP8266 VCC
STM32 TXD2   ->  ESP8266 RXD
STM32 RXD2   ->  ESP8266 TXD
STM32 GND    ->  ESP8266 GND

這里用到了兩組串口,USART1用于打印調(diào)試信息到電腦的串口助手中;USART2用于主控與ESP8266的通信。串口配置代碼直接沿用了正點(diǎn)原子提供的。在這里就不貼出來了。


二、連接WiFi

ESP8266有三種WiFi模式,分別是station模式,AP模式和station+AP模式。簡(jiǎn)單來說,station模式就是8266作為連接WiFi的設(shè)備;AP模式就是8266作為提供WiFi的設(shè)備,相當(dāng)于手機(jī)的熱點(diǎn)功能。連接WiFi最簡(jiǎn)單的步驟就兩步:8266為station模式和連接WiFi。

設(shè)置WiFi模式

設(shè)置WiFi模式的AT指令有AT+CWMODEAT+CWMODE_CURAT+CWMODE_DEF。后面兩種指令的區(qū)別是后綴為DEF的指令會(huì)將設(shè)置保存到flash中,重新上電不需要再次設(shè)置。第一種不帶后綴的指令,官方文檔寫的是不建議使用,所以就用最后一種就行了。以下是官方文檔的具體說明STM32使用ESP8266模塊AT指令連接心知天氣API獲取天氣信息


連接WiFi

連接WiFi指令和設(shè)置WiFi模式指令一樣有三個(gè)版本,這里使用AT+CWJAP_DEF來說明。
STM32使用ESP8266模塊AT指令連接心知天氣API獲取天氣信息
ssid是你要連接WiFi的名字,pwd是密碼,bssid是當(dāng)有多個(gè)相同名字WiFi區(qū)分用的。值得注意的是,WiFi名字或者密碼有特殊符號(hào)要使用\進(jìn)行轉(zhuǎn)義。
所以,連接WiFi只需要發(fā)送以下指令即可:

//設(shè)置為station模式
AT+CWMODE_DEF=1\r\n
//連接WiFi
AT+CWJAP_DEF="你的WiFi名","你的WiFi密碼"\r\n

三、建立TCP連接

TCP連接這里以連接心知天氣獲取天氣信息為例。主要為3步:與心知天氣網(wǎng)站建立TCP連接,開啟透?jìng)?,發(fā)送GET請(qǐng)求獲取天氣信息。

心知天氣

心知天氣是提供天氣信息的API,可以使用GET請(qǐng)求獲取JSON格式的天氣信息,有免費(fèi)的版本可用,非常適合嵌入式應(yīng)用的開發(fā)。具體文檔說明和賬號(hào)申請(qǐng)可自行官網(wǎng)查看(https://www.seniverse.com) 。心知天氣會(huì)為每個(gè)賬戶提供公鑰和私鑰,這里我們只用到私鑰,只需替代掉接口網(wǎng)址中your_api_key為自己的私鑰即可。

https://api.seniverse.com/v3/weather/now.json?key=your_api_key&location=zhaoqing&language=en&unit=c

STM32使用ESP8266模塊AT指令連接心知天氣API獲取天氣信息


建立TCP連接

建立TCP,UDP或SSL連接使用指令AT+CIPSTART,具體參數(shù)如下:
STM32使用ESP8266模塊AT指令連接心知天氣API獲取天氣信息
因?yàn)槲覀円褂猛競(jìng)髋c網(wǎng)站通信,所以TCP必須設(shè)置為單連接;連接類型為TCP;遠(yuǎn)端IP可以是心知天氣的具體IP地址,也可以用域名api.seniverse.com來代替;心知天氣提供該服務(wù)的端口號(hào)是80端口。最后,建立TCP連接的AT指令是:

//建立TCP連接,參數(shù)為 連接類型 遠(yuǎn)端IP 遠(yuǎn)端端口號(hào)
AT+CIPSTART="TCP","api.seniverse.com",80\r\n

開啟透?jìng)?/h5>

開啟透?jìng)魇紫纫褂?mark>AT+CIPMODE=mode設(shè)置傳輸模式,mode為0是普通傳輸模式,mode為1是透?jìng)髂J?。設(shè)置完成后使用指令AT+CIPSEND開始傳輸,具體指令參數(shù)說明如下:
STM32使用ESP8266模塊AT指令連接心知天氣API獲取天氣信息
開啟透?jìng)骱鬅o需寫發(fā)送數(shù)據(jù)的長(zhǎng)度,直接發(fā)送AT+CIPSEND即可,8266返回>即表示成功進(jìn)入透?jìng)?,此時(shí)無法再發(fā)送AT指令,發(fā)送的字符將會(huì)被當(dāng)做數(shù)據(jù)全部發(fā)送給對(duì)方。若要退出透?jìng)鞣祷谹T指令模式,則要單獨(dú)發(fā)送+++,注意這里無需換行。

//設(shè)置傳輸模式為透?jìng)髂J?/span>
AT+CIPMODE=1\r\n
//開始透?jìng)?/span>
AT+CIPSEND\r\n
//退出透?jìng)?/span>
+++

GET請(qǐng)求

在進(jìn)入透?jìng)髦缶涂梢园l(fā)送我們的GET請(qǐng)求。在GET和空格后加上要訪問的接口地址就可以獲取到網(wǎng)站返回給我們的天氣信息了。記得更改私鑰和在后面加上換行。

GET https://api.seniverse.com/v3/weather/now.json?key=your_api_key&location=zhaoqing&language=en&unit=c\r\n

STM32使用ESP8266模塊AT指令連接心知天氣API獲取天氣信息文章來源地址http://www.zghlxwxcb.cn/news/detail-404016.html


四、核心代碼

//檢測(cè)接收到的應(yīng)答
uint8_t* Check_Command(char *str)
{
	char *strx = 0;
	if(USART2_RX_STA&0X8000)		//接收到一次數(shù)據(jù)了
	{ 
		USART2_RX_BUF[USART2_RX_STA&0X7FFF]=0;//添加結(jié)束符
		strx=strstr((const char*)USART2_RX_BUF,(const char*)str);
	}
	return (uint8_t *)strx;
}

//向8266發(fā)送命令
//cmd:發(fā)送的命令字符串
//ack:期待的應(yīng)答結(jié)果
//waittime:等待時(shí)間(單位:10ms)
//返回值:1,發(fā)送成功(得到了期待的應(yīng)答結(jié)果)
//       0,發(fā)送失敗
uint8_t Send_Command(char *cmd, char *ack, uint8_t waittime)
{
	uint8_t res=1; 
	USART2_RX_STA=0;
	u2_printf("%s\r\n",cmd);	//發(fā)送命令
	if(ack&&waittime)		//需要等待應(yīng)答
	{
		while(--waittime)	//等待倒計(jì)時(shí)
		{
			HAL_Delay(10);
			if(USART2_RX_STA&0X8000)//接收到期待的應(yīng)答結(jié)果
			{
				if(Check_Command(ack))
				{
					printf("ack:%s\r\n",(uint8_t*)USART2_RX_BUF);
					break;//得到有效數(shù)據(jù) 
				}
				USART2_RX_STA=0;
			} 
		}
		if(waittime==0)res=0; 
	}
	return res;
}

//向8266發(fā)送數(shù)據(jù)
void Send_Data(char *data)
{
	USART2_RX_STA=0;
	u2_printf("%s",data);	//發(fā)送數(shù)據(jù)
}

char Rcv_Str[1024] = "NULL";

//建立TCP連接,并開啟透?jìng)?/span>
void TCP_Connect()
{
	Send_Command("AT+CIPSTART=\"TCP\",\"api.seniverse.com\",80","OK",50);
	HAL_Delay(500);
	//查詢是否成功建立連接,成功則開啟透?jìng)靼l(fā)送數(shù)據(jù)
	if(Send_Command("AT+CIPSTATUS","TCP",20))
	{
		Send_Command("AT+CIPMODE=1","OK",20);	//設(shè)置為透?jìng)髂J?/span>
		Send_Command("AT+CIPSEND",">",20);	//開啟透?jìng)?/span>
		HAL_Delay(1000);
		//發(fā)送GET請(qǐng)求
		Send_Data("GET https://api.seniverse.com/v3/weather/now.json?key=SJhnSCUV2ASZsxCzh&location=zhaoqing&language=zh-Hans&unit=c\r\n");
		HAL_Delay(1000);
		strcpy(Rcv_Str,(const char*)USART2_RX_BUF);	//將接收到的返回?cái)?shù)據(jù)復(fù)制
	}
}

//退出透?jìng)?,斷開TCP連接
void TCP_Disconnect(void)
{
	//退出發(fā)送模式
	while((USART2->SR&0X40)==0);	//等待發(fā)送空
	USART2->DR='+';      
	HAL_Delay(15);					//大于串口組幀時(shí)間(10ms)
	while((USART2->SR&0X40)==0);	//等待發(fā)送空
	USART2->DR='+';      
	HAL_Delay(15);					//大于串口組幀時(shí)間(10ms)
	while((USART2->SR&0X40)==0);	//等待發(fā)送空
	USART2->DR='+';      
	HAL_Delay(1000);					//等待1s
	while(!Send_Command("AT","OK",20))//退出透?jìng)髋袛?
	{
		HAL_Delay(200);
	}
	//關(guān)閉透?jìng)髂J?/span>
	Send_Command("AT+CIPMODE=0","OK",20);
	//斷開TCP連接
	Send_Command("AT+CIPCLOSE","OK",20);
}
//主函數(shù)
int main(void)
{    
	HAL_Init();
    SystemClock_Config();
	USART1_Init(115200);
	USART2_Init(115200);
	
	HAL_Delay(1000);
	//測(cè)試ESP8266模塊是否正常
	if(Send_Command("AT","OK",10))
	{
		printf("ESP8266 Is Ready\r\n");
	}
	else
	{
		printf("ESP8266 Not Ready\r\n");
	}
	//如果WIFI不是Station模式,則設(shè)置為Station模式
	if(!Send_Command("AT+CWMODE_DEF?","1",20))
	{
		Send_Command("AT+CWMODE_DEF=1","OK",20);
	}
	//查詢WIFI是否連接,未連接則連接
	if(Send_Command("AT+CWJAP_DEF?","No AP",20))
	{
		HAL_Delay(500);
		Send_Command("AT+CWJAP_DEF=\"BieLai\",\"12345678\"","OK",50);
	}	
	HAL_Delay(1000);
	TCP_Connect();	//建立TCP連接
	printf("%s",Rcv_Str);	//打印網(wǎng)站返回的信息
	TCP_Disconnect();	//斷開TCP連接
	
	while(1)
	{
		HAL_Delay(1000);		
	}

到了這里,關(guān)于STM32使用ESP8266模塊AT指令連接心知天氣API獲取天氣信息的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • stm32---ESP8266的基礎(chǔ) AT 指令、基礎(chǔ) Wi-Fi 功能 AT 指令、TCP/IP 功能 AT 指令

    stm32---ESP8266的基礎(chǔ) AT 指令、基礎(chǔ) Wi-Fi 功能 AT 指令、TCP/IP 功能 AT 指令

    (常用基礎(chǔ)AT指令)主要了解其中指令A(yù)T、AT+RST、ATE: ? (1)當(dāng)參數(shù)是ATE1時(shí),顯示: (2)當(dāng)參數(shù)是ATE0時(shí),顯示: ? 說明: (1) Station 模式: 模塊相當(dāng)于一個(gè)客戶端,可以鏈接到其他路由器發(fā)出的WIFI信號(hào)。 (2)?SoftAP模式(軟路由模式):模塊本身相當(dāng)于一個(gè)路由器,其他設(shè)備可

    2024年02月04日
    瀏覽(25)
  • STM32發(fā)送數(shù)據(jù)ESP8266固件燒錄MQTT和AT指令調(diào)試與鏈接OneNET

    STM32發(fā)送數(shù)據(jù)ESP8266固件燒錄MQTT和AT指令調(diào)試與鏈接OneNET

    STM32連接ESP8266發(fā)送數(shù)據(jù)到OneNET平臺(tái) 1.硬件型號(hào):ESP8266-01s 和 USBTTL轉(zhuǎn)接口模塊 2.固件:1471_esp8266-at_mqtt-1m(MQTT透?jìng)鰽T固件(固件號(hào):1471)) 3.固件燒錄工具:flash_download_tool_3.9.4 固件下載和燒錄工具均可在安信可官網(wǎng)下載安信可AT固件下載 本文章使用的是XCOM V2.6 串口助手 4.On

    2024年02月04日
    瀏覽(40)
  • STM32通過串口2使用ESP8266WIFI模塊連接新大陸云平臺(tái)

    STM32通過串口2使用ESP8266WIFI模塊連接新大陸云平臺(tái)

    目錄 使用硬件: 分步驟:配置TCP連接,連接WIFI 1.使用ESP8266的復(fù)位引腳進(jìn)行復(fù)位 2.發(fā)送基本AT指令 3.連接新大陸 4.新大陸云平臺(tái)顯示在線及上傳數(shù)據(jù)測(cè)試成功 5.串口顯示 5.涉及的函數(shù) 發(fā)生AT檢測(cè)WIFI模塊錯(cuò)誤,如圖,代碼運(yùn)行停留在了.AT,在while中一直循環(huán),沒有往下跑了,這種

    2024年04月24日
    瀏覽(33)
  • stm32+AT指令+ESP8266接入華為云物聯(lián)網(wǎng)平臺(tái)并完成屬性上報(bào)與命令響應(yīng)

    stm32+AT指令+ESP8266接入華為云物聯(lián)網(wǎng)平臺(tái)并完成屬性上報(bào)與命令響應(yīng)

    (示例:stm32f103c8t6+esp 01s 串口A T 指令模式) 流程簡(jiǎn)介: ? ? ? 本期教程使用的是stm32+AT指令控制esp01s接入華為云聯(lián)網(wǎng)平臺(tái)完成數(shù)據(jù)上報(bào)與命令處理,在先前如果使用Arduino開發(fā)過后的esp8266可能已經(jīng)無法使用AT指令,或者出廠固件不支持全部的MQTT功能,這里我們首先對(duì)esp8266進(jìn)

    2024年02月02日
    瀏覽(40)
  • STM32-連接wifi模塊(esp8266)

    STM32-連接wifi模塊(esp8266)

    目錄 1. ESP8266模塊介紹 1.1. 系統(tǒng)結(jié)構(gòu)圖 1.2. 功能介紹 ?1.3. AT指令說明 ?2. STM32連接ESP8266 3. ESP8266示例 3.1. ESP8266透?jìng)髂J??3.2. ESP8266上傳數(shù)據(jù)例程 樂鑫智能互聯(lián)平臺(tái)——ESP8266 擁有高性能無線 SOC,是一個(gè)完整且自成體系的 WiFi 網(wǎng)絡(luò)解決方案,能夠獨(dú)立運(yùn)行,也可以作為 slave 搭

    2024年01月16日
    瀏覽(39)
  • STM32+ESP8266(AT固件)連接阿里云物聯(lián)網(wǎng) 保姆級(jí)教學(xué)(附代碼) --3. STM32硬件連接+keil代碼修改

    STM32+ESP8266(AT固件)連接阿里云物聯(lián)網(wǎng) 保姆級(jí)教學(xué)(附代碼) --3. STM32硬件連接+keil代碼修改

    提示:這里是從實(shí)際應(yīng)用如何使用教學(xué)配置,未從原理講解,適合小白從零開始到成功,比較有成就感 STM32+ESP8266(AT固件)連接阿里云物聯(lián)網(wǎng)系列保姆級(jí)教學(xué) 1. 創(chuàng)建產(chǎn)品和設(shè)備 2. 設(shè)置產(chǎn)品Topic數(shù)據(jù)和功能定義設(shè)備物模型數(shù)據(jù)顯示 3. 硬件連接+代碼修改 4. Web數(shù)據(jù)可視化 5.功能

    2024年02月05日
    瀏覽(26)
  • <ESP8266>W(wǎng)IFI模塊AT指令淺學(xué)

    <ESP8266>W(wǎng)IFI模塊AT指令淺學(xué)

    人生如逆旅,我亦是行人。 縮寫 意思 AT(automatic transmission) 自動(dòng)變速器 WiFi 無線網(wǎng) AP(Access Point) 無線訪問接入點(diǎn),無線路由器等類設(shè)備的統(tǒng)稱 AP 模式 無線接入點(diǎn)模式 RST(TCP協(xié)議的 6 個(gè)標(biāo)志之一) 表示重置連接、復(fù)位連接 TCP 傳輸控制協(xié)議 UDP 用戶數(shù)據(jù)報(bào)協(xié)議 SSL 安全套

    2024年02月04日
    瀏覽(30)
  • STM32+ESP8266(AT固件)連接阿里云物聯(lián)網(wǎng) 保姆級(jí)教學(xué)(附代碼)--1.創(chuàng)建產(chǎn)品和設(shè)備

    STM32+ESP8266(AT固件)連接阿里云物聯(lián)網(wǎng) 保姆級(jí)教學(xué)(附代碼)--1.創(chuàng)建產(chǎn)品和設(shè)備

    提示:這里是從實(shí)際應(yīng)用如何使用教學(xué)配置,未從原理講解,適合小白從零開始到成功,比較有成就感 STM32+ESP8266(AT固件)連接阿里云物聯(lián)網(wǎng)系列保姆級(jí)教學(xué) 1. 創(chuàng)建產(chǎn)品和設(shè)備 2. 設(shè)置產(chǎn)品Topic數(shù)據(jù)和功能定義設(shè)備物模型數(shù)據(jù)顯示 3. 硬件連接+代碼修改 4. Web數(shù)據(jù)可視化 5.功能

    2024年04月25日
    瀏覽(61)
  • ESP8266+STM32+MQTT發(fā)送數(shù)據(jù)到阿里云服務(wù)器(三、配置ESP8266模塊并測(cè)試連接)

    ESP8266+STM32+MQTT發(fā)送數(shù)據(jù)到阿里云服務(wù)器(三、配置ESP8266模塊并測(cè)試連接)

    1、固件燒錄器 2、固件 3、串口工具 4、ESP866模塊 5、USB轉(zhuǎn)TTL模塊 (以上軟件工具文末分享的鏈接有,硬件請(qǐng)?zhí)詫氉孕匈徺I) 硬件如下圖: 1、按照下面對(duì)照關(guān)系進(jìn)行接線 USB轉(zhuǎn)TTL ESP8266 3.3V 3V3 GND GND RX TX TX RX IO0 GND 2、打開固件燒錄工具圖標(biāo) 3、點(diǎn)擊“ OK ” 4、在出現(xiàn)的界面中,

    2024年03月23日
    瀏覽(31)
  • STM32系列(HAL庫)——使用ESP8266-01S物聯(lián)網(wǎng)模塊連接Onenet云平臺(tái)上報(bào)DHT11溫濕度

    STM32系列(HAL庫)——使用ESP8266-01S物聯(lián)網(wǎng)模塊連接Onenet云平臺(tái)上報(bào)DHT11溫濕度

    本篇主要講解如何使用ESP8266-01S物聯(lián)網(wǎng)模塊連接Onenet云平臺(tái),并上報(bào)DHT11模塊的溫濕度數(shù)據(jù)。本文單片機(jī)主控采用STM32F405RGT6,使用其他主控的話基本要求有2個(gè)串口,一個(gè)串口用于調(diào)試使用,另一個(gè)用于ESP模塊通訊。 1.軟件 CubeMX Keil5 串口調(diào)試助手 Onenet云平臺(tái)賬戶 2.硬件 STM32開

    2024年02月02日
    瀏覽(53)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包