كود البحث

استخدام ESP32 كعميل HTTP لإرسال المعلومات عبر WiFi إلى خادم بعيد

استخدام ESP32 كعميل HTTP لإرسال المعلومات عبر WiFi إلى خادم بعيد

في هذا الدليل، سنتناول كيفية استخدام وحدة التحكم الدقيقة ESP32 كعميل HTTP لإرسال البيانات إلى خادم بعيد عبر الواي فاي. تعد ESP32 لوحة تطوير قوية تجمع بين قدرات الواي فاي والبلوتوث، مما يجعلها مثالية لتطبيقات إنترنت الأشياء. بنهاية هذا الدليل، ستكون قادرًا على إرسال طلبات HTTP مع معلمات محددة من قبل المستخدم واستقبال الردود من الخادم.

ESP32-38pin-1

سوف نستخدم Arduino IDE لبرمجة ESP32، وسأرشدك خلال الخطوات اللازمة لإعداد بيئتك. للحصول على شرح بصري، أوصي بمشاهدة الفيديو المرتبط (في الفيديو عند :00).

شرح الأجهزة

المكون الرئيسي في هذا المشروع هو المتحكم الدقيق ESP32، وتحديداً وحدة WROOM32. تحتوي هذه الوحدة على 38 دبوساً يمكن استخدامها لعمليات الإدخال/الإخراج المختلفة. تعمل بجهد 3.3 فولت وتضم قدرات واي فاي وبلوتوث مدمجة. يعد ESP32 متعدد الاستخدامات ويمكن استخدامه في العديد من التطبيقات، بفضل دبابيس GPIO وبروتوكولات الاتصال الخاصة به.

ESP32-3

بالإضافة إلى ESP32، قد تحتاج إلى محول USB إلى تسلسلي للبرمجة وتصحيح الأخطاء. يتضمن الوحدة أيضًا منظم جهد، مما يضمن أن المتحكم الدقيق يتلقى إمدادًا ثابتًا قدره 3.3 فولت من مصدر جهد أعلى. بشكل عام، يعد ESP32 متحكمًا دقيقًا مجهزًا جيدًا مناسبًا لمشاريع مختلفة.

تفاصيل ورقة البيانات

الجهة المصنعة إسبريسو سيستمز
رقم الجزء ESP32-WROOM-32
جهد المنطق/الإدخال والإخراج ٣.٣ فولت
جهد الإمداد 5 فولت (كحد أقصى)
تيار الخرج (لكل قناة) 12 مللي أمبير
التيار الأقصى (لكل قناة) 160 مللي أمبير
إرشادات تردد PWM 1 كيلوهرتز
عتبات منطق الإدخال 0.3 * VDD(منخفض)، 0.7 * VDD(مرتفع)
فقدان الجهد / ردي أس (أون)/ تشبع 0.5 فولت
الحدود الحرارية 125 درجة مئوية
حزمة QFN
ملاحظات / متغيرات أحجام فلاش متعددة متاحة
ESP32-2
  • تأكد من مستويات الفولتية الصحيحة (3.3 فولت) لتجنب تلف الـ ESP32.
  • استخدم مكثفات فصل مناسبة بالقرب من دبابيس الطاقة لضمان تشغيل مستقر.
  • نفذ تبريد الحرارة إذا كان الوحدة تعمل بالقرب من تصنيفات تيارها القصوى.
  • استخدم شبكة الواي فاي المدمجة في ESP32 لتسهيل الاتصال بالشبكة.
  • كن حذراً مع تهيئات دبابيس GPIO لتجنب الدوائر القصيرة.
  • اختبر باستخدام رسومات بسيطة لتأكيد الوظائف قبل تنفيذ تكاملات معقدة.

إرشادات التوصيل

لتوصيل ESP32 في هذا المشروع، ابدأ بتوصيل دبوس الأرض (الجروند) في ESP32 بالأرض (الجروند) في مصدر الطاقة الخاص بك. بعد ذلك، قم بتوصيل مصدر الطاقة 5V بدبوس Vin أو V5 في ESP32، مما سيزود المنظم الداخلي للجهد بالطاقة ويوفر 3.3V للميكروكنترولر.

لتفعيل وظيفة عميل HTTP، تأكد من أن ESP32 الخاص بك متصل بشبكة WiFi. ستحتاج إلى توصيل الدبابيس المناسبة لأي مكونات إضافية قد تستخدمها، مثل الحساسات أو مصابيح LED. على سبيل المثال، قم بتوصيل مصباح LED بدبوس GPIO رقم 2، مع مقاومة متسلسلة لتحديد التيار. يجب أن يتصل السلك الأطول (الأنيود) من مصباح LED بالدبوس 2، بينما يتصل السلك الأقصر (الكاثود) بالأرض.

أمثلة التعليمات البرمجية وجولة توضيحية

في الشيفرة المقدمة، نقوم بتهيئة عميل HTTP ونحدد المعرفات الرئيسية مثلmainURL، الذي يحتوي على عنوان URL الذي نرسل إليه الطلب، وuser، الذي يحتوي على معلومات المستخدم. كما يقوم الكود بإعداد ESP32 للاتصال بشبكة WiFi المحددة.

