أســـــاســــــيات برمجة ESP32 لاســــلكيا باستخدام الاردوينـــو IDE اكتب تعليقُا

تم نشر هذا المشروع لجميع الأشخاص المهتمين في مجال تصنيع وابتكار المشاريع الإلكترونية والبرمجية، و نود التنويه أن موقع انا الكتروني يخلي مسؤوليته التامة في حال لم يعمل المشروع لدى العميل أو في حال الاستخدام الخاطئ للمكونات الإلكترونية والكهربائية التي قد تؤدي لحدوث الحرائق أو غيرها لا سمح الله.

ـ

ميزة رائعة لأي متحكم يدعم WiFi مثل ESP32 هي القدرة على تحديث البرامج الثابتة لاسلكيًا . هذا هو المعروف باسم البرمجة عبر الأثير (OTA) .

ما هي البرمجة عبر الاثير OTA في ESP32 ؟

تسمح برمجة OTA بتحديث أو تحميل برنامج جديد إلى ESP32 باستخدام Wi-Fi بدلاً من مطالبة المستخدم بتوصيل ESP32 بجهاز كمبيوتر عبر USB لإجراء التحديث .

تعتبر وظيفة OTA مفيدة للغاية في حالة عدم وجود وصول فعلي إلى وحدة ESP . يساعد في تقليل مقدار الوقت الذي يستغرقه لتحديث كل وحدة ESP في وقت الصيانة .
إحدى الميزات المهمة في OTA هي أن موقعًا مركزيًا واحدًا يمكنه إرسال تحديث إلى عدة ESPs يشاركون نفس الشبكة .

العيب الوحيد هو أنه يجب عليك إضافة رمز إضافي لـ OTA مع كل كود تقوم بتحميله ، حتى تتمكن من استخدام OTA في التحديث التالي .

طرق لتنفيذ OTA في ESP32

هناك طريقتان لتطبيق وظيفة OTA في ESP32 .

  • إرسال OTA الأساسي – تحديثات عبر الأثير عبر Arduino IDE .
  • Web Updater OTA – يتم إرسال التحديثات عبر الأثير من خلال متصفح الويب .

كل واحد له مزاياه الخاصة . يمكنك تنفيذ أي منها وفقًا لمتطلبات مشروعك .

يغطي المشروع أدناه تنفيذ OTA الأساسي .

3 خطوات بسيطة لاستخدام OTA الأساسية مع ESP32

  1. تثبيت Python 2.7.x series : الخطوة الأولى هي تثبيت Python 2.7.x series في جهاز الكمبيوتر الخاص بك .
  2. تحميل Basic OTA Firmware Serially : قم بتحميل الكود الذي يحتوي على البرامج الثابتة OTA بشكل تسلسلي . إنها خطوة إلزامية ، حتى تتمكن من إجراء التحديثات أو التحميلات التالية على الهواء مباشرة .
  3. تحميل New Sketch Over-The-AirNow : يمكنك تحميل الاكواد الجديدة إلى ESP32 من Arduino IDE عبر الأثير .

Step 1: Install Python 2.7.x series

لاستخدام وظيفة OTA ، تحتاج إلى تثبيت إصدار Python 2.7.x ، إذا لم يكن مثبتًا بالفعل على جهازك .

انتقل إلى موقع Python الرسمي وقم بتنزيل 2.7.x (إصدار محدد) لنظام Windows (مثبت MSI) .

Download-Python-2.7.x-Series

افتح المثبت واتبع معالج التثبيت .

Install-Python-2.7.x-Series-On-PC

في قسم تخصيص Python 2.7.X ، تأكد من تمكين الخيار الأخير إضافة python.exe إلى المسار .

Enable-Add-Python.exe-to-Path-While-Python-Installation

Step 2: Upload OTA Routine Serially

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

إنها خطوة إلزامية لتحديث البرامج الثابتة في البداية ، بحيث تكون قادرًا على إجراء التحديثات أو  التحميلات التالية عبر البث المباشر .
تأتي الوظيفة الإضافية ESP32 لـ Arduino IDE مع مثال لمكتبة OTA و BasicOTA . يمكنك الوصول إليه من خلال File > Examples > ArduinoOTA > BasicOTA .

Open-ESP32-BasicOTA-Sketch-In-Arduino-IDE

