在Arduino中发送JSON数据可以通过使用ArduinoJson库来实现。下面是一个示例代码,展示了如何使用ArduinoJson库将JSON数据发送到另一个设备:
#include
#include
#include
#include
// WiFi网络凭据
const char* ssid = "YourWiFiNetwork";
const char* password = "YourWiFiPassword";
// 目标服务器的IP地址和端口
const char* serverIP = "192.168.1.100";
const int serverPort = 80;
void setup() {
// 初始化串口
Serial.begin(115200);
// 连接到WiFi网络
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// 发送JSON数据
sendJSON();
}
void loop() {
// 空函数
}
void sendJSON() {
// 创建一个JSON缓冲区
StaticJsonBuffer<200> jsonBuffer;
// 创建JSON对象
JsonObject& root = jsonBuffer.createObject();
// 添加数据到JSON对象
root["sensor"] = "temperature";
root["value"] = 25.0;
// 为JSON对象分配内存
char jsonStr[200];
root.printTo(jsonStr);
// 创建HTTP客户端
WiFiClient client;
if (client.connect(serverIP, serverPort)) {
Serial.println("Connected to server");
// 发送HTTP POST请求
client.println("POST /api/data HTTP/1.1");
client.println("Host: " + String(serverIP) + ":" + String(serverPort));
client.println("Content-Type: application/json");
client.print("Content-Length: ");
client.println(strlen(jsonStr));
client.println();
client.println(jsonStr);
client.println();
// 读取服务器响应
while (client.connected()) {
if (client.available()) {
Serial.write(client.read());
}
}
client.stop();
} else {
Serial.println("Failed to connect to server");
}
}
在这个示例中,首先包含了必要的库。然后,在setup()
函数中,连接到WiFi网络并调用sendJSON()
函数来发送JSON数据。sendJSON()
函数中,首先创建了一个StaticJsonBuffer
对象和一个JsonObject
对象,用于存储和操作JSON数据。然后,将需要发送的数据添加到JSON对象中。接下来,将JSON对象转换为字符串并发送到目标服务器。
请确保替换示例代码中的WiFi网络凭据(ssid
和password
)以及目标服务器的IP地址和端口(serverIP
和serverPort
)为你自己的值。