هذه شاشة قابلة للفصل تعتمد على DIY ESP32، وهي مُحسّنة لسهولة التجميع في المنزل بكميات صغيرة ولكن يمكن توسيع نطاقها إلى شاشات كبيرة بأسعار معقولة.
أحدث القطع الأثرية التي تم إنشاؤها تلقائيًا (لم يتم اختبارها!).
التعليمات: دليل التجميع الإصدار الثاني
أبعاد الوحدة:
أحدث القطع الأثرية التي تم إنشاؤها تلقائيًا (لم يتم اختبارها!).
ملحوظة
بالنسبة للشاشات الصغيرة (حتى 3 وحدات)، يمكنك تخطي لوحات التحكم المخصصة واستخدام وحدات تشغيل ULN2003A الجاهزة والموصولة بـ Arduino Uno. تم توثيق هذا جزئيًا في الويكي ولكنه قد يتطلب بعض التعديلات الإضافية حتى يعمل. المساعدة مطلوبة: إذا كنت ترغب في المساعدة في تحسين هذه التعليمات، فيرجى التواصل مع خادم Discord، شكرًا!
تم تصميم نظام الإلكترونيات "Chainlink" لدعم سلاسل طويلة من لوحات التشغيل للتحكم في شاشات العرض المتوسطة/الكبيرة (ما يصل إلى 100+ وحدة ذات رفرف منفصل). كما أنها مصممة لتكون سهلة ورخيصة عند طلب تجميعها مسبقًا أو تصنيعها بنفسك، خاصة بكميات أكبر، نظرًا لمكونات قائمة مكونات الصنف (BOM) البسيطة والمكونات المثبتة على السطح.
لبناء شاشة العرض، ستحتاج إلى 3 إلكترونيات مختلفة:
تحتاج كل وحدة إلى مستشعر تأثير القاعة لمعايرة بدء التشغيل ومراقبة الأخطاء.
يمكن العثور على المستشعرات الأقدم للإصدار 0.7 والأجهزة الأقدم المقطوعة بالليزر في إصدار المستشعر ذي العلامات.
هذه المستشعرات القديمة غير متوافقة مع أجهزة القطع بالليزر v2.
أجهزة استشعار جديدة للأجهزة المقطوعة بالليزر v2 - تستخدم هذه المكونات المثبتة على السطح وتم تحسينها لتجميع PCB في JLCPCB. لا تتوافق هذه المستشعرات الجديدة مع الإصدار 0.7 والأجهزة الأقدم المقطوعة بالليزر.
تتوفر حزم مكونة من 6 أجهزة استشعار مجمعة في الغالب في متجر Bezek Labs، وتأتي مع رؤوس الدبوس ذات الزاوية اليمنى والمغناطيسات التي ستحتاج إليها. تدعم المشتريات التطوير المستمر لهذا المشروع.
أحدث القطع الأثرية التي تم إنشاؤها تلقائيًا (لم يتم اختبارها!).
الميزات الرئيسية:
تتوفر لوحات Chainlink Driver مجمعة في الغالب في متجر Bezek Labs، وتأتي مع الموصلات الإضافية وكابلات الشريط التي ستحتاج إليها. تدعم المشتريات التطوير المستمر لهذا المشروع.
يتوفر المزيد من المعلومات حول إنشاء واستخدام برامج تشغيل Chainlink في دليل مستخدم Chainlink Driver.
أو إذا كنت ترغب في طلبها مباشرةً من إحدى الشركات المصنعة، فقد تم تحسين هذا التصميم للتجميع في JLCPCB، ويتم إنشاء الملفات تلقائيًا لطلب مركبات ثنائي الفينيل متعدد الكلور المجمعة هناك. أو إذا كنت ترغب في تجميع هذه اللوحة بنفسك بدلاً من الدفع مقابل التجميع، فيمكنك عرض أداة BOM/placen التفاعلية
اعتمادًا على المخزون المتوفر في JLCPCB، قد تحتاج إلى تعديل ملف BOM يدويًا لاستخدام مكونات بديلة، أو إعادة إنشاء الملفات بنفسك باستخدام export_jlcpcb.py
وتحديد واحد أو أكثر من أسماء حقول LCSC_ALT_*
لاستخدام رقم جزء بديل محدد مسبقًا. راجع الرسم التخطيطي للبدائل المتاحة المحددة مسبقًا (تحقق من خصائص/حقول الرمز).
أحدث القطع الأثرية التي تم إنشاؤها تلقائيًا (لم يتم اختبارها!).
يعد Chainlink Buddy [T-Display] طريقة ملائمة لتوصيل لوحة T-Display ESP32 (وحدة التحكم الدقيقة الموصى بها) بسلسلة من برامج تشغيل Chainlink.
الميزات الرئيسية:
تتوفر لوحات Chainlink Buddy [T-Display] في متجر Bezek Labs، وتأتي مع الموصلات الإضافية التي ستحتاج إليها. تدعم المشتريات التطوير المستمر لهذا المشروع.
أحدث القطع الأثرية التي تم إنشاؤها تلقائيًا (لم يتم اختبارها!).
يجعل Chainlink Buddy [Breadboard] من السهل توصيل برنامج تشغيل Chainlink بلوحة التجارب للنماذج الأولية. يمكنك استخدام 5 أسلاك دوبونت والحصول على عش فئران فوضوي، أو يمكنك استخدام كابل شريطي واحد ولوحة القطع الملساء هذه.
تتوفر لوحات Chainlink Buddy [Breadboard] في متجر Bezek Labs، وتأتي مع الموصلات الإضافية التي ستحتاج إليها. تدعم المشتريات التطوير المستمر لهذا المشروع.
أحدث القطع الأثرية التي تم إنشاؤها تلقائيًا (لم يتم اختبارها!).
بالنسبة لشاشات العرض الأكبر حجمًا، يجب عليك توخي الحذر الإضافي لجعل الأجهزة أكثر قوة في مواجهة الأخطاء المحتملة. تعد Chainlink Base تصميمًا تجريبيًا لوحدة التحكم (لكنه غير مدعوم) يضيف بعض الوظائف الإضافية. لقد تم اختباره ويبدو أنه يعمل، ولكن لا يُنصح باستخدامه بشكل عام.
يعد Chainlink Base PCB بديلاً اختياريًا لـ Chainlink Buddy، المصمم للشاشات الكبيرة بشكل خاص. يستضيف ESP32 ويضيف خيارات اتصال إضافية (محطات UART وRS485 التسلسلية) وتوزيع الطاقة (قنوات طاقة يتم مراقبتها بشكل مستقل لـ "مناطق" متعددة من لوحات التشغيل).
الميزات الرئيسية:
أحدث القطع الأثرية التي تم إنشاؤها تلقائيًا (لم يتم اختبارها!).
لوحة التشغيل الكلاسيكية مهملة وغير مدعومة.
تم تصميم لوحة التحكم الكلاسيكية لتوصيلها باردوينو مثل الدرع، ويمكنها التحكم في 4 محركات متدرجة. يمكن ربط ما يصل إلى 3 لوحات تشغيل معًا، لما يصل إلى 12 وحدة يتم التحكم فيها بواسطة Arduino واحد.
يستخدم السائق محركي تسجيل تبديل منخفض الجانب MIC5842، مع صمامات ثنائية مدمجة للقمع العابر، للتحكم في المحركات، وسجل تحويل 74HC165 للقراءة من 4 مستشعرات موضعية مغناطيسية ذات تأثير القاعة. توجد مصابيح LED اختيارية WS2812B RGB والتي يمكن استخدامها للإشارة إلى حالة كل قناة من القنوات الأربع.
إذا كنت ترغب في طباعة اللوحات الخاصة بك، أو قص ملصقات أحرف الفينيل المخصصة، فإن المشروع يتضمن برنامجًا نصيًا لإنشاء ملفات تصميم متجهة قابلة للتكوين للغاية:
المهام المطلوبة: الانتهاء من توثيق هذا وتقديم بعض الأمثلة على الصور...
إذا كنت ترغب في مشاركة وجه أمامي واحد عبر وحدات متعددة (بدلاً من أن يكون لكل وحدة وجه أمامي خاص بها)، فإن الريبو يتضمن برنامجًا نصيًا لإنشاء لوحة أمامية مدمجة للقطع بالليزر أو الطحن/التوجيه باستخدام الحاسب الآلي.
يمكنك تعديل:
بالنسبة للقطع باستخدام الحاسب الآلي، يدعم البرنامج النصي عرض ملف متجه محسّن للمواد الأكثر سمكًا (على سبيل المثال MDF مقاس 6 مم) حيث سيتم قطع فتحات المسامير فقط. في هذا الوضع، يمكن قطع فتحات قطع العلبة العلوية/السفلية كجيوب بحجم 4 مم تقريبًا بحيث لا تكون مرئية من الوجه الأمامي. يقوم البرنامج النصي تلقائيًا بإنشاء أشكال عظام الكلب لقطع الجيب هذه.
المهام المطلوبة: الانتهاء من توثيق هذا وتقديم بعض الأمثلة على الصور...
يتضمن المشروع أيضًا عددًا من التصميمات المطبوعة ثلاثية الأبعاد الاختيارية لتسهيل عملية التجميع. وتشمل هذه:
كل هذه التصميمات هي حدودية وقابلة للتخصيص داخل OpenSCAD. لطباعتها، افتح الملف ذي الصلة في OpenSCAD واستخدم File -> Export -> Export as STL
لتقديم التصميم كملف STL لقطاعة التقطيع الخاصة بك.
من غير المرجح أن يكون هذا مفيدًا إلا إذا كنت تخطط لتصنيع العشرات إلى المئات من لوحات Chainlink Driver، ولكن Chainlink Driver Tester هو اختبار كامل للوحات Chainlink Driver حيث يتم تجميعها بواسطة مُصنع PCBA.
وهذا حاليا قيد التطوير النشط للغاية.
الميزات الرئيسية:
أحدث القطع الأثرية التي تم إنشاؤها تلقائيًا (لم يتم اختبارها!).
تمت كتابة البرنامج الثابت لبرنامج التشغيل باستخدام PlatformIO مع إطار عمل Arduino وهو متاح على firmware/
.
تطبق البرامج الثابتة وحدة تحكم ذات حلقة مغلقة تقبل الحروف كمدخل عبر USB التسلسلي وتقوم بتشغيل محركات السائر باستخدام منحدر تسريع محسوب مسبقًا للتحكم السلس. يقوم البرنامج الثابت تلقائيًا بمعايرة موضع التخزين المؤقت عند بدء التشغيل، باستخدام المستشعر المغناطيسي لتأثير القاعة، وسيقوم بإعادة معايرة نفسه تلقائيًا إذا اكتشف أن موضع التخزين المؤقت قد خرج عن المزامنة. إذا كان من المتوقع أن يؤدي التدوير الموجه إلى تجاوز البكرة لوضع "المنزل"، فسيؤكد ذلك أن المستشعر لم يتم تشغيله مبكرًا جدًا ولا متأخرًا جدًا؛ وإلا فإنه سيبحث عن موضع "الصفحة الرئيسية" للمزامنة قبل المتابعة إلى الحرف المطلوب.
لكي يتمكن الكمبيوتر من التواصل مع سبليتفلاب، فإنه يظهر كجهاز تسلسلي USB.
ومع ذلك، فإن استخدام Arduino's Serial
ممنوع تمامًا، وبدلاً من ذلك يتم توفير فكرة logger
لإرسال سجلات تصحيح النص الأساسية. ويتم نقل البيانات الأخرى بطريقة منظمة، كما هو موضح أدناه.
وهذا يسمح بالمرونة في تنسيق البيانات المنقولة عبر التسلسل، وفي الواقع يوفر سبليت فلاب وضعين تسلسليين مختلفين يخدمان أغراضًا مختلفة.
افتراضيًا، يبدأ الأمر في وضع "نص عادي"، وهو وضع صديق للمطورين وربما تكون على دراية به إذا قمت بفتح شاشة تسلسلية مع توصيل سبليتفلاب:
{"type":"init", "num_modules":6}
ومع ذلك، فإن هذا ليس أمرًا رائعًا لتكوين التحديثات أو تلقيها برمجيًا من Splitflap، لذا بدلاً من ذلك، توفر البرامج الثابتة واجهة برمجية باستخدام بروتوكول ثنائي يعتمد على معيار Protobuf من Google.
يعد الوضع التسلسلي الثنائي القائم على البروتوبوف وسيلة مدمجة ومرنة لنقل البيانات المنظمة من الكمبيوتر المضيف إلى سبليت فلاب والعكس.
يوفر protobuf العديد من المزايا مقارنة بآليات التشفير الأخرى مثل JSON:
هذا هو السبب في أن Splitflap افتراضيًا في وضع النص العادي لتسهيل التحقق من الصحة/تصحيح الأخطاء.
يتم تشفير رسائل Protobuf بتنسيق السلك الثنائي الخاص بها ويتم إلحاق المجموع الاختباري CRC32 بها. ثم يتم تشفير هذه السلسلة الثنائية بأكملها COBS في حزمة، ويتم تحديدها/تأطيرها بـ 0 (NULL) بايت عند إرسالها عبر المسلسل. يوفر هذا واجهة أساسية قائمة على الحزم مع فحوصات التكامل (بدلاً من الواجهة الأولية المستندة إلى الدفق للاتصال التسلسلي).
يتحول سبليتفلاب تلقائيًا إلى وضع البروتوبوف الثنائي عندما يتلقى 0 بايت.
يمكن التحكم في الشاشة بواسطة كمبيوتر متصل بـ ESP32 عبر USB التسلسلي. إذا قمت ببناء شاشة عرض وترغب في اختبارها، فاطلع على العرض التوضيحي المستند إلى الويب هنا والذي سيتم توصيله بشاشتك باستخدام USB - لا يلزم وجود تطبيقات/تثبيت!
يدعم البرنامج الثابت الوضع التسلسلي للنص العادي (ممكّنًا افتراضيًا) لسهولة الاختبار، والوضع الثنائي القائم على البروتوبوف الذي تستخدمه مكتبات البرامج لتحسين التحكم البرمجي والتغذية الراجعة.
يمكنك العثور على أمثلة لمكتبات Typescript وPython في مجلد software/chainlink
.
هل تتطلع إلى إجراء بعض التعديلات أو التلاعب بالتصميم الموجود على جهازك المحلي؟ القفز الحق في! لاحظ أن جميع البرامج النصية والأتمتة تم تطويرها لـ Ubuntu. تم التخطيط لدعم نظام التشغيل Mac OS، ولكن لم يتم تنفيذه حاليًا (ولكن لا تتردد في فتح PR إذا كنت تريد المساعدة!).
ملف التصميم الرئيسي هو 3d/splitflap.scad
ستحتاج إلى إصدار حديث من OpenSCAD (على سبيل المثال 2015-03)، والذي قد يلزم تثبيته من خلال PPA: sudo add-apt-repository ppa:openscad/releases
بشكل عام، يتم إنشاء الأجسام الصلبة مثل جوانب العلبة أو مكونات التخزين المؤقت من مواد أولية ثنائية الأبعاد ثم يتم بثقها إلى السمك المناسب للعرض ثلاثي الأبعاد، بدلاً من استخدام مواد أولية ثلاثية الأبعاد. وهذا يبسط التصميم دون فقدان التعبير. لا يسمح شعاع القطع بالليزر العمودي بإجراء عمليات قطع تختلف في البعد Z على أي حال.
لاحظ أنه على الرغم من أن التصميم ذو معلمات وقد يتم تعديل العديد من القيم، إلا أنه لا يوجد حاليًا أي فحص للأخطاء للمعلمات غير الصالحة أو مجموعات المعلمات. يرجى الحرص على التحقق من صحة التصميم إذا قمت بتغيير أي معلمات. على سبيل المثال، في حين أن معظم التصميم سوف يتكيف مع قيمة num_modules
التي تم تغييرها، فإن بعض القيم قد تتسبب في تقاطع بعض العناصر مع عناصر أخرى أو بروزها خارج أبعادها المتوقعة.
يمكن تحويل التصميم إلى ثنائي الأبعاد للقطع بالليزر عن طريق تشغيل 3d/scripts/generate_2d.py [--panelize <number>]
، والذي يخرج إلى 3d/build/laser_parts/combined.svg
. تسمح الوسيطة --panelize
الاختيارية بعرض لوحة من الوحدات في ملف SVG واحد، من أجل القطع بالليزر بكميات كبيرة.
داخليًا، يستخدم التصميم وحدة projection_renderer
( 3d/projection_renderer.scad
)، والتي تأخذ قائمة من العناصر الفرعية لعرضها، واعتمادًا على render_index
يعرض عنصرًا فرعيًا واحدًا في كل مرة. كما أنه يضيف مادة إلى كل شكل لحساب الشق الذي سيتم قطعه بالليزر.
يتفاعل البرنامج generate_2d.py
مع وحدة projection_renderer
باستخدامها أولاً لتحديد عدد المكونات الفرعية التي سيتم عرضها، ثم يقوم بتشغيل OpenSCAD لتصدير كل مكون إلى ملف SVG. فهو يقوم ببعض المعالجة اللاحقة على مخرجات SVG (يضيف بشكل ملحوظ "mm" إلى أبعاد المستند)، ثم يجمع كل المكونات في مخرجات combined.svg
واحدة.
بمجرد إنشاء ملف combined.svg
، ستحتاج إلى التحقق مرة أخرى من عدم وجود أي خطوط قطع زائدة عن الحاجة تتم مشاركتها بواسطة عدة قطع متجاورة، لتوفير الوقت/التكلفة عند القطع. يجب أن يتم اكتشافها تلقائيًا (ويتم تمييزها باللون الأحمر في العرض أعلاه)، ولكن لا يضر التحقق مرة أخرى. في Inkscape، حدد أداة "تحرير المسارات حسب العقد" وحدد حافة لحذفها - يجب أن تتحول نقاط النهاية إلى اللون الأزرق. ثم انقر فوق "حذف المقطع بين عقدتين غير نقطة النهاية"، وكرر هذا لجميع خطوط القطع الزائدة عن الحاجة.
يمكن تحويل التصميم إلى صورة متحركة ثلاثية الأبعاد (كما هو موضح أعلاه) عن طريق تشغيل 3d/scripts/generate_gif.py
، والذي يخرج إلى 3d/build/animation/animation.gif
يقوم البرنامج النصي generate_gif.py
بتشغيل مثيلات OpenSCAD متعددة بالتوازي لعرض التصميم من 360 درجة إلى إطارات png فردية، والتي يتم دمجها بعد ذلك في الصورة المتحركة gif النهائية. كجزء من إنشاء الرسوم المتحركة، يعرض generate_gif.py
التصميم بتكوينات متعددة (إطار غير شفاف، إطار شفاف، بدون إطار، وبدون لوحات) عن طريق تعيين متغيرات render_enclosure
و render_flaps
.
يمكن تقديم التصميم إلى سلسلة من ملفات STL (واحد لكل لون مستخدم في النموذج) ليتم عرضه في عارض تفاعلي ثلاثي الأبعاد على الويب. على غرار projection_renderer
المستخدم لعرض المكونات الفردية للقطع بالليزر، يكتشف ColoredStlExporter جميع الألوان المستخدمة في النموذج ويعرضها واحدًا تلو الآخر لفصل ملفات STL، بالإضافة إلى بيان يعين كل ملف STL إلى لون RGB الخاص به . يتم تحميل ملفات STL والبيان باستخدام three.js لعرض نموذج تفاعلي على موقع ويب باستخدام WebGL. راجع منشور المدونة هذا لمزيد من التفاصيل حول كيفية عمل التصدير وعارض three.js: حيل عرض OpenSCAD، الجزء 3: عارض الويب.
تم تطوير جميع الأجهزة الإلكترونية باستخدام KiCad 5. يتم توفير الألواح بواسطة KiKit ويتم توفير جيل gerber/BOM بواسطة KiBot.
يتم تحديث عروض التصميم الميكانيكي والكهربائي والروابط أعلاه تلقائيًا عند كل التزام بأحدث عرض. راجع منشور المدونة هذا للحصول على مزيد من التفاصيل حول كيفية عمل ذلك: عرض KiCad الآلي، وعرض OpenSCAD باستخدام Travis CI.
يمكن عرض تخطيط ثنائي الفينيل متعدد الكلور إلى svg أو png (كما هو موضح أعلاه) عن طريق تشغيل electronics/scripts/generate_svg.py file.kicad_pcb
. يستخدم هذا واجهة برمجة تطبيقات البرمجة النصية Python الخاصة بـ KiCad لعرض عدة طبقات لملفات svg فردية، ومعالجتها لتطبيق إعدادات اللون والعتامة، ثم دمجها في ملف svg واحد. للحصول على تفاصيل إضافية، راجع منشور المدونة هذا: البرمجة النصية لصادرات KiCad Pcbnew.
لمراجعة التصميم، يمكن إنتاج حزمة pdf تحتوي على معلومات نحاسية وشاشة حريرية وحفر عن طريق تشغيل electronics/scripts/generate_pdf.py file.kicad_pcb
.
يمكن تصدير ملفات Gerber للتصنيع عن طريق تشغيل electronics/scripts/generate_gerber.py file.kicad_pcb
. يؤدي هذا إلى إنشاء ملفات جربر وملف حفر Excellon مع اصطلاحات التسمية الخاصة بـ Seeed Studio وينتج ملف .zip
الذي يمكن إرساله للتصنيع.
لا يمكن برمجة EESchema بسهولة، لذا لتصدير electronics/scripts/export_schematic.py
يبدأ X Virtual Frame Buffer (Xvfb) ويفتح واجهة المستخدم eeschema
داخل تلك الشاشة الافتراضية، ثم يرسل سلسلة من ضغطات المفاتيح المشفرة عبر xdotool
إلى التفاعل مع واجهة المستخدم الرسومية والنقر فوق مربعات الحوار. هذا هش للغاية ولكن يبدو أنه يعمل بشكل جيد في الوقت الحالي. للحصول على تفاصيل إضافية، راجع منشور المدونة هذا: استخدام أتمتة واجهة المستخدم لتصدير مخططات KiCad.
أود أن أسمع أفكارك وأسئلتك حول هذا المشروع، ويسعدني دمج أي تعليقات قد تكون لديكم في هذه التصاميم! من فضلك لا تتردد (وتشجيعك) على فتح مشكلات GitHub، ومراسلتي عبر البريد الإلكتروني مباشرة، والتواصل على Twitter، والمشاركة في تطوير المصادر المفتوحة ودعنا نواصل الدردشة والبناء معًا!
تم ترخيص هذا المشروع بموجب Apache v2 (راجع LICENSE.txt).
Copyright 2015-2024 Scott Bezek and the splitflap contributors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.