جدول المحتويات:
- الخطوة الأولى: لكن.. كيف؟
- الخطوة 2: تعلم كيفية تشغيل الكاميرا
- الخطوة 3: طرق التشغيل
- الخطوة 4: كتابة رمز التفعيل
- الخطوة 5: فئة الفاصل {}؛
- الخطوة 6: معالجة الفاصل الزمني من خلال Arduino
- الخطوة 7: عرض الفاصل الزمني
- الخطوة 8: وضع كل ذلك معًا
- الخطوة 9: إضافة شيء أخير
- الخطوة 10: احتواء الفوضى
- الخطوة 11: Sens0rs
- الخطوة 12: PoweeEeEer
- الخطوة 13: الضميمة.. كندة
- الخطوة 14: زعنفة
فيديو: Pimp My Cam: 14 خطوة (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:42
هنا من أين يأتي هذا المشروع.
منذ فترة فكرت في تصوير بعض اللقطات الزمنية. "كيف؟" سألت نفسي؟ كانت الإجابة الأولى "حسنًا.. أنت فقط تصور شيئًا وتسرعه وهذا كل شيء". لكن هل هي حقا بهذه البساطة؟ أولاً ، أريد استخدام كاميرا DSLR الخاصة بي لذلك ، ولدى نيكون D3100 حد زمني يبلغ 10 دقائق لتصوير الفيديو. ثانيًا ، حتى لو كانت لدي كاميرا بدون حد زمني لتصوير الفيديو ، ماذا لو كنت أرغب في تصوير لقطات متتابعة طويلة جدًا ، مثل 12 ساعة؟ أقوم بعمل فيديو مدته 12 ساعة بدقة 1080 بكسل. أشك في أن البطارية ستستمر لفترة طويلة ، وهي ليست عملية للغاية ، أليس كذلك؟ حسنًا ، عبور "فكرة تصوير الفيديو". حسنًا ، هناك صور. التقاط صورة بالكاميرا في فترة زمنية معينة وينتهي الأمر بمئات الصور التي أعالجها من خلال برنامج لصنع فيديو..؟
بدت فكرة جيدة لذلك قررت أن أجربها. لذلك انتهى بي الأمر برغبة في صنع جهاز يمكنني إدخال فترة زمنية فيه ، وبناءً على تلك الفترة ، فإنه سيؤدي إلى تشغيل الكاميرا باستمرار. وأثناء وجودنا فيه ، لماذا لا نضيف بعض الأشياء الأخرى مثل مشغل الحركة وما إلى ذلك؟
الخطوة الأولى: لكن.. كيف؟
كيف؟ هو سؤالنا التالي الذي يفتقد إجابة. بسبب التوقيت والتشغيل وأجهزة الاستشعار ومثل هذه الأشياء ، لن يكون مفاجئًا أن أول ما يتبادر إلى الذهن كان ، بالطبع ، Arduino. حسنًا ، ولكن لا يزال يتعين علينا تعلم كيفية تشغيل الغالق على الكاميرا. جلالة.. المؤازرة الساخنة لصقها على كاميرا الجسم؟ بالتأكيد لا ، نريد أن يكون هذا صامتًا وموفرًا للطاقة. كفاءة الطاقة - لماذا؟ لأنني أريد أن أجعلها محمولة وألصق بطارية بها ، فلن أكون بالقرب من قابس طاقة في كل مرة. إذن كيف يمكننا تشغيله بعد ذلك.. إنه في الواقع بسيط جدًا.
لقد علمت شركة Nikon بالفعل أنك تريد جهاز تحكم عن بُعد وملحقات أخرى وقالوا "حسنًا ، سنعطيهم كل ذلك ، لكننا سنصنع منفذًا خاصًا حتى نتمكن من كسب المزيد من المال من هذه الملحقات" ، عار عليك نيكون. هذا المنفذ (في حالتي) يسمى MC-DC2 ، وأرخص طريقة للحصول عليه هو شراء إصدار مصراع بعيد على eBay مقابل 2-3 دولارات واستخدام الكابل فقط.
* تحتوي بعض الكاميرات الأخرى ، مثل Canon ، على مقبس سماعة رأس بسيط مقاس 3.5 ملم مصنوع لنفس الاستخدام حتى تتمكن من استخدام بعض الكابلات من مكبرات الصوت / سماعات الرأس القديمة.
الخطوة 2: تعلم كيفية تشغيل الكاميرا
على أي حال ، إليك الصفقة ، سيكون للمنفذ 3 اتصالات ستكون من مصلحتنا (الأرض والتركيز والغالق) وستكون لديك تلك الموجودة في نهاية الكابل الخاص بك للمصراع البعيد الذي تم شراؤه حديثًا والذي قمت بتدميره للتو. هذه الاتصالات الثلاثة مهمة بالنسبة لنا لأننا إذا قمنا باختصار الأرضية والتركيز ، فستركز الكاميرا تمامًا كما تضغط على زر التركيز وبعد ذلك ، بينما يظل هذا الاتصال ، يمكنك اختصار Ground و Shutter وستلتقط الكاميرا صورة تمامًا كما لو قمت بالضغط على زر الغالق في الكاميرا.
يمكنك اختبار ذلك عن طريق اختصار الأسلاك الحية الموجودة في نهاية الكبل لتحديد السلك. بمجرد القيام بذلك ، من أجل تحديد أسهل ، سنقوم بتلوينها على النحو التالي:
الأرض = أسود ؛ التركيز = أبيض ؛ مصراع = أحمر.
حسنًا ، نحتاج الآن إلى تعليم Arduino القيام بذلك من أجلنا.
الخطوة 3: طرق التشغيل
أبسط شيء يمكننا إخبار Arduino بإرساله إلى العالم الخارجي هو إشارة الإخراج الرقمية. يمكن أن تكون هذه الإشارة إما عالية (منطقية '1') أو منخفضة (منطقية '0') ، ومن هنا جاء اسمها "رقمية" ، أو عند تحويلها إلى معناها الأساسي: 5 فولت لـ HIGH منطقي ، و 0 V لـ LOW منطقي.
ماذا سنفعل بهذه الإشارات الرقمية؟ لا يمكننا ببساطة توصيلهم بالكاميرا ونتوقع أن تعرف الكاميرا ما نريد. كما رأينا ، نحتاج إلى اختصار الاتصالات على الكاميرا حتى تتفاعل ، لذلك نحتاج إلى استخدام الإشارات الرقمية من Arduino لتشغيل بعض المكونات التي يمكن أن تقصر أطرافها اعتمادًا على هذه الإشارات الكهربائية التي نرسلها. * بالطريقة التي وصفتها ، قد تفكر "آه ، مرحلات!" لكن لا. سوف يقوم Relay بالمهمة ولكننا نتعامل مع مثل هذه التيارات الصغيرة التي يمكننا بسهولة استخدام السحر الأسود لأشباه الموصلات.
المكون الأول الذي سأحاوله هو optocoupler. لقد رأيتهم ينفذون أكثر من غيرهم لهذا وربما يكون الحل الأفضل. Optocoupler هو مكون كهربائي يمكنك من خلاله التحكم في دائرة الإخراج بينما تكون دائرة الإدخال معزولة تمامًا عنها. يتم تحقيق ذلك عن طريق إرسال المعلومات عن طريق الضوء ، وتضيء دائرة الإدخال مؤشر LED ، ويضيء الترانزستور الضوئي في مفاتيح الإخراج وفقًا لذلك.
لذلك سنستخدم optocoupler بهذه الطريقة: نطلب من Arduino أن يرسل رقمًا رقميًا عاليًا على واحد إذا كان دبابيس رقمية ، هذه الإشارة هي عمليًا 5 فولت والتي ستدفع مؤشر LED داخل optocoupler وسيصبح الترانزستور الضوئي بداخله "قصيرًا" محطات الإخراج عندما يكتشف هذا الضوء ، والعكس بالعكس ، فإنه "يفصل" أطرافه نظرًا لعدم وجود ضوء من مؤشر LED عندما نرسل قيمة منخفضة رقمية عبر Arduino.
من الناحية العملية ، هذا يعني: يتم توصيل أحد المسامير الرقمية في Arduino بمسمار ANODE الخاص بالمزود البصري ، ويتم توصيل Arduino's GND بالكاثود ، ويتم توصيل GND بالكاميرا بـ EMITTER و FOCUS (أو SHUTTER) بالمجمع. ارجع إلى ورقة البيانات الخاصة بجهاز optocoupler الذي تستخدمه للعثور على هذه المسامير في جهازك. أنا أستخدم 4N35 حتى تتمكن من متابعة تخطيطي بشكل أعمى إذا كنت لا تهتم حقًا بما يحدث داخل optocoupler. وغني عن القول ، سنحتاج إلى اثنين من هذه ، لأننا بحاجة إلى التحكم في كل من تركيز الكاميرا ومصراع الكاميرا.
نظرًا لأننا رأينا كيف يعمل ذلك ، مع وجود ترانزستور ضوئي على الخرج ، فلماذا لا نجربه فقط باستخدام ترانزستور NPN بسيط. هذه المرة ، سنقوم بإحضار الإشارة الرقمية مباشرة (عبر المقاوم) إلى قاعدة الترانزستور وربط كل من الكاميرا و GND في Arduino بالباعث وبؤرة الكاميرا / مصراعها بمجمع الترانزستور.
مرة أخرى ، سنحتاج إلى اثنتين من هذه لأننا نتحكم في إشارتين. أنا أستخدم BC547B ويمكنك بشكل أساسي استخدام أي NPN لهذا لأن التيار الذي نتحكم فيه هو مللي أمبير واحد.
سيعمل كلا المكونين ، ولكن ربما يكون اختيار optocoupler هو الفكرة الأفضل لأنه أكثر أمانًا. اختر الترانزستورات فقط إذا كنت تعرف ما تفعله.
الخطوة 4: كتابة رمز التفعيل
كما قلنا من قبل ، سنستخدم المسامير الرقمية في Arduino للإشارة. يمكن أن يستخدم Arduino كلاهما لقراءة البيانات منه ، أو الكتابة إليها ، لذا فإن أول شيء نحتاج إلى تحديده في وظيفة الإعداد () أننا سنستخدم اثنين من دبابيس Arduino الرقمية للإخراج كما يلي:
pinMode (FOCUS_PIN ، الإخراج) ؛
pinMode (SHUTTER_PIN ، الإخراج) ؛
حيث يمكن تعريف FOCUS_PIN و SHUTTER_PIN إما بـ "#define NAME value" أو كـ int قبل وظيفة setup () لأنك قد تغير الدبوس بحيث يكون من الأسهل تغيير القيمة في مكان واحد فقط بدلاً من الرمز بالكامل بعد ذلك.
الشيء التالي الذي سنفعله هو كتابة دالة المشغل () والتي ستفعل ذلك تمامًا عند تشغيلها. سأقوم فقط بتضمين صورة مع الكود. كل ما تحتاج إلى معرفته هو أننا نحتفظ أولاً بـ FOCUS_PIN على HIGH لفترة معينة من الوقت لأننا نحتاج إلى انتظار الكاميرا للتركيز على الموضوع الذي نوجهه إليه ثم للحظة (بينما لا يزال FOCUS_PIN مرتفعًا) ضع SHUTTER_PIN على HIGH فقط لالتقاط الصورة.
لقد قمت أيضًا بتضمين القدرة على تخطي التركيز لأنه لن تكون هناك حاجة لذلك إذا كنا نلتقط لقطة زمنية لشيء لا يغير المسافة من الكاميرا عبر الزمن.
الخطوة 5: فئة الفاصل {}؛
الآن بعد أن قمنا بتشغيل الكاميرا بعيدًا عن الطريقة التي نحتاج إليها لتحويلها إلى مقياس فاصل عن طريق إضافة وظيفة معالجة الفترة الزمنية بين لقطتين. فقط حتى تحصل على صورة لما نقوم به ، إليك بعض التعليمات البرمجية الأولية لتوضيح الوظيفة التي نريدها:
حلقة فارغة(){
فترة التأخير)؛ اثار()؛ }
أريد أن أكون قادرًا على تغيير هذا الفاصل الزمني ، دعنا نقول ، 5 ثوان على طول الطريق إلى ربما 20-30 دقيقة. وإليكم المشكلة ، إذا كنت أرغب في تغييرها من 5 إلى 16 أو أي شيء بينهما ، فسأستخدم زيادة الآحاد ، حيث ستزداد الفترة بمقدار 1 ثانية لكل طلب خاص بي لزيادة الفاصل الزمني. هذا رائع ، لكن ماذا لو أردت الانتقال من 5 ثوانٍ إلى 5 دقائق؟ سيستغرق الأمر 295 طلبًا إلى ذلك بزيادات قدرها 1 ثانية ، لذا من الواضح أنني بحاجة إلى زيادة قيمة الزيادة إلى شيء أكبر ، وأحتاج إلى تحديد قيمة الفاصل الزمني (العتبة) بالضبط لتغيير الزيادة. لقد نفذت هذا:
من 5 إلى 60 ثانية: زيادة بمقدار 1 ثانية ؛ من 60 إلى 300 ثانية: زيادة بمقدار 10 ثوانٍ ؛ 300s-3600s: 60s زيادة ؛
لكنني كتبت هذا الفصل ليكون قابلاً للتعديل حتى تتمكن من تحديد العتبات والزيادات الخاصة بك (يتم التعليق على كل شيء في ملف h. حتى تتمكن من معرفة مكان تغيير القيم).
من الواضح أن المثال الذي قدمته حول معالجة الفاصل الزمني يتم على جهاز كمبيوتر ، والآن نحتاج إلى نقله إلى Arduino. يتم وضع هذه الفئة بأكملها ، الفاصل الزمني ، داخل ملف رأس واحد يتم استخدامه لتخزين الإعلانات والتعريفات (ليس حقًا ، ولكن يمكن القيام بذلك في هذا المثال دون التسبب في أي ضرر) لفئتنا / وظائفنا. لإدخال ملف الرأس هذا إلى كود اردوينو الخاص بنا ، نستخدم "#include" Interval.h "(يجب أن تكون الملفات في نفس الدليل) ، مما يضمن أنه يمكننا استخدام الوظائف المحددة في ملف الرأس في الكود الرئيسي لدينا.
الخطوة 6: معالجة الفاصل الزمني من خلال Arduino
الآن نريد أن نكون قادرين على تغيير قيمة الفترة الزمنية ، إما زيادتها أو إنقاصها. هذا شيئان لذلك سنستخدم إشارتين رقميتين سيتم التحكم فيهما بواسطة زرين. سنقرأ بشكل متكرر القيم الموجودة على المسامير الرقمية التي قمنا بتعيينها للأزرار ونحلل هذه القيم إلى أزرار التحقق من الوظيفة (int ، int) ؛ مما يؤدي إلى زيادة الفاصل الزمني إذا تم الضغط على الزر "لأعلى" وتقليل الفاصل الزمني إذا كان الزر "لأسفل". أيضًا ، إذا تم الضغط على كلا الزرين ، فسيؤدي ذلك إلى تغيير قيمة التركيز المتغير الذي يتحكم في التركيز أم لا عند التشغيل.
يُستخدم جزء من الكود ((millis () - prevBtnPress)> = debounceTime) للتراجع. بالطريقة التي كتبتها ، فهذا يعني أنني أسجل الضغط على الزر الأول باستخدام المتغير المنطقي btnPressed وتذكر الوقت الذي حدث فيه ذلك. من ثم أنتظر مقدارًا معينًا من الوقت (debounceTime) وإذا كان الزر لا يزال مضغوطًا ، فأنا أتفاعل. كما أنه يقوم "بإيقاف مؤقت" بين كل ضغطة أخرى على الزر بحيث يتجنب الضغطات المتعددة في حالة عدم وجود أي ضغط.
وأخيرًا ، مع:
إذا ((ميليس () - prevTrigger) / 1000> = interal.getVal ()) {
prevTrigger = ميليس () ؛ اثار()؛ }
نتحقق أولاً مما إذا كان مقدار الوقت بين آخر تشغيل (prevTrigger) والوقت الحالي (مللي ()) (كل شيء مقسوم على 1000 لأنه بالملي ثانية والفاصل بالثواني) يساوي أو أكبر من الفاصل الزمني نريد ، وإذا كان الأمر كذلك ، فإننا نتذكر الوقت الحالي على أنه آخر مرة شغّلنا فيها الكاميرا ثم شغّلناها.
مع اكتمال هذا ، قمنا بشكل أساسي بعمل مقياس فاصل ، لكننا بعيدون عن الانتهاء. ما زلنا لا نرى قيمة مقياس الفترات. يتم عرضه فقط على Serial Monitor ولن نكون بالقرب من جهاز كمبيوتر دائمًا ، لذا سنقوم الآن بتنفيذ شيء سيُظهر لنا الفاصل الزمني أثناء تغييره.
الخطوة 7: عرض الفاصل الزمني
هذا هو المكان الذي نقدم فيه العرض. لقد استخدمت الوحدة المكونة من 4 أرقام والتي يقودها TM1637 لأنني بحاجة إلى استخدامها فقط لعرض الوقت ولا شيء آخر. أسهل طريقة لاستخدام هذه الوحدات المصممة لـ Arduino هي استخدام مكتبات تم إنشاؤها بالفعل لها. يوجد على موقع Arduino صفحة تصف شريحة TM1673 ورابط لمكتبة مقترحة. لقد قمت بتنزيل هذه المكتبة وهناك طريقتان يمكنك من خلالهما تقديم هذه المكتبات إلى Arduino IDE:
- من برنامج Arduino ، انتقل إلى Sketch> Include Library> Add. ZIP library وحدد موقع ملف zip الذي قمت بتنزيله للتو
- يمكنك القيام بما يفعله Arduino يدويًا وفك ضغط المكتبة في المجلد الذي يخزن فيه Arduino المكتبات ، على Windows: C: / Users / Username / Documents / Arduino / libraries \.
بمجرد تضمين المكتبة ، يجب عليك قراءة ملف "ReadMe" الذي ستجد فيه ملخصًا لما تقوم به الوظائف المختلفة. في بعض الأحيان لا يكون هذا كافيًا ، لذا سترغب في التعمق قليلاً واستكشاف ملفات الرأس التي يمكنك من خلالها معرفة كيفية تنفيذ الوظائف وما تتطلبه كوسيطات إدخال. وبالطبع فإن أفضل طريقة للتعرف على قدرة المكتبة على ذلك عادة ما تقدم مثالًا يمكنك تشغيله من برنامج Arduino من خلال ملف> أمثلة> اسم المكتبة> اسم المثال. تقدم هذه المكتبة مثالاً واحدًا أوصيك بتشغيله على شاشتك فقط لمعرفة ما إذا كانت شاشتك تعمل بشكل صحيح ، وأشجعك على تعديل الكود الذي تراه في المثال ومعرفة ما تفعله كل وظيفة وكيف تتفاعل الشاشة معها هو - هي. لقد فعلت ذلك وهذا ما اكتشفته:
يستخدم 4 أعداد صحيحة بدون إشارة من 8 بتات لكل رقم (0bB7 ، B6 ، B5 ، B4 ، B3 ، B2 ، B1 ، B0). ويتم استخدام كل من هذه البتات B6-B0 لكل مقطع من رقم معين ، وإذا كانت البتة 1 ، يضيء الجزء الذي تتحكم فيه. يتم تخزين هذه الأعداد الصحيحة في مصفوفة تسمى البيانات . يتم وضع هذه البتات على الشاشة عن طريق display.setSegments (data) ؛ أو يمكنك بطبيعة الحال الوصول إلى أي من الأرقام بشكل خاص وتعيينها إما يدويًا (البيانات [0] = 0b01111001) أو يمكنك استخدام الوظيفة encodeDigit (int) ؛ وقم بتحويل الرقم الذي ترسله إلى وحدات بت (البيانات [0] = display.encodeDigit (3)) ؛. يتم استخدام البت B7 فقط بواسطة الرقم الثاني ، أو البيانات [1] ، لتنشيط القولون.
منذ أن كتبت الوظائف في ساحرة فئة INTERVAL التي يمكنني الحصول على أرقام معينة من الفاصل الزمني في شكل M1M0: S1S0 ، حيث M تعني الدقائق و S للثواني ، فمن الطبيعي أن أستخدم encodeDigitFunction (int) ؛ لعرض الفاصل الزمني كالتالي:
displayInterval () {
البيانات [0] = display.encodeDigit (interal.getM1 ()) ؛ البيانات [1] = 0x80 | display.encodeDigit (interal.getM0 ()) ، البيانات [2] = display.encodeDigit (interal.getS1 ()) ؛ البيانات [3] = display.encodeDigit (interal.getS0 ()) ؛ display.setSegments (بيانات) ؛ }
الآن ، في أي وقت أحتاج فيه إلى عرض الفاصل الزمني على الشاشة ، يمكنني استدعاء وظيفة displayInterval ().
* لاحظ "0x80 | …" في البيانات [1]. يتم استخدامه للتأكد من أن البت B7 من البيانات [1] هو دائمًا 1 حتى تضيء النقطتان.
آخر شيء عن الشاشة ، استهلاك الطاقة. قد لا يكون ذا أهمية كبيرة لأننا لن نحتفظ به لفترة طويلة ، ولكن إذا كنت مهتمًا بجعل هذه البطارية أكثر ملاءمة للبطارية ، ففكر في تقليل سطوع الشاشة نظرًا لأنها تجتذب 3 أضعاف الحد الأقصى للسطوع من أدنى مستوى.
الخطوة 8: وضع كل ذلك معًا
نحن نعرف كيفية تشغيل الكاميرا ، وكيفية التعامل مع الفاصل الزمني وكيفية عرض نفس الفاصل الزمني على الشاشة. الآن نحتاج فقط إلى دمج كل هذه الأشياء معًا. سنبدأ بالطبع من وظيفة الحلقة (). سوف نتحقق باستمرار من ضغطات الأزرار ونتفاعل وفقًا لذلك مع أزرار الاختيار (int ، int) ونغير الفاصل الزمني وفقًا لذلك ونعرض الفاصل الزمني المتغير. أيضًا في الحلقة () سنتحقق باستمرار مما إذا كان قد مر وقت كافٍ من آخر تشغيل أو ضغط زر واستدعاء وظيفة المشغل () إذا لزم الأمر. من أجل تقليل استهلاك الطاقة ، سنقوم بإيقاف تشغيل الشاشة بعد مرور بعض الوقت.
لقد أضفت مصباحًا ثنائي اللون (أحمر وأخضر ، كاثود شائع) والذي سيضيء باللون الأخضر أثناء المشغل () وسيضيء باللون الأحمر مع الشاشة إذا كان التركيز قيد التشغيل وسيظل متوقفًا إذا كان التركيز إيقاف.
أيضًا ، سننتقل إلى Arduino أصغر ، Pro Mini.
الخطوة 9: إضافة شيء أخير
حتى الآن.. لقد أنشأنا مقياسًا زمنيًا فقط. مفيد ، لكن يمكننا أن نفعل ما هو أفضل.
إليك ما كان يدور في ذهني: مقياس Intervalometer يفعل شيئًا افتراضيًا باستثناء عندما نعلق نوعًا من المفاتيح / المستشعر الخارجي الذي يوقف مقياس الفاصل الزمني ويستجيب لإدخال المفتاح / المستشعر. دعنا نسميها مستشعرًا ، لن يكون بالضرورة مستشعرًا متصلًا ولكن سأشير إليه على هذا النحو.
أولاً ، كيف نكتشف أننا وصلنا المستشعر؟
ستحتاج جميع المستشعرات التي سنستخدمها / نصنعها إلى ثلاثة أسلاك تربطها بـ arduino (Vcc ، GND ، Signal). هذا يعني أنه يمكننا استخدام مقبس صوت مقاس 3.5 مم كمقبس إدخال لجهاز الاستشعار. وكيف يحل ذلك مشكلتنا؟ حسنًا ، هناك أنواع من مقبس مقاس 3.5 مم "بمفتاح" به دبابيس مختصرة لمسامير الموصل إذا لم يكن هناك موصل ذكر بداخلها ، ويتم فصلها عند وجود موصل. هذا يعني أن لدينا المعلومات بناءً على وجود المستشعر. سأستخدم المقاوم المنسدل كما هو موضح (سيقرأ الدبوس الرقمي HIGH بدون المستشعر ، و LOW مع المستشعر المرفق) في الصورة أو يمكنك أيضًا إرفاق الدبوس الرقمي بدبوس الموصل الذي يكون عادةً متصل بالأرض وحدد هذا الدبوس الرقمي كـ INPUT_PULLUP ، وسيعمل في كلتا الحالتين. لذا يتعين علينا الآن تعديل الكود الخاص بنا بحيث يقوم بكل ما كتبناه حتى الآن فقط إذا لم يكن المستشعر موجودًا ، أو عند التحقق من الرقم الرقمي مرتفعًا. لقد قمت أيضًا بتعديله بحيث يعرض "SENS" على الشاشة بدلاً من الفاصل الزمني غير المجدي في هذا الوضع ، لكن التركيز لا يزال مناسبًا لنا ، سنحتفظ بوظيفة تبديل التركيز بالضغط على كلا الزرين و تظهر حالة التركيز من خلال الصمام الأحمر.
ماذا يفعل المستشعر في الواقع؟
كل ما عليك فعله هو وضع 5 فولت على دبوس الإشارة عندما نريد تشغيل الكاميرا. هذا يعني أننا سنحتاج إلى دبوس رقمي آخر من Arduino يتحقق من حالة هذا الدبوس وعندما يسجل HIGH ، كل ما عليك فعله هو استدعاء وظيفة المشغل () وستلتقط الكاميرا صورة. أسهل مثال ، والمثال الذي سنستخدمه لاختبار ما إذا كان هذا يعمل ، هو زر بسيط بمقاوم منسدل. قم بتوصيل الزر بين Vcc للمستشعر ودبوس الإشارة وأضف المقاوم بين دبوس الإشارة و GND ، وبهذه الطريقة سيكون دبوس الإشارة على GND عندما لا يتم الضغط على الزر نظرًا لعدم وجود تيار يتدفق عبر المقاوم ، ومتى عند الضغط على الزر ، نضع دبوس Signal مباشرة على HIGH ويقرأ Arduino ذلك ويقوم بتشغيل الكاميرا.
بهذا انتهينا من كتابة الكود.
* أود أن أشير إلى بعض المشكلات التي واجهتها مع مقابس الصوت التي استخدمتها. أثناء إدخال المقبس الذكر في الموصل ، قد يكون أحيانًا GND وأي من الدبابيس الأخرى قصيرة. يحدث هذا على الفور وفقط أثناء إدخال الموصل ، لكنه لا يزال طويلاً بما يكفي لتسجيل Arduino لفترة قصيرة حتى تتم إعادة تشغيل Arduino. لا يحدث هذا كثيرًا ولكن لا يزال يمثل خطرًا وهناك احتمال لتدمير Arduino لذا تجنب الموصلات التي استخدمتها.
الخطوة 10: احتواء الفوضى
يمكنك أن ترى من الصور أن اللوح أصبح فوضويًا وقد انتهينا لذلك نحتاج إلى نقل كل شيء إلى perfboard / PCB. ذهبت إلى ثنائي الفينيل متعدد الكلور لأنني أعتقد أنني سأصنع المزيد منها حتى أتمكن من إعادة إنتاجها بهذه الطريقة بسهولة.
لقد استخدمت Eagle لتصميم ثنائي الفينيل متعدد الكلور ووجدت تصميمات لجميع الأجزاء التي استخدمتها. هناك شيء واحد صغير في تصميمي أتمنى لو لم أفعله وهو وسادة سلكية لـ Vcc للشاشة. لقد رأيت ذلك متأخرًا جدًا ولم أرغب في إفساد ما صممته سابقًا وذهبت بالطريقة البطيئة لإضافة وسادات سلكية واضطررت لاحقًا إلى إضافة سلك إلى هذه الوصلات بدلاً من آثار النحاس ، لذا ضع في اعتبارك أنه إذا كنت تستخدم تصميم المنجم.
يتم توصيل لوحة Arduino والشاشة بـ PCB من خلال رؤوس دبوس أنثى بدلاً من لحامها مباشرة على PCB ، لأسباب واضحة. بهذه الطريقة توجد مساحة كبيرة للمكونات الأخرى أسفل الشاشة لمكونات أخرى مثل المقاومات والترانزستورات وحتى مقبس الصوت.
لقد وضعت أزرار الضغط الصغيرة التي ، حسب التصميم ، يجب أن تكون ملحومة مباشرة ولكن يمكنك أيضًا استخدام الثقوب الخاصة برؤوس الدبوس الأنثوية وتوصيل الأزرار بالأسلاك إذا كنت تريدها مثبتة على العلبة وليس على PCB.
سنضع أيضًا مقبس صوت أنثى آخر لتوصيل الكبل المتصل بالكاميرا. بهذه الطريقة تصبح اللوحة أكثر تنوعًا نظرًا لأنه بهذه الطريقة سنتمكن من الاتصال بكاميرات أخرى بموصلات أخرى.
الخطوة 11: Sens0rs
دعونا نفكر في طرق تنفيذ المستشعر.
لذا سيكون لدى المستشعر جهد إمداد يبلغ 5 فولت ، وسيحتاج إلى أن يكون قادرًا على توفير رقم رقمي عالي على دبوس الإشارة الخاص به عندما نريد تشغيل الكاميرا. أول ما يتبادر إلى ذهني هو مستشعر الحركة ، PIR ليكون محددًا. هناك وحدات تباع لـ Arduino بها هذا المستشعر وتفعل ما نريده بالضبط. يتم تشغيلهم بجهد 5 فولت ولديهم دبوس إخراج يضعون عليه 5 فولت عند تشغيلهم ، نحتاج فقط إلى توصيل دبابيسه بمقبس صوت 3.5 مم ويمكننا توصيله باللوحة. هناك شيء واحد يجب ملاحظته على الرغم من أن هذا المستشعر يحتاج إلى وقت للتسخين والبدء في العمل بشكل صحيح ، لذلك لا تتوقع أن يعمل بشكل صحيح بمجرد توصيله ، امنحه بعض الوقت ثم قم بإعداده وأي شيء على قيد الحياة يسير فيه النطاق سيؤدي إلى تشغيل الكاميرا.
نظرًا لأننا نفكر في اتجاه لوحات مستشعر Arduino المصنوعة بالفعل ، يتبادر إلى الذهن صوت آخر. تصنع هذه اللوحات عادةً بحيث يكون لديها دبوس واحد يخرج القيمة التناظرية للصوت الذي يلتقطه وآخر ، رقمي ، ينتج عنه ارتفاع منطقي إذا تجاوز الصوت الذي يلتقطه مستوى معينًا. يمكننا ضبط هذا المستوى بحيث يتجاهل المستشعر صوتنا ولكنه يسجل التصفيق. بهذه الطريقة ، في أي وقت تصفق ، تقوم بتشغيل الكاميرا.
الخطوة 12: PoweeEeEer
أعتقد أن أسهل طريقة لتشغيل هذا الشيء هي باستخدام بنك الطاقة ، وليس خارجيًا. سنحتفظ بوظيفة شحن الهاتف أو أي شيء آخر ونتحكم في التدفق الحالي إلى اللوحة من خلال مفتاح. سنحدد مكان دبابيس موصل USB الناتج على لوحة الدائرة في بنك الطاقة وهي GND و Vcc (5V) وأسلاك اللحام مباشرة عليها ومن هناك إلى اللوحة الخاصة بنا.
الخطوة 13: الضميمة.. كندة
لقد ناضلت حقًا مع هذا. عندما كنت أقوم بضخ الصندوق الذي أردت وضع ثنائي الفينيل متعدد الكلور الموجود فيه ، أدركت أنه لا توجد طريقة لطيفة لتناسب كل شيء كما أردت ، ثم قررت تصميم ثنائي الفينيل متعدد الكلور جديد ، هذه المرة باستخدام optocouplers. كنت أرغب في وضع PCB أسفل الجانب الذي سأحفر عليه ثقوبًا لمكونات معينة يجب رؤيتها / لمسها. لكي يعمل هذا ، سأحتاج إلى لحام الشاشة و Arduino مباشرة باللوحة ، بدون مآخذ أو رؤوس ، وهنا تكمن المشكلة الأولى. كان من المروع للغاية تحرّي الخلل وإصلاحه لأنني لم أكن مستعدًا لتلحيمه على الفور حتى اختبرت أن كل شيء يعمل ، ولم أتمكن حقًا من اختبار أي شيء لأنني لم أتمكن من لحامه وما إلى ذلك.. لا ر تفعل هذا. مشكلة نمبرو دوس ، صنع ثقوب في العلبة. أعتقد أنني أجريت قياسات خاطئة لأنه لم يتم محاذاة أي من الثقوب الموجودة في العلبة مع المكونات الموجودة على PCB وكان عليّ تكبيرها وكانت الأزرار مرتفعة جدًا على PCB وسيتم الضغط عليها دائمًا عند وضع اللوحة في مكانها منذ أن أردت مقابس الصوت الموجودة على الجانب ، اضطررت إلى تكبير تلك الثقوب أيضًا لتناسب الرافعات أولاً ثم خفض اللوحة حتى تظهر الشاشة والأزرار.. النتيجة مروعة.
لقد جعلت الثقوب الرهيبة نوعًا ما أقل فظاعة من خلال تراكب الجزء العلوي مع بعض الورق المقوى الرقيق الذي قطعت فيه ثقوبًا أكثر منطقية للمكونات و.. لا يزال الأمر فظيعًا ولكنه أسهل على العين على ما أعتقد.
الحكم ، أقترح عليك القيام بذلك عن طريق شراء المكونات التي يتم تركيبها على العلبة ، وليس مباشرة على ثنائي الفينيل متعدد الكلور. بهذه الطريقة يكون لديك حرية أكبر في وضع المكونات وأماكن أقل لارتكاب الأخطاء.
الخطوة 14: زعنفة
لقد انتهيت ، ولكن إليك بعض الأشياء التي كنت سأفعلها بشكل مختلف:
استخدم مقابس صوت ذات جودة أفضل مقاس 3.5 مم. تميل تلك التي استخدمتها إلى تقصير المحطات أثناء إدخال أو سحب المقبس مما يؤدي إما إلى تقصير العرض وبالتالي إعادة تعيين Arduino أو ينتج عنه مشغلات مزيفة. لقد قلت هذا في الخطوة السابقة لكنني سأقولها مرة أخرى.. لا تقم بتلحيم لوحة Arduino بدون رؤوس / مقابس ، فهي تجعل أي نوع من استكشاف الأخطاء وإصلاحها أو تحميل رمز جديد أكثر صعوبة. أعتقد أيضًا أن وجود إشارة LED بأن الشيء قيد التشغيل كان من الممكن أن يكون مفيدًا لأنني في كثير من الأحيان لا أستطيع معرفة ذلك دون الضغط على الزر حيث يتم إيقاف تشغيل الشاشة. والشيء الأخير ، وظيفة وقفة. أتخيل أنه سيكون مفيدًا عند توصيل مستشعر PIR ، على سبيل المثال ، لأنه يحتاج إلى وقت حتى يسخن ، أو فقط عند تحريكه حولك لا تريد تشغيله حتى تتمكن من إيقاف كل شيء مؤقتًا ، ولكن يمكنك أيضًا تشغيله ببساطة قبالة الكاميرا حتى.. أيا كان.
شيء أنيق آخر هو فيلكرو على الحامل ثلاثي القوائم لأنه من المرجح أن يتم استخدامه هناك.
لا تتردد في طرح أي شيء عن هذا المشروع في التعليقات ، وأود أن أعرف ما إذا كنت قد قمت ببنائه وكيف انتهى الأمر بالنسبة لك.
موصى به:
لعبة Minecraft التفاعلية لا تدخل السيف / الإشارة (ESP32-CAM): 15 خطوة (بالصور)
لعبة Minecraft التفاعلية لا تدخل Sword / Sign (ESP32-CAM): هناك بالفعل عدة أسباب وراء ظهور هذا المشروع: 1. بصفتي مؤلفًا لمكتبة TaskScheduler متعددة المهام التعاونية ، كنت دائمًا أشعر بالفضول حول كيفية الجمع بين مزايا تعدد المهام التعاوني ومزايا العمل الوقائي
اختيار محرك خطوة ومحرك لمشروع شاشة الظل الآلي في Arduino: 12 خطوة (بالصور)
اختيار Step Motor و Driver لمشروع شاشة الظل الآلي من Arduino: في هذا Instructable ، سأنتقل إلى الخطوات التي اتخذتها لتحديد Step Motor و Driver لمشروع نموذج شاشة الظل الآلي. شاشات الظل هي طرازات Coolaroo ذات الكرنك اليدوية الشائعة وغير المكلفة ، وأردت استبدال
الشروع في استخدام ESP32 CAM - دفق الفيديو باستخدام ESP CAM عبر Wifi - مشروع كاميرا الأمن ESP32: 8 خطوات
الشروع في استخدام ESP32 CAM | دفق الفيديو باستخدام ESP CAM عبر Wifi | مشروع كاميرا الأمان ESP32: سنتعلم اليوم كيفية استخدام لوحة ESP32 CAM الجديدة هذه وكيف يمكننا ترميزها واستخدامها ككاميرا أمنية والحصول على دفق فيديو عبر wifi
ماسح سيكلوب ثلاثي الأبعاد My Way خطوة بخطوة: 16 خطوة (بالصور)
Ciclop 3D Scanner My Way خطوة بخطوة: مرحبًا بالجميع ، سأدرك ماسح Ciclop ثلاثي الأبعاد الشهير ، كل الخطوات الموضحة جيدًا في المشروع الأصلي غير موجودة ، لقد قمت ببعض الإصلاح لتبسيط العملية ، أولاً أقوم بطباعة القاعدة ، وأعيد ضبط ثنائي الفينيل متعدد الكلور ، لكن استمر
واجهة خطوة MIDI: 12 خطوة (بالصور)
MIDI Step Interface: النسخة الإسبانية هنا. في هذا الدليل سوف نوضح لك كيفية إنشاء واجهة ضوئية وصوتية يمكن استخدامها للعب & quot؛ Simon Says & quot؛ وكواجهة MIDI. سيتم لعب كلا الوضعين بقدمك. خلفية المشروع ولد بسبب