جدول المحتويات:
- الخطوة 1: الإعداد الأولي
- الخطوة 2: إعداد Ngrok
- الخطوة 3: برنامج Python Script للتحكم في مفتاح الإضاءة
- الخطوة 4: Python Script للتحكم في المروحة
- الخطوة 5: تثبيت وتكوين حزمة LIRC
- الخطوة 6: Python Script for TV Control
- الخطوة 7: تسجيل الدخول إلى حساب AWS
- الخطوة 8: إعداد TV Alexa Skill
- الخطوة 9: إضاءة إعداد مهارات Alexa
- الخطوة 10: إعداد Fan Alexa Skill
- الخطوة 11: بناء Ciruit
- الخطوة 12: أوامر Alexa
فيديو: التحكم في غرفة المعيشة مع Alexa و Raspberry Pi: 12 خطوة
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:36
تحكم في تلفزيون غرفة المعيشة والأضواء والمروحة باستخدام Alexa (Amazon Echo أو Dot) و Raspberry Pi GPIO.
الخطوة 1: الإعداد الأولي
لقد استخدمت Raspberry Pi 2 وصورة Raspbian Jessie تم تنزيلها من
بمجرد تسجيل الدخول ، أدخل الأوامر التالية لتثبيت الحزم المطلوبة ومكتبات بايثون:
sudo apt-get update && sudo apt-get Upgrade -ysudo apt-get install python2.7-dev python-dev python-pip sudo pip install Flask flask-ask sudo apt-get install lirc
الخطوة 2: إعداد Ngrok
قم بزيارة https://ngrok.com/download واحصل على أحدث إصدار من Linux ARM كملف مضغوط وفك الضغط داخل الدليل الرئيسي:
قم بفك ضغط /home/pi/ngrok-stable-linux-arm.zip
افتح طرفية جديدة وأدخل الأمر التالي:
sudo./ngrok http 4000
افتح محطة جديدة أخرى وأدخل الأمر التالي:
sudo./ngrok http 4500
افتح المحطة الثالثة الجديدة وأدخل الأمر التالي:
sudo./ngrok http 5000
الخطوة 3: برنامج Python Script للتحكم في مفتاح الإضاءة
افتح جلسة طرفية جديدة وأنشئ ملف python جديدًا باسم light_control.py:
نانو light_control.py
انسخ / الصق الكود التالي في الملف الجديد:
من flask import Flaskfrom flask_ask import Ask، بيان، convert_errors استيراد RPi. GPIO مثل استيراد تسجيل استيراد GPIO os GPIO.setmode (GPIO. BCM) app = Flask (_ name_) ask = Ask (app، '/') logging.getLogger (" flask_ask "). setLevel (logging. DEBUG) @ ask.intent ('LightControlIntent'، mapping = {'status': 'status'}) def light_control (status): try: pinNum = 27 باستثناء Exception كـ e: return statement ("رقم التعريف الشخصي غير صالح.") GPIO.setup (pinNum، GPIO. OUT) إذا كانت الحالة في ['on'، 'high']: GPIO.output (pinNum، GPIO. LOW) إذا كانت الحالة في ['off'، ' low ']: GPIO.output (pinNum، GPIO. HIGH) إرجاع البيان (' Turning {} the Living Room Lights'.format (status)) if _name_ == '_main_': port = 4000 app.run (host = ' 0.0.0.0 '، المنفذ = المنفذ)
أحفظ وأغلق الملف.
ابدأ خادم القارورة بـ:
sudo python light_control.py
اترك كلاً من ngrok و light_control.py قيد التشغيل
الخطوة 4: Python Script للتحكم في المروحة
افتح جلسة طرفية جديدة وأنشئ ملف python جديدًا باسم fan_control.py:
نانو fan_control.py
انسخ / الصق الكود التالي في الملف الجديد:
من القارورة استيراد القارورة
من flask_ask import Ask ، بيان ، convert_errors استيراد RPi. GPIO مثل GPIO استيراد تسجيل استيراد نظام التشغيل GPIO.setmode (GPIO. BCM) التطبيق = Flask (_ name_) ask = Ask (app، '/') logging.getLogger ("flask_ask").setLevel (logging. DEBUG) @ ask.intent ('FanControlIntent'، mapping = {'status': 'status'}) def fan_control (status): جرب: pinNum = 22 باستثناء استثناء كـ e: return statement ('Pin number غير صالح. ') GPIO.setup (pinNum، GPIO. OUT) إذا كانت الحالة في [' on '،' high ']: GPIO.output (pinNum، GPIO. LOW) إذا كانت الحالة في [' off '،' low ']: GPIO.output (pinNum، GPIO. HIGH) إرجاع البيان ('Turning {} the Living Room Lights'.format (status)) if _name_ ==' _main_ ': port = 4500 app.run (host =' 0.0.0.0 '، المنفذ = المنفذ)
أحفظ وأغلق الملف.
ابدأ خادم القارورة بـ:
sudo python fan_control.py
اترك كلاً من ngrok و light_control.py و fan_control.py قيد التشغيل
الخطوة 5: تثبيت وتكوين حزمة LIRC
من أجل التحكم في التلفزيون ، يجب عليك تكوين دبوس على Raspberry Pi لتوليد إشارات الأشعة تحت الحمراء (IR) للتلفزيون الخاص بك. افتح Terminal وأدخل الأمر التالي لتثبيت حزمة LIRC التي تحاكي إشارات الأشعة تحت الحمراء للعديد من أجهزة التحكم عن بُعد.
sudo apt-get install lirc
بعد ذلك ، تحتاج إلى تمكين وتكوين وحدة lirc_rpi kernel. للقيام بذلك ، افتح الوحدات النمطية في محرر Nano
sudo نانو / الخ / وحدات
أضف الأسطر أدناه إلى الملف (تأكد من أن معلمة gpio_out_pin تشير إلى الدبوس الذي يتحكم في IR LED):
lirc_devlirc_rpi gpio_out_pin = 17
بعد ذلك ، افتح ملف Hardware.conf في Nano كما كان من قبل باستخدام sudo:
sudo nano /etc/lirc/hardware.conf
أضف التكوين التالي إلى الملف:
LIRCD_ARGS = "- uinput" LOAD_MODULES = صحيح
السائق = "افتراضي"
الجهاز = "/ dev / lirc0"
الوحدات = "lirc_rpi"
LIRCD_CONF = ""
LIRCMD_CONF = ""
الآن ، أعد تشغيل Raspberry Pi:
sudo إعادة التشغيل
الخطوة 6: Python Script for TV Control
افتح جلسة طرفية جديدة وأنشئ ملف python جديدًا باسم ir_control.py:
نانو ir_control.py
انتقل إلى
ابحث عن جهاز تحكم عن بعد متوافق مع تلفزيونك. في حالتي ، لدي تلفزيون Sanyo يعمل مع ملف التكوين sanyo-tv01. بمجرد العثور على ملف يدعم التلفزيون ، افتحه وابحث في خيارات الأوامر.
انسخ / الصق الكود التالي في الملف الجديد واستبدل sanyo-tv01 باسم الملف الذي يعمل مع التلفزيون. تأكد أيضًا من دعم أوامر التلفزيون بواسطة ملف تكوين أجهزة التلفزيون ؛ قد تضطر إلى تعديل أوامر KEY_POWER و KEY_VIDEO و KEY_VOLUMEUP و KEY_VOLUMEDOWN و KEY_MUTE للعمل بشكل صحيح مع ملف تهيئة التلفزيون:
من flask import Flaskfrom flask_ask import Ask، بيان، convert_errors استيراد RPi. GPIO مثل استيراد تسجيل استيراد GPIO os GPIO.setmode (GPIO. BCM) app = Flask (_ name_) ask = Ask (app، '/') logging.getLogger (" flask_ask "). setLevel (logging. DEBUG) @ ask.intent ('GPIOControlIntent'، mapping = {'status': 'status'}) # 'pin': 'pin'}) def tv_function (status): if status in ['تشغيل']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") بيان إرجاع ('Turning on the TV') حالة elif في ['إيقاف']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") return statement (" Turning off the TV ") حالة elif في ['change input']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") إرجاع عبارة ('تغيير الإدخال على التلفزيون') حالة elif في ['زيادة الحجم']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP ") بيان إرجاع ('زيادة حجم الصوت على التلفزيون') حالة elif في ['تقليل الحجم']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN ") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.systemEND_ONCE ") return statement ('Decreasing the TV') elif status in ['mute']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") return statement ('Muting the TV') elif status in ['unmute ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") بيان إرجاع (' Unmuting the TV ') else: return statement (' Remote function not found. ') if _name_ ==' _main_ ': port = 5000 app.run (المضيف = '0.0.0.0' ، المنفذ = المنفذ)
أحفظ وأغلق الملف.
ابدأ خادم القارورة بـ:
sudo python ir_control.py
اترك جميع نوافذ ngrok الطرفية الثلاثة ، light_control.py ، fan_control.py ، و ir_control.py قيد التشغيل
الخطوة 7: تسجيل الدخول إلى حساب AWS
قم أولاً بإنشاء أو تسجيل الدخول إلى حساب مطور AWS الخاص بك وافتح قائمة مهارات Alexa الخاصة بك.
الخطوة 8: إعداد TV Alexa Skill
حدد "إضافة مهارة جديدة".
عيّن اسم المهارة على "Trigger TV" واسم الاستدعاء للكلمة (الكلمات) التي تريد استخدامها لتنشيط المهارة.
انقر فوق Next للمتابعة.
انسخ / الصق ما يلي في مربع "مخطط الهدف":
"الفتحات": [{"name": "status"، "type": "TV_Function"}، {"name": "amount"، "type": "AMAZON. NUMBER"}]، "intent": "GPIOControlIntent "}]}
بعد ذلك ، انقر فوق "إضافة نوع الفتحة"
أدخل TV_Function في حقل "إدخال النوع".
أدخل القيم التالية في حقل "إدخال القيم":
شغله
قم بإيقاف تشغيل إدخال التغيير زيادة مستوى الصوت خفض مستوى الصوت إلغاء كتم الصوت
بعد ذلك ، انسخ / الصق ما يلي في مربع "نموذج الألفاظ":
GPIOControlIntent {status}
GPIOControlIntent {status} بمقدار {amount}
انقر فوق Next للمتابعة.
حدد HTTPS كنوع نقطة نهاية الخدمة وحدد منطقة ، أدخل عنوان URL الخاص بـ ngrok من الخطوة 2 وانقر فوق "التالي". يجب أن يكون عنوان URL مشابهًا لما يلي:
ed6ea04d.ngrok.io
انقر فوق "التالي" للمتابعة واضغط على "حفظ".
الخطوة 9: إضاءة إعداد مهارات Alexa
أغلق المهارة المفتوحة وحدد "إضافة مهارة جديدة".
عيّن اسم المهارة على "التحكم في الأضواء" واسم الاستدعاء للكلمة (الكلمات) التي تريد استخدامها لتنشيط المهارة.
انقر فوق Next للمتابعة. انسخ / الصق ما يلي في مربع "مخطط الهدف":
{
"النوايا": [{"الفتحات": [{"الاسم": "الحالة" ، "النوع": "LIGHTS_CONTROL"}] ، "الهدف": "LightsControlIntent"}]}
بعد ذلك ، انقر فوق "إضافة نوع فتحة".
أدخل "LIGHTS_CONTROL" في حقل "إدخال النوع".
أدخل القيم التالية في حقل "إدخال القيم":
تشغيل
إيقاف
بعد ذلك ، انسخ / الصق ما يلي في مربع "نموذج الألفاظ":
LightsControlIntent turn {status}
انقر فوق Next للمتابعة. حدد "HTTPS" كنوع نقطة نهاية الخدمة وحدد منطقة. أدخل عنوان URL لـ ngrok من الخطوة 2 وانقر فوق "التالي". يجب أن يكون عنوان URL مشابهًا لما يلي:
ed6ea04d.ngrok.io
انقر فوق "التالي" للمتابعة واضغط على "حفظ".
الخطوة 10: إعداد Fan Alexa Skill
أغلق المهارة المفتوحة وحدد "إضافة مهارة جديدة".
عيّن اسم المهارة على "التحكم في المعجبين" واسم الاستدعاء للكلمة (الكلمات) التي تريد استخدامها لتنشيط المهارة.
انقر فوق Next للمتابعة.
انسخ / الصق ما يلي في مربع "مخطط الهدف":
{
"النوايا": [{"الفتحات": [{"الاسم": "الحالة" ، "النوع": "FAN_CONTROL"}] ، "الهدف": "FANControlIntent"}]}
بعد ذلك ، انقر فوق "إضافة نوع فتحة".
أدخل "FAN_CONTROL" في حقل "إدخال النوع".
أدخل القيم التالية في حقل "إدخال القيم":
تشغيل
إيقاف
بعد ذلك ، انسخ / الصق ما يلي في مربع "نموذج الألفاظ":
FANControlIntent turn {status}
انقر فوق Next للمتابعة. حدد "HTTPS" كنوع نقطة نهاية الخدمة وحدد منطقة. أدخل عنوان URL لـ ngrok من الخطوة 2 وانقر فوق "التالي". يجب أن يكون عنوان URL مشابهًا لما يلي:
ed6ea04d.ngrok.io
انقر فوق "التالي" للمتابعة واضغط على "حفظ".
الخطوة 11: بناء Ciruit
قم بتوصيل الدائرة كما هو موضح في الرسم التخطيطي. لقد استخدمت JBtek 8 Channel DC 5V Relay Module للاتصال بمنزلي AC 120v خط والأرض.
الخطوة 12: أوامر Alexa
الآن يمكن نطق الأوامر التالية إلى Alexa للتحكم في غرفة المعيشة الخاصة بك.
موصى به:
عداد إشغال غرفة MicroBit ووحدة التحكم: 4 خطوات
عداد وشغل غرفة MicroBit: أثناء الجائحة ، تتمثل إحدى طرق تقليل انتقال الفيروس في زيادة التباعد الجسدي بين الناس. في الغرف أو المتاجر ، سيكون من المفيد معرفة عدد الأشخاص الموجودين في المساحة المغلقة في أي وقت. يستخدم هذا المشروع زوجًا من
صندوق غرفة يتم التحكم في درجة حرارته DIY مع وحدة Peltier TEC: 4 خطوات (مع صور)
صندوق غرفة يتم التحكم في درجة حرارته DIY مع وحدة Peltier TEC: لقد قمت بتجميع صندوق غرفة التحكم في درجة الحرارة لاختبار اللوحات الإلكترونية الصغيرة. في هذا البرنامج التعليمي ، قمت بمشاركة مشروعي بما في ذلك ملفات المصدر والارتباط بملفات Gerbers لإنشاء PCB. لم أستخدم سوى المواد الرخيصة المتاحة بشكل شائع
غرفة المعيشة للفيلم مع شيلي: 4 خطوات
غرفة المعيشة للفيلم مع شيلي: الملخص التنفيذي للمشروع كيفية إنشاء أتمتة بسيطة للغاية باستخدام إجراءات google home لجعل غرفة المعيشة في غرفتي مريحة لمشاهدة فيلم
غرفة نمو النبات الذكية: 13 خطوة
غرفة نمو النبات الذكية: لقد توصلت إلى فكرة جديدة وهي غرفة نمو النبات الذكية ، وقد أثار نمو النباتات في الفضاء الخارجي اهتمامًا علميًا كبيرًا. في سياق رحلات الفضاء البشرية ، يمكن استهلاكها كطعام و / أو توفير جو منعش. في الوقت الحالي
اختبار المقبس DIY ، غرفة القبول يجب أن: 12 خطوة
جهاز اختبار المقبس DIY ، غرفة القبول يجب: بعد تزيين المنزل مباشرة ، ربما تشعر بالقلق ، لن يقوم عامل المقبس بتوصيل الخط الخطأ لشحنني ، أو أن التسرب غير محمي. لا تقلق ، فلنصنع الآن جهاز اختبار مقبس يكتشف على وجه التحديد ترتيب الأسلاك للجورب