يجب تحميل الكود التالي . ولكن ، قبل أن تتوجه لتحميل المخطط ، تحتاج إلى إجراء بعض التغييرات لجعلها تعمل من أجلك. تحتاج إلى تعديل المتغيرين التاليين باستخدام بيانات اعتماد الشبكة الخاصة بك ، حتى يتمكن ESP32 من إنشاء اتصال بالشبكة الحالية .

Untitled
تنبيه : في حال لم تكن متأكد من قدرتك على تنفيذ خطوات المشروع يرجى استشارة شخص متخصص في هذا المجال.

بمجرد الانتهاء من ذلك ، تابع تحميل الكود .

لتحميل الكود البرمجي اضغط هنا
#include <WiFi.h>
#include <ESPmDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>

const char* ssid = "..........";
const char* password = "..........";

void setup() {
  Serial.begin(115200);
  Serial.println("Booting");
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Connection Failed! Rebooting...");
    delay(5000);
    ESP.restart();
  }

  // Port defaults to 3232
  // ArduinoOTA.setPort(3232);

  // Hostname defaults to esp3232-[MAC]
  // ArduinoOTA.setHostname("myesp32");

  // No authentication by default
  // ArduinoOTA.setPassword("admin");

  // Password can be set with it's md5 value as well
  // MD5(admin) = 21232f297a57a5a743894a0e4a801fc3
  // ArduinoOTA.setPasswordHash("21232f297a57a5a743894a0e4a801fc3");

  ArduinoOTA
    .onStart([]() {
      String type;
      if (ArduinoOTA.getCommand() == U_FLASH)
        type = "sketch";
      else // U_SPIFFS
        type = "filesystem";

      // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()
      Serial.println("Start updating " + type);
    })
    .onEnd([]() {
      Serial.println("\nEnd");
    })
    .onProgress([](unsigned int progress, unsigned int total) {
      Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
    })
    .onError([](ota_error_t error) {
      Serial.printf("Error[%u]: ", error);
      if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
      else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
      else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
      else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
      else if (error == OTA_END_ERROR) Serial.println("End Failed");
    });

  ArduinoOTA.begin();

  Serial.println("Ready");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  ArduinoOTA.handle();
}

الآن ، افتح Serial Monitor بمعدل بسرعة 115200 . واضغط على الزر EN في ESP32 . إذا كان كل شيء على ما يرام ، فسوف يخرج عنوان IP الذي تم الحصول عليه من جهاز التوجيه الخاص بك . لاحظ ذلك .

Note-Down-IP-Address-Allotted-to-ESP32

Step 3: Upload New Sketch Over-The-Air

الآن ، دعونا نحمل كود جديد على الهواء .

تذكر! تحتاج إلى إضافة رمز OTA في كل كود تقوم بتحميله . وإلا ، فستفقد إمكانية OTA ولن تكون قادرًا على القيام بالتحميلات التالية على الهواء مباشرة . لذلك ، يوصى بتعديل الكود أعلاه لتضمين الكود الجديد .

على سبيل المثال ، سنقوم بتضمين كود Blink بسيط في رمز OTA الأساسي . تذكر أن تقوم بتعديل SSID ومتغيرات كلمة المرور باستخدام بيانات اعتماد الشبكة .
يتم تمييز التغييرات في برنامج OTA الأساسي باللون الأزرق .

999

في الكود أعلاه ، لم نستخدم delay () في وميض مؤشر LED ، لأن ESP32 يوقف برنامجك مؤقتًا خلال التأخير () . إذا تم إنشاء طلب OTA التالي أثناء إيقاف Arduino مؤقتًا انتظار التأخير () ، فسيفتقد البرنامج هذا الطلب .

بمجرد نسخ الكود أعلاه إلى Arduino IDE ، انتقل إلى  Tools > Port (خيار المنفذ) وسترى شيءًا كهذا : esp32-xxxxxx at your_esp_ip_address إذا لم تتمكن من العثور عليه ، فقد تحتاج إلى إعادة تشغيل IDE الخاص بك .

Select-OTA-Port-in-Arduino-IDE

حدد المنفذ وانقر فوق الزر “تحميل” . في غضون ثوانٍ قليلة ، سيتم تحميل الكود الجديد . وسترى وميض LED على متن اللوحة .

أنتهت !!!

اترك تعليقاً



لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *