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

جهاز التحكم عن بعد المستند إلى متصفح Arduino (لينكس): 9 خطوات (بالصور)
جهاز التحكم عن بعد المستند إلى متصفح Arduino (لينكس): 9 خطوات (بالصور)

فيديو: جهاز التحكم عن بعد المستند إلى متصفح Arduino (لينكس): 9 خطوات (بالصور)

فيديو: جهاز التحكم عن بعد المستند إلى متصفح Arduino (لينكس): 9 خطوات (بالصور)
فيديو: CS50 2013 - Week 9 2024, شهر نوفمبر
Anonim
جهاز التحكم عن بعد المستند إلى مستعرض Arduino (Linux)
جهاز التحكم عن بعد المستند إلى مستعرض Arduino (Linux)
جهاز التحكم عن بعد المستند إلى مستعرض Arduino (Linux)
جهاز التحكم عن بعد المستند إلى مستعرض Arduino (Linux)

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

الخطوة 1: المتطلبات الأساسية

المتطلبات الأساسية
المتطلبات الأساسية

الأجهزة: جانب Arduino: Arduino - أنا أستخدم Arduino Uno R2 Breadboard - متجر الإلكترونيات المحلي الخاص بك ، أو المطبخ إذا كنت تريد غلافًا أصليًا لتركيب اللوح - لقد استخدمت علبة بلاستيكية قديمة بغطاء شفاف. واحد من جهاز تحكم عن بعد مكسور (بفضل الأطفال!) جهاز استقبال الأشعة تحت الحمراء - حصلت على ترانزيستور من موسع سحري للعين عن بعد - استخدمت مقاومًا BC547 - استخدمت مقاومة متغيرة 1.5 كيلو أوم مضبوطة على 1 كيلو أوم أسلاك توصيل لوحة بريدية - حصلت على منجم من بكرة كبل RJ45 ذات النواة الصلبة جانب الكمبيوتر: الكمبيوتر المراد استخدامه كخادم USB يؤدي إلى برنامج Arduino: برنامج Arduino - من مكتبة arduino.cc irremote - من https://www.arcfn.com/2009/08/multi-protocol- infrared-remote-library.html (شكرًا لك ، عمل رائع!) خادم الويب Apache مع تثبيت PHP - عنوان IP الداخلي apache.org - لي هو 192.168.0.9 صورة لجهاز التحكم عن بُعد - google أو صورة تم التقاطها على الكاميرا. لقد قمت بحفظها بدقة 200 × 600

الخطوة الثانية: بناء المجلس

بناء المجلس
بناء المجلس

يوصى بشدة باستخدام لوح التجارب لاردوينو. لقد قمت بتركيب Arduino الخاص بي ولوح التجارب في نفس العلبة وقمت بتوصيل جميع المسامير التي أستخدمها بشكل منتظم مباشرة على اللوح بشكل دائم. دبابيس Arduino المستخدمة في هذا المشروع: 5 فولت ، دبابيس رقمية أرضية 3 ، 11 (دبوس 3 يتحكم في IR LED ، دبوس 11 يتصل بجهاز استقبال الأشعة تحت الحمراء)

الخطوة 3: التخطيطي

تخطيطي
تخطيطي

هذا التخطيطي بسيط للغاية ، 4 مكونات و 6 أسلاك. توصيلات IR LED: قم بتوصيل أحد أرجل المقاوم بدبوس Arduino الرقمي 3 قم بتوصيل الجزء الآخر من المقاوم بالدبوس الأساسي للترانزستور (الساق الوسطى في حالتي) قم بتوصيل باعث الترانزستور بالأرض قم بتوصيل المجمع من الترانزستور إلى الساق السالبة من LED (ساق قصيرة ، جانب مسطح من LED) قم بتوصيل الساق الموجبة (ساق طويلة ، جانب منحني) من LED بوصلات مستقبل 5 فولت IR (ستحتاج إلى العثور على pinout لـ جهاز استقبال الأشعة تحت الحمراء الخاص بك): GND pin to ground VS pin to 5v VO pin to Arduino digital pin 11

الخطوة 4: إضافة مكتبة Irremote إلى برنامج Arduino

أضف مكتبة Irremote إلى برنامج Arduino
أضف مكتبة Irremote إلى برنامج Arduino

irremote هي مكتبة رائعة كتبها كين شريف ومتاحة من مدونته على https://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html قم بتنزيل المكتبة من https:// arcfn.com / files / IRremote.zip وتثبيته كما تفعل مع أي مكتبة أخرى لاردوينو. تحتوي مدونته على الكثير من المعلومات المفيدة حول المكتبة وكيفية تثبيتها.

الخطوة 5: سجل الرموز من أجهزة التحكم عن بعد

