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

حامل مفتاح جاك جيتار اردوينو مع التعرف على جاك و OLED: 7 خطوات
حامل مفتاح جاك جيتار اردوينو مع التعرف على جاك و OLED: 7 خطوات

فيديو: حامل مفتاح جاك جيتار اردوينو مع التعرف على جاك و OLED: 7 خطوات

فيديو: حامل مفتاح جاك جيتار اردوينو مع التعرف على جاك و OLED: 7 خطوات
فيديو: اختراع 2023😱😱 2024, يوليو
Anonim
Image
Image
حامل مفتاح جيتار اردوينو مع التعرف على جاك و OLED
حامل مفتاح جيتار اردوينو مع التعرف على جاك و OLED

مقدمة:

ستفصل هذه التعليمات بالتفصيل بناء حامل مفتاح Guitar Jack الإضافي الذي يستند إلى Arduino

هذا هو أول توجيه لي على الإطلاق ، لذا يرجى التحمل معي حيث يمكنني إجراء تغييرات / تحديثات على طول الطريق

الخطوة 1: الأجزاء والأدوات

قطع غيار وأدوات
قطع غيار وأدوات
قطع غيار وأدوات
قطع غيار وأدوات
قطع غيار وأدوات
قطع غيار وأدوات

معظم الأجزاء التي اشتريتها من Amazon.co.uk أو eBay ، وبعضها كنت أركلها بالفعل - إليك قائمة بما ستحتاج إليه.

روابط Amazon عبارة عن روابط تابعة ، قد تتمكن من العثور على أرخص في مكان آخر - أستخدم Amazon Prime كثيرًا ، لذلك كان موقع Amazon هو المفضل لدي.

كنت أرغب في الحفاظ على هذا البناء منخفض التكلفة إلى حد ما ومناسب للميزانية. يمكنك استخدام شاشة TFT أكبر حسب رغبتك ، بالإضافة إلى شاشة Arduino مختلفة. لا تستخدم NANO ، لأنه سيتعطل بسبب الاستخدام العالي للذاكرة. يستخدم الرمز حوالي 72 ٪ من ذاكرة الوصول العشوائي الخاصة بـ Pro Micro وهو مستقر ، ولكن من الاختبار ، سيتعطل NANO ويتجمد.

(مزيد من التفاصيل في خطوة الرمز.)

القطع

1x Arduino Pro Micro -

1x 0.96 OLED مع شاشة صفراء وأزرق -

4x WS2812 "بكسل" -

1x DS3231 RTC -

مقبس أحادي مقاس 4x 1/4 بوصة (أو أي عدد تريده) - أمازون (ذهبي) أو أمازون (فضي) أو eBay.co.uk

حزمة مقاومة مختلطة 1x -

مقابس جيتار مقاس 4 × 1/4 بوصة -

1x كابل تمديد كابل USB الصغير -

4x M3 مسامير

الأدوات والمواد

