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

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



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

حسنًا، الآن سأخبركم قليلاً عن إنشاء جهاز التحكم عن بعد هذا. بالنسبة للجهاز، استخدمت جهاز التحكم عن بعد لتلفزيون ERGO وجهاز التحكم عن بعد لمشغل الوسائط DUNE HD TV101W.

لتلقي البيانات من أجهزة التحكم عن بعد، استخدمت مستشعر الأشعة تحت الحمراء TSOP1138 (مشابه لـ TSOP4838) بتردد تشغيل 38 كيلو هرتز وقمت بتوصيله بلوحة Arduino وفقًا للمخطط:

لن تكون هناك حاجة لهذا المخطط لتحديد تشفير نقل البيانات وقراءة رمز أزرار التحكم عن بعد.

في الرسم الموجود في السطر int RECV_PIN = 11; تشير إلى رقم التعريف الشخصي لدينا 4

بعد تحميل الرسم، افتح "شاشة المنفذ"، ثم اضغط على أزرار جهاز التحكم عن بعد، وانظر إلى البيانات المستلمة.

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

حصلت عليه كما في الصورة أعلاه. تحت النقش تلفزيونرموز زر التحكم عن بعد في التلفزيون؛ تحت النقش لاعب- رموز من جهاز التحكم عن بعد لمشغل الوسائط.

نقوم الآن بفصل جهاز استقبال إشارة الأشعة تحت الحمراء الخاص بنا عن لوحة Arduino وتوصيل وحدة Bluetooth HC-05 ومصباح LED بالأشعة تحت الحمراء بها وفقًا للمخطط الموجود في الصورة.

بعد ذلك ننتقل مباشرة إلى الرسم.

رسم

#يشمل ايرسيند ايرسيند. كثافة العمليات ص = 1؛ إعداد باطلة () (Serial.begin (9600)؛) حلقة باطلة () (إذا (Serial.available ()> 0) (int x = Serial.read ()؛ إذا (x == 49) (y = 1؛ ) if (x == 50) ( y = 2; ) if (y == 1) ( // رموز الأزرار لجهاز التحكم عن بعد الخاص بالتلفزيون if (x == 97) ( irsend.sendNEC(0x807F08F7, 32); تأخير(40) ); ) إذا (x == 98) ( irsend.sendNEC(0x807FA857, 32); تأخير(40); ) إذا (x == 99) ( irsend.sendNEC(0x807F708F, 32); تأخير(40); ) إذا (x == 100) ( irsend.sendNEC(0x807FF00F, 32); تأخير(40); ) إذا (x == 101) ( irsend.sendNEC(0x807F30CF, 32); تأخير(40); ) إذا (x == 102) ( irsend.sendNEC(0x807FB04F, 32); تأخير(40); ) إذا (x == 103) ( irsend.sendNEC(0x807F9867, 32); تأخير(40); ) إذا (x == 104) ( irsend .sendNEC(0x807F58A7, 32); تأخير(40); ) إذا (x == 105) ( irsend.sendNEC(0x807FD827, 32); تأخير(40); ) إذا (x == 106) ( irsend.sendNEC(0x807F38C7) , 32); تأخير(40); ) إذا (x == 107) ( irsend.sendNEC(0x807F48B7, 32); تأخير(40); ) إذا (x == 108) ( irsend.sendNEC(0x807FB847, 32); تأخير (40)؛ ) إذا (x == 109) ( irsend.sendNEC(0x807F6897, 32); تأخير (40)؛ ) ) if (y == 2) ( // رموز أزرار التحكم عن بعد لمشغل الوسائط if (x == 97) ( irsend.sendNEC(0xFDC23D, 32); Delay(40); ) if (x == 98) ( irsend.sendNEC(0xFDE01F, 32); تأخير(40); ) إذا (x == 99) ( irsend.sendNEC(0xFD18E7, 32); تأخير(40); ) إذا (x == 100) ( irsend.sendNEC (0xFDE817, 32); تأخير(40); ) إذا (x == 101) ( irsend.sendNEC(0xFDA857, 32); تأخير(40); ) إذا (x == 102) ( irsend.sendNEC(0xFD6897, 32) ); تأخير (40); ) إذا (x == 103) ( irsend.sendNEC(0xFDA857, 32); تأخير(40); ) إذا (x == 104) ( irsend.sendNEC(0xFD6897, 32); تأخير( 40); ) إذا (x == 105) ( irsend.sendNEC(0xFDE817, 32); تأخير(40); ) إذا (x == 106) ( irsend.sendNEC(0xFD18E7, 32); تأخير(40); ) إذا (x == 107) ( irsend.sendNEC(0xFD9867, 32); تأخير(40); ) إذا (x == 108) ( irsend.sendNEC(0xFD28D7, 32); تأخير(40); ) إذا (x = 108) = 109) ( irsend.sendNEC(0xFD20DF, 32); تأخير(40); ) ) ) )


