🧾 API سنسور با JSON
آدرس /api/sensor عدد پتانسیومتر را به شکل JSON میدهد؛ برد یک فرمان JSON را هم میخواند.
سطح: چالشی ⭐⭐⭐ · مود: آردوینو (سهبعدی + کد)
قطعات لازم
کد کامل پروژه
// ESP32 + ArduinoJson: build JSON for /api/sensor and parse a JSON command.
#include <WiFi.h>
#include <WebServer.h>
#include <ArduinoJson.h>
const int LED = 4;
const int POT = 34; // ADC pin, 0..4095
WebServer server(80);
void setup() {
Serial.begin(115200);
pinMode(LED, OUTPUT);
// 1) Parse: text -> document
const char* command = "{\"led\":true,\"room\":\"kitchen\"}";
JsonDocument cmd;
DeserializationError err = deserializeJson(cmd, command);
if (err) {
Serial.print("Bad JSON: ");
Serial.println(err.c_str());
} else {
bool on = cmd["led"];
digitalWrite(LED, on ? HIGH : LOW);
Serial.print("Room: ");
Serial.println(cmd["room"].as<const char*>());
}
WiFi.begin("MyHome", "YOUR_PASSWORD");
while (WiFi.status() != WL_CONNECTED) delay(200);
Serial.println(WiFi.localIP());
// 2) Build: document -> text
server.on("/api/sensor", []() {
JsonDocument doc;
int raw = analogRead(POT);
doc["raw"] = raw;
doc["volts"] = raw * 3.3 / 4095.0;
doc["led"] = digitalRead(LED) == HIGH;
doc["uptime"] = millis() / 1000;
String out;
serializeJson(doc, out);
server.send(200, "application/json", out);
});
server.begin();
}
void loop() {
server.handleClient();
}
چطور اجرایش کنم؟
- شبیهساز تینکرکد فارسی را باز کن و «مود آردوینو» را انتخاب کن.
- از پنل «نمونهها»، «API سنسور با JSON» را بارگذاری کن — مدار و کد با هم میآیند.
- دکمهی اجرا ▶ را بزن و خروجی Serial و رفتار قطعات را تماشا کن.
- حالا کد را تغییر بده — عددها، پینها، ترتیب — و دوباره اجرا کن!