مهمتي الآن هي معرفة كيفية إرسال الأوامر إلى مكيفات الهواء والأجهزة الأخرى في المنزل. في البداية ، تحتوي هذه الأجهزة على جهاز التحكم عن بعد بالأشعة تحت الحمراء فقط. لحل هذه المشكلة ، لدي درع الإرسال والاستقبال لـ Raspberry Pi و IR. يمكنك أن تجد في المقال التكوينات والفرق والنصائح ونظرية صغيرة. من البرنامج سيكون LIRC (Linux Infrared Remote Control) و Python.
لقد وجدت LIRC بمساعدة Google. خلال الدراسة ، اكتشفت أن LIRC يعمل مع كل من أجهزة الإرسال والاستقبال لإشارات الأشعة تحت الحمراء ، ويمكن فك تشفير الإشارة المستقبلة وتنفيذ بعض الإجراءات فيما يتعلق بهذا. الآن لست بحاجة إلى تلقي إشارات ، لكن قد يكون ذلك مفيدًا في المستقبل. إذا كنت تعبث مع LIRC بنفسك ، يوصى بشدة بقراءة دليل تكوين LIRC .
ترتيب
apt-get update apt-get install lirc
# /etc/modules ( ) lirc_dev lirc_rpi gpio_in_pin=18 gpio_out_pin=17
# /etc/lirc/hardware.conf ( , ) LIRCD_ARGS="--uinput --listen" LOAD_MODULES=true DRIVER="default" DEVICE="/dev/lirc0" MODULES="lirc_rpi"
# /boot/config.txt ( lirc, ) dtoverlay=lirc-rpi,gpio_in_pin=18,gpio_out_pin=17
# /etc/lirc/lirc_options.conf ( ) driver = default device = /dev/lirc0
reboot sudo /etc/init.d/lircd status
سجل
تحتاج أولاً إلى إنشاء ملف تكوين مع تسلسل البيانات لجميع الأوامر اللازمة. ما زلت أتصل بهذا الملف lircd.conf
، لكن على كل جهاز يقوم بإنشاء الملف الخاص به my_device_name.lircd.conf
في دليل /etc/lirc/lircd.conf.d
.
يوصف تنسيق الملف هنا . إذا كان لديك جهاز تحكم عن بعد ، فيمكنك كتابة الإشارات المرسلة من قبله إلى ملف باستخدام الأداة المساعدة irrecord .
/etc/init.d/lircd stop irrecord -d /dev/lirc0 ~/my_device.lircd.conf mv ~/my_device.lircd.conf /etc/lirc/lircd.conf.d/
irrecord
بتحليل التسلسل ويحاول تحديد معلمات البروتوكول والوقت. في بعض الحالات ، يفشل التسجيل في التحليل ، لذلك من الممكن حفظ التسلسل كما تم قبوله في نموذج --force
، وهناك مفتاح --force
لهذا.
ولكن حتى مع - --force
irrecord
تحاول تحليل شيء ما ، وقد تفشل أيضًا. ثم يمكنك تسجيل تسلسل باستخدام mode2
وإنشاء الملف بنفسك.
يطبع mode2
بالتتابع مدة وجود وغياب إشارة ، والتي تتكون منها البيانات المرسلة. يتم قياس المدة بالثانية (1e-6 ثواني). في النسق الأولي ، تتم الإشارة إلى نفس المدد في lircd.conf ، بدءًا من "النبض" (لا توجد حاجة إلى المسافة البادئة). وفقًا لذلك ، يجب أن يكون هناك دائمًا عدد فردي من الأرقام (يبدأ وينتهي بوجود إشارة - "النبض").
من أجل التشغيل الآلي ، قمت بعمل برنامج نصي لتسجيل يسأل عن اسم الأمر ، ويعمل على mode2
لمدة 5 ثوانٍ ، ويتذكر وأخيراً يطبع النتيجة بالتنسيق جاهز لـ lircd.conf (انظر أسفل المفسد).
irrecord --analyse
الملف ، يمكنك محاولة "التعرف عليه" مرة أخرى باستخدام irrecord --analyse
. هذا ليس ناجحًا دائمًا ، لا تتسرع في التخلص من الملف القديم. إحصائياتي هي هذه: وحدة التحكم عن بعد من تلفزيون LG كانت سهلة الفهم ، جميع مكيفات الهواء والمكنسة الكهربائية تتطلب إنشاء يدوي ، ثم تمت معالجة المكنسة الكهربائية بواسطة - --analyse
.
كمثال: هذا هو الشكل الذي يبدو عليه الملف بالنسبة إلى المكنسة الكهربائية الخاصة بي .
أسماء الفرق القياسية
للغرض المقصود منه ، يجب على LIRC تحويل إشارة IR المستلمة والمعترف بها إلى حدث إدخال Linux . لذلك ، بشكل افتراضي ، يتعين علينا الحصول على أسماء الأوامر في lircd.conf من القائمة القياسية. يمكنك رؤية قائمة بالأسماء الصحيحة:
irrecord --list-namespace
مكيفات الهواء لا تندرج تحت هذا النمط. يمكن إيقاف تشغيل متطلبات الاسم عن طريق إضافة معلمة عند الكتابة:
irrecord --disable-namespace ....
التصحيح
تحقق المتلقي يساعد mode2
فائدة ، والذي يطبع جميع الإشارات المرئية.
/etc/init.d/lircd stop mode2 -d /dev/lirc0
من الأسهل التحقق من ناقل الحركة إذا كان هناك جهاز استقبال آخر و mode2
عليه. في الحالات التي تبعث على اليأس بشكل خاص ، يمكنك تغيير القيمة عند إخراج GPIO والتحقق من اختبار أو مرسمة الذبذبات حيث تذهب الإشارة. فريق gpio
هو جزء من حزمة wiringpi .
while sleep 1; do gpio -g toggle 17 done
يمكنك إلقاء نظرة على السجلات باستخدام journalctl
، على وجه الخصوص ، مما يتيح لك رؤية الأخطاء في ملف التكوين:
journalctl -b 0 /usr/sbin/lircd
إرسال الأوامر
هناك أداة irsend
لنقل الأوامر المسجلة. يمكنها أيضًا عرض قائمة بالأجهزة المعروفة وقائمة بالأوامر المعروفة لكل جهاز. انتبه إلى "الحجج الفارغة" في المثال أدناه ، فهي مطلوبة هناك.
irsend
هو عميل لـ lircd
، لذلك إذا حدث خطأ ما ، فراجع السجلات (انظر أعلاه).
من الناحية النظرية ، هناك احتمال آخر - إرسال الأوامر إلى lircd من خلال المقبس. لم افهم
نداء من بيثون
تقريبا جميع المكتبات هي مجرد مجموعة على irsend
. المكتبة الوحيدة التي وجدتها تقوم بتجميع عميل واجهة برمجة التطبيقات (API) عبر المقبس لا تعمل على توت العليق (هناك حاجة إلى إصدار آخر من lircd). لذلك ، هناك شعور ضئيل فيها ؛ يمكنني أن أسمي الأمر بنفسي:
import subprocess subprocess.call(["irsend", "send_once", "BEDROOM_AC", "OFF"])
خردوات