ها هي بداية الجزء الممل (ولكن الذي لا مفر منه): الضغط على كل زر في جهاز التحكم عن بعد وحفظ سلسلة الإخراج وتعيينها إلى جهاز التحكم عن بعد الافتراضي. ما عليك سوى القيام بذلك مرة واحدة ، وتوقع أن تستغرق حوالي 20 دقيقة أو نحو ذلك. ابدأ محرر نصوص لحفظ مخرجاتك. أنشئ مستندًا جديدًا واكتب كل زر على جهاز التحكم عن بُعد ، زرًا واحدًا في كل سطر: Power Up Down Left Right.. إلخ. ابدأ تشغيل Arduino IDE وانقر فوق "ملفات-> أمثلة-> IRremote-> IRrecvDump" وقم بتحميله إلى اردوينو الخاص بك. سيقوم هذا المثال بتفريغ الرموز البعيدة إلى المنفذ التسلسلي. ابدأ تشغيل شاشة المنفذ التسلسلي واضغط على أحد المفاتيح بجهاز التحكم عن بُعد. سترى سلسلة تظهر في نافذة الشاشة التسلسلية: "Decoded *: * (* bits)". انسخ هذا السطر واحفظه في مستندك في السطر المناسب. كرر حتى يتم تخزين جميع مفاتيحك في ملف نصي. أعرف مدى متعة هذا الجزء ، لقد فعلته مرتين حتى الآن: P نحتاج الآن إلى إجراء القليل من البحث والاستبدال في الملف النصي: ابحث عن "Decoded" واستبدل بـ "" search for ": 0x" واستبدل بـ "،" ابحث عن "(" استبدل بـ "،" ابحث عن "بت)" استبدل بـ "" لذلك بالنسبة إلى سطر مثل: NEC الذي تم فك ترميزه: 0x000110 (15 بت) ، يجب أن يكون لدينا الآن سطر يقول: NEC ، 000110 ، 15

الخطوة السادسة: قم بإنشاء صفحة ويب لجهاز التحكم عن بعد

نحتاج الآن إلى تعيين الأزرار الموجودة على صورتك لجهاز التحكم عن بُعد.

لقد استخدمت https://www.maschek.hu/imagemap/imgmap لتعيين الأزرار وتعديل الكود الذي يوفره لك موقع الويب لجعله يعمل.

انقر فوق "استخدام صورة على جهاز الكمبيوتر الخاص بك: [اختر ملفًا]" ، حدد صورتك ، انقر فوق [تحميل] ، انقر فوق [قبول] إسقاط المستطيلات والدوائر وما إلى ذلك في كل زر. بالنسبة إلى HREF ، ضع /remote.php؟command= والسطر لهذا الزر من المستند النصي على سبيل المثال /remote.php؟command=NEC، 000110، 15 سيكون من الحكمة (ويساعد كثيرًا في تصحيح الأخطاء) إذا قمت أيضًا بملء Alt: مع اسم الزر ولكن هذا الأمر متروك لك.

كرر لكل زر.

كله تمام؟ ثم سنواصل. في الجزء السفلي من هذه الصفحة يوجد "رمز" ، انقر فوق ذلك وسيتم فتح مربع يعرض رمز خريطة imageMap. انسخ ذلك والصقه في مستند نصي جديد. هذا هو الجزء الرئيسي من صفحة الويب الخاصة بنا.

ها هي صفحة الويب الكاملة الخاصة بي ، فقط استبدل…

باستخدام الكود الخاص بك أعلاه وحفظه كـ remote.php في دليل الويب الخاص بك (/ var / www on linux) جنبًا إلى جنب مع صور جهاز التحكم عن بُعد. قم بتغيير خطوط الصور الخاصة بك:

"https://www.w3.org/TR/html4/loose.dtd">

تحكم اردوينو LED

الخطوة 7: قم بتحميل رمز التحكم عن بعد إلى Arduino الخاص بك

قم بتحميل رمز التحكم عن بعد إلى Arduino الخاص بك
قم بتحميل رمز التحكم عن بعد إلى Arduino الخاص بك

