مشروع الحديد: كيف بنينا غرفة مع مهمة القراصنة

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

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

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


كان هناك الكثير من الطلبات لإظهار لحظة تنظيف الغرفة - نعرض كيف نقوم بتفكيكها

هندسة الأجهزة: التحكم في الغرفة

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

تذكر النكتة القديمة "يرمز الحرف S في IoT إلى الأمان" (يشير "الحرف S في اختصار IoT إلى الأمان")، قررنا أن يتفاعل اللاعبون هذه المرة في سيناريو اللعبة فقط مع الواجهة الأمامية والخلفية الموقع، ولكن لا تحصل على فرصة للوصول مباشرة إلى الحديد.

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

قبل البدء بالتصميم قمنا بصياغة عدة مبادئ للتحكم بأجهزة الألعاب والتي أصبحت أساس التصميم:

لا تستخدم الحلول اللاسلكية

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

لا تستخدم أي أجهزة منزلية ذكية خاصة

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

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

لقد جمعنا كل العناصر من الأجهزة المتاحة للجمهور والتي يمكن شراؤها من متاجر قطع غيار الراديو العادية: بين توصيل البيتزا والكولا الدايت، كانت شركات التوصيل Chip and Dip وLeroy تأتي باستمرار إلى الموقع.

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

يجب ألا تكون جميع المرحلات والأرودين مرئية في الإطار

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

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

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

من وجهة نظر تنفيذ الأجهزة، يتحكم هذا الجهاز في 6 عناصر:

  1. العديد من مصابيح الطاولة، لديها حالة تشغيل/إيقاف ويتم التحكم فيها من قبل اللاعبين
  2. الحروف الموجودة على الحائط، يمكنها تغيير لونها بناءً على أمر اللاعبين
  3. المراوح التي تقوم بتدوير وفتح المخطط التوضيحي عندما يكون الخادم تحت التحميل
  4. التحكم بالليزر عن طريق PWM
  5. التقطيع الذي أكل المال في الموعد المحدد
  6. آلة دخان تنفجر قبل كل طلقة ليزر


اختبار آلة الدخان بالليزر

لاحقًا، تمت إضافة ضوء مسرح، والذي كان يقف خلف الإطار ويتم التحكم فيه تمامًا مثل المصابيح من النقطة 1. وعمل ضوء المسرح في حالتين: أضاء الليزر عند تطبيق الطاقة عليه، وأضاء الوزن قبل الضوء. تم إطلاق الليزر في وضع القتال.

ما هو هذا الجهاز الذكي؟

مشروع الحديد: كيف بنينا غرفة مع مهمة القراصنة

طوال الطريق، حاول يورا، رجل الأجهزة لدينا، عدم تعقيد الأمور والتوصل إلى أبسط الحلول الممكنة.

كان من المفترض أن يقوم VPS ببساطة بتشغيل برنامج نصي يستقبل json مع حالة الأجهزة ويرسله إلى Arduino المتصل عبر USB.

متصلة بالمنافذ:

  • 16 مرحلًا عاديًا (هم الذين يصدرون صوت النقر الذي تم سماعه في الفيديو. اخترناهم بشكل أساسي بسبب هذا الصوت)
  • 4 مرحلات الحالة الصلبة للتحكم في قنوات PWM، مثل المراوح،
  • مخرج PWM منفصل لليزر
  • الإخراج الذي يولد إشارة إلى شريط LED

فيما يلي مثال لأمر json الذي تم إرساله إلى التتابع من الخادم

{"power":false,"speed":0,"period":null,"deviceIdentifier":"FAN"}

وهذا مثال على الوظيفة التي وصل بها الأمر إلى Arudino

def callback(ch, method, properties, body):    
request = json.loads(body.decode("utf-8"))    
print(request, end="n")     
send_to_serial(body)

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

مشروع الحديد: كيف بنينا غرفة مع مهمة القراصنة
زر لمراقبة حركة الوزن

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

مشروع الحديد: كيف بنينا غرفة مع مهمة القراصنة
السكن بقنابل الدخان والأكاليل الصينية

مشروع الحديد: كيف بنينا غرفة مع مهمة القراصنة

اردوينو

وفقًا للخطة الأصلية، تم تنفيذ عمليتين على Arduino.