يمكنني استخدام لوحة جاهزة ، وهناك الكثير منهم على الأمازون و AliExpress . يمكنك جوجل مثل "التوت الأشعة تحت الحمراء sheild." يستخدم GPIO 17 للإخراج ، و GPIO 18 للإدخال ، كما يتضح من التكوينات أعلاه.
يوجد مكان على اللوحة لـ LED D2 (الإضافي) الثاني ، والذي لم يتم تثبيته افتراضيًا. عند استخدام اثنين من المصابيح ، يتم توصيلها في سلسلة . لذلك ، في غياب LED D2 ، يجب إغلاق العبور SJ1. لقد فوجئت عندما وجدت أن الطائر كان مفتوحًا في البداية على جميع لوحاتي. اضطررت الى تعديل الحديد لحام.
صورة أكبر للراغبين في إلقاء نظرة النتائج
إنه يعمل: يتم إرسال الإشارة ورؤيتها الأجهزة وتتفاعل بشكل صحيح معها.
يعتمد الكثير على موقف باعث الصمام الثنائي ، يجب أن يكون بدقة موجهة إلى المتلقي. لا يستطيع جهاز إرسال ثابت واحد التحكم في جميع الأجهزة الموجودة في الغرفة. يعد استنساخ أحد الحلول المستندة إلى Raspberry Pi لكل أداة باهظة الثمن ، فأنت تحتاج إما إلى تعديل الباعث "لتغطية مساحة أكبر" ، أو العثور على نظام أساسي أرخص.
تم إنشاء LIRC في الأصل لتحويل إشارات IR إلى أحداث Linux القياسية لأجهزة الإدخال. لذلك ، من الطبيعي بالنسبة له أن يكون زر واحد هو رمز واحد. بالنسبة لبعض الأجهزة (معظم مكيفات الهواء) ، فإن الأمر ليس كذلك: عند النقر فوق أي زر ، يقوم جهاز التحكم عن بعد بنقل حزمة بيانات تحتوي على الحالة الكاملة للجهاز (تشغيل ، وضع التشغيل ، درجة الحرارة ، أوضاع تشغيل المروحة ، الوقت ، الموقت ، إلخ). لا توجد طريقة لإنشاء حزمة متعددة المكونات استنادًا إلى العديد من المعلمات في LIRC ، وبالتالي ، فهي تساعد كأداة سريعة خارج الصندوق ، ولكن بعد ذلك سيتعين عليك البحث عن شيء آخر. على الرغم من أنه بالنسبة لمعظم الحالات ، فإن البيانات المسجلة مع إعدادات مروحة المعتادة ودون أوضاع غريبة كافية.