Arduino & IoT Academy · درس

استضافة صفحة تحديث ويب

ارفع البرنامج الثابت من نموذج في المتصفح.

الدرس 3 من 413 خطوة

استضافة صفحة تحديث ويب درس مجاني في Arduino & IoT Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Arduino & IoT Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Arduino & IoT Academy 4 دروس في المجموع.

التحديث من المتصفح

قد ترغب أحيانًا في تحديث جهاز من دون استخدام Arduino IDE إطلاقًا. تتيح لك صفحة تحديث ويب رفع البرنامج الثابت من خلال المتصفح.

تصبح اللوحة خادمًا

يُشغّل ESP32 خادم ويب صغيرًا يعرض نموذج رفع، بحيث يستطيع الهاتف أو الحاسوب المحمول إرسال ملف ثنائي جديد إليه.

إضافة المكتبات

تجمع بين خادم ويب ومكتبة Update، التي تعرف كيفية كتابة البايتات الواردة في ذاكرة الفلاش.

#include <WebServer.h>
#include <Update.h>
WebServer server(80);

عرض نموذج رفع

تعيد الصفحة الرئيسية نموذج HTML بسيطًا form يحتوي على منتقي ملفات وزر إرسال لملف البرنامج الثابت.

server.on("/", []() {
  server.send(200, "text/html",
    "<form method='POST' action='/update' enctype='multipart/form-data'><input type='file' name='fw'><input type='submit'></form>");
});

من أين جاء ‎.bin؟

في IDE، ينشئ الأمر Sketch ثم Export Compiled Binary ملف ‎.bin الذي ستختاره في نموذج الرفع.

فتح تدفق التحديث

عند بدء الرفع، تخبر الشريحة بحجم الصورة حتى يتمكن Update.begin() من حجز مساحة لها في ذاكرة الفلاش.

Update.begin(UPDATE_SIZE_UNKNOWN);

كتابة الأجزاء الواردة

يصل البرنامج الثابت على شكل أجزاء. تمرر كل جزء إلى Update.write() فور وصوله، لتكوين الصورة الجديدة في ذاكرة الفلاش.

Update.write(upload.buf, upload.currentSize);

الإنهاء والتحقق

عند وصول آخر بايت، يتحقق Update.end(true) من اكتمال الصورة وصحتها قبل وضع علامة تشير إلى جاهزيتها للإقلاع.

if (Update.end(true)) Serial.println("Update OK");

إعادة التشغيل باستخدام الشفرة الجديدة

يتطلب التحديث الناجح بدء تشغيل جديدًا. استدعِ ESP.restart() لكي تقلع اللوحة باستخدام البرنامج الثابت الذي رفعته للتو. 🔄

ESP.restart();

حماية الصفحة

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

إبقاء الخادم قيد التشغيل

مثل OTA تمامًا، يحتاج خادم الويب إلى المعالجة. استدعِ server.handleClient() في loop حتى يتمكن من قبول طلب الرفع.

void loop() { server.handleClient(); }

تحقق سريع

فكّر في المكتبة التي تكتب البرنامج الثابت فعليًا في ذاكرة الفلاش.

مراجعة

شغّل خادم ويب يعرض نموذج رفع، ومرّر ملف ‎.bin إلى مكتبة Update، وتحقق منه، ثم أعد التشغيل، مع حماية كل ذلك بتسجيل الدخول. 🌐

البدء مجانًا

تعلم C++ مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
30
الدروس
120

الأسئلة الشائعة

هل درس «استضافة صفحة تحديث ويب» مجاني؟

نعم — نص درس «استضافة صفحة تحديث ويب» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Arduino & IoT Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Arduino & IoT Academy 4 دروس في المجموع.

ماذا ستتعلم في «استضافة صفحة تحديث ويب»؟

ارفع البرنامج الثابت من نموذج في المتصفح. تتمرن على Arduino & IoT Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Arduino & IoT Academy؟

لا تُشترط خبرة سابقة. Arduino & IoT Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «استضافة صفحة تحديث ويب»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Arduino & IoT Academy هذا؟

نعم. كل درس في Arduino & IoT Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. لماذا تهم تحديثات OTA ميدانيًا
  2. تفعيل ArduinoOTA
  3. استضافة صفحة تحديث ويب
  4. التراجع عن تحديث معيب
← العودة إلى Arduino & IoT Academy