esp32做心知天气
时间: 2025-07-04 09:45:32 AIGC 浏览: 28
### 使用 ESP32 调用心知天气 API 并显示数据
为了使用 ESP32 实现心知天气的功能,可以按照以下方法编写代码并配置硬件。
#### 1. 准备工作
确保安装了 Arduino IDE 和 ESP32 开发板的支持包。还需要引入 HTTP 请求库 `HTTPClient` 来处理网络请求以及 JSON 解析库 `ArduinoJson` 处理返回的数据[^4]。
#### 2. 初始化项目结构
创建一个新的 Arduino 项目,在项目的根目录下放置 `.ino` 文件和其他必要的头文件(如 H 和 CPP)。注意,Arduino 支持 C++ 语法而不是纯 C,因此应确保所有源码都遵循这一标准。
#### 3. 编写主程序代码
下面是一个简单的例子来展示如何初始化设备、建立 WiFi 连接、发送 HTTP GET 请求到心知天气服务器,并解析响应中的温度信息:
```cpp
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
// 心知天气API URL (需替换为实际应用ID)
String api_url = "https://api.seniverse.com/v3/weather/now.json?key=YOUR_API_KEY&location=beijing&language=en&unit=celsius";
void setup() {
Serial.begin(115200);
// 连接到Wi-Fi网络
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to the Wi-Fi network");
// 发送HTTP请求给心知天气服务端
if (httpGetRequest(api_url)) {
parseJSONResponse();
} else {
Serial.println("Failed to send request");
}
}
bool httpGetRequest(String url){
if(WiFi.status()== WL_CONNECTED){
HTTPClient http;
http.begin(url);
int httpResponseCode = http.GET();
if(httpResponseCode>0){
String payload = http.getString();
Serial.println(payload);
StaticJsonDocument<1024> doc;
deserializeJson(doc, payload);
JsonObject result = doc["results"][0];
const char* cityName = result["location"]["name"];
float temperature = result["now"]["temperature"].as<float>();
Serial.print("City Name: ");
Serial.println(cityName);
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println("°C");
return true;
}else{
Serial.printf("Error on sending GET: %d\n", httpResponseCode);
}
http.end();
}else{
Serial.println("WiFi Disconnected");
}
return false;
}
```
此段代码实现了基本的心知天气查询功能,包括连接至指定 SSID 的无线局域网、向心知天气发起 HTTP 请求获取北京当前气温,并将其打印出来[^3]。
阅读全文
相关推荐



