أولاً، عند تلقي طلب جديد، يتم تحليل الطلب باستخدام مكتبة ArduinoJson. بعد ذلك، تمت مقارنة كل جهاز مُدار بخاصيتين له:

  • حالة الطاقة "تشغيل" أو "إيقاف" (الحالة القياسية)
  • الفترة التي يتم تشغيل الجهاز خلالها - الوقت بالميكروثانية منذ بداية اللوحة، عندما يحين وقت إيقاف تشغيله، أي إعادة الحالة إلى المستوى القياسي

آخر مرة تم ضبطها عند تلقي المعلمة المقابلة في JSON، ولكن لا يمكن إرسالها، ثم تم ضبط القيمة على 0 ولم تتم إعادة التعيين.

الإجراء الثاني الذي يقوم به Arduino في كل دورة هو تحديث الحالات، أي التحقق مما إذا كانت هناك حاجة لتشغيل شيء ما أو ما إذا كان الوقت قد حان لإيقاف تشغيل أي جهاز.

مؤشر الليزر - نفس ميجاترون 3000

مشروع الحديد: كيف بنينا غرفة مع مهمة القراصنة

هذه وحدة LSMVR450-3000MF 3000mW 450nm للقطع ووضع العلامات بالليزر ذات التركيز اليدوي العادي.

رسائل الصقر

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

الاختبارات الأولى لجهاز iot والتشطيب

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

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

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

عند التشغيل باستخدام رمز اختبار، كانت الطاقة التي يتم تنظيمها من خلال PWM أقل من 10% ولم تلحق الضرر بالحبل حتى مع التعرض لفترة طويلة.

بالنسبة لوضع القتال، تم إلغاء تركيز الليزر على بقعة يبلغ قطرها 10 ملم تقريبًا وتم حرقه بثقة من خلال حبل مع حمولة من مسافة حوالي متر.

مشروع الحديد: كيف بنينا غرفة مع مهمة القراصنة
لذلك عمل الليزر بشكل مثالي في الاختبارات

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

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

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

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

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

وهكذا، ظهرت المهمة الثالثة التي حلها اردوينو - للعمل على التسلسل المرتبط بتنفيذ هذه الأوامر.

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

ولكن أثناء التشغيل التجريبي، نظر إيليا إلى المشهد واقترح إظهار توازن اللعبة على أكبر شاشة: مقدار الأموال المتبقية، وكم تم تناوله، والعد التنازلي حتى البداية التالية لآلة التقطيع.

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

image = subprocess.Popen(["fim", "-q", "-r", "1920×1080", fim_str]), где fim_str

ويتم تشكيلها على أساس الكمية أو الوقت المطلوب.

لقد أنشأنا الصور مسبقًا: لقد التقطنا مقطع فيديو جاهزًا بمؤقت وقمنا بتصدير 200 صورة.

هذه هي الآليات التي تمت برمجتها في الصليب. وبحلول الوقت الذي بدأ فيه العد التنازلي النهائي، ذهبنا جميعًا إلى الموقع، وسلحنا أنفسنا بطفايات الحريق وجلسنا في انتظار الحريق (الذي كان على قدم وساق في الخلاف)

كيفية عمل بث يعمل لمدة أسبوع: اختيار الكاميرا

بالنسبة للمهمة، كنا بحاجة إلى بث مستمر على YouTube لمدة 7 أيام - وهذا بالضبط ما حددناه كحد أقصى لمدة اللعبة. كان هناك شيئان يمكن أن يمنعونا:

  1. ارتفاع درجة حرارة الكاميرا بسبب التشغيل المستمر
  2. انقطاع الانترنت

كان على الكاميرا أن توفر على الأقل صورة عالية الدقة بالكامل لجعل اللعب ومشاهدة الغرفة مريحًا.

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

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

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

لذلك، على الرغم من أن Kinect أثبت أنه موثوق في الاختبارات ولم يتطلب بطاقة التقاط فيديو (نقطة فشل أخرى)، فقد قررنا التخلي عنه. بعد ثلاثة أيام من اختبار الكاميرات المختلفة، اختار إيليا كاميرا Sony FDR-AX53 - وهي كاميرا فيديو صغيرة وموثوقة وغير مكلفة للإيجار، ولكنها تتمتع في الوقت نفسه بموثوقية وخصائص بصرية كافية.

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

صنع فيلم: تنظيم المسرح والإضاءة

