Vintage Rotary Phone Dial PC التحكم بحجم الصوت: 7 خطوات (مع صور)
Vintage Rotary Phone Dial PC التحكم بحجم الصوت: 7 خطوات (مع صور)
Anonim
Image
Image
قم بإزالة الطلب
قم بإزالة الطلب

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

يتم توصيل جهاز التحكم في مستوى الصوت هذا بجهاز الكمبيوتر الخاص بك من خلال USB ، وسوف يقوم تلقائيًا بتعيين مستوى صوت كل برنامج مفتوح على أي رقم تطلبه. إذا طلبت الرقم "2" ، فسيتم ضبط مستوى الصوت على 20٪. اطلب الرقم "8" وسيتم ضبطه على 80٪. طلب "0" يضبطه على 0٪ ويعمل ككتم الصوت. إنه سريع ومرضٍ وأكثر متعة من النقر على عنصر التحكم في مستوى الصوت في شريط المهام.

اللوازم

  • Vintage Bell Systems Trimline هاتف دوار
  • اردوينو نانو
  • M3 ملولب مجموعة الحرارة إدراج
  • مسامير آلة M3
  • مقاومات (470 أوم و 10 كيلو أوم)
  • الأسلاك
  • الوصول إلى طابعة ثلاثية الأبعاد

الخطوة 1: نظرية العملية

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

يحتوي Guidomax على برنامج تعليمي رائع Instructables يتعمق في كيفية عمل هذا بالضبط ، ويمكنك العثور على مزيد من التفاصيل هناك.

في هذا المشروع ، نستخدم Arduino Nano لحساب النبضات. ثم يرسل Arduino الرقم إلى جهاز الكمبيوتر عبر الاتصال التسلسلي. لقد كتبت نصًا أساسيًا بلغة Python يتم تشغيله في الخلفية ويراقب هذا الاتصال التسلسلي. عندما يتلقى بتات ، فإنه يأخذ الرقم ويستخدم مكتبة Python Core Audio Windows لتعيين الحجم المناسب.

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

الخطوة 2: قم بإزالة الاتصال الهاتفي

قم بإزالة الطلب
قم بإزالة الطلب

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

اخترت نموذج Trimline لهذا المشروع ، لأن وحدة الاتصال هذه أكثر إحكاما من تلك التي ستجدها في معظم الهواتف الدوارة الأخرى.

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

الخطوة 3: اطبع الضميمة

اطبع الضميمة
اطبع الضميمة

استخدم ملفي STL المقدمين لطباعة أجزاء العلبة. يمكنك استخدام أي مادة خيوط تفضلها (استخدمت PLA). الإعدادات المحددة التي تستخدمها ليست بهذه الأهمية ، لكنني أوصيت باستخدام الدعم للجزء "Rotary_Top". يمكنك طباعة هذين الجزأين أثناء العمل في باقي أجزاء المشروع.

الخطوة 4: برمجة Arduino الخاص بك

برمجة اردوينو الخاص بك
برمجة اردوينو الخاص بك

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

int needToPrint = 0 ؛ عدد صحيح ؛ كثافة العمليات = 2 ؛

int lastState = منخفض ؛

int trueState = منخفض ؛

منذ فترة طويلةStateChangeTime = 0 ؛

مسح int = 0 ؛

// الثوابت

int dialHasFinishedRotatingAfterMs = 100 ؛

int debounceDelay = 10 ؛

الإعداد باطل() {

Serial.begin (9600) ؛

pinMode (in ، INPUT) ؛ }

حلقة فارغة() {

قراءة int = digitalRead (in) ؛

if ((millis () - lastStateChangeTime)> dialHasFinishedRotatingAfterMs) {// لم يتم الاتصال بالطلب ، أو انتهى الاتصال به للتو.

إذا (needToPrint) {// إذا انتهى الأمر للتو ، فنحن بحاجة إلى إرسال الرقم لأسفل في السطر التسلسلي // وإعادة تعيين العد. نقوم بتعديل العد بمقدار 10 لأن الرقم "0" سيرسل 10 نبضات.

Serial.print (عدد٪ 10 ، DEC) ؛

needToPrint = 0 ؛

العد = 0 ؛

مسح = 0 ؛ }}

if (reading! = lastState) {lastStateChangeTime = millis () ؛

}

if ((millis () - lastStateChangeTime)> debounceDelay) {// debounce - يحدث هذا بمجرد استقراره

if (reading! = trueState) {// هذا يعني أن المفتاح قد انتقل للتو من مغلق> مفتوح أو العكس. trueState = قراءة ؛ if (trueState == HIGH) {// قم بزيادة عدد النبضات إذا كانت مرتفعة.

العد ++ ؛

needToPrint = 1 ؛ // سنحتاج إلى طباعة هذا الرقم (بمجرد انتهاء قرص الاتصال من الدوران)

}

}

}

lastState = القراءة ؛ }

الخطوة 5: اربط كل شيء

اربط كل شيء
اربط كل شيء
اربط كل شيء
اربط كل شيء
اربط كل شيء
اربط كل شيء

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

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

قم بتوصيل سلك واحد من Post A (GND) وقم بتوصيله بدبوس أرضي على Arduino Nano. خذ سلكًا ثانيًا وقم بتوصيله وسلك ثالث إلى جانب واحد من المقاوم 470 أوم. سيذهب السلك الثاني إلى Post B (+) على الاتصال الهاتفي. سيتم لحام السلك الثالث على جانب واحد من المقاوم 10 كيلو أوم. خذ سلكًا رابعًا وقم بتثبيته من الجانب الآخر من المقاوم 470 أوم إلى Pin 2 على Arduino Nano. أخيرًا ، يجب أن يربط السلك الخامس الجانب الآخر من المقاوم 10 كيلو أوم بالدبوس 5 فولت في Arduino Nano.

نحن نستخدم المقاومات ودبوس 5 فولت لسحب الدبوس للأعلى عندما يكون المفتاح مفتوحًا (كما هو الحال أثناء كل "نبضة").

الخطوة 6: التجميع

المجسم
المجسم
المجسم
المجسم

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

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

أدخل ستة إدراجات ضبط الحرارة. ثم استخدم عددًا قليلاً من مسامير الماكينة M3 القصيرة (10 مم أو نحو ذلك) لتركيب القرص. لاحظ الشق الموجود في الفتحة ، حيث سيذهب إصبع الإصبع المعدني. ثم ضع بعناية Arduino Nano مع كبل USB متصل داخل العلبة (فضفاض ، غير مركب) ، وقم بربط القاعدة في مكانها.

قد ترغب في استخدام شريط على الوجهين أو 3M Command Strips لتثبيت العلبة على مكتبك ، لذلك لن يتحرك عند تدوير القرص.

الخطوة 7: قم بإعداد برنامج Python Script

قم بإعداد نص بايثون
قم بإعداد نص بايثون

أولاً ، تأكد من تثبيت Python (استخدم Python 3 ، حيث يتم التخلص التدريجي من Python 2).

ستحتاج بعد ذلك إلى تثبيت المكتبتين المطلوبتين: PyCAW و PySerial.

يستخدم:

"pip install pycaw" و "pip install pyserial" (من نافذة Python أو Windows Powershell)

ثم تحقق لمعرفة المنفذ الذي يتصل به Arduino Nano. يمكنك التحقق من ذلك من داخل Arduino IDE. تأكد من تحديد هذا المنفذ ، ثم افتح الشاشة التسلسلية. تأكد من ضبط سرعة البث بالباود على 9600 ، ثم اطلب بعض الأرقام للتأكد من ظهورها في الشاشة التسلسلية.

إذا كان الأمر كذلك ، فقم بتحرير كود "rotary.py" برقم المنفذ الخاص بك. إذا قمت بتشغيل البرنامج النصي ، فمن المفترض أن تتمكن الآن من تغيير مستوى الصوت عن طريق الاتصال برقم.

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

للقيام بذلك ، قم بتغيير "rotary.py" إلى "rotary.pyw" والذي سيسمح بتشغيله في الخلفية. ثم ضع هذا البرنامج النصي في المجلد التالي: C: / Users / current_user / AppData / Roaming / Microsoft / Windows / Start Menu / Programs / Startup

من الواضح أنك ستحتاج إلى تغيير "current_user" إلى اسم مجلد المستخدم الفعلي.

هذا كل شيء! عند بدء تشغيل جهاز الكمبيوتر ، سيبدأ تشغيل نص Python النصي. ستراقب الاتصال التسلسلي من Arduino ، وستقوم بتعيين جميع أحجام البرنامج على كل ما تطلبه!

مسابقة اردوينو 2020
مسابقة اردوينو 2020
مسابقة اردوينو 2020
مسابقة اردوينو 2020

الوصيف في مسابقة Arduino 2020