- لحام الحديد (هذا هو الذي اشتريته - TS100 - لأنه جاء مع نصائح إضافية

- جندى

- مسدس الغراء الساخن (https://amzn.to/2UTd9PN)

- سلك (https://amzn.to/2VK2ILU)

- قواطع / قواطع أسلاك (https://amzn.to/2KzqUzp)

- طابعة ثلاثية الأبعاد أو خدمة طباعة ثلاثية الأبعاد

اختياري - هذه العناصر اختيارية ، اعتمادًا على الطريقة التي تختارها لتوصيل كل شيء

- Veroboard / Stripboard (https://amzn.to/2KzMFPE)

- موصلات طرفية لولبية (2 عمود | 3 أقطاب | 4 أقطاب)

- رؤوس PCB (https://amzn.to/2X7RjWf)

الخطوة الثانية: طباعة العلبة ثلاثية الأبعاد

3D طباعة العلبة
3D طباعة العلبة
3D طباعة العلبة
3D طباعة العلبة
3D طباعة العلبة
3D طباعة العلبة
3D طباعة العلبة
3D طباعة العلبة

لقد طبعت خاصتي على Creality CR-10S الخاص بي ، باستخدام Black PLA + (https://amzn.to/2X2SDtE)

لقد طبعت على ارتفاع 0.2 طبقة ، مع حشو 25٪.

الخطوة 3: وضع كل ذلك معًا + تخطيطي

وضع كل ذلك معًا + تخطيطي
وضع كل ذلك معًا + تخطيطي
وضع كل ذلك معًا + تخطيطي
وضع كل ذلك معًا + تخطيطي
وضع كل ذلك معًا + تخطيطي
وضع كل ذلك معًا + تخطيطي
وضع كل ذلك معًا + تخطيطي
وضع كل ذلك معًا + تخطيطي

إن الطريقة التي تختارها لتوصيل Arduino متروك لك تمامًا - لقد اخترت شخصيًا أن أجعل من نفسي "درعًا" إذا جاز التعبير. لصنع الدرع ، قمت بلحام الرؤوس الأنثوية لتتناسب مع Pro Micro ، ثم أضفت سكة + 5 فولت و GND ، على طرفي نقيض. لقد استخدمت سلك توصيل لتوصيل + 5 فولت بـ "سكة حديد" 5 فولت الآن ، وفعلت الشيء نفسه مع GND. ثم أضفت مقاومات 4x 100k ، أحد طرفيها متصل بـ + 5v لكل منهم ، ثم يتصل الجانب الآخر بـ A0 و A1 و A2 و A3 على التوالي. لقد أضفت بعد ذلك أطرافًا لولبية إلى المسامير التناظرية A0 و A1 و A2 و A3 وكذلك الدبابيس 2 (SDA) و 3 (SCL) و 4

قم بقياس الأسلاك الخاصة بك وقطعها للأطوال المناسبة. لقد بدأت مع WS2812 Pixel LEDs أولاً - يتصل FIRST WS2812 LED بـ + 5 فولت من Arduino ، و GND من Arduino ، و DIN يتصل بـ Pin 4. بعد ذلك ، يتم ربط الثلاثة المتبقية معًا ، وتسلسل جميع 5v> 5v ، GND> دبابيس GND و DOUT من بكسل واحد ، يتصل بـ DIN التالي. بمجرد أن يتم لحامها ، اضغط عليها برفق في الثقوب المربعة في الأعلى ، والصمغ الساخن في مكانها وأيضًا لحماية الجزء الخلفي من أي وصلات أو شورتات عرضية.

بعد المصابيح ، قمت بعد ذلك بربط مقابس Guitar Jack. يتصل دبوس واحد من كل منها بـ GND ، ثم يتصل الدبوس الثاني لكل منها بـ A0 و A1 و A2 و A3 وفقًا لذلك. هذا هو المقبس 1 ، إلى A0 ، والمقبس 2 إلى A1 ، والمقبس 3 إلى A2 ، والمقبس 4 إلى A3.

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

انتبه إلى الدبابيس! تحتوي بعض OLEDs على GND من الخارج ، ثم VCC ، وبعضها يحتوي على VCC من الخارج ، ثم GND

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

قم بتوصيل كل شيء لمطابقة التخطيط والصور ، وبمجرد أن تكون سعيدًا ، يمكنك بعد ذلك لصق Pro Micro و RTC Clock الساخن في مكانه أيضًا ، ثم توصيل امتداد USB بـ Pro Micro.

لقد استخدمت ملحق micro USB بحيث أ) يمكن استخدام USB لتوفير الطاقة ، ولكن أكثر من ذلك ، ب) بحيث كان من الممكن إعادة برمجة Pro Micro إذا لزم الأمر دون فصل كل شيء

بمجرد أن تصبح سعيدًا ، قم بربط العلبة معًا باستخدام البراغي الأربعة

الخطوة 4: المقابس

المقابس!
المقابس!
المقابس!
المقابس!
المقابس!
المقابس!

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

يعمل مثل مقسم الجهد ويحسب مقاومة المقاوم المجهول.

كشبكة مقسم جهد للمقاومات R1 و R2 ،

Vout = Vin * R2 / (R1 + R2) - نحن نستخدم 100k لمقاومنا المعروف (R1). هذا يعطينا "انخفاض الجهد"

من هذا يمكننا الآن إيجاد مقاومة المقاوم المجهول (R2) ،

R2 = Vout * R1 / (Vin - Vout) - حيث R1 هو المقاوم 100 كيلو (100000 أوم)

باستخدام مقاوم مختلف في كل مقبس توصيل ترغب في استخدامه ، يمكنك بعد ذلك ضبط الرمز وفقًا للمقبس المستخدم.

أنا أستخدم 4 مقابس جاك. اخترت استخدام:

المقاوم المعروف (x4) - 100 كيلو

جاك بلج 1 - 5.6 كيلو

جاك التوصيل 2-10 كيلو

جاك التوصيل 3 - 22 كيلو

جاك التوصيل 4 - 39 كيلو

يمكنك بالطبع توسيع هذا ، والتشفير بأي عدد تريده.

الخطوة 5: الكود

الرمز
الرمز

أولاً ، ستحتاج إلى Arduino IDE ، المتاح من هنا:

ستحتاج أيضًا إلى التأكد من أن لديك عددًا قليلاً من مكتبات Arduino أيضًا:

Adafruit NeoPixel:

u8g2:

Adafruit RTCLib:

Adafruit SleepyDog (اختياري):

ملاحظة حول اختيار لوحة "Arduino" الصحيحة. في الأصل ، بدأت هذا المشروع باستخدام Arduino Nano ، لأنها رخيصة جدًا بحوالي 3 جنيهات إسترلينية 4 جنيهات إسترلينية في المملكة المتحدة ، أو أقل من 1.50 جنيهات إسترلينية إذا قمت بالشراء من AliExpress (ولكن لا تمانع في الانتظار لمدة 30-50 يومًا). مشكلة نانو هي أن SRAM حجمه 2 كيلوبايت (2048 بايت). يستخدم هذا الرسم 1728 بايت من الذاكرة الديناميكية مع المتغيرات العالمية. يمثل هذا 84٪ من ذاكرة الوصول العشوائي SRAM ، مما يترك 320 بايت فقط مجانًا للمتغيرات المحلية. لم يكن هذا كافيًا وسيؤدي إلى إغلاق وتجميد جهاز Nano.

يحتوي Pro Micro (Leonardo) على 2.5K SRAM (2560 بايت) ، مما يعني أن هناك 694 بايت مجانًا للمتغيرات المحلية (يستخدم الرسم 72٪ من ذاكرة SRAM الخاصة بـ Pro Micro). حتى الآن ، ثبت أن هذا مناسب تمامًا ومستقر لاستخدامي. إذا كنت تنوي استخدام العديد من مقابس المقبس ، فقد ترغب في التفكير في استخدام شيء مع المزيد من SRAM.

بقدر ما يتعلق الأمر بتخزين الفلاش ، يستخدم هذا الرسم 88٪ (25252 بايت) من 30 كيلو (كلا من ATMega328p [Nano] و ATMega32u4 [Pro Micro] بهما 32 كيلو ، ولكن 2 كيلو محجوز لمحمل الإقلاع)

لقد كتبت المئات من رسومات Arduino على مر السنين ، لكنني هاوٍ - لذا ضع في اعتبارك أن بعض أجزاء الكود قد تكون غير فعالة أو قد تكون هناك سيناريوهات "أفضل للقيام بذلك". ومع ذلك ، فإنه يعمل بشكل مثالي بالنسبة لي وأنا سعيد به. لقد استخدمت المكتبات التي يجب أن تعمل على معظم اللوحات ، سواء كانت AVR (معظم لوحات Arduino الأساسية) أو SAMD21 (لدي عدد قليل من أجهزة Cortex M0)

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

sandhansblog.wordpress.com/2017/04/16/interfacing-displaying-a-custom-graphic-on-an-0-96-i2c-oled/

تأكد من استخدام PROGMEM للرسومات الخاصة بك. على سبيل المثال:

حرف ثابت ثابت بدون توقيع YOUR_IMAGE_NAME PROGMEM = {}

حسب التصميم ، ستنتهي الشاشة بعد 5 ثوانٍ وتعود إلى عرض الوقت.

يمكن العثور على معظم الإعدادات في Settings.h ، على وجه التحديد ، يتم ترميز اسم مقابس المقبس المرتبطة هنا:

#define PLUG1 "مفاتيح"

#define PLUG2 "P2" #define PLUG3 "P3" #define PLUG4 "P4" #define GENERIC "NA"

توجد أيضًا بعض الأجزاء المهمة من التعليمات البرمجية داخل Variables.h

تعويم R1 = 96700.0 ؛

تعويم R2 = 96300.0 ؛ تعويم R3 = 96500.0 ؛ تعويم R4 = 96300.0 ؛

هذه هي قيم المقاومة المعروفة ، بالأوم ، لكل من المقاومات الأربعة.

R1 متصل بـ A0 و R2 إلى A1 و R3 إلى A2 و R4 إلى A3.

يُنصح بقياس 100 ألف مقاومات باستخدام مقياس متعدد واستخدام القيمة الدقيقة للمقاوم. خذ قياس المقاوم بمجرد توصيل كل شيء. (ولكن لم يتم تشغيله).

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

تعويم P1_MIN = 4000.0 ، P1_MAX = 7000.0 ؛ // 5.6 كيلو

تعويم P2_MIN = 8000.0 ، P2_MAX = 12000.0 ؛ // 10K تعويم P3_MIN = 20000.0 ، P3_MAX = 24000.0 ؛ // 22K تعويم P4_MIN = 36000.0 ، P4_MAX = 42000.0 ؛ // 39 ك

والسبب في ذلك هو حساب القراءة التناظرية وتقلبات الجهد الطفيفة وما إلى ذلك

إذن ما يحدث هو ، إذا كانت المقاومة المكتشفة بين 4000 أوم و 7000 أوم ، فإننا نفترض أنك استخدمت المقاوم 5.6 كيلو ، وبالتالي فإن الكود سوف يرى هذا على أنه مقبس جاك 1. إذا كانت المقاومة المقاسة بين 8000 أوم و 12000 أوم ، الافتراض هو أنه مقاوم 10 كيلو وهو Jack Plug 2 وما إلى ذلك.

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

// # عرّف SERIAL_DEBUG

// # عرّف WAIT_FOR_SERIAL

لإلغاء التعليق ، قم بإزالة //…. للتعليق على السطر مرة أخرى ، أعد إضافة // إلى مقدمة السطر.

يتيح SERIAL_DEBUG التصحيح التسلسلي للأخطاء واستخدام أشياء مثل (على سبيل المثال)

Serial.println (F ("hello world")) ؛

WAIT_FOR_SERIAL هي خطوة إضافية ، وهذا يعني أنه حتى تفتح Serial Monitor ، لن يستمر الرمز. يساعد هذا في ضمان عدم تفويت أي رسائل تسلسلية مهمة. - لا تترك هذا ممكّنًا أبدًا

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

عند استخدام خيار SERIAL_DEBUG ، تحتوي التعليمات البرمجية الخاصة بي على ما يلي:

#ifdef SERIAL_DEBUG

Serial.print (F ("ACTIVE JACK =")) ؛ Serial.println (ACTIVE_JACK) ، int len = sizeof (SOCKET_1234_HAS_PLUGTYPE_X) / sizeof (SOCKET_1234_HAS_PLUGTYPE_X [0]) ؛ لـ (int i = 0؛ i <len؛ i ++) {Serial.print (F ("SOCKET_1234_HAS_PLUGTYPE_X [")) ؛ Serial.print (i) ؛ Serial.print (F ("] =")) ؛ Serial.println (SOCKET_1234_HAS_PLUGTYPE_X ) ، } Serial.println () ، if (INSERTED [socket]) {Serial.print (F ("Plug in socket")) ؛ Serial.print (مقبس + 1) ؛ Serial.print (F ("لها resitance:")) ؛ Serial.println (مقاومة) ؛ } #إنهاء إذا

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

الخطوة 6: ملاحظات

أعتقد أنني غطيت كل شيء ، ولكن يرجى التعليق وسأبذل قصارى جهدي للقراءة والرد عندما أستطيع:)

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

شكرا للقراءة.

موصى به: