<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ESP8266應用案例 基于STM32核心板獲取網絡天氣數據

嵌入式技術 ? 來源:嵌入式技術 ? 作者:嵌入式技術 ? 2022-05-27 09:16 ? 次閱讀

硬件平臺:ESP8266 WIFI模塊、STM32核心板、OLED顯示屏

實現方式:

1.ESP8266 WIFI工作模式為STA+TCPClinet;

2.通訊協議:HTTP

3.天氣數據獲取平臺:心知天氣網

ESP8266 WIFI模塊自帶TCP/IP網絡協議棧,通過AT指令集完成網絡模式配置。知心天氣采用精準數據源授權預報信息,可查看全國各地的實時天氣預告、24小時預報、15天預報、空氣質量指數等預報信息。采樣HTTP協議接入服務器。

HTTP:超文本傳輸協議(Hyper Text Transfer Protocol,HTTP)是一個簡單的請求-響應協議,它通常運行在TCP之上。它指定了客戶端可能發送給服務器什么樣的消息以及得到什么樣的響應。HTTP是應用層協議,同其他應用層協議一樣,是為了實現某一類具體應用的協議,并由某一運行在用戶空間的應用程序來實現其功能。

功能實現

1.創建心知天氣個人賬戶,心知天氣地址:https://www.seniverse.com/api

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70

2.選擇產品->天氣數據接口,激活產品

pYYBAGKPYxCAQ2UzAAHLzQ85ez8023.png

3.激活成功后即可看到公鑰和私鑰,這個參數在后面獲取數據是需要用到。

poYBAGKPY1WAHLJ1AAFQlPguTPU174.png

4.HTTP方式獲取天氣數據

天氣實況獲取接口參數:

https://api.seniverse.com/v3/weather/now.json?key=SwD4-aaQxhedD1z7U&location=beijing&language=zh-Hans&unit=c
“api.seniverse.com”     -- 平臺訪問域名
“SwD4-aaQxhedD1z7U”  --個人私有秘鑰
“beijing”             --要獲取的城市名稱
“zh-Hans”           --獲取到的數據語言(zh-Hans為簡體中文)
pYYBAGKPZIGALOEdAAGUV3LwI_8239.png

平臺返回數據格式:

poYBAGKPZL-AJ2qfAAHZQ1Reazs776.png

5.功能實現
心知的 API 目前基于 http 協議,域名是 api.seniverse.com,端口是缺省的 80(http)和 443(https)。

int main()
{
	u8 stat=0;
	u16 cnt=0;
	Beep_Init();//蜂鳴器初始化
	Led_Init();//LED初始化
	Key_Init();//按鍵初始化
	Usartx_Init(USART1,115200,72);
	Usartx_Init(USART2,9600,36);//藍牙默認9600
	Usartx_Init(USART3,115200,36);//WIFI默認115200
	TIMx_Init(TIM2,72,20000);//通過定時器2輔助串口接收數據,20ms
	TIMx_Init(TIM3,72,20000);//TIM3輔助串口2數據接收,20ms接收一幀數據
	TIMx_Init(TIM4,72,20000);//TIM4輔助串口3數據接收,20ms接收一幀數據
	printf("wifi Init\r\n");
count++;
		cnt++;
		DelayMs(10);
		if(count>=500)
		{
			count=0;
			USARTx_Sendstr(USART3,"GET https://api.seniverse.com/v3/weather/now.json?key=SwD4-ybQxhedD1z7U&location=jiangxi nanchang&language=en&unit=c\n");
			// USARTx_Sendstr(USART3,"GET https://api.seniverse.com/v3/weather/grid/minutely.json?key=SwD4-ybQxhedD1z7U&location=114.38:27.80\n");
		}
		if(usart3_flag)
		{
			usart3_rx_buff[usart3_cnt]='\0';
			weather_show_stat=1;
			//printf("%s\r\n",usart3_rx_buff);
			/*
			{"results":[{"location":{"id":"WSCQ4UBFXPTE","name":"Yichun","country":"CN",
			"path":"Yichun,Yichun,Jiangxi,China","timezone":"Asia/Shanghai","timezone_offset":"+08:00"},
			"now":{"text":"Sunny","code":"0","temperature":"36"},"last_update":"2020-08-03T14:00:00+08:00"}]}			
			*/
			if(key==0)
			{
				/*解析天氣數據*/
				stat=Weather_analysis(usart3_rx_buff,(u8 *)""name"",(u8 *)buff);//城市名稱
				if(!stat)
				{
					OLED_Display_str((127-48-strlen(buff)*8)/2,4,(u8 *)buff);
				}
				stat=Weather_analysis(usart3_rx_buff,(u8 *)""temperature"",(u8 *)buff);//獲取溫度
				if(!stat)
				{
					OLED_Display_str(127-26,6,(u8 *)"  ");
					OLED_Display_str(127-20-strlen(buff)*8,6,(u8 *)buff);
					OLED_Display_Flont(127-20,6,4);//顯示℃
				}
				stat=Weather_analysis(usart3_rx_buff,(u8 *)""code"",(u8 *)buff);//天氣代碼
				if(!stat)
				{
					sscanf(buff,"%d",(int *)&cnt);
					//printf("cnt=%d\n",cnt);
					switch(cnt)
					{
						case 0://晴
						case 1://晚上晴
							OLED_Dislay_Bmp(127-48,0,48,48,bmp_0);
							break;
						case 4://多云
							OLED_Dislay_Bmp(127-48,0,48,48,bmp_4);
							break;
						case 5://晴轉多云
							OLED_Dislay_Bmp(127-48,0,48,48,bmp_5);
							break;
						case 6:
						case 7:
						case 8:
						case 9://陰
							OLED_Dislay_Bmp(127-48,0,48,48,bmp_9);
							break;
						case 10://陣雨
						case 11://雷陣雨
						case 13:
						case 14://雨
						case 15:
						case 16://大雨
						case 17:
						case 18://暴雨
							OLED_Dislay_Bmp(127-48,0,48,48,bmp_14);
							break;
						default:
							OLED_Dislay_Bmp(127-48,0,48,48,bmp_0);
							break;
					}
				}
			}
			usart3_flag=0;
			usart3_cnt=0;	
		}

6.平臺返回數據解析

平臺返回數據格式為Json格式數據,可自行封裝函數完成數據解析。

/******************解析 天氣數據****************
形參:u8* buff原始數據
			u8 *Weather_stat天氣數據標志
			u8 *data解析獲取到的數據
返回值:0---成功,其他值---失敗
************************************************/
u8 Weather_analysis(u8* buff,u8 *Weather_stat,u8 *data)
{
	char *p=NULL;
	u16 i=0;
	p=strstr((char *)buff,(char *)Weather_stat);//獲取溫度
	if(p)
	{
		p+=strlen((char *)Weather_stat)+2;
		i=0;
		while(*p!='"' && *p!='\0')
		{
			data[i++]=*p++;
		}
		data[i]='\0';
		return 0;
	}
	else return 1;
}

7.天氣圖標下載和實物效果

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6007

    文章

    44036

    瀏覽量

    622243
  • 物聯網
    +關注

    關注

    2876

    文章

    41933

    瀏覽量

    359702
  • STM32
    +關注

    關注

    2243

    文章

    10683

    瀏覽量

    349346
  • HTTP
    +關注

    關注

    0

    文章

    467

    瀏覽量

    30363
  • ESP8266
    +關注

    關注

    50

    文章

    950

    瀏覽量

    44104
收藏 人收藏

    評論

    相關推薦

    ESP8266STM32通訊,串口通訊出現數據丟失的原因?

    * ESP8266_ReceiveString ( FunctionalState enumEnUnvarnishTx ) { char * pRecStr = 0 strEsp8266_Fram_Record .InfBit
    發表于 05-14 06:17

    STM32、ESP8266與MQTT連接阿里云物聯網的串口通信異常解析

    STM32、ESP8266與MQTT協議連接阿里云物聯網平臺時常見的串口通信異常介紹 在構建物聯網應用時,STM32、ESP8266與MQTT協議的結合是實現設備與
    的頭像 發表于 04-19 17:19 ?423次閱讀

    基于ESP8266的機智云平臺控制系統設計

    項目摘要:本項目以智能家居為主題,基于ESP8266的機智云平臺控制系統,利用機智云平臺和ESP8266WiFi模塊、紅外發射模塊、STM32核心板、DHT11溫濕度傳感器模塊,完成了
    的頭像 發表于 11-07 08:10 ?878次閱讀
    基于<b class='flag-5'>ESP8266</b>的機智云平臺控制系統設計

    esp8266數據不對是為什么?

    我使用的是esp8266測試,我按照說明書里的我編譯后下載,提示也成功了 但是串口回傳的數據不對,app也不能正常的連接,有童鞋知道指導下嗎?
    發表于 11-07 06:52

    請問ESP8266開發如何寫程序?

    社區送的ESP8266開發如何寫程序?是像stm32那樣用Keil編程么?
    發表于 10-31 06:53

    nodemcu和esp8266是什么關系?

    nodemcu和esp8266是什么關系 nodemcu和esp8266是什么關系?通俗理解就是nodemcu是一個開發板,基于esp8266的開發板。 目前市面上搭載有ESP8266
    的頭像 發表于 10-20 14:53 ?2604次閱讀
    nodemcu和<b class='flag-5'>esp8266</b>是什么關系?

    esp8266ex引腳詳細 ESP8266EX參考手冊

    ESP8266EX 由樂鑫公司開發,提供了?套?度集成的 Wi-Fi SoC 解決?案,其低功耗、 緊湊設計和?穩定性可以滿??戶的需求。 ESP8266EX 擁有完整的且?成體系的 Wi-Fi
    發表于 09-08 17:05 ?2次下載

    ESP8266物聯網茶壺

    電子發燒友網站提供《ESP8266物聯網茶壺.zip》資料免費下載
    發表于 07-10 16:45 ?0次下載
    <b class='flag-5'>ESP8266</b>物聯網茶壺

    使用ESP8266 OLED和Visuino從NIST TIME服務器獲取日期和時間

    電子發燒友網站提供《使用ESP8266 OLED和Visuino從NIST TIME服務器獲取日期和時間.zip》資料免費下載
    發表于 06-28 09:55 ?0次下載
    使用<b class='flag-5'>ESP8266</b> OLED和Visuino從NIST TIME服務器<b class='flag-5'>獲取</b>日期和時間

    基于ESP8266的Agrumino Lemon

    電子發燒友網站提供《基于ESP8266的Agrumino Lemon.zip》資料免費下載
    發表于 06-15 09:19 ?0次下載
    基于<b class='flag-5'>ESP8266</b>的Agrumino Lemon

    ESP8266ESP32上的WiFi Webradio

    電子發燒友網站提供《ESP8266ESP32上的WiFi Webradio.zip》資料免費下載
    發表于 06-13 11:38 ?1次下載
    <b class='flag-5'>ESP8266</b>或<b class='flag-5'>ESP</b>32上的WiFi Webradio

    ESP8266如何與Winsock收發數據?

    我在具有 ASCII 字符串數據的 Visual Basic 6 中使用 Winsock。我想使用 TCP/IP 協議將該數據發送到 ESP8266,也從 ESP8266 發送到 VB
    發表于 06-05 07:32

    ESP8266初次如何實現無線通信(基于電腦與ESP8266)

    一.需要的軟件及硬件 1.軟件 2.硬件 二.ESP8266的使用 .ESP8266的介紹 2.ESP8266進行初始AT指令的配置步驟 三.所用軟件安裝分享 ESP8266
    發表于 05-30 09:53 ?20次下載
    <b class='flag-5'>ESP8266</b>初次如何實現無線通信(基于電腦與<b class='flag-5'>ESP8266</b>)

    ESP8266 DevKitC V1如何下載FW到定制ESP8266?

    我是 ESP 論壇的新手,剛開始使用 ESP8266 進行開發。我有一個 ESP8266 DevKitc V1 和另一個用 ESP8266
    發表于 05-30 07:41

    自定義ESP8266不工作的原因?

    我目前正在開發基于 ESP8266 的模塊。我從數據ESP8266獲取了原理圖。 這是一張圖片: 問題是它不起作用。為了確保它不是軟件或組件,我從另一個
    發表于 05-30 07:02
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>