🧾 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();
}

چطور اجرایش کنم؟

  1. شبیه‌ساز تینکرکد فارسی را باز کن و «مود آردوینو» را انتخاب کن.
  2. از پنل «نمونه‌ها»، «API سنسور با JSON» را بارگذاری کن — مدار و کد با هم می‌آیند.
  3. دکمه‌ی اجرا ▶ را بزن و خروجی Serial و رفتار قطعات را تماشا کن.
  4. حالا کد را تغییر بده — عددها، پین‌ها، ترتیب — و دوباره اجرا کن!
این پروژه را رایگان در شبیه‌ساز اجرا کن 🤖