أنشئ رسمًا جديدًا والصق الكود التالي فيه: / * * WebRemote * يجب توصيل IR LED بـ Arduino PWM pin 3. * الإصدار 0.1 يوليو ، 2009 * حقوق الطبع والنشر لهذا الرمز Gregory Fenton ، https://labby.co. uk / 2012/02 / irremote-arduino-experienceation / * حقوق الطبع والنشر لمكتبة IRremote 2009 Ken Shirriff ، https://arcfn.com * / #include template inline Print & المشغل << (Print & obj، T arg) {obj.print (arg) ؛ هدف العودة } قيمة منطقية = خطأ ؛ شار inData [64]؛ // الحجم حسب مؤشر البايت المناسب = 0 ؛ #define EOP "\ n" IRsend irsend؛ إعداد باطل () {Serial.begin (9600) ؛ المسلسل << "تهيئة المنفذ التسلسلي" << EOP ؛ } حلقة فارغة () {String pch، sType، sTemp؛ شار inChar ، sTest ، k ؛ عدد البتات عرافة طويلة int أنا ، ي ؛ while (1) {while (Serial.available ()> 0) {inChar = Serial.read () ؛ إذا (الفهرس == 0) {pch = "" ؛ } if (inChar == '\ r' || inChar == '\ n' || inChar == '/') // EOP {ended = true؛ الفهرس = 0 ؛ استراحة؛ } else {if (index <64) // Array size {pch + = inChar؛ فهرس ++ ؛ }}} إذا (انتهت) {// تحليل البيانات الموجودة في البيانات هنا… pch.toUpperCase ()؛ أنا = pch.indexOf ('')! = -1؟ pch.indexOf (''): pch.indexOf ('،') ؛ sType = pch.substring (0، i) ؛ أنا ++ ؛ // تخطي '،' أو '' // أنا الآن أشير إلى بداية hex j = pch.lastIndexOf ('')! = -1؟ pch.lastIndexOf (''): pch.lastIndexOf ('،') ؛ // j يشير الآن إلى "،" أو "بعد السداسي عشري sHex = 0 ؛ sTemp = pch.substring (i، j) ؛ if (sTemp.substring (0، 2) == String ("0X")) sTemp = sTemp.substring (2) ؛ لـ (i = 0 ؛ i <sTemp.length () ؛ i ++) {k = sTemp ؛ إذا (! ((k> = '0' && k = 'A' && k <= 'F'))) استراحة ؛ عرافة * = 16 ؛ إذا (k> = '0' && k <= '9') sHex + = (k - '0') ؛ وإلا إذا (k> = 'A' && k <= 'F') sHex + = ((k - 'A') + 10) ؛ إذا (! ((k> = '0' && k = 'A' && k <= 'F'))) استراحة ؛ } sTemp = pch.substring (j + 1) ، سبت = 0 ؛ لـ (i = 0 ؛ i <sTemp.length () ؛ i ++) {k = sTemp ؛ وحدات بت * = 10 ؛ إذا (ك> = '0' && k <= '9') سبت + = (ك - '0') ؛ } if (sType.length ()> 0) {Serial << pch << EOP << "نوع الكود:" << sType << "Hex:"؛ Serial.print (sHex ، HEX) ؛ المسلسل << "Bits:" << sBits؛ } sendIt (sType، sHex، sBits) ؛ pch = "" ؛ انتهى = 0 ؛ }}} إرسال باطل (String sType، long sHex، int sBits) {for (int i = 0؛ i <2؛ i ++) {if (sType.equals (String ("RC6"))) {irsend.sendRC6 (sHex ، بت) ؛ } else if (sType.equals (String ("RC5"))) {irsend.sendRC5 (sHex، sBits)؛ } else if (sType.equals (String ("SONY"))) {irsend.sendSony (sHex، sBits)؛ } else if (sType.equals (String ("NEC"))) {if (! i) irsend.sendNEC (sHex، sBits)؛ } else if (sType.equals (String (""))) {Serial << "Delaying" << EOP؛ تأخير (450) ؛ } تأخير (30)؛ }}

الخطوة 8: الاتصال بخادم الويب من جهاز الكمبيوتر الخاص بك

اتصل بخادم الويب من جهاز الكمبيوتر الخاص بك
اتصل بخادم الويب من جهاز الكمبيوتر الخاص بك

.. أو الهاتف أو android أو ipad أو أيًا كان: انتقل إلى https:// webserver IP address / remote.php في متصفحك بالنسبة لي ، العنوان هو https://192.168.0.9/remote.php ولكن عنوانك سيكون مختلفًا بلا شك. إذا كان كل شيء يعمل ، يجب أن ترى صورة لجهاز التحكم عن بعد مع أزرار يمكنك النقر فوقها.

الخطوة 9: خطوة اختيارية: قم بتحرير ملف Hosts الخاص بك لتسهيل استخدامه

خطوة اختيارية: قم بتحرير ملف Hosts الخاص بك لتسهيل استخدامه
خطوة اختيارية: قم بتحرير ملف Hosts الخاص بك لتسهيل استخدامه

كانت الخطوة التي قمت بها هي تحرير ملف المضيفين (/ etc / hosts على linux ، C: / Windows / System32 / Drivers / etc / hosts على windows). لاحظ أنه لا يمكن تحرير هذا الملف إلا في موجه أوامر إداري (windows) أو عن طريق su (linux) أضف السطر ip.add.re.ss عن بُعد واستبدل ip.add.re.ss بعنوان IP للخادم واحفظ الملف. ستحتاج إلى القيام بذلك على كل جهاز ترغب في الوصول إلى صفحة الويب بالاسم المختصر. يمكنك الآن الوصول إلى جهاز التحكم عن بُعد باستخدام https://remote/remote.php هذا هو أول تدريب مناسب لي ، كن لطيفًا وأخبرني إذا كانت هناك أي مشاكل حتى أتمكن من إصلاحها.

موصى به: