基于STM32f103c8t6与ESP8266的天气时钟

先看结果图,如图所示:

1、硬件准备:如图所示,一个STM32最小系统板,一个esp8266wifi模块,一个oled显示屏以及一个USB转TTL模块即可。

2.注册一个心知天气的账号,心知天气网址https://www.seniverse.com/

申请一个免费的版本以及保存好自己的私钥,如下:

 然后点击产品→天气数据→查看API文档→天气实况→点击API接口文档的天气实况即可看到自己的接口地址,如下:

3. 下载一个XCOM调试助手,用USB转TTL与ESP8266连接到电脑上进行串口AT指令测试(只需要接RX、TX、GND、VCC即可),按照下图进行AT指令测试;

结果如图所示: 4.主循环代码:

	while (1)
	{	 
			if(sec >= 60)
			{
				sec = 0;
				min ++;
			}
			if(min >= 60)
			{
				min = 0;
				hour ++;
			}
			if(hour >= 24)
			{
				hour = 0;
			}
			OLED_ShowNum(0,0,hour,2,16);							//显示小时
			OLED_ShowString(16, 0, ":", 16);
			OLED_ShowNum(24,0,min,2,16);							//显示分钟 
			OLED_ShowString(40, 0, ":", 16);
			OLED_ShowNum(48,0,sec,2,16);							//显示秒 
		
			OLED_ShowCHinese(0, 3, 5);						//天
			OLED_ShowCHinese(18, 3, 6); 					//气
			OLED_ShowString(40, 3, ":", 16);
			OLED_ShowString(60, 3, results[0].now.text, 16);

			OLED_ShowCHinese(0, 6, 9);	 					//温
			OLED_ShowCHinese(18, 6, 10); 					//度
			OLED_ShowString(40, 6, ":", 16);
			OLED_ShowString(60, 6, results[0].now.temperature, 16);
			OLED_ShowCHinese(80, 6, 11); 					//摄氏度

			KeyNum = Key_GetNum();	
			if (KeyNum == 1)
			{
				get_beijing_time();	//获取时间		
				hour = nwt.hour;
				min = nwt.min;
				sec = nwt.sec;
			}		
			else if (KeyNum == 2)
			{
				get_current_weather();//获取天气、温度
			}	
	}

 在此天气时钟的基础上可添加各种外设,让它变成一个完整的项目,例如智能窗户等智能家居的开发,如需完整源码,创作不易,如需完整源码可三连私聊。

调试助手下载链接:http://链接:https://pan.baidu.com/s/1Z13Uf3J-6OctuxALIF9bKA?pwd=y0ha 提取码:y0ha

猜你喜欢

转载自blog.csdn.net/m0_69153234/article/details/139533107