جدول المحتويات:

سلة الفرز - كشف سلة المهملات وفرزها: 9 خطوات
سلة الفرز - كشف سلة المهملات وفرزها: 9 خطوات

فيديو: سلة الفرز - كشف سلة المهملات وفرزها: 9 خطوات

فيديو: سلة الفرز - كشف سلة المهملات وفرزها: 9 خطوات
فيديو: حل مشكلة إفراغ سلة المهملات فى اجهزة سامسونج 2024, يوليو
Anonim
Image
Image
كيف تعمل
كيف تعمل

هل سبق لك أن رأيت شخصًا لا يقوم بإعادة التدوير أو يقوم بذلك بطريقة سيئة؟

هل سبق لك أن رغبت في الحصول على آلة تقوم بإعادة التدوير من أجلك؟

استمر في قراءة مشروعنا ، فلن تندم!

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

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

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

في الأقسام التالية ، سيتم شرح هذا المشروع خطوة بخطوة.

الخطوة 1: كيف يعمل

كيف تعمل
كيف تعمل
كيف تعمل
كيف تعمل

تم تصميم حاوية الفرز لتسهيل العمل نسبيًا على المستخدم: يجب إدخال القمامة من خلال الفتحة الموضوعة في اللوحة العلوية ، ويجب الضغط على الزر الأصفر وتبدأ العملية ، وتنتهي بالقمامة في واحدة من المستفيدين. لكن السؤال الآن … كيف تعمل هذه العملية داخليًا؟

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

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

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

الخطوة 2: فاتورة المواد (BOM)

الأجزاء الميكانيكية:

  • اشترى أجزاء للهيكل السفلي

    • هيكل معدني [رابط]
    • مربع رمادي [رابط]
  • طابعة 3D

    PLA لجميع الأجزاء المطبوعة (يمكن أيضًا استخدام مواد أخرى ، مثل ABS)

  • آلة القطع بالليزر

    • MDF 3 مم
    • شبكي 4 مم
  • مجموعة المحامل الخطية [رابط]
  • محمل خطي [رابط]
  • رمح [رابط]
  • حامل رمح (x2) [رابط]

أجزاء إلكترونية:

  • محرك

    محرك خطي خطي نيما 17 [رابط]

  • بطارية

    12 فولت بطارية [رابط]

  • مجسات

    • 2 مستشعر الموجات فوق الصوتية HC-SR04 [رابط]
    • 2 مستشعرات حثيّة LJ30A3-15 [رابط]
  • متحكم

    1 لوحة اردوينو UNO

  • مكونات إضافية

    • سائق DRV8825
    • 3 مصابيح: أحمر وأخضر وبرتقالي
    • زر 1
    • بعض الأسلاك القافزة والأسلاك ولوحات اللحام
    • اللوح
    • كبل USB (توصيل Arduino-PC)
    • مكثف: 100 فائق التوهج

الخطوة الثالثة: التصميم الميكانيكي

Image
Image
تصميم ميكانيكي
تصميم ميكانيكي
تصميم ميكانيكي
تصميم ميكانيكي

في الصور السابقة ، يتم عرض جميع أجزاء التجميع.

بالنسبة للتصميم الميكانيكي ، تم استخدام SolidWorks كبرنامج CAD. تم تصميم الأجزاء المختلفة للتجميع مع الأخذ في الاعتبار طريقة التصنيع التي سيتم تصنيعها.

قطع الليزر:

  • MDF 3 مم

    • الركائز
    • اللوحة العلوية
    • دعم أجهزة الاستشعار بالموجات فوق الصوتية
    • دعم أجهزة الاستشعار الحثي
    • صندوق قمامة
    • دعم البطارية
    • دعم اللوح والاردوينو
  • شبكي 4 مم

    برنامج

الأجزاء المطبوعة ثلاثية الأبعاد:

  • قاعدة الركائز
  • عنصر نقل الحركة الخطية من محرك السائر
  • محرك متدرج ودعامات تحمل
  • أجزاء تثبيت الحوائط لصندوق القمامة

لتصنيع كل جزء من هذه الأجزاء ، يجب استيراد ملفات. STEP بالتنسيق الصحيح ، اعتمادًا على الجهاز الذي سيتم استخدامه لهذا الغرض. في هذه الحالة ، تم استخدام ملفات.dxf لآلة القطع بالليزر وملفات gcode. للطابعة ثلاثية الأبعاد (Ultimaker 2).

يمكن العثور على التجميع الميكانيكي لهذا المشروع في ملف. STEP المرفق في هذا القسم.

الخطوة 4: الإلكترونيات (خيارات المكونات)

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

لوحة Arduino UNO (كمتحكم دقيق):

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

المحرك (محرك خطي خطي نيما 17):

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

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

سائق DRV8825:

يستخدم هذا اللوح للتحكم في محرك متدرج ثنائي القطب. يحتوي على تحكم تيار قابل للتعديل يسمح لك بضبط الحد الأقصى للإخراج الحالي بمقياس الجهد بالإضافة إلى ستة قرارات مختلفة: خطوة كاملة ، نصف خطوة ، 1/4 خطوة ، 1/8 خطوة ، 1/16- خطوة و 1/32 خطوة (استخدمنا أخيرًا خطوة كاملة لأننا لم نجد أي حاجة للذهاب إلى microstepping ولكن لا يزال من الممكن استخدامها لتحسين جودة الحركة).

أجهزة الاستشعار بالموجات فوق الصوتية:

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

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

أجهزة الاستشعار الاستقرائي:

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

المصابيح (أخضر ، أصفر ، أحمر):

مهمتهم هي التواصل مع المستخدم:

-ضوء LED أخضر: الروبوت ينتظر كائنًا.

-مؤشر LED أحمر: يعمل الجهاز ، لا يمكنك رمي أي كائن.

-ضوء LED أصفر قيد التشغيل: تم الكشف عن كائن.

بطارية 12 فولت أو مصدر طاقة 12 فولت + طاقة USB 5 فولت:

هناك حاجة إلى مصدر جهد لتشغيل المستشعرات والمحرك السائر. هناك حاجة إلى مصدر طاقة بجهد 5 فولت لتشغيل Arduino. يمكن القيام بذلك من خلال بطارية 12 فولت ولكن من الأفضل أن يكون لديك مصدر طاقة 5 فولت منفصل لـ Arduino (مثل كابل USB ومحول هاتف متصل بمصدر طاقة أو بجهاز كمبيوتر).

المشكلات التي وجدناها:

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

    • تمثل المساحة التي تغطيها المستشعرات داخل المنصة المربعة أقل من 50٪ منها (لذلك لا يمكن اكتشاف جسم صغير). لحلها نوصي باستخدام 3 أو 4 أجهزة استشعار حثي لضمان تغطية أكثر من 70٪ من المنطقة.
    • مسافة الكشف عن المستشعرات محدودة بـ 15 ملم ، لذلك وجدنا أنفسنا مضطرين لاستخدام منصة زجاج شبكي دقيقة. يمكن أن يكون هذا أيضًا قيدًا آخر يكتشف الكائنات ذات الشكل الغريب.
  • الكشف بالموجات فوق الصوتية: مرة أخرى ، فإن الأجسام التي تم تشكيلها بطريقة معقدة تسبب مشاكل حيث تنعكس الإشارة المنبعثة من المستشعرات بشكل سيء وتعود في وقت متأخر عما ينبغي أن تصل إلى المستشعر.
  • البطارية: لدينا بعض المشكلات المتعلقة بالتحكم في التيار الذي توفره البطارية ولحلها استخدمنا أخيرًا مصدر طاقة. ومع ذلك ، يمكن إجراء حلول أخرى مثل استخدام الصمام الثنائي.

الخطوة 5: الإلكترونيات (التوصيلات)

إلكترونيات (اتصالات)
إلكترونيات (اتصالات)
إلكترونيات (اتصالات)
إلكترونيات (اتصالات)

يوضح هذا القسم توصيلات المكونات المختلفة معًا. يُظهر أيضًا أي دبوس على Arduino متصل به كل مكون.

الخطوة السادسة: البرمجة

برمجة
برمجة

سيشرح هذا القسم منطق البرمجة وراء آلة فرز سلة المهملات.

ينقسم البرنامج إلى 4 خطوات وهي كالتالي:

  1. تهيئة النظام
  2. تحقق من وجود الأشياء
  3. تحقق من نوع الكائن الموجود
  4. صندوق النقل

للحصول على وصف مفصل لكل خطوة ، انظر أدناه:

الخطوة 1: تهيئة النظام

لوحة LED (3) - ضبط مؤشر LED للمعايرة (أحمر) عالي ، مؤشر LED جاهز (أخضر) منخفض ، كائن موجود (أصفر) منخفض

تحقق من أن محرك السائر في الموضع الأولي

  • قم بإجراء اختبار الاستشعار بالموجات فوق الصوتية لقياس المسافة من الجانب إلى جدار الصندوق

    • الموضع الأولي == 0 >> تحديث قيم LED HIGH الجاهز ومعايرة LED LOW -> الخطوة 2
    • الموضع الأولي! = 0 >> قيمة القراءة الرقمية لأجهزة الاستشعار بالموجات فوق الصوتية وعلى أساس قيم المستشعر:

      • تحديث قيمة المحرك المتحرك LED HIGH.
      • تشغيل مربع النقل حتى تصبح قيمة كلا المستشعرين فوق الصوتي <قيمة العتبة.

تحديث قيمة الموضع الأولي = 1 >> تحديث قيمة LED الجاهزة HIGH وتحريك المحرك منخفضًا ومعايرة منخفضة >> الخطوة 2

الخطوة 2

تحقق من وجود الأشياء

قم بتشغيل اكتشاف الكائن بالموجات فوق الصوتية

  • الكائن الحالي == 1 >> تحديث قيمة الكائن الحالي LED HIGH >> الخطوة 3
  • الكائن موجود == 0 >> لا تفعل شيئًا

الخطوه 3

تحقق من نوع الكائن الموجود

قم بتشغيل الكشف عن المستشعر الاستقرائي

  • الحالة الحثية = 1 >> الخطوة 4
  • inductiveState = 0 >> الخطوة 4

الخطوة 4

صندوق النقل

تشغيل المحرك

  • الحالة الاستقرائية == 1

    تحديث المحرك المتحرك بمصباح LED عالي >> اجعل المحرك يتحرك إلى اليسار ، (تحديث الموضع الأولي = 0) تأخير والعودة إلى اليمين >> الخطوة 1

  • الحالة الحثية == 0

    تحديث المحرك المتحرك بمصباح LED عالي >> اجعل المحرك يتحرك يمينًا (تحديث الموضع الأولي = 0) ، قم بالتأخير والعودة إلى اليسار >> الخطوة 1

المهام

كما يتضح من منطق البرمجة ، يعمل البرنامج عن طريق تنفيذ وظائف ذات هدف محدد. على سبيل المثال ، تتمثل الخطوة الأولى في تهيئة النظام الذي يحتوي على الوظيفة "التحقق من أن محرك السائر في الموضع الأولي". الخطوة الثانية بعد ذلك تتحقق من وجود الكائن الذي هو في حد ذاته وظيفة أخرى (وظيفة "اكتشاف الكائن بالموجات فوق الصوتية"). وهكذا دواليك.

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

يتم تحديد الوظائف المستخدمة في الجسم الرئيسي أدناه.

هم على التوالي:

  • اختبار حثي ()
  • moveBox (استقرائي)
  • كشف الأجسام فوق الصوتية ()

// تحقق مما إذا كان الكائن معدني أم لا

bool inductiveTest () {if (digitalRead (inductiveSwitchRight) == 1 || digitalRead (inductiveSwitchLeft == 0)) {return true ؛ وإلا {إرجاع خطأ؛ }} void moveBox (bool inductiveState) {// Box يذهب إلى اليسار عند اكتشاف المعدن و inductiveState = true if (inductiveState == 0) {stepper.moveTo (steps)؛ // وضع عشوائي للانتهاء لاختبار stepper.runToPosition () ؛ تأخير (1000) ؛ stepper.moveTo (0) ؛ stepper.runToPosition () ؛ تأخير (1000) ؛ } else if (inductiveState == 1) {stepper.moveTo (-steps) ؛ // وضع عشوائي للانتهاء لاختبار stepper.runToPosition () ؛ تأخير (1000) ؛ stepper.moveTo (0) ؛ // وضع عشوائي للانتهاء لاختبار stepper.runToPosition () ؛ تأخير (1000) ؛ }} boolean ultrasonicObjectDetection () {long duration1، Distance1، durationTemp، DistanceTemp، averageDistance1، averageDistanceTemp، averageDistanceOlympian1؛ // تحديد عدد القياسات لأخذ مسافة طويلة ماكس = 0 ؛ مسافة طويلة الحد الأدنى = 4000 ؛ مسافات طويلة المجموع = 0 ؛ لـ (int i = 0 ؛ i DistanceMax) {DistanceMax = DistanceTemp ؛ } إذا كانت (DistanceTemp <DistanceMin) {DistanceMin = DistanceTemp؛ } DistanceTotal + = DistanceTemp ؛ } Serial.print ("Sensor1 maxDistance")؛ Serial.print (مسافة ماكس) ؛ Serial.println ("مم") ؛ Serial.print ("Sensor1 minDistance") ؛ Serial.print (مسافة دقيقة) ؛ Serial.println ("مم") ؛ // خذ متوسط المسافة من متوسط القراءات 1 = مسافة المجموع / 10 ؛ Serial.print ("Sensor1 averageDistance1") ؛ Serial.print (متوسط المسافة 1) ؛ Serial.println ("مم") ؛ // قم بإزالة أعلى وأدنى قيم للقياسات لتجنب متوسط القراءات الخاطئة متوسط المقاومة الأولمبي 1 = متوسط المسافة تيمب / 8 ؛ Serial.print ("Sensor1 averageDistanceOlympian1") ؛ Serial.print (متوسط المسافة الأولمبية 1) ؛ Serial.println ("مم") ؛

// إعادة تعيين قيم درجة الحرارة

المسافة توتال = 0 ؛ مسافة ماكس = 0 ؛ مسافة دقيقة = 4000 ؛ مدة طويلة 2 ، مسافة 2 ، متوسط المسافة 2 ، متوسط المسافة الأولمبي 2 ؛ // تحديد عدد القياسات المطلوب إجراؤها من أجل (int i = 0 ؛ i DistanceMax) {DistanceMax = DistanceTemp؛ } إذا كانت (DistanceTemp <DistanceMin) {DistanceMin = DistanceTemp؛ } DistanceTotal + = DistanceTemp ؛ } Serial.print ("Sensor2 maxDistance")؛ Serial.print (مسافة ماكس) ؛ Serial.println ("مم") ؛ Serial.print ("Sensor2 minDistance") ؛ Serial.print (مسافة دقيقة) ؛ Serial.println ("مم") ؛ // خذ متوسط المسافة من متوسط القراءات 2 = مسافة المجموع / 10 ؛ Serial.print ("Sensor2 averageDistance2") ؛ Serial.print (متوسط المسافة 2) ؛ Serial.println ("مم") ؛ // قم بإزالة أعلى وأدنى قيم للقياسات لتجنب متوسط القراءات الخاطئة متوسط المسافة الأولمبي 2 = متوسط المسافة تيمب / 8 ؛ Serial.print ("Sensor2 averageDistanceOlympian2") ؛ Serial.print (متوسط المسافة الأولمبية 2) ؛ Serial.println ("مم") ؛ // إعادة تعيين قيم درجة الحرارة مسافة توتال = 0 ؛ مسافة ماكس = 0 ؛ مسافة دقيقة = 4000 ؛ if (averageDistanceOlympian1 + averageDistanceOlympian2 <blankBoxDistance) {return true؛ } else {return false؛ }}

الجسم الرئيسي

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

تحذير

تم إجراء العديد من الاختبارات لإيجاد الثوابت: فارغ مربع المسافة والخطوات والسرعة القصوى والتسارع في الإعداد.

الخطوة 7: التحسينات الممكنة

التحسينات الممكنة
التحسينات الممكنة

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

- نظرًا للمشكلات التي وجدناها في الكشف بالموجات فوق الصوتية ، يمكننا البحث عن بعض البدائل لهذه الوظيفة: KY-008 Laser and Laser Detector (صورة) ، وأجهزة الاستشعار السعوية.

الخطوة 8: تحديد العوامل

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

معايرة مجسات الموجات فوق الصوتية

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

مصدر الطاقة

الطاقة المطلوبة لمحرك السائر DRV8825 هي 12 فولت وما بين 0.2 و 1 أمبير. يمكن أيضًا تشغيل اردوينو بحد أقصى 12 فولت و 0.2 أمبير باستخدام مدخل المقبس على Arduino. ومع ذلك ، يجب توخي الحذر بشكل خاص في حالة استخدام نفس مصدر الطاقة لكل من Arduino وسائق المحرك السائر. إذا تم تشغيله من مقبس طاقة عادي باستخدام مهايئ طاقة 12V / 2A AC / DC على سبيل المثال ، فيجب أن يكون هناك منظم جهد وثنائيات في الدائرة قبل إدخال الطاقة في محرك اردوينو ومحرك السائر.

توجيه الصندوق

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

سائق السائر DRV8825 ضبط

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

الخطوة 9: الاعتمادات

تم تنفيذ هذا المشروع كجزء من دورة الميكاترونكس خلال العام الدراسي 2018-2019 لماجستير Bruface في Université Libre de Bruxelles (ULB) - Vrije Universiteit Brussel (VUB).

المؤلفون هم:

ماكسيم ديكلير

ليديا جوميز

ماركوس بودير

أدريانا بينتيس

نرجس السنوسي

شكر خاص لمشرفنا ألبرت دي بير الذي ساعدنا طوال المشروع أيضًا.

موصى به: