سأحاول في هذه المقالة أن أصف بعبارات عامة مسار إنشاء جهاز من الفكرة إلى تنفيذ نموذج أولي قابل للاستخدام.
اسمي ديمتري دوداريف. أنا منخرط في تطوير الإلكترونيات وأحب حقًا إنشاء العديد من الأجهزة المحمولة. أنا أيضا أحب الموسيقى. قبل ستة أشهر ، استعرت جيتارًا صوتيًا من صديق لمحاولة تعلم كيفية العزف عليه من دروس YouTube وألواح المائدة. كان صعبا. سواء فعلت شيئًا خاطئًا ، أو حاولت بشكل سيئ ، أو في مجتمع أسلافي ، أضرت المهارات الحركية الدقيقة بالإنجاب. على أي حال ، لم يخرج لي شيء سوى أصوات الأوتار. اشتد سخطي بسبب التفكك المستمر للأوتار. والناس من حولي للمرة الألف لم يسعدوا بالاستماع إلى منحنى لا شيء آخر يهم.
لكن في هذه الآلام ، لم أنس القاعدة الأساسية لمهندس الإلكترونيات. إذا كان هناك شيء ما ، فيمكن إدخال متحكم دقيق هناك. أو على الأقل إجراء تعديل إلكتروني محمول.
فكرة
بدأ هيكل الجيتار الرقمي في الظهور في رأسي.
بادئ ذي بدء ، قمت بعمل قائمة بمتطلبات الجهاز:
- يجب أن يحاكي الجهاز جيتارًا بستة أوتار و 12 حنق على لوحة الفريتس
- يجب أن يكون مضغوطًا وقابل للطي بشكل مثالي حتى تتمكن من اصطحابه معك أينما ذهبت
- يجب الاتصال بجميع المحاور الشائعة - Android و IOS و Windows و Linux و MacOS ويتم تعريفها هناك على أنها جهاز MIDI بدون أي برامج تشغيل
- تشغيل البطارية
- يجب إجراء الاتصال بدون أسلاك (ولكن نظرًا لأنه سيكون هناك موصل USB للشحن ، دعه يتم توصيله أيضًا عبر السلك)
- ,
- , ,
- : hummer on, pull off, slide, vibrato
- midi 10
بالطبع ، بالنسبة لمنصات الأجهزة المحمولة ، ستحتاج إلى كتابة تطبيق يمكنك من خلاله تحديد tablature للتعلم باستخدام مصابيح LED ، وتحديد أداة (الصوتيات ، والكلاسيكية ، والغيتار الكهربائي مع إعدادات التصفية المختلفة ، وما إلى ذلك) وتشغيل الأصوات.
من الناحية النظرية ، يجب أن تحصل على آلة مدمجة يمكن عزفها مثل الجيتار ، وخالية من العيوب التناظرية ومجهزة بنظام تدريب مرئي.
تبدو قابلة للتحقيق.
النظير
لذا ، أولاً وقبل كل شيء ، مسلحًا بالفكرة أنه في عصرنا يكاد يكون من المستحيل التوصل إلى شيء جديد وقد قام شخص ما بذلك بالفعل ، أذهب إلى google. في الواقع ، اتضح أن أول جيتار رقمي تم إنشاؤه في عام 1981 ، ولكن نظرًا لوظائفه المحدودة ، لم يتم استخدامه على نطاق واسع.
توجد أيضًا القيثارات الحديثة المدمجة ، ولكنها مصممة لجمهور مستهدف أكثر احترافًا ، وهي باهظة الثمن ، والأهم من ذلك ، بدون وضع "دفع الضوء". حتى أن هناك خيارات غريبة مع جهاز iPad بدلاً من الأوتار ، أو تشبه البطلينوس.
لذلك يمكنك أن تبدأ.
إثبات المفهوم
قررت أن أبدأ بإثبات المفهوم. نموذج أولي في عجلة من أمرنا.
تحتاج أولاً إلى تحديد قاعدة العنصر.
وحدة تحكم
في مشاريعي ، أستخدم STM32 في الغالب. فهي قوية ورخيصة وبأسعار معقولة. اختار STM32F042. يحتوي على USB (مع مذبذب داخلي 48 ميجاهرتز خاص حتى لا يعلق كوارتز خارجي) ، ونواة 32 بت ، وجميع الأجهزة الطرفية اللازمة. وكل هذا بأقل من دولار.
قررت ترك الاتصال اللاسلكي للتكرار التالي.
الأوتار على سطح السفينة
عندما قررت طباعة القصب البلاستيكي ، وتثبيته على مقاييس الجهد ذات النوابض وقياس زوايا الانحراف.
تم تصميمه بشكل صلب ومطبوع لتقييم بيئة العمل.
اتضح أنه لطيف للغاية للمس. يجب أن تعمل.
مستشعرات الرقبة من
المفترض أن يحتوي الجيتار على 6 أوتار و 12 حنق. هذا ما مجموعه 72 جهاز استشعار على الرقبة و 6 أجهزة استشعار أخرى على ظهر السفينة. يمكن للمرء استخدام زر التجزئة على كل عنصر ، ولكن ، أولاً ، ينقرون ، وثانيًا ، لن يعمل على تنفيذ تقنيات مثل الانزلاق أو الاهتزاز. أود أيضًا تحديد القوة الضاغطة.
يبدو أن مقاييس الإجهاد هي الأنسب لهذه المهمة. يغيرون مقاومتهم حسب الضغط على منطقة العمل.
اتضح أنه من الصعب جدًا العثور عليها معروضة للبيع بالكمية المناسبة ، وكانت تكلفتها كبيرة. كان علي أن أطلب علي.
ADC
هناك حاجة إلى ADC لقراءة حالة كل جهاز استشعار. لا يوجد سوى عدد قليل منهم في STM ، لذلك ستحتاج إلى شيء آخر لاستطلاع 78 جهاز استشعار. يمكن استخدام رقائق ADC الخارجية متعددة القنوات ، لكنها باهظة الثمن. لذلك ، قررت تثبيت 5 معددات إرسال تناظرية ذات 16 قناة رخيصة CD74HC4067 وتوصيل قناة STM ADC واحدة بكل واحدة.
الرسوم
حتى يذهب العدادات ، ابدأ لوحة الأسلاك. خيوط المستشعر طويلة ، لذا كان علينا تداخلها.
قبل طلب طباعة اللوحة ، قررت انتظار عدادات الضغط. وكما اتضح ، لم تذهب سدى.
من بين 80 مستشعرًا ، كان عدد قليل منها يعمل ، ثم بمعلمات مختلفة.
إنها تختلف عن الصورة على موقع البائع بشكل ملحوظ للأسوأ.
وماذا كنت أتوقع عند شراء الإلكترونيات من علي؟ ..
ثم بزغ فجر علي.
بعد كل شيء ، يمكنك تطبيق طريقة أخرى للكشف - قياس السعة كما هو الحال في أجهزة الاستشعار التي تعمل باللمس. إنه أرخص بكثير وبأسعار معقولة. وإذا تم تصميم الميكانيكا بشكل صحيح ، فيمكن تحديد الجهد.
حسنا. أحذف كل ما تم القيام به.
البدء من جديد
في الإصدار الجديد من الدليل البسيط على المفهوم ، اخترت الأسطوانات المنشورة من قضيب نحاسي مقاس 4 مم وملحومة باللوحة كعناصر مستشعر.
نحتاج الآن إلى معرفة كيفية قياس 78 حاوية.
مسح
لأجهزة الاستشعار بعد قليل من البحث على Google ، اكتشفت أن هناك العديد من الدوائر الدقيقة - وحدات التحكم في لوحات المفاتيح التي تعمل باللمس. من بينها تمكنا من العثور على مقياس مكثف للأغراض العامة رخيص الثمن مكون من 12 قناة. إنه يقيس السعة على مقياس وحدات بيكوفاراد ، والتي يجب أن تكون كافية لدائرة قياس القوة التي أخطط لتنفيذها في التعديلات التالية.
بالإضافة إلى ذلك ، فقط في حالة ، علقت مقعدًا لزر أو شيء مشابه على كل عنصر من عناصر العنق. وقام بعمل قواطع في اللوح بحيث لا يمكنك فقط لمس الأسطوانة ، ولكن أيضًا الضغط عليها بالداخل. يمكنك تجربة تقنيات اللعب المختلفة.
يتم توصيل الدائرة الصغيرة عبر واجهة I2C ولديها دبابيس تكوين تحدد العنوان. وفقًا لذلك ، يمكن تعليق 4 دوائر دقيقة كحد أقصى في حافلة واحدة. وأنا بحاجة إلى 12. لا توجد مشكلة ، أقوم بتوزيعها على ثلاث مجموعات وربطها بحافلة STM من خلال جهاز إرسال متعدد.
لوحات
هذه المرة تمكنا من تأمر مجلس الإدارة وحتى الانتظار لإنتاجها.
بعد إغلاق العدة والأسطوانات النحاسية ومقاييس الجهد ، أدركت أن التصميم باستخدام الأوتار البلاستيكية معقد للغاية. لذلك ، في الوقت الحالي ، قررت تعليق أسطوانات المستشعر نفسها على سطح السفينة ، ولكن أكثر أصالة. من أجل عدم إعادة اللوحة بالكامل ، قمت بعمل تراكب صغير وربطته بحافلة I2C STM الثانية.
قطعة الحديد جاهزة. المهمة التالية هي جعلها تلعب.
البرمجيات
الخطة على النحو التالي:
- قم بتنزيل مُركب افتراضي يمكنه العمل مع أجهزة MIDI وإنتاج أصوات الغيتار.
- اكتب برنامجًا ثابتًا يقوم باستقصاء المستشعرات ونقل النتائج إلى الكمبيوتر عبر واجهة USB المخصصة HID حوالي 100 مرة في الثانية.
- اكتب برنامج python يستقبل هذه البيانات ، ويحاكي جهاز MIDI افتراضيًا ، ويولد حزم MIDI ويرسلها إلى آلة النطق الافتراضية.
قررت معرفة كيفية التظاهر على الفور بأنني جهاز MIDI بعد ذلك بقليل.
كيف يتم إعادة إنتاج الصوت؟
هناك عدد غير قليل من أجهزة المزج الافتراضية لنظام التشغيل Windows مع دعم MIDI. جربت Ableton live و RealGuitar و FL studio و Kontakt. توقفت في RealGuitar بسبب بساطته ودقته للغيتار. حتى أنه يعرف كيف يقلد عيوب العزف البشري - انزلاق الأصابع على الأوتار ، المعلمات العشوائية للملاحظات.
الاتصال بمُركِّب افتراضي
بالنسبة إلى لغة python ، تمكنا من العثور على مكتبة mido يمكنها محاكاة منفذ midi الظاهري ، والذي يمكن توصيله بإدخال مُركِّب افتراضي من خلال محاكي خارجي لكابل midi "loopmidi".
في واجهة البرنامج ، قمت بعمل عرض رسومي لمستوى السعة المقاسة لكل مستشعر لتبسيط ضبط الفلتر. أيضًا ، في المستقبل ، أضفت عناصر تحكم لمصابيح LED ، ومحرك اهتزاز (لا أعرف السبب بعد ، ولكنه سيكون أيضًا في الجيتار) ، وتصور مقياس التسارع ومستوى شحن البطارية.
من أجل الضغط على أوتار الجيتار لتشغيل النغمات الصحيحة ، يجب تعيين جميع المستشعرات الـ 72 الموجودة على لوحة الفريتس على النوتة المناسبة.
اتضح أنه من بين 72 عنصرًا في 12 حنق ، 37 فقط هي ملاحظات فريدة. يتم ترتيبها وفقًا لهيكل معين ، لذلك بدلاً من بناء طاولة كبيرة ، كان من الممكن اشتقاق معادلة بسيطة ، والتي تعطي رقم الملاحظة المقابلة بواسطة رقم المستشعر.
اختبار
يبدو أن كل شيء جاهز للاختبار الأول. كنت كسولًا جدًا لرؤية القضبان ولحام جميع الحنق الاثني عشر ، لذلك اقتصرت على الثامن. لحظة الحقيقة:
انه حي! تم تأكيد صلاحية المفهوم. لحسن الحظ ، لم يكن هناك حد! لكن لا يمكنك الاسترخاء.
تتمثل الخطوة التالية في إضافة مصابيح LED ومقياس تسارع ومحرك اهتزاز وبطارية وشبكة لاسلكية وحالة والقدرة على العمل بدون برامج تشغيل أو برامج محاكاة midi على جميع الأنظمة الأساسية الشائعة.
LEDs
لتوصيل 84 مصباح LED ، اخترت أبسط سلسلة أقحوان من 14 سجل إزاحة 8 بت. من الملائم توصيلهم برقم SPI MOSI الخاص بـ STM وإرسال مصفوفة بيانات عبر DMA بدون مشاركة النواة.
التسارع
لم يكن لدي أي متطلبات خاصة للالتسارع، لذلك أخذت أبسط LIS3D. باستخدامه ، سيحدد الجيتار ميله بالنسبة إلى الأفق ، مما سيسمح بتعديل مرشحات الصوت المختلفة أثناء اللعب بحركات يدك.
لاسلكي
لنقل البيانات اللاسلكية قررت وضع ESP32. إنه يدعم العديد من بروتوكولات Bluetooth و WI-FI ، وسيكون هناك شيء لتجربته (في ذلك الوقت لم أكن أعرف بعد أنه في حالتي لم يكن هناك سوى طريقة صحيحة واحدة للاتصال).
الجسم
يجب أن يكون الجسم قابلاً للطي ، لذلك يجب تقسيم الإلكترونيات الخاصة بالسطح والرقبة إلى لوحين وتوصيلها بكابل شريطي.
سيحدث التشغيل عندما يتم فتح الجسم عن طريق تقريب المغناطيس الموجود على الرقبة من مستشعر القاعة على لوحة السطح.
ابدء
تم إنجاز الكثير من العمل لتجربة العديد من تصميمات العنق الملموسة وناشرات LED. أردت أن يتوهج سطح العنصر بالكامل بشكل متساوٍ ، مع الحفاظ على القدرة على اكتشاف اللمس والضغط على الأزرار.
التفت إلى صديق مهني منخرط في التصميم الصناعي. توصلنا إلى تصميم وحدة ثني الجيتار ثم قام بتصميم وطباعة نموذج أولي لجسم.
يبدو أنه تم التفكير في كل شيء ، يمكنك البدء في توصيل اللوحة.
جهاز MIDI
في الإصدار الجديد ، أولاً وقبل كل شيء ، أردت اكتشاف الجيتار كجهاز MIDI بدون أي برامج إضافية عند الاتصال عبر USB.
اتضح أن هذا ليس بالأمر الصعب ، فجميع المواصفات موجودة على الموقع الرسمي usb.org. لكن كل الخوارزميات التي تم تنفيذها على جانب تطبيق Python كان لا بد من إعادة كتابتها بلغة C في وحدة التحكم.
لقد فوجئت أنه يعمل على الفور على جميع الأجهزة. Windows 10 و MacOS و Debian 9 و Android (عبر محول USB). فقط قم بتوصيل السلك وسيظهر جهاز MIDI يسمى "Sensy" في النظام ويتم التعرف عليه من قبل جميع أجهزة المزج. لم أتمكن من الاختبار باستخدام iPhone حتى الآن. لا يوجد محول. لكن يجب أن تعمل بنفس الطريقة.
الواجهة اللاسلكية
التحدي التالي هو إنجاز المهام لاسلكيًا.
كنت كسولًا جدًا بالنسبة إلى google على الفور ، لذلك قضيت عدة أيام في اختبار واجهات لاسلكية مختلفة. لقد رفضت BLE على الفور ، لأن في رأسي ارتبط مصطلح "الطاقة المنخفضة" بقوة مع معدل الحزم المنخفض. جربت WI-FI في وضع العميل ، WI-FI في وضع نقطة الاتصال ، Bluetooth في وضع SPP ، إلخ. في كل مكان كانت هناك نفس المشكلة - تأخير كبير (أكثر من 100 مللي ثانية لكل عين) ووصول غير منتظم للحزم في الوقت المناسب. هذا جعل اللعبة مستحيلة.
كنت على وشك الاستسلام وصنع دونجل منفصل من شأنه أن يلتصق بمنفذ USB للهاتف المحمول أو الكمبيوتر ويستقبل البيانات من الغيتار عبر راديو مخصص.
ولكن بعد ذلك عثرت بالصدفة على مواصفات الإصدارات الجديدة من بروتوكول BLE ورأيت أن الحد الأدنى لفاصل الاتصال هو 7.5 مللي ثانية ، وهو ما يتناسب تمامًا مع متطلباتي.
علاوة على ذلك ، اتضح أن هناك بروتوكول BLE MIDI مدعوم من جميع أنظمة التشغيل الجديدة ويعمل بدون أي برامج تشغيل مثل USB MIDI.
كانت المشكلة الوحيدة هي أن مثل هذا الفاصل الزمني المنخفض للاتصال و BLE MIDI بشكل عام مدعومان فقط من خلال منصات جديدة نسبيًا. تبقى التفاصيل غير معروفة ، لكن الاختبارات مع الأجهزة المتاحة لي كانت ناجحة.
تأتي بعض أجهزة iPhone الجديدة مع مُركب افتراضي مثبت مسبقًا على Garage Band قادر على إنتاج أصوات جيتار عالية الجودة (إذا لم يكن الأمر كذلك ، فيمكنك تنزيله من App Store مجانًا).
البرامج الثابتة
بعد أن كتبت كل الحد الأدنى من الوظائف الضرورية ، استندت بالضبط إلى حجم فلاش STM. فقط 168 بايت تبقى مجانية. من الواضح أن آلهة السيليكون فضلتني ، لذلك أنا أسير في الاتجاه الصحيح.
سيكون من الممكن التعمق في تحسين الكود وتقليل مقدار الذاكرة المشغولة بشكل كبير ، ولكن سيكون من الأسهل في الإصدار التالي استخدام وحدة تحكم أكثر سمكًا ، والتي تكلف 5 سنتات أكثر ولا تضيع الوقت. علاوة على ذلك ، فأنت لا تعرف أبدًا الميزات الأخرى التي تريد إضافتها.
لكن الحد الأدنى من الوظائف ليس كافيًا ، ما زلت بحاجة إلى العمل بتقنيات اللعبة. بادئ ذي بدء ، أريد تنفيذ الشريحة. هذا هو الوقت الذي تبدأ فيه في عزف النوتة الموسيقية بحنق معين ومرر يدك على الرقبة ، وتقفز من الحنق إلى الحنق.
لقد استمتعت بالفعل ببعض المرح باستخدام USB ، لذا يمكنك التعليق على جميع الأكواد المرتبطة به وإخلاء الذاكرة. يمكنك أيضًا إجراء اختبار لاسلكيًا:
مع تشغيل جميع مصابيح LED ، يمكن استخدام الجيتار إذا ضللت الطريق في كهف مظلم.
ما هي عيوب هذا التصميم؟
- على المستشعرات ، لا يتم قياس الضغط في أي مكان. هذا ينطوي على ثلاث مشاكل:
- هناك ضربات عشوائية ثابتة للأوتار المجاورة على كل من سطح السفينة ولوح الفريتس. هذا يجعل اللعبة صعبة للغاية.
- يتم تشغيل جميع النوتات الموسيقية بنفس الحجم. معظم الأشخاص لا يلاحظون هذا ، لكني أود أن ألعب بالقرب من الغيتار الحقيقي.
- عدم القدرة على استخدام تقنيات المطرقة والسحب والاهتزاز
- المصابيح ذات لون واحد. هذا يحد من الوضوح عند لعب التابلت. أود أن أكون قادرًا على الإشارة إلى طرق مختلفة للعبة بألوان مختلفة.
- . – . , , , .
- . , , , .
- . , .
.
أنتقل إلى وحدة تحكم سلسلة STM32F07. يحتوي بالفعل على 128 كيلوبايت من الفلاش - وهذا يكفي لأي وظيفة. وحتى لبيض عيد الفصح.
سيكون استخدام ESP32 في الإصدار الأخير من الجيتار جريئًا جدًا ، لذلك بحثت عن شيء أكثر أرثوذكسية. وقع الاختيار على NRF52 من حيث إمكانية الوصول وتوافر الوثائق وملاءمة الموقع.
بالطبع ، سيتم أيضًا تنفيذ ثلاثة ابتكارات رئيسية:
- المصابيح الآن RGB ،
- سيكون هناك قياس للقوة على كل مستشعر من الشريط (لم تعد هناك حاجة لأزرار اللباقة) ،
- ستتحرك الأوتار الموجودة على لوحة الصوت.
في الوقت الحالي ، تبدو لوحة سطح السفينة كما يلي (تركت بصمة ESP فقط في حالة):
المشروع يسمى Sensy وهو حاليا قيد التطوير النشط. هناك ثقة كاملة بالفعل في أنه سيتم تنفيذ جميع الوظائف المخطط لها ، لذلك تم اتخاذ قرار بشأن مزيد من التطوير.
نحن في سانت بطرسبرغ ، ويتألف الفريق الآن من شخصين: أتعامل مع الجانب التقني ، وشريكي - التسويق ، والتمويل ، والمسائل القانونية.
إذا كان هناك Jedi من بين القراء في مجال تصميم الهيكل أو تطوير الأجهزة المحمولة الذين يرغبون في الانضمام إلى المشروع - يرجى الكتابة إلي أينما ومتى تريد.
من يهتم بمتابعة أخبار المشروع - اترك البريد في النموذج الموجود على الموقع واشترك في الشبكات الاجتماعية.
آمل حقًا الحصول على تعليقات من مجتمع Habrasoc مع التعليقات والاقتراحات!
حلقة مضحكة من عملية التطوير
NRF52, UART. . , , , .
– «N» ascii. 0x4E, . – «O». . baud rate? , – «N». , «NON GENUINE DEVICE FOUND».
NRF- ? . , ? - . , NON GENUINE DEVICE?
, , ftdi , USB-UART , . , . , .
.
– «N» ascii. 0x4E, . – «O». . baud rate? , – «N». , «NON GENUINE DEVICE FOUND».
NRF- ? . , ? - . , NON GENUINE DEVICE?
, , ftdi , USB-UART , . , . , .
.
شكرآ لك على أهتمامك!