久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
stm32EPC8266連接心知天氣網(wǎng)源程序
[打印本頁]
作者:
小蘇
時(shí)間:
2021-7-2 10:17
標(biāo)題:
stm32EPC8266連接心知天氣網(wǎng)源程序
stm32天氣預(yù)報(bào)基本功能,連接上心知天氣網(wǎng),并解釋cJSON格式數(shù)據(jù),可以再TFTlcd屏幕顯示
單片機(jī)源程序如下:
#include "config.h"
Results results[] = {{0}}; //存儲(chǔ)json數(shù)據(jù)的結(jié)構(gòu)體
u8 get_current_weather(char *JSON, Results *results);
int main()
{
//初始化變量
u8 i = 0;
u8 DTH11_Refresh = 0;
u8 len, t, j, k;
u8 key = 0;
u8 duoji = 100;
u32 sd_size;
u8 sd_buf[6];
u32 free,total, sdCapacity;
u8 Read_ok_flag = 0;
FIL file; //文件對(duì)象
FATFS fatfs; //邏輯驅(qū)動(dòng)器的工作區(qū)
static FRESULT res; //FRESULT函數(shù)公共結(jié)果代碼
char write_buffer[1024]; //寫文件緩沖區(qū)
char read_buffer[1024]; //讀文件緩沖區(qū)
UINT counter;
uint8_t json_buff[512];//接受json數(shù)據(jù)的緩存數(shù)組
//char message[1024] = "{ \"results\":[{\"location\":{\"id\":\"wwww4d\",\"name\":\"beijng\",\"country\":\"CN\",\"path\":\"bejing,shanghai,guangzhou\",\"timezone\": \"Asia/Shanghai\",\"timezone_offset\": \"+08:00\"},\"now\":{\"text\":\"12\",\"code\": \"9\",\"temperature\": \"17\"},\"last_update\": \"2021-05-31T10:45:00+08:00\"}]}";
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
//外設(shè)初始化
SysTick_Init(72); //節(jié)拍定時(shí)器頻率設(shè)置 72M
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí),用于串口助手有數(shù)據(jù)發(fā)送時(shí)的中斷
USATR1_Init(115200); //串口1初始化為115200
USART3_Init(9600); //串口3 樹莓派通信 / 語音模塊
TIM3_Init(2000-1, 720-1); //周期是20ms PWM輸出
TIM4_Init(6000-1,36000-1); //定時(shí)3s
LED_Init(); //LED燈初始化
TFTLCD_Init(); //TFTLCD屏幕初始化
KEY_Init(); //按鍵初始化
ESP8266_Init(115200); //ESP8266初始化,里面包含串口2的初始化
RF433M_Init(); //433M射頻模塊
EN25QXX_Init(); //初始化falsh
my_mem_init(SRAMIN); //初始化內(nèi)部?jī)?nèi)存池
FATFS_Init(); //為fatfs相關(guān)變量申請(qǐng)內(nèi)存 沒有這個(gè)申請(qǐng)內(nèi)存,fatfs文件系統(tǒng)就不能用
RTC_Init(); //RTC時(shí)鐘
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
FRONT_COLOR=BLACK;//設(shè)置字體為黑色 12號(hào)字體,X軸可以0-220 Y軸可以0-380
LCD_ShowFont12Char(60,0,"智能家居控制");
LCD_DrawLine(0, 16, 240, 16); //畫線
LCD_DrawLine(0, 17, 240, 17);
LCD_DrawLine(0, 130, 240, 130); //畫線
LCD_DrawLine(0, 131, 240, 131);
LCD_DrawLine(105, 16,105, 130); //豎線
FRONT_COLOR=RED; //設(shè)置字體為紅色, 打印出錯(cuò)時(shí)的字體
//SD卡
while(SD_Init()!=0)
{
LCD_ShowFont12Char(10,30,"SD Card Error!");
}
f_mount(fs[0],"0:",1); //掛載SD卡 外設(shè) 如果為1那么就會(huì)強(qiáng)制的進(jìn)行加載操作
f_mount(fs[1],"1:",1); //掛載FLASH. 外設(shè)
//FATF文件系統(tǒng)
while(FATFS_GetFree("0", &sdCapacity, &free) != 0)
{
LCD_ShowFont12Char(10, 50, "SD Card FAT ERROR!");
}
// //溫濕度模塊
// while(DHT11_Init())
// {
// LCD_ShowString(130,150,tftlcd_data.width,tftlcd_data.height,16,"DHT11 Error ");
// delay_ms(500);
// }
FRONT_COLOR=BLACK; //恢復(fù)字體為黑色
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
//溫濕度模塊數(shù)據(jù)顯示
LCD_DrawLine(0, 378, 240, 378); //畫線
LCD_DrawLine(0, 379, 240, 379);
LCD_ShowString(0,380,tftlcd_data.width,tftlcd_data.height,16,"Temp: C");
LCD_ShowString(100,380,tftlcd_data.width,tftlcd_data.height,16,"Humi: %RH");
LCD_ShowFont12Char(110,20,"城市:");
LCD_ShowFont12Char(110,60,"天氣:");
LCD_ShowFont12Char(110,100,"RTC時(shí)鐘:");
ESP8266_STA_TCPClient_Test();//連接熱點(diǎn)+連接服務(wù)器
while(1){
// LCD_Clear_one(WHITE,0,150,240, 150);
get_current_weather((char *)json_buff, results);
Clean_buff1();
printf("qingchuhou\n%s\n",ESP8266_Fram_Record_Struct .Data_RX_BUF);
LCD_ShowString(155,20,175,20,16,results[0].location.name);
LCD_ShowString(155,60,175,60,16,results[0].now.text);
//
if(strcmp(results[0].now.text, "Sunny") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_shower_rain);
else if(strcmp(results[0].now.text, "Fair") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_fair);
else if(strcmp(results[0].now.text, "Cloudy") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_cloudy);
else if(strcmp(results[0].now.text, "Mostly_cloudy") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_mostly_cloudy);
else if(strcmp(results[0].now.text, "partly_cloudy") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_partly_cloudy);
else if(strcmp(results[0].now.text, "moon_cloudy") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_moon_cloudy);
else if(strcmp(results[0].now.text, "overcast") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_overcast);
else if(strcmp(results[0].now.text, "shower_rain") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_shower_rain);
else if(strcmp(results[0].now.text, "thunder_shower") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_thunder_shower);
else if(strcmp(results[0].now.text, "hail") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_hail);
else if(strcmp(results[0].now.text, "light_rain") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_light_rain);
else if(strcmp(results[0].now.text, "moderate_rain") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_moderate_rain);
else if(strcmp(results[0].now.text, "heavy_rain") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_heavy_rain);
else if(strcmp(results[0].now.text, "storm") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_storm);
else if(strcmp(results[0].now.text, "heavy_storm") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_heavy_storm);
else if(strcmp(results[0].now.text, "severe_storm") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_severe_storm);
else if(strcmp(results[0].now.text, "freezing_rain") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_freezing_rain);
else if(strcmp(results[0].now.text, "snow_flurry") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_snow_flurry);
else if(strcmp(results[0].now.text, "light_snow") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_light_snow);
else if(strcmp(results[0].now.text, "moderate_snow") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_moderate_snow);
else if(strcmp(results[0].now.text, "heavy_snow") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_heavy_snow);
else if(strcmp(results[0].now.text, "snow_storm") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_snow_storm);
else if(strcmp(results[0].now.text, "dust") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_dust);
else if(strcmp(results[0].now.text, "sand") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_sand);
else if(strcmp(results[0].now.text, "sand_storm") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_sand_storm);
else if(strcmp(results[0].now.text, "dust_storm") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_dust_storm);
else if(strcmp(results[0].now.text, "foggy") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_foggy);
else if(strcmp(results[0].now.text, "haze") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_haze);
else if(strcmp(results[0].now.text, "windy") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_windy);
else if(strcmp(results[0].now.text, "gale") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_gale);
else if(strcmp(results[0].now.text, "hurricane") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_hurricane);
else if(strcmp(results[0].now.text, "cold") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_cold);
else if(strcmp(results[0].now.text, "hot") == 0) LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_hot);
else{
LCD_Draw_Picture(0,20,100,120,(u8 *)gImage_unknown);
}
}
return 0;
}
//獲取一次實(shí)時(shí)天氣
//返回:0---獲取成功,1---獲取失敗
u8 get_current_weather(char *JSON, Results *results)
{
while(!ESP8266_UnvarnishSend());//返回1:配置成功 0:配置失敗
//printf("清除前%s\n",ESP8266_Fram_Record_Struct .Data_RX_BUF);
Clean_buff();
//printf("清除后%s\n",ESP8266_Fram_Record_Struct .Data_RX_BUF);
ESP8266_SendString(ENABLE, "GET api.seniverse點(diǎn)com/v3/weather/now.json?key=S1EB-JUvy4icX5_CO&location=Wuxi&language=en&unit=c\r\n", 0, Single_ID_0 );
delay_ms(1000);
strcpy(JSON,(char *)ESP8266_Fram_Record_Struct .Data_RX_BUF);
cJSON_WeatherParse( JSON, results);
//Clean_buff1();
ESP8266_ExitUnvarnishSend(); //退出透?jìng)?br />
//獲取三天的天氣(包括今日)
//ESP8266_SendString(ENABLE, "GET api.seniverse點(diǎn)com/v3/weather/daily.json?key=50alegxkcaehcge6&location=wuxi&language=en&unit=c&start=0&days=5\r\n", 0, Single_ID_0 );
return 0;
}
復(fù)制代碼
51hei截圖_20210702101555.png
(51.13 KB, 下載次數(shù): 40)
下載附件
2021-7-2 10:15 上傳
所有資料51hei提供下載:
smartHouse.7z
(451.21 KB, 下載次數(shù): 40)
2021-7-2 15:24 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
nsj21n
時(shí)間:
2021-7-6 16:15
謝謝樓主分享,很好的學(xué)習(xí)資料
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
av四虎
|
精品一区二区免费视频
|
日韩在线免费
|
中文字幕国产
|
国产调教视频
|
欧美一级欧美三级在线观看
|
国产精品偷乱一区二区三区
|
久久综合久久鬼
|
欧美激情视频一区二区三区
|
黄色小视频在线观看
|
欧美一区二区视频在线观看
|
精品国产99久久久久久宅男i
|
高清一区二区
|
日韩精品少妇
|
www.日韩.com
|
91二区
|
婷婷在线视频
|
黄色在线小视频
|
高清一区二区三区
|
高清一区二区
|
黄色欧美大片
|
免费性爱视频
|
亚洲黄视频
|
欧美视频a
|
天堂网在线播放
|
欧美性精品
|
亚洲精品一区在线观看
|
欧美精品在线观看
|
五月婷婷综合激情
|
中文字幕久久久
|
日韩一区二区三区在线
|
中文字幕三区
|
午夜精品视频在线观看
|
五月婷婷激情
|
中文字幕婷婷
|
欧美伊人久久
|
视频一区在线播放
|
99色在线
|
在线观看av片
|
av青青草原
|
午夜免费福利
|