خادم ويب فوري يعتمد على ESP8266 ونظام تخزين شبكي NAS على هيئة وحدة USB - WebStick

خادم ويب فوري يعتمد على ESP8266 ونظام تخزين شبكي NAS على هيئة وحدة USB - WebStick

مقدمة

المشكلة

بصفتي مطور برمجيات متكامل وطالباً في الوقت نفسه، كثير من أصدقائي يسألونني عن كيفية إنشاء موقعهم الإلكتروني الخاص مجاناً، وعلى الرغم من وجود عدد كبير من خدمات الاستضافة المجانية، إلا أن معظمها يفرض قيودا مزعجة تتعلق بمزود الخدمة والارتباط القسري بالمنصة أو ما يعرف بـ احتكار المورد، ونظرا لاهتمام بعضهم أيضا بالتقنيات، فإنني أحيانا أعرّفهم على مفهوم الاستضافة الذاتية Self-Hosting.

تكمن المشكلة في الاستضافة الذاتية لخادم ويب في أن معظمهم لا يملك أي خبرة في نظام Linux، كما أن استخدام جهاز كمبيوتر قديم يعمل بنظام Windows مع WAMP أو Nginx يعتبر هدراً كبيرا للمساحة والطاقة، ولهذا السبب قمت بتطوير فكرة WebStick الصغيرة والممتعة لتلبية هذا النوع من الاستخدامات.

ما هو WebStick؟

WebStick هو خادم ويب يأتي في هيئة وحدة USB صغيرة، يتصل بشبكة WiFi المنزلية ويتيح لك الوصول إليه عبر mDNS داخل الشبكة المحلية، كما يمكنك أيضاً الوصول إليه من خارج الشبكة عبر الإنترنت من خلال تعديل بعض إعدادات إعادة توجيه المنافذ Port Forwarding في جهاز الراوتر المنزلي.

وبما أنني أحب العمل مع أنظمة NAS، ومع الأخذ في الاعتبار القدرة المحدودة للمعالجة في هذا الحجم الصغير، فقد قمت بإنشاء واجهة NAS مدمجة لـ WebStick، حيث يوفر واجهة تشبه إلى حد كبير مدير الملفات ArozOS File Manager، مع مجموعة من الأدوات التي تتيح لك تخزين وبث الموسيقى والفيديوهات والصور مباشرة من بطاقة SD الخاصة بـ WebStick، إلى جانب إمكانية استضافة ملفات الويب الثابتة مثل HTML وCSS وJS، مع توفير واجهة برمجة ويب تسمح لك بتعديل موقعك الإلكتروني دون الحاجة إلى فصل بطاقة SD وتوصيلها بجهاز الكمبيوتر.

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

لوازم

بما أن هذا المشروع بسيط نسبياُ، فلن تحتاج إلى الكثير من المواد لتصنيع WebStick بنفسك.

  • لوحة PCB مطبوعة ومخصصة.
  • موصل USB A.
  • شريحة CH340C وهي محول USB إلى UART.
  • عدد من المقاومات بقيمة 10 كيلو أوم والمكثفات بقيم 100nF و10uF.
  • منظم جهد AMS1117-3.3.
  • منفذ بطاقة micro SD.
  • مصابيح LED.
  • وحدة ESP12F أو ESP12E وكلاهما يعملان بشكل جيد.
  • بطاقة micro SD بنظام ملفات FAT.
  • ترانزستورات BC817 من نوع NPN.

كما ستحتاج أيضا إلى أدوات لحام أساسية وجهاز كمبيوتر لرفع البرنامج الثابت Firmware إلى WebStick.

خطوة 1 : طلب لوحة PCB

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

يمكنك العثور على ملفات Gerber الخاصة بلوحة PCB من هنـــا.

خطوة 2 : لحام المكونات على لوحة PCB

كيف تتم عملية اللحام؟

هذه الخطوة مباشرة وسهلة نسبياً، كل ما عليك فعله هو تجهيز جميع المكونات المطلوبة لعملية اللحام، ثم البدء بلحامها على لوحة PCB واحداً تلو الآخر.

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

لماذا المكونات صغيرة الحجم جداً؟

أصغر المكونات المستخدمة وهي ترانزستورات BC817 من نوع NPN تم تضمينها لدعم البرمجة التلقائية، ففي اللوحات التي لا تحتوي على مبرمج مدمج مثل ESP32CAM، ستلاحظ وجود أزرار FLASH وRESET فعلية، وذلك لأن هذه الأرجل يجب سحبها إلى الحالة المنخفضة LOW لإدخال الشريحة في وضع البرمجة، ولكن بإضافة هذين الترانزستورين، ورغم صعوبة لحامهما يتم توفير تجربة برمجة تلقائية أكثر سلاسة، خاصة أثناء تطوير الكود الخلفي Backend حيث أحتاج إلى رفع برنامج ثابت جديد كل بضع دقائق للاختبار.

خطوة 3 : فحص القصر الكهربائي

من الضروري التأكد من عدم وجود أي قصر كهربائي على لوحة PCB قبل توصيلها بجهاز الكمبيوتر، فالمكونات الصغيرة بهذا الحجم غالبا ما تعاني من عيوب لحام مثل تلامس الأرجل، أو الأسوأ من ذلك حدوث قصر بين خط التغذية VCC بجهد 5 فولت القادم من USB وخط الأرضي، لذلك يعد فحص جودة اللحام خطوة مهمة، ويفضل توصيل WebStick أولاً بمصدر طاقة محمي مثل مزود طاقة مختبري احترافي.

في حالتي قمت بتصميم وصناعة موزع USB خاص بي يحتوي على مصهرات PTC ودوائر حماية لكل منفذ USB، وعند توصيل النموذج التجريبي به لم ينقطع المصهر، مما يعني أنه بإمكاني توصيله بأمان إلى منفذ USB في جهاز الكمبيوتر.

خطوة 4 : برمجة النظام الخلفي باستخدام Arduino IDE

كيف يعمل النظام الخلفي؟

بما أنه لا يوجد نظام تشغيل على وحدة ESP12F، كان علي كتابة خادم ويب كامل من الصفر يوفر خصائص مشابهة لتثبيت Apache أو Nginx القياسي، ولهذا السبب قضيت حوالي شهر من وقتي الحر في تطوير خادم ويب بلغة C++ يوفر الميزات التالية:

  • خادم ويب ثابت لتقديم ملفات HTML وCSS وJS وغيرها من الملفات المدعومة.
  • عرض محتويات المجلدات Directory Listing مشابه لما يقدمه Apache.
  • نظام تسجيل دخول يعتمد على ملفات تعريف الارتباط Cookies.
  • مساحات تخزين عامة وخاصة.
  • واجهات برمجة API للرفع والتنزيل باستخدام البث الثنائي.
  • واجهات API لعرض معلومات الجهاز مثل WiFi وسعة التخزين.

ستحتاج إلى برنامج Arduino IDE لرفع البرنامج الثابت إلى WebStick، ويمكنك تثبيت دعم ESP8266 من مدير اللوحات Boards Manager، ثم اختيار Generic ESP8266 Module أو Wemos D1 Mini كلوحة مستهدفة.

إعدادات الرفع الموصى بها

للحصول على أفضل أداء، أنصح باختيار الإعدادين التاليين من قائمة اللوحة في Arduino IDE:

  • CPU Clockspeed بقيمة 160 ميجا هرتز.
  • IwIP Variant الإصدار v2 عالي عرض النطاق.

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

بعد اختيار جميع الإعدادات بشكل صحيح، قم بتوصيل WebStick بجهاز الكمبيوتر واضغط على Compile and Upload، وبعد عدة ومضات من مصباح RX سيتم تحميل البرنامج الثابت إلى اللوحة.

كود الأردوينو

يمكنك العثور على الشيفرة المصدرية للنظام الخلفي من هنـــا.

ملاحظات إعداد شبكة WiFi

يتم تحميل إعدادات WiFi وحساب المدير admin وخدمة mDNS مباشرة من بطاقة SD، لذلك لا تحتاج إلى تعديل أي شيء داخل كود Arduino لإعداد WebStick، راجع قسم بطاقة SD أدناه لمزيد من التفاصيل.

خطوة 5 : تجهيز وتثبيت الواجهة الأمامية على بطاقة SD

بالنسبة لبطاقة SD تحتاج إلى بطاقة قديمة نسبيا حتى يعمل النظام، وذلك لأن ESP8266 لا يستطيع الوصول إلى بطاقة SD إلا عبر وضع SPI، وأي بطاقة لا تدعم هذا الوضع لن تعمل.

في حالتي استخدمت بطاقة micro SD صناعية بسعة 512 ميجابايت وبنظام ملفات FAT.

قم بتحميل جميع الملفات الموجودة داخل مجلد sd_card ثم انسخها إلى بطاقة SD، وبعد ذلك اتبع التعليمات التالية لإعداد WebStick خلال بضع نقرات فقط:

  • انتقل إلى مجلد cfg/.
  • قم بتعديل ملف wifi txt بحيث يحتوي السطر الأول على اسم شبكة WiFi المنزلية والسطر الثاني على كلمة المرور.
  • قم بتعديل ملف admin txt بحيث يحتوي السطر الأول على اسم مستخدم المدير والسطر الثاني على كلمة المرور.
  • قم بتعديل ملف mdns txt إلى الاسم الذي تريده، فعلى سبيل المثال الاسم الافتراضي webstick يسمح لك بالوصول إلى الجهاز عبر الرابط http://webstick.local باستخدام متصفح يدعم mDNS.

بعد الانتهاء من الإعداد يمكنك البدء في استبدال ملفات html الموجودة على بطاقة SD، مثل استبدال ملف index html بصفحة رئيسية مخصصة، أو حذف مجلدات العرض التجريبية غير المرغوب فيها، مع الانتباه إلى أن بعض المجلدات محجوزة ولا يجب حذفها أو إعادة تسميتها.

المجلدات المحجوزة

  • /www/ وهو الجذر الرئيسي لموقع الويب ولا يجب حذفه.
  • /www/admin/ وهو الجذر الخاص بلوحة تحكم المدير وهو ضروري لوظائف الإدارة.
  • /www/store/ وهو مجلد التخزين الخاص ولا يمكن الوصول إليه إلا عبر مدير الملفات بعد تسجيل الدخول ولن يتم تقديمه كملفات ويب ثابتة.

أخيرا قم بإدخال بطاقة micro SD في WebStick، وبذلك يصبح الجهاز جاهزا للتشغيل.

ملاحظات

يجب أن يكون اسم mDNS فريدا إذا كان لديك أكثر من جهاز WebStick على نفس الشبكة.

خطوة 6 : توصيل WebStick بمصدر طاقة

لبدء تشغيل خادم الويب، كل ما عليك فعله هو توصيل WebStick بمصدر طاقة، وإذا قمت بتوصيله بمنفذ USB في جهاز الكمبيوتر ستلاحظ ظهور معلومات تصحيح Debug على المنفذ التسلسلي بسرعة 9600 باود.

في أسفل معلومات التصحيح ستجد عنوان IP الخاص بالجهاز، وفي حالتي كان 192.168.1.100، ويمكنك الاتصال به مباشرة باستخدام mDNS أو عنوان IP عبر فتح أحد الروابط التالية في المتصفح:

http://192.168.1.100

أو

http://webstick.local

وبذلك ستظهر الصفحة الرئيسية الخاصة بك.

خطوة 7 : الوصول إلى مدير الملفات

ضمن واجهة الويب التي قمت بتطويرها يوجد مدير ملفات مدمج يتيح لك الوصول إلى جميع الملفات وتنفيذ العمليات المختلفة عليها، ما عليك سوى الضغط على admin panel أو الانتقال مباشرة إلى المسار /admin مثل http://{your_device_ip}/admin ثم تسجيل الدخول باستخدام اسم المستخدم وكلمة المرور المحددين في ملف admin txt.

بعد ذلك ستظهر جميع محتويات مجلد web/ الموجود على بطاقة SD، وإذا رغبت في فتح أي ملف أو تعديله، فقط انقر عليه نقراً مزدوجاً وسيقوم مدير الملفات بتشغيل التطبيق المناسب تلقائيا، ومن بين تطبيقات الويب المدمجة:

  • مشغل موسيقى مع التوصية باستخدام ملفات mp3 بحجم أقل من 5 ميجابايت.
  • مشغل فيديو مع التوصية باستخدام ملفات webm بحجم أقل من 5 ميجابايت.
  • عارض صور للامتدادات المدعومة عبر الويب فقط.
  • محرر Markdown.
  • محرر أكواد برمجية.

خطوة 8 : تعديل ملفات HTML مباشرة من المتصفح

إذا كنت ترغب في تعديل صفحة الويب دون فصل بطاقة SD، يمكنك تحديد ملفات HTML مباشرة أو تحديد عدة ملفات بالضغط على Ctrl ثم النقر عليها، وبعد ذلك الضغط على Open، حيث يتيح لك محرر Notepad المدمج تعديل ملفات HTML مباشرة داخل المتصفح.

أما إذا كنت تفضل التعديل محلياً ثم رفع الملفات إلى WebStick، فيمكنك سحب الملفات من مستعرض الملفات File Explorer أو Finder وإفلاتها داخل مدير الملفات لرفعها، مع الأخذ في الاعتبار أن ESP8266 بطيء نسبياً في معالجة الرفع، لذلك قد تحتاج إلى الانتظار قليلاً أثناء كتابة البيانات على بطاقة SD.

نظرياً يمكن لوحدة ESP12F الوصول إلى سرعة شبكة تتراوح بين 2 و4 ميجابت في الثانية، لكن في الواقع غالبا ما تكون السرعة بين 400 و600 كيلوبت في الثانية أثناء القراءة والكتابة المتزامنة، وربما يكون ذلك بسبب بطاقة SD، لذلك يفضل عدم استخدام موارد كبيرة مثل الصور الضخمة أو ملفات CSS الثقيلة، والاعتماد بدلاً من ذلك على شبكات CDN للسكربتات أو استخدام صيغ صور مضغوطة مثل JPEG.

خطوة 9 : إعداد إعادة توجيه المنافذ (اختياري)

كيف يمكنني الوصول إلى موقعي من الإنترنت؟

إذا كنت ترغب في الوصول إلى WebStick من خارج الشبكة المحلية، يمكنك تفعيل إعادة توجيه المنافذ في جهاز الراوتر المنزلي لتوجيه المنفذ الخارجي 80 إلى عنوان IP الخاص بـ WebStick، ونظراً لكون هذا الشرح غير تقني بحت وتوفر العديد من الشروحات الجاهزة، فلن يتم الخوض في التفاصيل هنا.

كيف أحصل على اسم نطاق خاص؟

إذا كنت ترغب في الوصول إلى WebStick باستخدام اسم نطاق مثل http://yourdomain.com بدلاً من استخدام عنوان IP المنزلي، فستحتاج إلى شراء اسم نطاق من أحد مزودي خدمات تسجيل النطاقات.

خطوة 10 : خادم الويب بهيئة USB أصبح جاهزاً

الآن أصبح لديك خادم ويب صغير بحجم وحدة USB جاهز للاستخدام.

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

والآن استمتع باستضافة صفحتك الشخصية الصغيرة بكل حرية وسهولة.

لا توجد تعليقات حتي الآن.
تسجيل الدخول مطلوب

يجب عليك تسجيل الدخول لإضافة تعليق.

تسجيل الدخول