يتطلب العمل على الإضاءة قدرًا معينًا من المهارة؛ فقد كنا بحاجة إلى إنشاء نتيجة إضاءة باستخدام الحد الأدنى من الوسائل:

1. إضاءة الأشياء عندما يعثر عليها اللاعبون (الليزر، الوزن)، وكذلك الضوء المستمر على آلة التقطيع. استخدمنا هنا Dedolight 150 - أجهزة إضاءة فيلمية موثوقة ومدمجة مع مصابيح هالوجين منخفضة الجهد، والتي تتيح لك تركيز الشعاع على كائن معين دون التأثير على الخلفية والأشياء الأخرى.

2. ضوء اللعب العملي - مصباح طاولة، مصباح أرضي، نجمة، إكليل. تم توزيع كل الضوء العملي بشكل متناغم في الإطار لإضاءة منطقة الصورة، وكانت هناك مصابيح LED بدرجة حرارة لون تبلغ 3200 كلفن بالداخل، وتم تغطية المصباح الموجود في المصباح الأرضي بفلتر رقائق روسكو الأحمر لإنشاء لهجة لونية غير عادية.

مشروع الحديد: كيف بنينا غرفة مع مهمة القراصنة
أنا مهندس عند أمي أو الإطلاق غدا

كيف حجزنا الانترنت والكهرباء

لقد تعاملوا مع مسألة التسامح مع الخطأ كما هو الحال في مركز البيانات تقريبًا: فقد قرروا عدم الانحراف عن المبادئ الأساسية والمحافظة عليها وفقًا لمخطط N+1 المعتاد.

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

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

لذلك، حصلنا على مصدر طاقة غير منقطع ippon innova g2 3000، والذي سيدعم جميع أجهزة الألعاب: كان إجمالي استهلاك الطاقة لنظامنا حوالي 300 واط. وسوف تستمر لمدة 75 دقيقة، وهو ما يكفي لأغراضنا.

قررنا التضحية بالإضاءة الإضافية في حالة انقطاع الكهرباء في الغرفة - حيث لم تكن متصلة بمصدر طاقة غير منقطع.

شكر وتقدير

  • للفريق بأكمله روفدسالذي اخترع اللعبة ونفذها.
  • بشكل منفصل، بالنسبة لمسؤولي RUVDS، لمراقبة عمل الخوادم، كان الحمل مقبولًا وكل شيء يعمل كالمعتاد.
  • إلى أفضل رئيس ntsaplin لحقيقة أنه ردًا على المكالمة، "لدي فكرة: سنأخذ خادمًا، ونضع عليه حوضًا للماء، ونعلق عليه ثقلًا، دوي، دوي، كل شيء مغمور بالمياه، ماس كهربائى، حريق". !" فهو دائمًا يقول بثقة "افعل ذلك!"
  • شكرا تيلدا للنشر وبشكل منفصل إلى ميخائيل كاربوف ليس فقط لاجتماعه في منتصف الطريق والسماح لنا بانتهاك شروط الاستخدام، ولكن أيضًا لمنحنا حسابًا تجاريًا لمدة عام عندما تحدثنا عن المشروع.
  • ايليا سيروف S_ILya للانضمام إلى المشروع وتصبح منتجًا مشاركًا، وعلى استعداد للزحف نصف الليل، ولصق شريط LED، والبحث عن حلول تقنية والقيام بكل شيء حتى نحصل على فيلم حقيقي.
  • zhovner لكونك دائمًا على استعداد لإنقاذ الموقف عندما يرفع الآخرون أيديهم، والبورشت، والدعم المعنوي والمحادثات حتى الصباح.
  • سامات لربطنا بأفضل بينستر في البلاد، الذي قدم لنا النصح وساعدنا في المهام.
  • com.danimilk لإنتاج فيديو رائع لجميع مقاطع الفيديو.
  • دلفي من أجل يد حازمة واستعداد للعمل حتى النهاية.
  • جيد هندسة دودو بيتزا للبيتزا الدافئة دائمًا تقريبًا.

والشكر الأكبر موجه للاعبين على كل المشاعر التي مررنا بها أثناء اقتحامكم المهمة لمدة يومين دون نوم وحتى تأجيل العمل.

مقالات أخرى حول السعي لتدمير الخادم

مشروع الحديد: كيف بنينا غرفة مع مهمة القراصنة

المصدر: www.habr.com

إضافة تعليق