使用esp32获取天气、温度、湿度、风力风向、空气指数等信息

本文访问的是聚合数据的API获取JSON信息并解析并打印才串口上。

一、创建API

这是聚合数据网址:聚合数据 - API接口开放平台_API接口大全_免费API数据接口服务 (juhe.cn)icon-default.png?t=N7T8https://www.juhe.cn/

 进入创建号账号后,直接点击顶栏的API选项,之后搜索天气找到

 进入后点立即申请创建好自己的API。

 在自己的API中找到它,进入后点击接口文档

 

 

可以看到这里采用的请求方式是http get或post,返回数据类型是json

这里我们需要用到的是接口地址url,以及需要city和key这两个参数,除此之外你还需要在左栏数据中心里面找到我的API,复制自己请求所需的Key

二、代码部分

首先要引入所需要的库,然后定义所用到的参数:

#include <M5Core2.h>//自己的设备系列
#include <WiFi.h>//WiFi
#include <HTTPClient.h>//
#include <ArduinoJson.h>

const char *ssid = "Room205";//自己的wifi名
const char *password = "hlj125205";//wifi密码

String url = "http://apis.juhe.cn/simpleWeather/query";//定义请求所需的三个参数
String city = "哈尔滨";
String key = "847ae73ffa63a155777e44ddbd340f14";

要获取API首先需要给设备连上网,在void setup中加入这一段连接wifi:

  M5.begin();//初始化
 Serial.begin(115200);//自己设备的适宜波特率
  //连接wifi
  WiFi.begin(ssid, password);

  Serial.print("正在连接 WiFi");
  //检测是否成功
  while (WiFi.status() != WL_CONNECTED){
    delay(500);
    Serial.print(".");
  }
  Serial.print("连接成功");

 接下来就是发送请求接收响应,由请求文档我们可知所需参数:

HTTPClient http;   // 创建 HTTPClient 对象
http.begin(url+"?city="+city+"&key="+key);//访问URL,第二个city是变量

int http_code = http.GET();// 接收 HTTP 响应状态码
   // Serial.printf("HTTP 状态码:%d", http_code);//因为是int类型所以用%d,如果是字符串则用%s
   //获取数据
   String response = http.getString();
   Serial.print("响应数据");
   Serial.print(response);

   http.end();
//创建DynamicJsonDocument 对象
DynamicJsonDocument doc(1024);//指定大小

deserializeJson(doc, response);//解析Json数据

String info = doc["result"]["realtime"]["info"].as<String>();//这里就随便抓一个数据读取了

Serial.printf("\n 天气:%s", info); 

最后结果像这样:

  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ESP32是一款功能强大的微控制器,可以用于物联网和嵌入式系统开发。要获取两组温湿度数据,你可以使用ESP32的GPIO接口连接两个温湿度传感器,并通过相应的库函数读取传感器数据。 首先,你需要选择适合的温湿度传感器,常见的有DHT11、DHT22和AM2302等。然后,将传感器的数据引脚连接到ESP32的GPIO引脚上。 接下来,你需要在ESP32上安装适当的库函数来与传感器进行通信。对于DHT11和DHT22传感器,你可以使用Adafruit DHT库或者DHT库来读取数据。对于AM2302传感器,你可以使用Adafruit AM2302库。 以下是一个示例代码,演示如何使用DHT库获取两组温湿度数据: ```cpp #include <DHT.h> #define DHT_PIN_1 4 // 第一个传感器的数据引脚 #define DHT_PIN_2 5 // 第二个传感器的数据引脚 #define DHT_TYPE DHT22 // 传感器类型 DHT dht1(DHT_PIN_1, DHT_TYPE); DHT dht2(DHT_PIN_2, DHT_TYPE); void setup() { Serial.begin(9600); dht1.begin(); dht2.begin(); } void loop() { float temperature1 = dht1.readTemperature(); float humidity1 = dht1.readHumidity(); float temperature2 = dht2.readTemperature(); float humidity2 = dht2.readHumidity(); Serial.print("Sensor 1 - Temperature: "); Serial.print(temperature1); Serial.print(" °C, Humidity: "); Serial.print(humidity1); Serial.println(" %"); Serial.print("Sensor 2 - Temperature: "); Serial.print(temperature2); Serial.print(" °C, Humidity: "); Serial.print(humidity2); Serial.println(" %"); delay(2000); } ``` 这段代码使用DHT库来读取两个传感器的温湿度数据,并通过串口输出。你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值