پیشرفته⏱ 18 دقیقه مطالعه
در درسهای قبل با MQTT (درس ۱۳) برای ارتباط سبک بین دستگاهها آشنا شدید. اما برای گرفتن اطلاعات از سرویسهای وب معمولی (مثل یک API آبوهوا یا نرخ ارز)، معمولاً به درخواستهای HTTP نیاز داریم. کتابخانهٔ استاندارد HTTPClient.h در هستهٔ Arduino-ESP32 این کار را ساده میکند.
ارسال یک درخواست GET
CPP
#include <WiFi.h>
#include <HTTPClient.h>
void setup() {
Serial.begin(115200);
WiFi.begin("Wokwi-GUEST", "");
while (WiFi.status() != WL_CONNECTED) delay(500);
HTTPClient http;
http.begin("https://api.publicapis.org/entries");
int httpCode = http.GET();
if (httpCode == 200) {
String payload = http.getString();
Serial.print("طول پاسخ: ");
Serial.println(payload.length());
} else {
Serial.print("خطا در درخواست، کد: ");
Serial.println(httpCode);
}
http.end(); // آزاد کردن منابع اتصال
}
void loop() {}⚠️ هشدار
همیشه پس از استفاده از پاسخ، متد http.end() را صدا بزنید تا اتصال بسته و منابع محدود ESP32 آزاد شود.
ارسال داده با POST
CPP
#include <HTTPClient.h>
#include <ArduinoJson.h>
void sendReading(float value) {
StaticJsonDocument<200> doc;
doc["sensor"] = "esp32-academy";
doc["value"] = value;
String payload;
serializeJson(doc, payload);
HTTPClient http;
http.begin("https://example.com/api/readings");
http.addHeader("Content-Type", "application/json");
int code = http.POST(payload);
Serial.print("کد پاسخ: ");
Serial.println(code);
http.end();
}🛠️ کارگاه عملی
کارگاه عملی: با استفاده از یک API عمومی رایگان (مثل قیمت لحظهای ارز)، هر ۳۰ ثانیه یک مقدار جدید بگیرید و روی نمایشگر OLED (درس ۹) نشان دهید.
❓ پس از پردازش پاسخ یک درخواست HTTP در Arduino، چرا باید http.end() را صدا بزنیم؟
→ درس قبلی: درس ۱۹: ماژول ساعت واقعی (RTC) با DS3231
درس بعدی: درس ۲۱: ذخیرهسازی داده روی فایلسیستم با LittleFS ←
طراحی و توسعه: امین شیخ نجدی — glcd.ir | نسخهٔ افزونه: 1.21.0