في الرسم، ستحتاج إلى تعديل رموز الأزرار، وبالتحديد في السطور:

إذا (x == 97) ( irsend.sendNEC(0x807F08F7, 32); تأخير(40);
قم بتغيير القيمة 807F08F7 إلى:

إذا (y == 1) ( // رموز الزر لجهاز التحكم عن بعد الخاص بالتلفزيون if (x == 97) ( irsend.sendNEC(0x12345678, 32); Delay(40); )
حيث 12345678 هو رمز الزر الخاص بك.

بعد تحرير الرسم باستخدام رموز الأزرار الخاصة بك، قم بتحميل الرسم على لوحة Arduino وتابع تثبيت التطبيق على هاتفك.

نقوم بتشغيل البلوتوث في الهاتف، ونبحث عن أجهزتنا، وننشئ زوجًا، ثم نقوم بتشغيل التطبيق بولتعلى الهاتف.

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

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

لقد عدنا الآن إلى الشاشة الرئيسية ويمكننا بالفعل التحكم في التلفزيون:

للتبديل إلى وضع التحكم، نحتاج إلى الضغط على الزر المسمى "لاعب". كما قلت سابقًا، سيتغير الزر المسمى "AV" إلى زر " ":

لقطع الاتصال بجهازنا، ما عليك سوى الضغط باستمرار على زر "الطاقة" لبضع ثوان.

حسنًا، بعض الصور لجهازي النهائي.

يبدو أن الأمر قد انتهى بشكل جيد. أنا في انتظار التعليقات على المقال.

فهو يرسل حزمة من البيانات المشفرة والمعدلة إلى مؤشر LED للأشعة تحت الحمراء، وعندما يتم الضغط باستمرار على الزر، يتم أيضًا تكرار الحزم.

  • يصل ضوء الأشعة تحت الحمراء غير المرئي من IR LED إلى وحدة استقبال Trima IR، حيث يتم تحويله إلى نبضات كهربائية مزيلة التشكيل.
  • تقوم مكتبة iarduino_IR بقراءة وفك تشفير النبضات من جهاز استقبال الأشعة تحت الحمراء بشكل مستمر (باستخدام مؤقت أجهزة Arduino الثاني)
  • في كود الحلقة، نقوم بفحص البيانات التي تم فك تشفيرها بواسطة المكتبة مع تلك المخصصة للجهاز (المصباح) وإذا كانت متطابقة، فإننا نقوم بتغيير الحالة (“1”/”0”) عند إدخال وحدة Trema Solid State لذلك، قم بتشغيل الجهاز (المصباح) أو إيقاف تشغيله.
  • يمكن أن يكون الجهاز مفيدًا إذا قمت بتعيين أزرار غير مستخدمة على جهاز التحكم عن بعد الخاص بالتلفزيون (على سبيل المثال، أزرار النصوص التليفزيونية الملونة) للتحكم في الإضاءة في الغرفة.

    بدلاً من المصابيح المتوهجة، يمكنك توصيل أي جهاز شبكة ~ 220 فولت باستهلاك حالي يصل إلى 2 أمبير.

    سنحتاج إلى:

    • جهاز التحكم عن بعد بالأشعة تحت الحمراء × 1 قطعة (أي جهاز تحكم عن بعد يعمل بالأشعة تحت الحمراء للتلفزيون سيفي بالغرض)
    • الأجهزة (المصابيح) التي سنتحكم فيها × 3 قطع.

    لتنفيذ المشروع نحتاج إلى تثبيت المكتبة:

    • مكتبة iarduino_IR للعمل مع أجهزة إرسال واستقبال الأشعة تحت الحمراء
      مهم: تستخدم المكتبة مؤقتًا ثانيًا للأجهزة،
      لا تقم بإخراج إشارات PWM إلى 3 أو 11 مخرج!

    يمكنك معرفة كيفية تثبيت المكتبات على صفحة Wiki - تثبيت المكتبات في Arduino IDE.

    فيديو:

    مخطط الاتصال:

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

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

    خوارزمية العمل:

    • في البداية، يقوم الرسم بتعيين رمز زر التحكم عن بعد بالأشعة تحت الحمراء لكل مرحل الحالة الصلبة بشكل تسلسلي. أولاً، يومض مؤشر LED ويتم إغلاق دائرة مرحل الحالة الصلبة، ويُشار إلى خرجها أولاً. إذا قمت بالضغط على أي زر في جهاز التحكم عن بعد الذي يعمل بالأشعة تحت الحمراء، فسيتم تعيين رمز هذا الزر إلى هذا المرحل وسيبدأ الزر التالي في الوميض، وهكذا، حتى يتم تعيين أزرار لجميع المرحلات على جهاز التحكم عن بعد الذي يعمل بالأشعة تحت الحمراء.
    • بعد التعيينوظائف الزر، جميع المرحلات معطلة. إذا قمت بالضغط على زر التحكم عن بعد بالأشعة تحت الحمراء، فسيتم تشغيل المرحل الذي تم تعيين رمز هذا الزر له. إذا قمت بالضغط على الزر المشار إليه مرة أخرى، فسيتم إيقاف تشغيل التتابع. لن يستجيب الجهاز للضغط على الأزرار التي لم يتم تعيين رمزها لأي مرحل.
    • لوإذا كنت لا ترغب في تعيين رموز الأزرار في كل بداية، فقم بالإشارة إليها بوضوح عند الإعلان عن مصفوفة varRelay، وقم بإزالة حلقات for و while من رمز الإعداد.
    • تعرف على الكود الخاص بكل زريمكنك كتابة السطر التالي: if(IR.check())(Serial.println(IR.data);)

    كود البرنامج:

    #يشمل // قم بتوصيل المكتبة للعمل مع جهاز استقبال الأشعة تحت الحمراء iarduino_IR_RX IR(A5); // أعلن عن كائن IR للعمل مع مستقبل IR (يشير إلى أي طرف يتصل به مستقبل IR) const uint8_t pinRelay = (A1,A2,A3); // أعلن عن مصفوفة تشير إلى أرقام أي أطراف (رقمية أو تناظرية) تتصل بها مرحلات الحالة الصلبة const uint8_t allRelay = sizeof(pinRelay); // أعلن عن ثابت عن طريق تمرير عدد عناصره في مصفوفة pinRelay (عدد المرحلات) uint32_t varRelay؛ // أعلن عن مصفوفة تحتوي على رموز (أوامر) لمستقبل الأشعة تحت الحمراء بما في ذلك المرحلات bool modRelay؛ // قم بتعريف مصفوفة بحالات الترحيل uint8_t setRelay; // قم بتعريف متغير بعدد المرحلات التي تم كتابة الأمر من جهاز استقبال الأشعة تحت الحمراء لها void setup())( IR.begin(); // تهيئة العمل مع جهاز إرسال واستقبال IR for(uint8_t i=0; i ستسمح لك وحدة استقبال الأشعة تحت الحمراء مع جهاز التحكم عن بعد بالأشعة تحت الحمراء بتنفيذ التحكم عن بعد بلوحة Arduino بسهولة.

    إنه ليس أكثر من مجرد جهاز استقبال VS1838B IR مع مجموعة الحزام الموصى بها من قبل الشركة المصنعة المثبتة على اللوحة.

    للعمل مع هذه الوحدة خارج الصندوق، تحتاج إلى جهاز تحكم عن بعد بتردد 38 كيلو هرتز.

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

    الخصائص التقنية الرئيسية:

    جهد الإمداد: 2.7 - 5.5 فولت

    تردد التعديل: 38 كيلو هرتز

    نطاق درجة الحرارة: - 20 ... + 80 درجة مئوية

    الواجهة: رقمية

    الاتصال بالاردوينو

    تم تجهيز الوحدة بموصل ثلاثي الأطراف مقاس 2.54 ملم

    : يتصل بدبوس GND

    : يتصل بمخرج +5 فولت

    : يتصل بالدبوس الرقمي (D2 في المثال)

    مثال على العمل في بيئة الاردوينو

    للعمل مع هذه الوحدة، تحتاج إلى تثبيت مكتبة IRRemote

    قم بتنزيله وفك ضغطه ووضعه في مجلد المكتبات في مجلد Arduino. إذا كان Arduino IDE مفتوحًا في وقت إضافة المكتبة، فأعد تشغيل البيئة.

    قراءة أزرار التحكم عن بعد

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

    كمثال سنستخدم جهاز التحكم عن بعد كما في الصورة لأنه يتم تضمين هذا النوع من أجهزة التحكم عن بعد في المجموعة

    يمكنك أن تقرأ عن الاختلافات في منطق التشغيل لأجهزة التحكم عن بعد المختلفة في المقالة الأصلية من أحد أعضاء مجتمعنا تحت الاسم المستعار

    عينة من الرموز:

    #يشمل كثافة العمليات RECV_PIN = 2؛ IRrecv Irecv(RECV_PIN); // أنشئ كائنًا لاستقبال الإشارة من منفذ معيننتائج decode_results؛ // تخزين النتيجة بشكل متغيرفارغ يثبت () { مسلسل // ابدأ الاستلام) فارغ حلقة() (إذا (irrecv.decode(&results)) // عند تلقي إشارة... { مسلسل.println(results.value); //...أخرج قيمته إلى المنفذ التسلسلي Irecv.resume(); ))

    يجب أن تشاهد ما يلي في شاشة المنفذ:

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

    التحكم في لوحة الاردوينو بالريموت كنترول

    لنجعل مؤشر LED الموجود على لوحة Arduino (D13) يضيء عندما يتم تشفير الزر الأول وينطفئ عندما يتم تشفير الزر الثاني.

    عينة من الرموز:

    // تم الاختبار على Arduino IDE 1.0.3#يشمل كثافة العمليات RECV_PIN = 2؛ إنت ليد = 13؛ IRrecv Irecv(RECV_PIN); نتائج decode_results؛ فارغ يثبت () { مسلسل.begin(9600); Irecv.enableIRIn(); // ابدأ تشغيل جهاز الاستقبال pinMode(LED, OUTPUT); ) فارغ حلقة() (إذا (irrecv.decode(&results)) ( مسلسل.println(results.value); إذا (القيمة الناتجة == 16769565) // عند استلام الترميز 1(الكتابة الرقمية (LED، عالية)؛ // قم بتشغيل الصمام) إذا (القيمة الناتجة == 16761405) // عند استلام الترميز 2(الكتابة الرقمية (LED، LOW)؛ // أطفئ مؤشر LED) Irecv.resume(); // احصل على القيمة التالية } }

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

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

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

    • توصيل جهاز استقبال الأشعة تحت الحمراء

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

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

    • مكتبة IR البعيدة

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

    #include "boarddefs.h" // مكتبة إضافية #include "IRremote.h" #include "IRremoteInt.h" // مكتبة إضافية int RECV_PIN = 2; // دبوس لتوصيل إشارة الخرج من جهاز استقبال الأشعة تحت الحمراء // أنشئ مثيلًا لفئة IRrecv، وقم بتمرير الدبوس لتوصيل الإشارة من جهاز استقبال الأشعة تحت الحمراء كمعلمة IRrecv Irecv(RECV_PIN); نتائج decode_results؛ // متغير لحفظ الكود المستلم للزر المضغوط void setup() ( Serial.begin(9600); Irecv.enableIRIn(); // تمكين جهاز استقبال الأشعة تحت الحمراء للعمل) void loop() ( if (irrecv.decode( &results)) // في حالة وقوع حدث/تم الضغط على الزر ( Serial.println(results.value, HEX); // إخراج رمز الزر المضغوط في شكل سداسي عشري إلى شاشة المنفذ Irecv.resume(); // اقرأ القيمة/الزر التالي ) تأخير(100 ); )

    بعد أن يتم تحميل الرسم على اللوحةاردوينو(نحن نستخدم اردوينو نانوعلى الدرع I/O Wireless Shield للنانو )، يمكن فتحه مراقب المنفذ وشاهد الرموز التي تظهر عند الضغط على الأزرار الموجودة على جهاز التحكم عن بعد. تظهر نتيجة الرسم في لقطة الشاشة أدناه:

    بالمناسبة، كما مراقب المنفذ نحن نستخدم برامجنا المثبتة، إذا كان أي شخص مهتمًا، يمكنك قراءة المقالة وتنزيل Serial Monitor Pro.

    #define KEY_ONOFF 0x807F807F //زر تشغيل/إيقاف #define KEY_MUTE 0x807F48B7 //زر كتم الصوت #define KEY_1 0x807F00FF //زر 1 #define KEY_2 0x807FE01F //زر 2 #define KEY_3 0x807F609F //زر 3 #define KEY_4 0x807F20DF //الزر 4 #define KEY_5 0x807FD02F //زر 5 #define KEY_6 0x807F50AF //زر 6 #define KEY_7 0x807F10EF //زر 7 #define KEY_8 0x807FF00F //زر 8 #define KEY_9 0x807F708F //زر 9 # تعريف KEY_0 0x80 7FC837 //زر 0

    والآن، بشكل عام، كل شيء جاهز للاختبار النهائي - سيكون هذا اختبارًا أوليًا للتحكم في تشغيل/إيقاف وحدات الترحيل. إليك مهمة صغيرة:

    • نحن نستخدم وحدتين للتتابع
    • نقوم بربط التتابع رقم 1 بالزر "1" بجهاز التحكم عن بعد
    • يتم ربط التتابع رقم 2 بالزر "2" بجهاز التحكم عن بعد
    • يتم تشغيل أي من وحدات الترحيل عن طريق الضغط على الزر المخصص لها
    • يتم أيضًا إيقاف تشغيل أي من وحدات الترحيل عن طريق الضغط على الزر المخصص لها
    • يؤدي الضغط على زر التشغيل/الإيقاف دون قيد أو شرط إلى إيقاف تشغيل وحدتي الترحيل (إذا تم تشغيلهما، أو تم تشغيل إحداهما)

    رسم ينفذ المهمة المذكورة أعلاه:

    #include "boarddefs.h" // مكتبة إضافية #include "IRremote.h" #include "IRremoteInt.h" // مكتبة إضافية #define KEY_ONOFF 0x807F807F // زر تشغيل/إيقاف #define KEY_1 0x807F00FF //زر 1 #define KEY_2 0x807FE01F //زر 2 #define RELOUT1 3 //منفذ الإخراج للمرحل 1 #define RELOUT2 4 //منفذ الإخراج للمرحل 2 int RECV_PIN = 2; IRrecv Irecv(RECV_PIN); نتائج decode_results؛ منطقية ثابتة REL1_ONOFF = خطأ؛ منطقية ثابتة REL2_ONOFF = خطأ؛ إعداد الفراغ () ( pinMode (RELOUT1، OUTPUT)؛ pinMode (RELOUT2، OUTPUT)؛ Serial.begin (9600)؛ Irecv.enableIRIn ()؛ // بدء تشغيل جهاز الاستقبال) حلقة باطلة () ( if (irrecv.decode(&results )) (التبديل(results.value) (الحالة(KEY_ONOFF): REL1_ONOFF = خطأ؛ REL2_ONOFF = خطأ؛ استراحة؛ الحالة (KEY_1): إذا (REL1_ONOFF) REL1_ONOFF = خطأ؛ وإلا REL1_ONOFF = صحيح؛ استراحة؛ الحالة (KEY_2) ): إذا (REL2_ONOFF) REL2_ONOFF = خطأ؛ وإلا REL2_ONOFF = صحيح؛ استراحة؛ ) Irecv.resume(); ) digitalWrite(RELOUT1, REL1_ONOFF); digitalWrite(RELOUT2, REL2_ONOFF); تأخير(100); )

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

    الرجاء تمكين جافا سكريبت للتعليقات للعمل.

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



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

    حسنًا، الآن سأخبركم قليلاً عن إنشاء جهاز التحكم عن بعد هذا. بالنسبة للجهاز، استخدمت جهاز التحكم عن بعد لتلفزيون ERGO وجهاز التحكم عن بعد لمشغل الوسائط DUNE HD TV101W.

    لتلقي البيانات من أجهزة التحكم عن بعد، استخدمت مستشعر الأشعة تحت الحمراء TSOP1138 (مشابه لـ TSOP4838) بتردد تشغيل 38 كيلو هرتز وقمت بتوصيله بلوحة Arduino وفقًا للمخطط:

    لن تكون هناك حاجة لهذا المخطط لتحديد تشفير نقل البيانات وقراءة رمز أزرار التحكم عن بعد.

    في الرسم الموجود في السطر int RECV_PIN = 11; تشير إلى رقم التعريف الشخصي لدينا 4

    بعد تحميل الرسم، افتح "شاشة المنفذ"، ثم اضغط على أزرار جهاز التحكم عن بعد، وانظر إلى البيانات المستلمة.

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

    حصلت عليه كما في الصورة أعلاه. تحت النقش تلفزيونرموز زر التحكم عن بعد في التلفزيون؛ تحت النقش لاعب- رموز من جهاز التحكم عن بعد لمشغل الوسائط.

    نقوم الآن بفصل جهاز استقبال إشارة الأشعة تحت الحمراء الخاص بنا عن لوحة Arduino وتوصيل وحدة Bluetooth HC-05 ومصباح LED بالأشعة تحت الحمراء بها وفقًا للمخطط الموجود في الصورة.

    بعد ذلك ننتقل مباشرة إلى الرسم.

    رسم

    #يشمل ايرسيند ايرسيند. كثافة العمليات ص = 1؛ إعداد باطلة () (Serial.begin (9600)؛) حلقة باطلة () (إذا (Serial.available ()> 0) (int x = Serial.read ()؛ إذا (x == 49) (y = 1؛ ) if (x == 50) ( y = 2; ) if (y == 1) ( // رموز الأزرار لجهاز التحكم عن بعد الخاص بالتلفزيون if (x == 97) ( irsend.sendNEC(0x807F08F7, 32); تأخير(40) ); ) إذا (x == 98) ( irsend.sendNEC(0x807FA857, 32); تأخير(40); ) إذا (x == 99) ( irsend.sendNEC(0x807F708F, 32); تأخير(40); ) إذا (x == 100) ( irsend.sendNEC(0x807FF00F, 32); تأخير(40); ) إذا (x == 101) ( irsend.sendNEC(0x807F30CF, 32); تأخير(40); ) إذا (x == 102) ( irsend.sendNEC(0x807FB04F, 32); تأخير(40); ) إذا (x == 103) ( irsend.sendNEC(0x807F9867, 32); تأخير(40); ) إذا (x == 104) ( irsend .sendNEC(0x807F58A7, 32); تأخير(40); ) إذا (x == 105) ( irsend.sendNEC(0x807FD827, 32); تأخير(40); ) إذا (x == 106) ( irsend.sendNEC(0x807F38C7) , 32); تأخير(40); ) إذا (x == 107) ( irsend.sendNEC(0x807F48B7, 32); تأخير(40); ) إذا (x == 108) ( irsend.sendNEC(0x807FB847, 32); تأخير (40)؛ ) إذا (x == 109) ( irsend.sendNEC(0x807F6897, 32); تأخير (40)؛ ) ) if (y == 2) ( // رموز أزرار التحكم عن بعد لمشغل الوسائط if (x == 97) ( irsend.sendNEC(0xFDC23D, 32); Delay(40); ) if (x == 98) ( irsend.sendNEC(0xFDE01F, 32); تأخير(40); ) إذا (x == 99) ( irsend.sendNEC(0xFD18E7, 32); تأخير(40); ) إذا (x == 100) ( irsend.sendNEC (0xFDE817, 32); تأخير(40); ) إذا (x == 101) ( irsend.sendNEC(0xFDA857, 32); تأخير(40); ) إذا (x == 102) ( irsend.sendNEC(0xFD6897, 32) ); تأخير (40); ) إذا (x == 103) ( irsend.sendNEC(0xFDA857, 32); تأخير(40); ) إذا (x == 104) ( irsend.sendNEC(0xFD6897, 32); تأخير( 40); ) إذا (x == 105) ( irsend.sendNEC(0xFDE817, 32); تأخير(40); ) إذا (x == 106) ( irsend.sendNEC(0xFD18E7, 32); تأخير(40); ) إذا (x == 107) ( irsend.sendNEC(0xFD9867, 32); تأخير(40); ) إذا (x == 108) ( irsend.sendNEC(0xFD28D7, 32); تأخير(40); ) إذا (x = 108) = 109) ( irsend.sendNEC(0xFD20DF, 32); تأخير(40); ) ) ) )


    في الرسم، ستحتاج إلى تعديل رموز الأزرار، وبالتحديد في السطور:

    إذا (x == 97) ( irsend.sendNEC(0x807F08F7, 32); تأخير(40);
    قم بتغيير القيمة 807F08F7 إلى:

    إذا (y == 1) ( // رموز الزر لجهاز التحكم عن بعد الخاص بالتلفزيون if (x == 97) ( irsend.sendNEC(0x12345678, 32); Delay(40); )
    حيث 12345678 هو رمز الزر الخاص بك.

    بعد تحرير الرسم باستخدام رموز الأزرار الخاصة بك، قم بتحميل الرسم على لوحة Arduino وتابع تثبيت التطبيق على هاتفك.

    نقوم بتشغيل البلوتوث في الهاتف، ونبحث عن أجهزتنا، وننشئ زوجًا، ثم نقوم بتشغيل التطبيق بولتعلى الهاتف.

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

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

    لقد عدنا الآن إلى الشاشة الرئيسية ويمكننا بالفعل التحكم في التلفزيون:

    للتبديل إلى وضع التحكم، نحتاج إلى الضغط على الزر المسمى "لاعب". كما قلت سابقًا، سيتغير الزر المسمى "AV" إلى زر " ":

    لقطع الاتصال بجهازنا، ما عليك سوى الضغط باستمرار على زر "الطاقة" لبضع ثوان.

    حسنًا، بعض الصور لجهازي النهائي.

    يبدو أن الأمر قد انتهى بشكل جيد. أنا في انتظار التعليقات على المقال.