اصنع بنفسك جهاز تخزين شبكي ESP32 NAS صغير الحجم لكنه قوي

اصنع بنفسك جهاز تخزين شبكي ESP32 NAS صغير الحجم لكنه قوي

مقدمة

إخلاء مسؤولية:

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

ما هو TinyNAS؟

يستمد TinyNAS فكرته الأساسية من مشروع WebStick الأصلي بهيئة USB ومخصص لشريحة ESP8266، حيث قمت بتطوير الفكرة وتحسينها وتحويلها إلى TinyNAS مصمم خصيصا للعمل باستخدام ESP32، مع تقديم أداء أفضل ودعم يصل إلى ثلاث بطاقات SD في الوقت نفسه، ويشبه TinyNAS في شكله جهاز NAS مصغر، ويعمل كخادم ويب يتصل بشبكة WiFi المنزلية الخاصة بك، مما يتيح الوصول المحلي عبر mDNS داخل الشبكة، كما يمكن الوصول إليه عن بُعد من خلال إعدادات إعادة توجيه المنافذ Port Forwarding على جهاز الراوتر المنزلي.

الوظائف والإمكانات

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

أصل المشروع

يعود أصل هذا المشروع إلى WebStick والذي كان يعتمد على عامل شكل USB ومخصص لشريحة ESP8266، وبإدراك الإمكانات الأكبر التي توفرها شريحة ESP32 من حيث الأداء والقدرة قمت بتعديل الفكرة وتحسينها لإنشاء TinyNAS، ورغم احتفاظه بروح جهاز NAS الحقيقي، إلا أنه يتميز بحجمه الصغير والقوة التي يوفرها ESP32.

ملاحظة: على الرغم من التقدم الكبير الذي حققه هذا المشروع، إلا أن هناك بعض المشكلات التي لا تزال بحاجة إلى حل، ومساهمتك ستكون ذات قيمة كبيرة في معالجة هذه التحديات، إذا كنت مهتما بالمساهمة يرجى التواصل عبر البريد الإلكتروني yadawiat2024@gmail.com.

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

لوازم

يتطلب هذا المشروع خبرة جيدة في لحام مكونات SMD، كما يجب توفير جميع المكونات المدرجة في قائمة المواد BOM المرفقة أدناه، بالإضافة إلى أدوات اللحام الأساسية ولوحات PCB المخصصة والأجزاء المطبوعة بتقنية الطباعة ثلاثية الأبعاد، ستحتاج أيضا إلى جهاز كمبيوتر لرفع البرنامج الثابت Firmware على TinyNAS، كما ستحتاج إلى ثلاث بطاقات SD وكابل Ribbon.

لتحميل ملف قائمة المواد BOM .csv اضغط هنـــا.

خطوة 1 : الحصول على لوحات الدوائر المطبوعة PCB

بما أن لوحات PCB تشكل المكون الأساسي لهذا المشروع، يمكنك طلبها من أي مصنع لوحات دوائر تفضله.

حتى تتوافق اللوحات مع التصميم بشكل صحيح، يجب أن يكون سمك لوحات PCB هو 0.8 مم لضمان التركيب السليم.

ولمزيد من التوضيح، يحتوي هذا المشروع على ما مجموعه 8 لوحات PCB تتوزع على 4 أنواع مختلفة، وفيما يلي عدد اللوحات المطلوبة لكل نوع:

  • Gerber_Main_PCB zip = 1.
  • Gerber_PCB_Pads_NAS zip = 1.
  • Gerber_PCB_Pads_SD_Card zip = 3.
  • Gerber_PCB_SD_Cards zip = 3.

ملاحظة: عند طلب لوحات PCB يتم توفيرها افتراضيا في حزمة تحتوي على 5 قطع، لذلك لا داعي لطلبها عدة مرات حتى لو كان العدد المطلوب أقل.

يمكنك الوصول إلى ملفات Gerber من خلال مستودع GitHub من هنـــا.

خطوة 2 : طباعة أو شراء الأجزاء ثلاثية الأبعاد

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

وفيما يلي توزيع عدد القطع المطلوبة لكل ملف:

  • DIY TinyNAS Body With Logo stl = 1.
  • DIY TinyNAS Bottom stl = 1.
  • DIY TinyNAS Backplate stl = 1.
  • SD Enclosure Body stl = 3.
  • SD Enclosure Lever stl = 3.
  • SD Enclosure Lid stl = 3.

يمكنك الوصول إلى ملفات الطباعة ثلاثية الأبعاد من خلال مستودع GitHub من هنـــا.

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

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

استغرقت عملية لحام جميع اللوحات حوالي ساعة ونصف تقريبا.

ولتسهيل عملية تحديد أماكن المكونات، قمت بتوفير ملفات IBOM بصيغة HTML على GitHub، ويمكنك الرجوع إليها من هنـــا لمعرفة مكان كل مكون أثناء عملية اللحام.

خطوة 4 : لحام لوحات بطاقات SD

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

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

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

خطوة 6 : تركيب جميع المكونات داخل الأجزاء المطبوعة ثلاثياً

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

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

لرفع البرنامج الثابت Firmware الخاص بـ TinyNAS ستحتاج إلى برنامج Arduino IDE، ابدأ بتثبيت حزمة ESP32 من مدير اللوحات Boards Manager، ثم اختر اللوحة TTGO T7 V1.4 Mini32 كلوحة مستهدفة.

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

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

يمكن العثور على الشيفرة المصدرية الخاصة بخادم النظام الخلفي من هنـــا، حيث يجب نسخ جميع الملفات الموجودة داخل مجلد code ووضعها داخل مجلد جديد باسم web-server، وبعد ذلك سيكون بإمكانك ترجمة الكود وتشغيله.

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

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

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

بالنسبة لبطاقة SD تحتاج إلى بطاقة مهيأة بنظام ملفات FAT حتى يعمل النظام بشكل صحيح، وذلك لأن شريحة ESP32 لا تستطيع الوصول إلى بطاقة SD إلا إذا كانت تعمل بنظام FAT.

في حالتي استخدمت ثلاث بطاقات micro SD بسعة 16 جيجابايت لكل بطاقة ومهيأة بنظام FAT، وتم الحصول عليها من إحدى المواقع الإلكترونية.

قم بتحميل جميع الملفات الموجودة داخل مجلد SD Card Files ثم انسخها بالكامل إلى بطاقة SD، وبعد ذلك اتبع التعليمات التالية لإعداد TinyNAS بخطوات بسيطة وسريعة.

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

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

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

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

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

ملاحظات

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

خطوة 9 : توصيل TinyNAS بمصدر طاقة

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

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

http://192.168.0.114

أو

http://tinynas.local

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

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

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

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

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

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

لتحرير صفحات الويب الخاصة بك بسهولة دون الحاجة إلى فصل بطاقة SD، اتبع الخطوات التالية:

التحرير المباشر:

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

التحرير المحلي ثم الرفع:

  • إذا كنت تفضل تعديل الملفات محليا ثم رفعها إلى TinyNAS، يمكنك القيام بذلك بسهولة عن طريق سحب الملفات من مستعرض الملفات في جهازك File Explorer أو Finder وإفلاتها داخل مدير الملفات لرفعها.
  • يجب الأخذ في الاعتبار أن شريحة ESP32 قد تحتاج إلى بعض الوقت لمعالجة عملية الرفع وكتابة البيانات على بطاقة SD.

على الرغم من أن ESP32 تدعم نظريا سرعات شبكة تصل إلى 8 ميجابت في الثانية، إلا أن الأداء الفعلي في الواقع غالبا ما يكون في حدود 1 ميجابت في الثانية عند تنفيذ عمليات القراءة والكتابة المتزامنة، وقد يتأثر ذلك بإمكانيات بطاقة SD المستخدمة، وبناء على ذلك ينصح بتجنب استخدام الموارد الكبيرة مثل الصور الضخمة أو ملفات CSS الثقيلة على TinyNAS، ويفضل الاعتماد على شبكات CDN للسكريبتات أو استخدام صيغ صور مضغوطة مثل JPEG لتحسين الكفاءة.

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

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

إذا كنت ترغب في الوصول إلى TinyNAS من خارج الشبكة المحلية عبر الإنترنت، يمكنك تفعيل خاصية إعادة توجيه المنافذ على جهاز الراوتر المنزلي، ويتطلب ذلك توجيه المنفذ الخارجي 80 إلى عنوان IP الخاص بجهاز TinyNAS، ونظرا للطابع غير التقني لهذا الشرح وتوفر العديد من الشروحات التفصيلية حول إعداد Port Forwarding لعناوين IP محددة، فلن يتم التوسع في شرح هذه الخطوة هنا.

الحصول على اسم نطاق خاص:

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

خطوة 13 : TinyNAS أصبح جاهزاً

تهانينا، خادم الويب TinyNAS الخاص بك أصبح الآن جاهزا للعمل.

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

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

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

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

تسجيل الدخول