String mainURL ="http://ddas.cc/httpTest/?";
String user="user=ahmad22";

هنا،mainURLهو نقطة النهاية التي نستهدفها، بينماuserتحتوي على معلمة المستخدم التي سيتم إرسالها في طلب HTTP.

في الـsetup()نبدأ بالتواصل التسلسلي ونقوم بإعداد اتصال الواي فاي. كما نعد لطلب HTTP من خلال إنشاء نسخة من عميل HTTP.

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFiMulti.addAP("Robojax", "Your password");
}

هذا القسم يقوم بتهيئة وحدة المراقبة التسلسلية لأغراض تصحيح الأخطاء ويتصل بشبكة الـ WiFi. تم تعريف بيانات الاعتماد في الـaddAP()طريقة.

في الـloop()في الوظيفة، نتحقق من اتصال WiFi الناجح ونواصل إرسال طلب HTTP GET. تشمل المعلمات قيم المستخدم ودرجة الحرارة.

if (http.begin(client, mainURL+user+"&temp="+temperature+"&type="+type)) {
  int httpCode = http.GET();}

هذا الرمز يقوم ببناء عنوان URL الكامل مع معلمات الاستعلام وينفذ طلب GET. إذا كان ناجحًا، فإنه يسترجع استجابة الخادم.

عرض / ما يجب توقعه

عند تشغيل الـ ESP32 وتشغيل البرنامج، يجب أن يتصل بشبكة WiFi المحددة ويرسل طلب HTTP GET إلى الخادم. يمكنك مراقبة الإخراج في مراقب التسلسل، حيث سترى رمز حالة HTTP وحمولة الاستجابة من الخادم. قد تشمل المشكلات الشائعة بيانات اعتماد WiFi غير صحيحة أو خادم غير قابل للوصول (في الفيديو في 12:30).

طوابع زمنية للفيديو

  • 00:00 بدء
  • ٥٣:٠٠ المقدمة
  • 05:04 دبابيس 5 فولت و 3.3 فولت
  • 08:38 ميزات مشروحة
  • 14:03 الدبابيس على ورقة البيانات
  • 17:00 مثال بلك
  • 19:14 مثال وميض مع مصباح LED خارجي
  • 21:00 اختبار عميل HTTP

الصور

ESP32-1
ESP32-1
ESP32-2
ESP32-2
ESP32-3
ESP32-3
ESP32-38pin-1
ESP32-38pin-1
ESP32-38pin-2
ESP32-38pin-2
241-ESP32 HTTP Client code example
اللغة: C++
/*
 * ESP32 HTTP Client example
 * This example is part of Introduction to ESP32 WiFi, Bluetooth Microcontroller board
📚⬇️ Download and resource page https://robojax.com/RJT211
watch full video https://youtu.be/--Fj8QDlGuQ
 * 
 * Updated/Written by Ahmad Shamshiri 
 * On August 25, 2019 in Ajax, Ontario, Canada
 * Watch video instruction for this code:
 * https://youtu.be/--Fj8QDlGuQ
 * 
 * 
 Get this code and other Arduino codes from Robojax.com
Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
all in one place. 

If you found this tutorial helpful, please support me so I can continue creating 
content like this. 

or make a donation using PayPal http://robojax.com/L/?id=64

 *  * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.* 
 * This code has been downloaded from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

#include <Arduino.h>

#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>

#include <ESP8266HTTPClient.h>

#include <WiFiClient.h>

ESP8266WiFiMulti WiFiMulti;
String mainURL ="http://ddas.cc/httpTest/?";
String user="user=ahmad22";
float temperature=45.3;
char type='j';

void setup() {

  Serial.begin(115200);
  // Serial.setDebugOutput(true);

  Serial.println();
  Serial.println();
  Serial.println();

  for (uint8_t t = 4; t > 0; t--) {
    Serial.printf("[SETUP] WAIT %d...\n", t);
    Serial.flush();
    delay(1000);
  }

  WiFi.mode(WIFI_STA);
  WiFiMulti.addAP("Robojax", "YOur password");

}

void loop() {
  // wait for WiFi connection
  if ((WiFiMulti.run() == WL_CONNECTED)) {

    WiFiClient client;

    HTTPClient http;

    Serial.print("[HTTP] begin...\n");
    if (http.begin(client, mainURL+user+"&temp="+temperature+"&type="+type)) {  // HTTP


      Serial.print("[HTTP] GET...\n");
      // start connection and send HTTP header
      int httpCode = http.GET();

      // httpCode will be negative on error
      if (httpCode > 0) {
        // HTTP header has been send and Server response header has been handled
        Serial.printf("[HTTP] GET... code: %d\n", httpCode);

        // file found at server
        if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
          String payload = http.getString();
          Serial.println(payload);
        }
      } else {
        Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
      }

      http.end();
    } else {
      Serial.printf("[HTTP} Unable to connect\n");
    }
  }

  delay(10000);
}

الأشياء التي قد تحتاجها

الموارد والمراجع

ملفات📁

ورقة البيانات (pdf)