ESP32+TFTLCD实现WiFi天气语音播报(八)

AI助手已提取文章相关产品:

ESP32实现天气播报



前言

前面几篇已经把WiFi天气语音播报涉及到的知识内容提了一下,这一篇进行项目的整合进而完成WiFi天气语音播报。


1、实现功能

自己编写相关代码,驱动WIFI模组,连接气象服务器,获取当地天气,同时还可以通过温湿度传感器采集到当前室内的温湿度值,并在LCD屏上进行显示,还可以进行语音播报
在这里插入图片描述
在这里就不使用温湿度传感器读取实时温湿度了。

2、获取并解析天气数据

首先我们要配置WIFI模块连上热点,检测是否接入 WIFI GOT IP,连接服务器,开启透传,获取天气结果。当WIFI模块获取服务器一次实时天气成功后,会返回对应的json格式数据,然后再对json格式数据解析获取需要的内容。需要说的是JSON是一种特殊的数据结构,ESP32中有一个内置的库cjson,用来处理json格式的数据并且获取内容。

void Get_Weather(void)
{
   
   
	static uint8_t count = 0;
	char http_cmd[256] = {
   
   0};
	uint8_t recv = 0;
	cJSON *root = NULL,*json_results = NULL,*json_arry = NULL,*json_location = NULL,*json_now = NULL,*json_daily = NULL,*json_daily_arr = NULL;
	

	switch(count)
	{
   
   
		case 0://退出透传
			weatherTime[1] = 1000;
			WIFI_SendStr("+++");
			count++;
			break;
		case 1://复位
			WIFI_SendStr("AT+RST\r\n");
			count++;
			break;
		case 2://自动连接网络  不直接连接服务器防止使用过程中断网
			recv = ESP8266_SendCmd_RecAck(NULL, "WIFI GOT IP", 30000, 1);
//			if(recv){
   
   
//				ESP8266_ConnectHotspot();//一键配网模式
//			}
			count++;
			break;
		case 3://连接服务器
			recv = ESP8266_SendCmd_RecAck("AT+CIPSTART=\"TCP\",\"116.62.81.138\",80\r\n", "OK", 20000, 1);
			if(recv == 0)	count++;
			break;
		case 4://开启透传
			recv = ESP8266_SendCmd_RecAck("AT+CIPMODE=1\r\n", "OK", 1000, 1);
			if(recv == 0)	count++;
			break;
		case 5://开始透传
			recv = ESP8266_SendCmd_RecAck("AT+CIPSEND\r\n", ">", 2000, 1);
			if(recv == 0)	count++;
			break;

		case 6://获取实时天气数据
			sprintf(http_cmd, "GET https://api.seniverse.com/v3/weather/now.json?key=%s&location=%s&language=en&unit=c\r\n", 
							Key_ID, 
							location[location_pos]);
			printf("%s\r\n", http_cmd);
			WIFI_SendStr(http_cmd);
			count++;
			break;		
		case 7://解析数据
			count = 0;
			weatherTime[1] = 10000

您可能感兴趣的与本文相关内容

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值