المصابيح التي يتم التحكم فيها من خلال Google Home: 8 خطوات
المصابيح التي يتم التحكم فيها من خلال Google Home: 8 خطوات
Anonim
المصابيح التي يتم التحكم فيها من خلال Google Home
المصابيح التي يتم التحكم فيها من خلال Google Home
المصابيح التي يتم التحكم فيها من خلال Google Home
المصابيح التي يتم التحكم فيها من خلال Google Home

في الآونة الأخيرة ، كان لدي الكثير من وقت الفراغ ، لذلك كنت أعمل على مجموعة من المشاريع.

سيسمح لك هذا المشروع بالتحكم في RGB LEDs عبر Google Home باستخدام Raspberry Pi. يوجد الآن 3 أجزاء من المشروع ، إعداد Raspberry Pi ، وإعداد Google Home باستخدام أمر مخصص باستخدام IFTTT ، ثم إنشاء دائرة للأضواء. لقد صنعت الدائرة بنفسي ، لكنني أراهن أنه يمكنك الحصول على شيء من Adafruit يقوم بما هو مطلوب.

مواد لجزء Raspberry Pi

  • Raspberry Pi - أي منها سيعمل ، لكني أستخدم Zero
  • Wireless Dongle - إذا لم يكن Pi مدمجًا في Wifi
  • Google Home - اختياري إذا كان لديك مساعد Google على هاتفك

مواد جزء الدائرة - لا تدع هذا يردعك … الأمر بسيط إلى حد ما

  • بروتوبورد
  • الأسلاك
  • شريط LED
  • مزود الطاقة بجهد 12 فولت - يجب أن يكون أي شيء يزيد عن 2 أمبير على ما يرام
  • DC Barrel Jack - نفس حجم مصدر الطاقة لديك
  • NPN BJT Power Transistors (x3) - أنا أستخدم TIP31C
  • رؤوس دبوس ذكر وأنثى - اختيارية ، لكن يوصى بها بشدة

الخطوة 1: تنزيل Express for the Pi

تنزيل Express for the Pi
تنزيل Express for the Pi

لن أخوض في الكثير من التفاصيل حول إعداد Pi نظرًا لوجود العديد من البرامج التعليمية لإعدادها.

ما عليك القيام به ولا أغطيه …

  • وامض Raspberry Pi مع أحدث Raspbian
  • قم بإعداد بطاقة الشبكة حتى تتمكن من الوصول إلى الإنترنت من Pi
  • قم بتعيين IP ثابت على Raspberry Pi

الآن هنا حيث تبدأ المتعة! نحتاج إلى تثبيت nodeJS و npm و express و express-generator.

sudo apt-get update

sudo apt-get install nodejs npm

بمجرد تثبيتها ، قم بتشغيل ما يلي

npm تثبيت سريع المولد

يتيح لك Express إنشاء خادم ويب أساسي جدًا ليستخدمه Raspberry Pi. يقوم Express-generator تلقائيًا بإنشاء ملفات لخادم سريع.

قم بعمل دليل وقرص مضغوط في الدليل. قمت بتسمية piWebpage الخاص بي. الآن قم بتشغيل ما يلي (كما هو موضح في الصورة)

مكدير بي

cd piWebpage express - view = ejs webApp

سيؤدي هذا إلى إنشاء مجلد يسمى webApp مع جميع الملفات السريعة فيه. إذا كنت تخطط لعمل المزيد مع صفحة الويب هذه لاحقًا وكنت تحب PUG ، فاستبدل --view = ejs بـ --view = pug. لن نتطرق إلى صفحة الويب ، لذلك لا يهم هذا التطبيق ما نستخدمه.

الخطوة 2: إعداد خادم Pi

انتقل إلى دليل الويب الجديد.

cd webApp

تثبيت npm

سيستغرق تثبيت npm بعض الوقت لأنه يقوم بتثبيت جميع التبعيات لـ express.

الصق setColor.py في مجلد webApp. يحتوي هذا الملف على بعض الإعدادات المسبقة للألوان الأساسية. لا تتردد في إضافة المزيد كما تريد. النطاق من 0 إلى 255 حيث 255 بالألوان الكاملة. في مرحلة ما ، من المحتمل أن أضيف القدرة على تعتيم الأضواء ، لكن في الوقت الحالي ، فهي سطوع كامل.

انتقل إلى الطرق

طرق القرص المضغوط

الآن استبدل index.js بالملف المرفق. سيضيف هذا بعض الأسطر لتلقي أمر POST وهو ما سيرسله Google Home. من هذا POST ، سوف نحصل على اللون المحدد ونخبر Pi بتشغيل البرنامج النصي setColor python لضبط الأضواء.

شيء أخير… ارجع إلى مجلد webApp.

cd ~ / piWebpage / webApp

باستخدام المحرر المفضل لديك ، الصق الشفرة أدناه واحفظها في webApp.js. لا بأس في أي مكان طالما أنه قبل "module.exports = app؛"

// إعداد محرك أجهزة LED {exec} = يتطلب ('child_process') ؛ exec ('sudo pigpiod'، (err، stdout، stderr) => {if (err) {console.log ('Error loading LED Driver')؛ return؛} else console.log ('LED Driver Successfully Loaded')؛ }) ؛

كما يقول التعليق ، Pigpiod هو محرك الأجهزة لإشارات PWM التي سنستخدمها لضبط ألوان LED. أعتقد أنه يأتي مثبتًا بالفعل في Raspbian ، ولكن إذا لم يكن كذلك …

sudo apt-get install Pigpiod. تثبيت برنامج sudo apt-get

الآن للاختبار الحقيقي! بدء تشغيل الخادم!

DEBUG = webapp: * بدء npm

الخطوة 3: إعداد IFTTT (تشغيل)

إعداد IFTTT (مشغل)
إعداد IFTTT (مشغل)
إعداد IFTTT (مشغل)
إعداد IFTTT (مشغل)

يمكن لـ IFTTT القيام بالكثير ، وأنا أوصي بشدة بالاطلاع على بعض التطبيقات.

أولاً ، ستحتاج إلى إنشاء حساب. استخدم نفس حساب Google المرتبط بـ Google Home ، وإلا فلن تتم مزامنته معًا. بمجرد الانتهاء وتسجيل الدخول ، انقر فوق الجزء العلوي الأيمن من صفحة IFTTT حيث تظهر اسمك وصورتك الرمزية. ثم انقر فوق تطبيق صغير جديد من القائمة المنسدلة.

إذا كنت فضوليًا ، فإن IFTTT تعني IF This Then That إذا لم تلاحظ من الشاشة المنبثقة. إذن ما نريده هو إذا كان Google Assistant ، ثم Webhook كخياراتنا.

تابع بالنقر فوق + هذا الذي سيؤدي إلى تحميل شريط البحث. في البحث ، اكتب Google Assistant وانقر فوق الرمز الموجود أسفل البحث.

في Choose a Trigger ، حدد الخيار الثالث المسمى قل عبارة بمكون نصي. الآن يتيح لك هذا الحصول على 3 أوامر تقوم بنفس الإجراء. تضيف $ إلى العبارة حيث ستذكر اللون. على سبيل المثال ، إذا كنت سأقول بشكل طبيعي مرحبًا Google ، قم بتعيين مصابيح LED باللون الأزرق (يمكن أن يكون ذلك طبيعيًا مثل الصراخ على الجهاز) ، فعندئذٍ سأكتب في الحقل Set LEDs $. افعل ذلك لجميع الحقول الثلاثة بإصدارات مختلفة من الأمر.

الثلاثة التي استخدمتها كانت

المصابيح $

تعيين المصابيح $

تعيين لون LED $

الحقل الأخير هو ما تريد أن يرد عليه Google Home بعد قول الأمر. يمكن أن يكون أي شيء تريده ، لكنني استخدمت Setting color to $. يعني $ أنها ستعيد اللون مرة أخرى.

انقر فوق إنشاء مشغل

الخطوة 4: إعداد IFTTT (إجراء)

إعداد IFTTT (إجراء)
إعداد IFTTT (إجراء)
إعداد IFTTT (إجراء)
إعداد IFTTT (إجراء)

بعد النقر فوق إنشاء مشغل ، ستعيد التحميل إلى إذا كان هذا ثم هذا العرض ، ولكن تم استبدال هذا بشعار مساعد Google. تابع بالنقر فوق + ذلك

نفس الشيء كما كان من قبل حيث ينقلك إلى شريط البحث. اكتب Webhooks وانقر فوق رمز webhook أسفل شريط البحث. ضمن اختيار إجراء لـ Webhooks ، يوجد خيار واحد فقط ، لذلك انقر فوق "إنشاء طلب ويب".

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

في حقل عنوان URL ، اكتب https://xxx.xxx.xxx.xxx:3000/{{TextField}} (مع كون x هو عنوان IP الخارجي الخاص بك). إذا كنت فضوليًا ، فسيكون TextField باللون الذي حددته عند إصدار أمر. سبب استخدامنا 3000 هو أن هذا هو المنفذ الذي يعمل عليه خادم Raspberry Pi Express. (يمكنك تغيير المنفذ في الكود ، لكننا نستخدم فقط الإعدادات الافتراضية لـ Express)

بالنسبة للطريقة ، حدد POST.

بالنسبة لنوع المحتوى ، حدد نص / عادي.

بالنسبة إلى النص الأساسي ، اكتب {{TextField}}

أولئك الذين يعرفون كيف يعمل أمر POST ، قد تعتقد أنه إذا قمت بتحليل خاصية body للطلب ، فستحصل على اللون. لسبب ما ، لا يتم وضع أي شيء على الإطلاق في حقل نص الطلب ، لذلك أقوم بالفعل بتحليل عنوان URL للون. آمل أن يتم إصلاح ذلك قريبًا ، حيث سيؤدي ذلك إلى تبسيط الكود الخاص بي في مسار index.js. لكني استطرادا.

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

الخطوة 5: ميناء الشحن

ميناء الشحن
ميناء الشحن
ميناء الشحن
ميناء الشحن

هذا هو المكان الذي يصعب فيه شرح الأمور لأن جميع أجهزة التوجيه مختلفة …

الآن لدينا Google يرسل أمرًا إلى منزلنا باستخدام المنفذ 3000 ، لكنه لا يعرف أي جهاز على الشبكة المحلية يحتاج إلى الذهاب إليه. لتصحيح ذلك ، نحتاج إلى إعادة توجيه المنفذ 3000 إلى عنوان IP المحلي الخاص بـ Raspberry Pi.

انتقل إلى جهاز التوجيه الخاص بك باستخدام 10.0.0.1 أو 192.168.1.1 (رأيته أيضًا حيث الرقم الأخير هو 254) وابحث عن إعادة توجيه المنفذ. في إعادة توجيه المنفذ ، على غرار الصورة ، ستقوم بتسمية جهاز جديد (IFTTT) وإعادة توجيه المنفذ (3000) إلى عنوان IP الخاص بـ Pi (في حالتي 10.0.0.11).

احفظ الإعداد الجديد ، وأعد تشغيل جهاز التوجيه الخاص بك ، وتحقق للتأكد من أن خادم Raspberry Pi الخاص بك لا يزال قيد التشغيل. إذا لم يكن يعمل ، ابدأ تشغيله مرة أخرى.

ارجع إلى هذا الموقع المفيد https://canyouseeme.org/. يوجد أسفل عنوان IP الخاص بك مدقق منفذ. بافتراض صحة إعادة توجيه المنفذ ، اكتب 3000 واضغط على منفذ الفحص. يجب أن يعود بالنجاح.

الخطوة 6: فحص عملك حتى الآن

التحقق من عملك حتى الآن
التحقق من عملك حتى الآن
التحقق من عملك حتى الآن
التحقق من عملك حتى الآن

الآن … في اللحظة التي كنت تنتظر فيها … أخبر Google بأمر مثل LEDs باللون الأزرق (إذا اتبعت مثالي).

بافتراض أن كل شيء سار بشكل صحيح ، سترى الإخراج في الصورة. ليس لدينا دائرة حتى الآن ، لذلك كل ما ستراه هو نص على الشاشة. عادة ما يكون هناك تأخير ثاني أو ثانيتين قبل معالجته من Google وظهوره على Pi.

(انتقل إلى الخطوة التالية إذا ظهر هذا بشكل مشابه للصورة)

الآن هناك بعض الأشياء التي يجب النظر إليها إذا لم تنجح …

في الصورة سطر يقول

الإرسال / اللون / الأزرق 200 250.458 مللي ثانية - 2

200 هو الجزء المهم. إذا كنت لا ترى 200 ، فهذا يعني أنه كان هناك POST سيئًا مما يعني أن الخادم الخاص بك لا يعرف ما يجب فعله بالبيانات. ارجع إلى الخطوة 2 وتحقق من ملف index.js الخاص بك.

أيضا في الصورة

stdout: أزرق

ستدير:

هذا هو الإخراج من ملف python الذي يقوم بتشغيل مصابيح LED. إذا رأيت خطأ هناك ، فقد يرجع ذلك إلى عدم تثبيت برنامج التشغيل في الخطوة 2.

أخيرًا ، إذا لم يظهر شيء على الإطلاق … فربما لم يتم إعداد IFTTT بشكل صحيح أو فشل في الاتصال بالخادم. ارجع إلى صفحة IFTTT ، وفي شريط التنقل العلوي ، انقر على النشاط. هناك ، يمكنك أن ترى كل مرة يتم فيها تشغيل التطبيق الخاص بك ، وإذا كان هناك خطأ ، يمكنك معرفة ما كان عليه. لقد قمت بإجراء أمر Google مع إيقاف تشغيل خادم Pi وحصلت على الخطأ في الصورة.

الخطوة السابعة: بناء الدائرة

بناء الدائرة
بناء الدائرة
بناء الدائرة
بناء الدائرة
بناء الدائرة
بناء الدائرة

السبب وراء حاجتنا إلى القيام بذلك هو أن Raspberry Pi ليس لديه ما يكفي من القوة … لذا فإن الحل هو … المزيد من القوة (Tim the tool man Taylor همهمات في المسافة). AKA مصدر طاقة آخر (12V 2A)

مواد لجزء الدائرة

  • بروتوبورد
  • الأسلاك
  • شريط RGB LED
  • مزود الطاقة بجهد 12 فولت - يجب أن يكون أي شيء يزيد عن 2 أمبير على ما يرام
  • DC Barrel Jack - نفس حجم مصدر الطاقة لديك
  • NPN BJT Power Transistors (x3) - أنا أستخدم TIP31C
  • رؤوس دبوس ذكر وأنثى

باستخدام الصورة المفيدة التي سرقتها من الشبكات الداخلية باستخدام GPIO لـ Pi Zero ، يمكنك رؤية GPIO17 و GPIO18 و GPIO 27 بجوار بعضها البعض باستخدام GND. سنستخدم هذا المربع المكون من 4 دبابيس (الدبابيس 11 ، 12 ، 13 ، 14).

أولاً ، أوصي بلحام رؤوس الذكور على شريط LED الخاص بك كما هو موضح في الصورة (ليس أفضل عمل لي). يتيح ذلك قطع الاتصال بسهولة إذا احتجت إلى ذلك في أي وقت. لقد استخدمت رؤوسًا نسائية لتوصيل شريط LED بلوح الحماية الخاص بي ورؤوس الذكور من اللوحة الأولية إلى Raspberry Pi. (استخدم دائمًا التوصيلات الأنثوية لمصدر الطاقة / الإشارة). لست بحاجة إلى تحريك كل دبابيس باي بجوار بعضها البعض كما فعلت أنا … أردت فقط أن تبدو نظيفة ، لكنها كانت تتطلب الكثير من العمل.

شرح الدائرة

بالنسبة لأولئك الذين ليسوا على دراية بالترانزستورات ، فإن الترانزستورات هي في الأساس مفتاح رقمي. تقوم دبابيس GPIO من Pi بتشغيل المفاتيح الثلاثة (الأحمر والأخضر والأزرق). بالنظر تحديدًا إلى الأحمر في الرسم التخطيطي للدائرة ، عندما يكون GPIO_17 قيد التشغيل ، "يغلق" المفتاح الذي يربط RED بـ GND مما يتسبب في تشغيل الأضواء الحمراء. عند إيقاف تشغيل GPIO_17 ، يكون المفتاح مفتوحًا وبالتالي تنطفئ الأضواء.

قاعدة - GPIOs

جامع - ألوان (أحمر ، أخضر ، أزرق)

باعث - أرضي (لكل من مزود الطاقة و Pi)

تأكد من توصيل أرض Pi بأرض مصدر الطاقة. ستظل الأضواء تعمل ، لكنها ستبدو خافتة جدًا حتى يتم توصيل الأرض.

لدي جهاز يبحث عن الترانزستور الرابع على لوح الحماية الخاص بي. إنه L7805CV الذي يستخدم لتحويل 12V إلى 5V حتى أتمكن من تشغيل Pi على نفس الدائرة. لقد نجحت لكنها استمرت في التسخين ، لذلك أزلت وصلاتها.

الخطوة 8: اختبرها

بمجرد اكتمال الدائرة ، أعد تشغيل Pi قبل إجراء أي اتصالات. هذا لأن الدبابيس ربما لا تزال نشطة من اختبار الخادم. بدلاً من ذلك ، يمكنك قتل الخادم وخدمة Pigpiod.

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

قائمة تدقيق

  • افحص الأسلاك
  • باور بي
  • الدائرة الكهربائية
  • بدء الخادم (DEBUG = webapp: * بدء npm أثناء التواجد في دليل ~ / piWebpage / webApp)
  • أخبر Google أن تفعل العطاءات الخاصة بك!

مبروك أنك لم تفجر أي شيء ، ويمكنك الآن التحكم في مصابيح LED الخاصة بك من Google Home.

اترك تعليقات إذا كنت تواجه مشكلات ، وسأبذل قصارى جهدي للرد عليك!

موصى به: