- المتطلبات المسبقة:
- المفهوم الكامن وراء المشروع:
- مخطط الرسم البياني:
- برمجة اردوينو الخاص بك:
- برمجة بايثون الخاص بك:
- تشغيل الكمبيوتر الذي يتم التحكم فيه بالإيماءات:
أصبحت أجهزة الكمبيوتر المحمولة أو أجهزة الكمبيوتر التي يتم التحكم فيها عن طريق الإيماءات مشهورة جدًا. تسمى هذه التقنية بحركة Leap والتي تمكننا من التحكم في وظائف معينة على جهاز الكمبيوتر / الكمبيوتر المحمول لدينا ببساطة عن طريق التلويح بيدنا أمامه. إنه لأمر رائع وممتع جدًا القيام بذلك ، لكن أسعار أجهزة الكمبيوتر المحمولة هذه مرتفعة جدًا حقًا. لذلك في هذا المشروع ، دعونا نحاول بناء جهاز كمبيوتر محمول / كمبيوتر محمول خاص بنا للتحكم بالإيماءات من خلال الجمع بين قوة Arduino و Python.
سنستخدم جهازي استشعار بالموجات فوق الصوتية لتحديد موضع يدنا والتحكم في مشغل الوسائط (VLC) بناءً على الموضع. لقد استخدمت هذا للتوضيح ، ولكن بمجرد فهمك للمشروع ، يمكنك فعل أي شيء بمجرد تغيير بضعة أسطر من التعليمات البرمجية والتحكم في التطبيق المفضل لديك بالطريقة المفضلة لديك.
المتطلبات المسبقة:
لقد قمنا بالفعل بتغطية عدد قليل من المشاريع التي تجمع بين Arduino و Python. لذلك أفترض أنك قمت بالفعل بتثبيت Python ومكتبتها التسلسلية وحاولت بنجاح بعض المشاريع الأساسية مثل وميض LED. إذا لم يكن الأمر كذلك ، فلا داعي للقلق ، فيمكنك الرجوع إلى هذا البرنامج التعليمي Arduino-Python Led Controling والتوافق معه. لذا تأكد من تثبيت مكتبة Python و pyserial قبل المتابعة.
المفهوم الكامن وراء المشروع:
المفهوم الكامن وراء المشروع بسيط للغاية. سنضع جهازي استشعار فوق صوتي (الولايات المتحدة) أعلى شاشتنا وسنقرأ المسافة بين الشاشة ويدنا باستخدام Arduino ، بناءً على قيمة المسافة هذه ، سنقوم بتنفيذ إجراءات معينة. لتنفيذ إجراءات على جهاز الكمبيوتر الخاص بنا ، نستخدم مكتبة Python pyautogui. يتم إرسال الأوامر من Arduino إلى الكمبيوتر عبر المنفذ التسلسلي (USB). ستتم قراءة هذه البيانات بعد ذلك بواسطة Python الذي يعمل على الكمبيوتر وبناءً على بيانات القراءة سيتم تنفيذ إجراء.
مخطط الرسم البياني:
إلى السيطرة على PC مع فتات من ناحية ، مجرد ربط اثنين من أجهزة الاستشعار بالموجات فوق الصوتية مع اردوينو. نحن نعلم أن مستشعر الولايات المتحدة يعمل بجهد 5 فولت ، وبالتالي يتم تشغيله بواسطة منظم الجهد الموجود على متن Arduino. يمكن توصيل Arduino بجهاز الكمبيوتر / الكمبيوتر المحمول لتشغيل الوحدة وأيضًا للاتصال التسلسلي. بمجرد الانتهاء من التوصيلات ، ضعها على شاشتك كما هو موضح أدناه. لقد استخدمت شريطًا مزدوج الجانب للصقه على شاشتي ولكن يمكنك استخدام إبداعك. بعد تأمينه في مكان ما يمكننا المضي قدمًا في البرمجة.
برمجة اردوينو الخاص بك:
يجب برمجة Arduino لقراءة مسافة اليد من المستشعر الأمريكي. يتم تقديم البرنامج الكامل في نهاية هذه الصفحة ؛ لقد قدمت شرحًا للبرنامج أدناه. إذا كنت جديدًا على مستشعر الموجات فوق الصوتية ، فما عليك سوى الانتقال إلى قياس المسافة المستند إلى مستشعر Arduino & Ultrasonic
من خلال قراءة قيمة المسافة ، يمكننا الوصول إلى إجراءات معينة يتم التحكم فيها بالإيماءات ، على سبيل المثال في هذا البرنامج ، قمت ببرمجة 5 إجراءات كعرض توضيحي.
الإجراء 1: عندما يتم وضع كلتا اليدين أمام المستشعر على مسافة بعيدة معينة ، يجب تشغيل / إيقاف الفيديو في مشغل VLC.
الإجراء 2: عندما يتم وضع اليد اليمنى أمام المستشعر على مسافة بعيدة معينة ، فيجب أن يتم تقديم سريع للفيديو خطوة واحدة.
الإجراء 3: عند وضع اليد اليسرى لأعلى أمام المستشعر على مسافة بعيدة معينة ، يجب إرجاع الفيديو خطوة واحدة.
الإجراء 4: عندما يتم وضع اليد اليمنى أمام المستشعر على مسافة قريبة معينة ، ثم إذا تحركت نحو المستشعر ، فيجب تقديم الفيديو بسرعة ، وإذا تم تحريكه بعيدًا ، فيجب إرجاع الفيديو.
الإجراء 5: عندما يتم وضع اليد اليسرى أمام المستشعر على مسافة قريبة معينة ثم إذا تحركت نحو المستشعر ، يجب أن يزداد حجم الفيديو وإذا تم تحريكه بعيدًا يجب أن ينخفض الصوت.
دعونا نرى كيف تمت كتابة البرنامج لأداء الإجراءات المذكورة أعلاه. لذلك ، مثل جميع البرامج ، نبدأ بتحديد دبابيس الإدخال / الإخراج كما هو موضح أدناه. يتصل المستشعران الأمريكيان بالدبابيس الرقمية 2،3،4 و 5 ويتم تشغيلهما بواسطة دبوس + 5 فولت. دبابيس الزناد هي دبوس الإخراج ودبابيس Echo هي دبابيس الإدخال.
يحدث الاتصال التسلسلي بين Arduino و python بمعدل باود يبلغ 9600.
const int trigger1 = 2 ؛ // دبوس الزناد لـ 1st Sesnor const int echo1 = 3 ؛ // Echo pin of 1st Sesnor const int trigger2 = 4 ؛ // Trigger pin of 2nd Sesnor const int echo2 = 5 ؛ // Echo pin of 2nd Sesnor void setup () {Serial.begin (9600) ؛ pinMode (المشغل 1 ، الإخراج) ؛ pinMode (echo1 ، الإدخال) ؛ pinMode (المشغل 2 ، الإخراج) ؛ pinMode (echo2 ، الإدخال) ؛ }
نحتاج إلى حساب المسافة بين المستشعر واليد في كل مرة قبل الانتهاء من أي إجراء. لذلك يتعين علينا القيام بذلك عدة مرات ، مما يعني أنه يجب استخدام هذا الرمز كدالة. لقد كتبنا دالة تسمى calculate_distance () والتي ستعيد لنا المسافة بين المستشعر واليد.
/ * ### وظيفة لحساب المسافة ### * / void calculate_distance (int trigger، int echo) {digitalWrite (trigger، LOW)؛ تأخير ميكروثانية (2) ؛ digitalWrite (الزناد ، عالية) ؛ تأخير ميكروثانية (10) ؛ digitalWrite (الزناد ، منخفض) ؛ time_taken = pulseIn (echo، HIGH) ؛ dist = time_taken * 0.034 / 2 ؛ إذا (dist> 50) dist = 50 ؛ }
داخل الحلقة الرئيسية لدينا نتحقق من قيمة المسافة وننفذ الإجراءات المذكورة أعلاه. قبل ذلك ، نستخدم متغيرين distL و distR اللذين يتم تحديثهما بقيمة المسافة الحالية.
حساب المسافة (الزناد 1 ، صدى 1) ؛ DistL = dist ؛ // الحصول على مسافة من المستشعر الأيسر حساب المسافة (الزناد 2 ، صدى 2) ؛ distR = dist ؛ // احصل على مسافة من المستشعر الصحيح
نظرًا لأننا نعرف المسافة بين كلا المستشعرين ، يمكننا الآن مقارنتها بقيم محددة مسبقًا والوصول إلى إجراءات معينة. على سبيل المثال ، إذا تم وضع اليدين على مسافة 40 متر مكعب ، فإننا نقوم بتشغيل / إيقاف الفيديو مؤقتًا. هنا سيتم إرسال كلمة "تشغيل / إيقاف مؤقت" عبر المنفذ التسلسلي
if ((distL> 40 && distR> 40) && (distL <50 && distR <50)) // اكتشف كلتا اليدين {Serial.println ("تشغيل / إيقاف مؤقت") ؛ تأخير (500) ؛}
إذا تم وضع اليد اليمنى بمفردها قبل الوحدة النمطية ، فسنقوم بإعادة توجيه الفيديو بخطوة واحدة وإذا كانت اليد اليسرى ، فإننا نرجع خطوة واحدة. بناءً على الإجراء ، سيتم هنا إرسال كلمة "إرجاع" أو "إعادة توجيه" عبر المنفذ التسلسلي
if ((distL> 40 && distL <50) && (distR == 50)) // Detect Left Hand {Serial.println ("Rewind") ؛ delay (500)؛} إذا ((distR> 40 && distR <50) && (distL == 50)) // Detect Right Hand {Serial.println ("Forward") ؛ تأخير (500) ؛}
التحكم التفصيلي في حجم الصوت والمسار نستخدم منهجية مختلفة لمنع المحفزات الخاطئة. إلى التحكم في حجم لدينا لوضع اليد اليسرى تقريبا. على مسافة 15 سم ، يمكنك إما تحريكه باتجاه المستشعر لتقليل حجم الصوت وإبعاده عن المستشعر لزيادة مستوى الصوت. يظهر رمز نفسه أدناه. بناءً على الإجراء ، هنا سيتم إرسال كلمة "Vup" أو "Vdown" عبر المنفذ التسلسلي
// Lock Left - وضع التحكم إذا (distL> = 13 && distL <= 17) {delay (100) ؛ // وقت عقد اليد حساب المسافة (الزناد 1 ، echo1) ؛ DistL = dist ؛ إذا (distL> = 13 && distL <= 17) {Serial.println ("Left Locked") ؛ بينما (distL <= 40) {calculate_distance (trigger1، echo1) ؛ DistL = dist ؛ if (distL <10) // Hand pushed in {Serial.println ("Vup") ؛ تأخير (300) ؛} إذا (distL> 20) // Hand pulled out {Serial.println ("Vdown") ؛ تأخير (300)؛}}}}
يمكننا استخدام نفس الطريقة مع مستشعر الجانب الأيمن أيضًا للتحكم في مسار الفيديو. هذا إذا قمنا بتحريك اليد اليمنى نحو المستشعر ، فسيتم تقديم الفيلم بسرعة وإذا قمت بإبعاده عن المستشعر ، فسيتم إرجاع الفيلم. بناءً على الإجراء ، سيتم هنا إرسال كلمة "إرجاع" أو "إعادة توجيه" عبر المنفذ التسلسلي
يمكنك الآن قراءة الكود الكامل لجهاز الكمبيوتر الذي يتم التحكم فيه بالإيماءات في نهاية الصفحة ومحاولة فهمه ككل ثم نسخه إلى Arduino IDE.
برمجة بايثون الخاص بك:
برنامج Python لهذا المشروع بسيط للغاية. علينا فقط إنشاء اتصال تسلسلي مع Arduino من خلال معدل الباود الصحيح ثم تنفيذ بعض إجراءات لوحة المفاتيح الأساسية. ستكون الخطوة الأولى مع Python هي تثبيت الوحدة النمطية p yautogui . تأكد من اتباع هذه الخطوة لأن البرنامج لن يعمل بدون وحدة pyautogui.
تركيب وحدة pyautogui للنوافذ:
اتبع الخطوات أدناه لتثبيت pyautogui لنظام التشغيل windows. إذا كنت تستخدم أنظمة أساسية أخرى ، فستكون الخطوات متشابهة إلى حد ما. تأكد من أن الكمبيوتر / الكمبيوتر المحمول متصل بالإنترنت وتابع الخطوات أدناه
الخطوة 1: افتح موجه أوامر Windows وقم بتغيير الدليل إلى المجلد حيث قمت بتثبيت python. بشكل افتراضي يجب أن يكون الأمر
cd C: \ Python27
الخطوة 2: داخل دليل بايثون ، استخدم الأمر python –m pip install –upgrade pip لترقية النقطة. Pip هي أداة في Python تساعدنا على تثبيت وحدات Python بسهولة. بمجرد ترقية هذه الوحدة (كما هو موضح في الصورة أدناه) انتقل إلى الخطوة التالية.
تثبيت python –m pip –upgrade pip
الخطوة 3: استخدم الأمر " python –m pip install pyautogui " لتثبيت وحدة pyautogui. بمجرد نجاح العملية ، سترى شاشة مشابهة لما يلي أدناه.
تثبيت python –m pip –upgrade pip
الآن بعد أن تم تثبيت وحدة pyautogui ووحدة pyserial (المثبتة في البرنامج التعليمي السابق) بنجاح مع python ، يمكننا متابعة برنامج python. يتم تقديم رمز Python الكامل في نهاية البرنامج التعليمي ولكن شرح ذلك هو كما يلي.
دعونا نستورد جميع الوحدات الثلاث المطلوبة لهذا المشروع. هم pyautogui ، بيثون التسلسلي والوقت.
استيراد مسلسل #Serial تم استيراده لوقت استيراد الاتصالات التسلسلية # مطلوب لاستخدام وظائف التأخير استيراد pyautogui
بعد ذلك نقوم بتأسيس اتصال مع Arduino من خلال منفذ COM. في جهاز الكمبيوتر الخاص بي ، يتم توصيل Arduino بـ COM 18. استخدم مدير الجهاز للعثور على منفذ COM الذي يتصل به Arduino الخاص بك وتصحيح السطر التالي وفقًا لذلك.
ArduinoSerial = serial.Serial ('com18'، 9600) # إنشاء كائن منفذ تسلسلي يسمى arduinoSerialData time.sleep (2) # انتظر لمدة ثانيتين حتى يتم تأسيس الاتصال
داخل الحلقة اللانهائية أثناء التكرار ، نستمع بشكل متكرر إلى منفذ COM ونقارن الكلمات الرئيسية بأي أعمال تم تحديها مسبقًا ونضغط على لوحة المفاتيح وفقًا لذلك.
while 1: incoming = str (ArduinoSerial.readline ()) # اقرأ البيانات التسلسلية واطبعها كخط طباعة واردة إذا كان 'Play / Pause' في الوارد: pyautogui.typewrite (، 0.2) إذا كان 'Rewind' في الوارد: pyautogui. مفتاح التشغيل السريع ('ctrl'، 'left') إذا كان 'Forward' في الوارد: pyautogui.hotkey ('ctrl'، 'right') إذا كان 'Vup' في الوارد: pyautogui.hotkey ('ctrl'، 'down') إذا ' Vdown 'في الوارد: pyautogui.hotkey (' ctrl '،' up ')
كما ترى ، للضغط على مفتاح ، علينا ببساطة استخدام الأمر "pyautogui.typewrite (، 0.2)" والذي سيضغط على مسافة المفتاح لمدة 0.2 ثانية. إذا كنت بحاجة إلى مفاتيح تشغيل سريع مثل ctrl + S ، فيمكنك استخدام أمر مفتاح التشغيل السريع "pyautogui.hotkey ('ctrl'، 's')".
لقد استخدمت هذه المجموعات لأنها تعمل على مشغل وسائط VLC ، يمكنك تعديلها بأي طريقة تريدها لإنشاء تطبيقاتك الخاصة للتحكم في أي شيء في الكمبيوتر باستخدام الإيماءات.
تشغيل الكمبيوتر الذي يتم التحكم فيه بالإيماءات:
قم بإجراء الاتصالات كما هو محدد أعلاه وقم بتحميل كود Arduino على لوحة Arduino الخاصة بك. ثم استخدم سكربت python أدناه وقم بتشغيل البرنامج على الكمبيوتر المحمول / الكمبيوتر.
يمكنك الآن تشغيل أي فيلم على جهاز الكمبيوتر الخاص بك باستخدام مشغل وسائط VLC واستخدام يدك للتحكم في الفيلم كما هو موضح في الفيديو أدناه.
آمل أن تكون قد فهمت المشروع واستمتعت باللعب به. هذا مجرد عرض توضيحي ويمكنك استخدام إبداعك لبناء المزيد من الأشياء الرائعة التي يمكن التحكم فيها عن طريق الإيماءات. اسمحوا لي أن أعرف ما إذا كان هذا مفيدًا وما الذي ستنشئه باستخدام هذا في قسم التعليقات وسيسعدني معرفة ذلك.