كيفية بناء مصباح ذكي: 3 خطوات (مع صور)

من زينو نهار اليوم ØµØ Ø¹ÙŠØ¯ÙƒÙ… انشر الفيديو Øتى يراه كل الØ

من زينو نهار اليوم ØµØ Ø¹ÙŠØ¯ÙƒÙ… انشر الفيديو Øتى يراه كل الØ

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

Anonim

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

إنترنت الأشياء: مصباح "أكثر ذكاء"

Internet of Things هي كلمة طنانة في عالم التكنولوجيا اليوم. تسمعها في كل مكان ولكن لا أحد يستطيع أن يشير إلى حقيقة أنه تعريف. هذا يعني حقا أشياء مختلفة لأشخاص مختلفين. لا يبدو أن أكبر اللاعبين في عالم التكنولوجيا أنفسهم ، غوغل وفيسبوك في العالم ، يتفقون على التعريف. ولكن على الرغم من ذلك ، يبدو أن كل شركة لديها الآن مجموعة أو قسم داخلي متعلق بإنترنت الأشياء لأن الإحصائيات مثل " 40 مليار جهاز متصل بحلول عام 2020 و ستنفق الشركات 6 تريليون دولار في السنوات الخمس المقبلة على حلول الأجهزة المتصلة إجبار الشركات على إعادة تقييم ما إذا كانت قادرة على تفويت الفرص المحتملة للنمو. ولكن هذا لا ينبغي أن يثني أي شخص عن إنترنت الأشياء. في الواقع ، إنترنت الأشياء لا يصدق. لم يحدث من قبل أن أتيحت لنا الفرصة بالفعل للاستفادة من كميات كبيرة من البيانات. يمكننا أن نقول الكثير من الأشياء المثيرة للاهتمام التي لم نكن نعرفها بدقة من قبل ، من أشياء مثل متى ستكون هناك حاجة إلى صيانة سيارتك إلى أنواع النباتات التي ستزدهر في حديقة منزلك نتيجة لأنماط الطقس المحلية المحيطة بك ، أنواع التربة ، ومستويات التشبع. إنترنت الأشياء يأخذ عمل التخمين من صيانة أجهزتك ؛ باختصار ، يمكن أن تجعل الحياة أسهل قليلاً. لدينا دائما البيانات. نحن فقط لم نعرف ما يجب فعله به حتى الآن. إنترنت الأشياء في مراحلها الأولى ؛ إنه ينمو بمعدل هائل ، ومع بدء الصناعة في حل بعض الآلام المتزايدة في إنترنت الأشياء ، سنبدأ في رؤية أجهزة متصلة حقًا. يمكننا أن نرى تلك الصور للمستقبل حيث تتحدث محمصة الخبز الخاصة بك مع الثلاجة ويتحدثان إلى التلفزيون. لا يمكن تحقيق هذه الرؤى حتى يتم حل مشكلة بروتوكولات الشبكات ؛ على سبيل المثال ، تمتلك بعض الشركات ، مثل Phillips ، حقوق النسخ للطرق التقليدية جدًا للاتصال من جهاز إلى جهاز ، مثل I²C (لا تقلق إذا كنت لا تعرف ما هي هذه ، فلن يؤثر ذلك على قدرتك على إنهاء المصباح :)) التي ، نظرًا لطبيعة اللغة المستخدمة هناك ، سمحت للعديد من الشركات المصنعة للرقاقة بالتغلب على حقوق الطبع والنشر عن طريق إنشاء أشكال مختلفة من هذا البروتوكول المحدد. يحدث هذا مع جميع الشركات الكبرى الأخرى أيضًا ، مثل SPI و UART و ANT ، إلخ. وقد خلق هذا عددًا كبيرًا من التباديل على المصافحة بين الأجهزة مما جعل من المستحيل على جهاز متصل من شركة التحدث إلى جهاز آخر. في أي حال ، لا يزال إنترنت الأشياء في مهده ولديه إمكانات كبيرة للنمو ويصبح مفيدًا في حياتك اليومية!

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

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

لماذا أريد مصباح تمكين WiFi؟

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

اللوازم:

الخطوة 1: تصميم والجمعية العامة للمصباح

التصميم

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

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

طبع

يمكن العثور على جميع ملفات STL التي تحتاج إلى طباعة هذا المصباح على GrabCAD.

من المهم أن نفهم أنه على الرغم من أن جميع الطابعات ثلاثية الأبعاد ذات الظرف الكبير الكافي يمكنها طباعة هذه القطع ، إلا أن التفاوتات والمواد المتاحة قد تكون مختلفة. تم طباعة جسد المصباح على Stratasys Fortus 450mc. تمت طباعة الأزرار والناشر على Stratasys Objet Connex500.

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

الانتهاء

ستحدد هذه الخطوات التالية عمليتي الخاصة بتحسين سطح الطباعة ثلاثية الأبعاد إلى درجة لم تعد "مطبوعة" وتنطبق على جميع الأجزاء باستثناء الناشر.

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

الخطوة 1: إزالة / حل جميع مواد الدعم.
الخطوة 2: الرمل الطفيف أسفل الطباعة مع ورق الصنفرة دورة متوسطة (120 حصى)
الخطوة 3: قم بإلصاق الجزء العلوي والسفلي (وليس الغطاء) من المصباح مع الغراء الإبوكسي المتوافق مع المواد البلاستيكية (أوصي بالإيبوكسي من 5 إلى 10 دقائق. قم بالرمل أسفل الغراء حتى يصبح ناعمًا مع بقية الطباعة.
الخطوة 4: قم بتطبيق طبقة رفيعة من Bondo لملء الحدود التي تم إنشاؤها بواسطة طبقات الطباعة.
الخطوة 5: مرة واحدة جافة ، الرمال بوندو التراجع حتى ترى الطباعة. بينما لا يزال 120 حصى جيدًا ، يمكنك البدء بـ 80 حصى. دائما ارتداء قناع والعمل في منطقة جيدة التهوية. لا تغطس بالرمل في طباعتك ، فنحن نحاول ملء الحدود دون تعديل الشكل الهندسي الأصلي.
الخطوة 6: كرر الخطوتين 4 و 5 حسب الضرورة حتى تصبح ناعمة الملمس تمامًا ، ثم قم بالرمل باستخدام حصى 220.
الخطوة 7: قم بتنظيف الطباعة برفق باستخدام قطعة قماش مبللة خالية من النسالة.

طلاء الجسم

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

الخطوة 1: الشريط من الأسطح الداخلية (القاعدة وحيث توضع المصابيح في الغطاء)
الخطوة 2: ضع / علق المصباح حتى تتمكن من قلبه دون لمسه. أوصي ببناء رقصة تسمح لها بالتعليق رأسًا على عقب بواسطة علامات التبويب الداخلية. سيحصل غطاء القاعدة على نفس الطلاء
الخطوة 3: تطبيق 2 طبقات المتوسطة من التمهيدي. اتركها لتجف لمدة ساعة أو أكثر ثم افحص.
الخطوة 4: طفيفة الرمال جميع السطوح معبي مع 220 ورقة الصنفرة الحصباء. التركيز على المناطق التي بها عيوب سطحية ، ولكن ليس كثيرًا ؛ نحن لا نحاول الرمال حفرة في ذلك.
الخطوة 5: إعادة شنق وتطبيق طبقة خفيفة من التمهيدي. إذا كان لديك أي مناطق خشنة يجب ملؤها ، فإن تطبيق طبقة أثقل قليلاً على هذه المناطق يمكن أن يساعد. اتركها لتجف لمدة ساعة أو أكثر.
الخطوة 6: للحصول على الصنفرة النهائية ، يمكن استخدام ورق الصنفرة 320 الحصباء. ركز على الحفاظ على الحواف الحادة الحادة والرملية بالتساوي.
الخطوة 7: الآن نريد تطبيق طبقة رقيقة ثم طبقة مينا الطلاء. أعط على الأقل يوم كامل حتى يجف.
الخطوة 8: قم برمله قليلاً باستخدام 400 ورقة من ورق الصنفرة وقم بتنظيفها بقطعة قماش رطبة وخالية من الإضاءة.
الخطوة 9: أعد وضع طبقة رقيقة ثم طبقة متوسطة من المينا الشفاف المطفي. اتركها لتجف لمدة يوم على الأقل.

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

ترسم الازرار

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

تثبيت الأزرار

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

تثبيت مستشعر الضوء المحيط

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

تثبيت شرائط الصمام

يجب تقطيع شريط LED إلى 3 أجزاء (كما هو موضح في الصورة). يوجد مادة لاصقة مثبتة على مصابيح LED تكون كافية للاحتفاظ بها في مكانها. قم بتثبيتها جميعًا في نفس الاتجاه لأنها ستسهل عملية لحامها معًا. يجب أن تكون ملحومة جميع الألوان و 12 فولت + بالتوازي. بمجرد تثبيت الشرائط ، قم بتغذية أسفل الرقبة ويؤدي اللحام المشفر بأربعة ألوان إلى الشريط الأوسط. سوف الغراء الساخن إضافة قوة إلى المفاصل لحام. قم بتوصيل سلك 12V + بمصدر طاقة وأرض أحد أسلاك R أو G أو B. بمجرد تأكيد الإضاءة الثلاثة ، انتقل إلى الخطوة التالية.

تثبيت الناشر

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

الخطوة 2: إلكترونيات روك!

الالكترونيات: العصر الحديث السحرة

قد تبدو التكنولوجيا سحرية مع إمكانات تقنية لدينا اليوم ؛ ومع ذلك ، أؤكد لك أنه يمكن لأي شخص تعلم الإلكترونيات أو القيام بها. نقوم بتقسيم كل شيء حتى يتمكن الرجال من تكرار هذا المصباح ونأمل أن نتعلم شيئًا أو شيئين ، كما نوضح المبادئ الأساسية الكامنة وراء بعض الإلكترونيات.

قائمة الاجزاء:

فيما يلي جميع الأشياء التي تحتاجها لإكمال الشبكات والإلكترونيات لهذا المصباح!

  • طابعة 3D
  • WINC1500 اندلاع المجلس من Adafruit
  • 3X من N قناة MOFSETS
  • Adafruit TSL2561 مستشعر الضوء
  • Adafruit MPR121 بالسعة اللمس المجلس
  • مصابيح LED للضوء الخلفي زر الطاقة (تحتاج فقط إلى اثنين من المصابيح)
  • الذين تقطعت بهم السبل الأسلاك الأساسية
  • قواطع للاسلاك
  • المتعريات الأسلاك
  • سلك صلب صلب (لأزرار اللمس بالسعة)
  • قطاع الصمام
  • التبديل ثنائي الاتجاه بشكل منتظم (12V إلى 5V)
  • Teensy 3.2 أو Arduino Mega (ذاكرة موسعة مطلوبة)
  • 3x من protoboards sparkfun (أو شيء من نفس الحجم - لا أكبر على الرغم من!)
  • مزود طاقة تيار مستمر بجهد 12 فولت ووصلة برميل بقطر 2.1 مم
  • المقاومات 3 × 68 أوم (واحد لكل إضاءة خلفية LED)
  • أنابيب الحرارة يتقلص 1/8 ''
  • اللوح (إذا كنت تريد النموذج الأولي لإصدار غير دائم أولاً)
  • مسدس حرارة
  • Soldering Iron (رابط يتضمن كل ما يتعلق بالجندى - اللحام متضمن)
  • اللحيم
  • الماء (لتنظيف لوحة اللحام)

الخطوة 1: ربط اندلاع WIFI إلى سن المراهقة

الحصول على اتصال لهذا المصباح هو 50 ٪ من عامل "رائع" و 100 ٪ من جزء إنترنت الأشياء من هذا الجهاز لذلك فمن المهم للغاية. الصورة أعلاه توضح لك بالضبط كيفية توصيل كل دبوس إلى دبوس الصحيح على سن المراهقة.

هذا الرابط هو البرنامج التعليمي من Adafruit ويظهر لك خطوة بخطوة كيفية توصيل كل دبوس إلى متحكم. استخدموا اردوينو على وجه التحديد والتي لديها عموميات دبوس مختلفة. ومع ذلك ، لقد قمت بتضمين نسختين من الصور التخطيطية للنسر أعلاه والتي من شأنها أن تساعد أي شخص على توصيل لوحة WiFi بالشبكة بشكل صحيح إلى Teensy وأي لوحات أخرى مدرجة في هذا المصباح. في "التخطيط المتقدم" ، يقطع المخطط وظائف كل لوحة جانبية ودائرة فرعية ، ويلبي جميع الأبعاد المناسبة في حالة رغبة أي صناع متقدم في دمج اللوحات في لوحة واحدة. في "Basic Schematic" ، تم استخراج لوحة WiFi بعيدًا لتكون صندوقًا أسود مع دبابيس مثبتة. تتم تسمية جميع هذه المسامير مع تسميات الشبكة التي تتطابق مع دبوس يجب أن تكون متصلا على سن المراهقة مع تسمية الدقيق! لا ينبغي استخدام هذا التخطيط كأساس لتصميم اللوحة المدمجة ؛ ليس لديها الأبعاد الصحيحة ولا الدوائر المناسبة على متن الطائرة.

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

هذا إرشادات تفترض أنك تعرف كيفية لحام. إذا كنت لا تزال تتعلم ، تحقق من هذا الرابط!

ستحتاج إلى لحام دبابيس رأسك إلى Teensy أولاً. إذا كنت غير متأكد من كيفية القيام بذلك ، تحقق من هذا الرابط!

بمجرد قيامك بلصق دبابيس الرأس في سن المراهقة ، ضع علامة Teensy على لوحة SparkFun وقم بمحاذاة سن المراهقة في هذا الاتجاه المحدد: يجب أن يكون لديك عمودين رأسيين مجانيين على جانب المراهقة مع وجود كريستال كوارتز عليها ( مستطيل معدني لامعة محفورا عادة مع عدد عليه). تعلم المزيد هنا! يجب ألا يلائم الجانب الآخر سوى ثلاثة أعمدة رأسية. هذا الاتجاه مطلوب بسبب الأجهزة الطرفية. تتواصل لوحة اللمس بالسعة ولوحة WIFI ومستشعر Lux عبر دبابيس اتصالات SPI. بسبب قيود حجم قاعدة المصابيح ، يمكننا فقط استخدام حجم لوحات النموذج الأولي المحددة في قائمة الأجزاء. نتيجة لذلك ، لا يوجد سوى اتجاهين يمكنهما أن يتلاءما مع جميع الوصلات لدائرة تشغيل LED (دبابيس PWM من البوابة) التي لها إما عمودان أو ثلاثة أعمدة عمودية على جانب واحد ، والجانب الآخر سيحتوي على عدد الأعمدة لم تختر من الجانب الآخر (أي 2 في واحد و 3 من جهة أخرى أو العكس).

بمجرد أن يكون لديك الاتجاه الصحيح ، يمكنك جعل الاتصالات دائمة ولحام Teensy بلوحة SparkFun Prototype. يمكنك استخدام مقصات الأسلاك لتقطيع قيعان اللوحة حيث تلتصق دبابيس الرأس.

بعد أن تقوم بلحام Teensy ، دبابيس رأس Solder بلوحة WIFI. يجب تضمينها في العبوة التي تأتي بها لوحة WIFI. بعد لحام مسامير الرأس في لوحة WIFI ، ستحتاج إلى لحام لوحة WIFI بلوحة نموذجية منفصلة.

لتوفير الوقت ، تابع وتعيين اللوحات التي ستستخدمها في الدوائر. يجب أن تحتوي اللوحة 1 على المراهق الخاص بك فقط ولا شيء آخر. مجلس اثنين لديه سوى لوحة واي فاي. ستحتوي اللوحة 3 على دائرة تشغيل LED ، ومنظم التبديل ثنائي الاتجاه ، وقطعة الموصل للحصول على الطاقة من مزود الطاقة بجدار DC إلى المصابيح / بقية الدائرة

لحام لوحة واي فاي لوحة النموذج الأولي رأسا على عقب (انظر صورة اللوحات الثلاث المتصلة كمرجع) وقص الرؤوس. يتم ذلك لأن هذا الاتجاه يتيح للوحات الثلاثة طيها بشكل أنيق في قاعدة المصباح.

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

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

الصمام سائق الدائرة ومستوى شيفتر

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

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

لتبدأ ، دعونا نقدم بعض المعلومات الأساسية عن MOSFETs لأولئك الذين لا يعرفون ما هي MOSFETs. MOSFET لتقف على Mوآخرون Oشي ده Semiconductor Fدرع Effect تيransistor. الجزء الأول من هذا يشير فقط إلى نوع المادة التي يتكون منها الترانزستور (مبسطة للغاية حيث توجد آثار لنوع المادة المختارة وخصائصها الناتجة من الترانزستور). النصف الثاني من هذا البيان أكثر تعقيدًا قليلاً ؛ يشير التأثير الميداني إلى بوابة الترانزستور التي يتم سحبها من خلال التيارات المستحثة عبر الشحنات التي تتحرك بين القنوات (لا تقلق إذا كنت لا تفهم ولكن هنا مزيد من المعلومات!). الترانزستورات هي مجرد مفاتيح. يمكنك التحكم في تدفق الطاقة من خلال تطبيق الفولتية على البوابات لجعل أجزاء معينة من الدائرة تحصل على الطاقة. الترانزستورات معقدة جدا. باختصار ، جميع الترانزستورات لديها بوابة ، واستنزاف ، والمصدر. يمكن معالجة الصرف والمصدر باعتباره مدخلات ومخرجات الدائرة. تتميز MOSFETs بالكثير من الأنواع المختلفة ، ولكننا سنشرح الأنواع الرئيسية التي ستصادفها كصانع. يقف NMOS و PMOS في قناة MOSFET الإيجابية والسلبية. هذا التمييز مهم لأنه سيحدد نوع الجهد الذي يمكنك تطبيقه على البوابة للسماح بتدفق التيار من المصدر إلى الصرف أو التصريف إلى المصدر. تتطلب بوابات NMOS جهدًا إيجابيًا محتملاً بين البوابة والمصدر. PMOS يتطلب إمكانات سلبية بين البوابة والمصدر. يمكنك معرفة كل شيء عن MOSFETs هنا!

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

في التخطيطي مع MOSFETs ، تمثل الثنائيات (مثلثات ذات خطوط أفقية) شريط ضوء LED. يحتوي شريط LED على أربع وسادات معدنية (الطاقة ، والأحمر ، والأخضر ، والأزرق) والتي يمكنك تسخينها من مكواة لحام وتوصيل بعض الأسلاك الأساسية التي تقطعت بهم السبل (الملون بالألوان بالطبع) بالمنصات. بمجرد أن يكون لديك اتصال قوي ، ستزود الشريط 12 فولت. هذا يعني أنك سوف ترغب في توصيل خط الطاقة من مزود الطاقة DC بقطعة الموصل التي قمت بلصقها باللوحة. يمكنك القيام بذلك بسهولة عن طريق لحام السلك من شريط LED الذي يمثل الطاقة في فتحة فارغة على اللوحة في نفس الصف مثل دبوس الطاقة الخاص بقطعة الموصل. هذا سوف يعطي السلطة للمصابيح. يجب أن ترى مصابيح LED قيد التشغيل إذا كنت قد قمت بتوصيل طاقتك بشكل صحيح في هذه المرحلة. الآن حان الوقت لتوصيل بقية الخيوط من شريط LED. يجب أن تكون هذه خيوط التحكم باللون الأحمر والأخضر والأزرق. ما عليك القيام به هو توصيل كل سلك بالصف الذي يحتوي على دبوس الأوسط من MOSFET متصلة. يجب أن يكون لديك ثلاثة أسلاك متصلة بثلاثة بوابات مختلفة من MOSFETs. ستحتاج بعد ذلك إلى ثلاثة أسلاك (حمراء وخضراء وزرقاء) للاتصال من التصريف إلى الدبوس الرقمي على Teensy. التصريف هو الجزء الأكبر الأيسر في MOSFET وتحتاج فقط إلى لحام كل سلك في إحدى الثقوب الحرة في هذا الصف.

بعد توصيل شريط LED ، سنقوم بتوصيل منظم التبديل ثنائي الاتجاه. تعمل LED لدينا في 12 فولت من أجل تشغيل. ومع ذلك ، فإن بقية الدوائر والألواح لن تعمل إلا بحد أقصى 5 فولت ، مما يعني أنه إذا كنا لا نريد تدمير إلكترونياتنا ، فسوف نحتاج إلى تقليل الجهد الذي يذهب إلى بقية الدائرة. نحن نفعل هذا من خلال منظم التبديل! منظم التبديل هو جهاز يسقط (في هذه الحالة 12 فولت إلى 5 فولت) الجهد من بعض الجهد العالي إلى انخفاض واحد. الآن قد تسأل لماذا لا تستخدم ببساطة المقاوم لإسقاط الجهد أو دائرة مقسم الجهد باستخدام المقاومات؟ هناك مشاكل متعددة مع القيام بذلك ؛ ونحن نوصي بشدة ضد القيام بذلك. لماذا ا؟ سوف تسقط المقاومات الجهد كما تريد ولكن سوف تولد الكثير من الحرارة! في الواقع ، يمكنك بسهولة إذابة دائرتك نتيجة استخدام المقاوم أو منظم خطي إذا كنت على دراية بها. ولكن لا يمكنني فقط استخدام بالوعة الحرارة وتحويل الحرارة بعيدا عن الدوائر؟ نعم ، يمكنك ولكن بعد ذلك نثور في مسألة كفاءة الطاقة! هذا سيكون غير فعال للغاية! إذا كنت تتذكر بعض فيزياء المدارس الثانوية ، فالطاقة هي نتاج المقاومة الحالية للجهد الكهربي أو الجهد الحالي. يتم قياس الطاقة بالواط ، وستحتاج إلى مقاوم كبير لإسقاط 12 فولت إلى 5 فولت. سيؤدي هذا إلى تبديد الطاقة لتكون كبيرة جدًا. هذا من شأنه أن يجعل المصباح الخاص بك غير فعال للغاية. نتجنب هذه المشكلة باستخدام منظم التبديل ثنائي الاتجاه! تتمتع هذه الجهة المنظمة بالكفاءة التي يمكن تحقيقها بسهولة بنسبة 85٪ حيث تنخفض 12 فولت إلى 5 فولت. هذا يساعد على الحفاظ على انخفاض درجات الحرارة وزيادة متوسط ​​العمر المتوقع للمصباح الخاص بك!

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

بالسعة اللمس اندلاع المجلس

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

والخطوة التالية هي الخيوط التي تتصل بالزر. كما هو موضح سابقًا ، تريد أن تكون هذه الأسلاك قصيرة قدر الإمكان لجعل زر اللمس بالسعة حساسًا قدر الإمكان. للقيام بذلك ، سوف تحتاج إلى إنشاء لوحة اتصال من الأنواع ، كما هو موضح أعلاه ، بالأسلاك. خذ سلكًا صلبًا لولبيًا وسلك لولبي في لفائف دائرية مسطحة مسطحة. يجب أن يكون الطرف الآخر من الملف هو الجزء المستقيم من السلك وأن يكون ملحومًا في المسامير. ستحتاج إلى 3 أسلاك اتصال زر لكل زر بشكل طبيعي وسيتم لحام هذه في دبابيس 0 ، 1 ، 2. في دبوس 11 ، سوف لحام سلك آخر والذي سيكون ل LED الطاقة. هذا دبوس GPIO (غرض إدخال / إخراج للأغراض العامة) ولديه أيضًا إمكانيات PWM (تعديل عرض النبضة). سوف نستخدم هذا الدبوس للتحكم في منطق مصباح LED الذي يصبح الإضاءة الخلفية لزر الطاقة. يوضح القسم الخاص بالبرمجة والكود كيف يتم ذلك.

مستشعر الضوء المحيط

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

الخطوة 3: شرائح البرمجة: MQTT Networking

البرنامج: جعل الأشياء الغبية ذكية

لقد وصلت الآن إلى جانب البرنامج لهذا المشروع! إذا كنت قد وصلت إلى هذا الحد ، فتهانينا! لديك أساسًا مصباحًا ذكيًا لأننا قمنا بتضمين جميع الكود في هذا الدليل ، وكنت جاهزًا لتحميل الكود ولديه مصباح ذكي! إذا كنت مهتمًا بمعرفة المزيد حول ما تفعله الشفرة ، فإن التعليقات الواردة في قسم الشفرة مفصلة وتشرح كل شيء!

بالنسبة لأولئك الذين يرغبون في تحميل الكود ببساطة ، ليست هناك حاجة لقراءة المزيد. سيتحدث هذا الجزء من التعليمات حول كيفية تحميل الرمز إلى سن المراهقة. للخلفية ، يعد teensy متحكمًا يحتاج إلى محمل الإقلاع اليدوي / التلقائي (برنامج) الذي يحول المعالج إلى وضع البرمجة. بالنسبة لأولئك الذين سبق لهم استخدام Arduino ، عند ترميز برنامج لمشروع Arduino ، ستتحقق علامة الاختيار في الزاوية اليمنى العليا من رسمك بحثًا عن الأخطاء وبمجرد تجميع التعليمات البرمجية ، يمكنك النقر فوق السهم لتحميل الرمز. يقوم IDE الخاص بـ Arduino تلقائيًا بتحويل Arduino إلى وضع برمجة ويومض برمز جديد إلى اللوحة الخاصة بك. مع Teensy ، تم استخراج هذه الإمكانية إلى محمل الإقلاع Teensy. يحتاج كل مستخدم Teensy إلى تنزيل أداة تحميل الإقلاع ، وإذا لم تقم بذلك بالفعل ، فقم بتنزيل ملف Arduino IDE الموجود هنا. بمجرد الانتهاء من التثبيتات ، قم بتنزيل الكود الذي قمنا بإدراجه أعلاه. سوف تفتح في اردوينو IDE الخاص بك. كان هناك الكثير من المكتبات المدرجة والمطلوبة لتجميع التعليمات البرمجية. أدناه ، هي الروابط إلى المكتبات التي تحتاج إليها لتنزيل ملف .zip وتثبيته في المكتبات. إذا كنت لا تعرف كيفية تثبيت المكتبات في رسم Arduino ، فإليك رابطًا إلى أحد المدربين حول كيفية القيام بذلك.

المكتبات:

  • مكتبة Adafruit MQTT
  • MPR121 بالسعة لوحة اللمس
  • مجلس WINC1500 واي فاي
  • Adafruit لوكس الاستشعار
  • Wire.h (لا توجد مكتبة لأنه مثبت مسبقًا)
  • String.h (لا توجد مكتبة لأنه مثبت مسبقًا)
  • SPI.h (لا توجد مكتبة لأنه مثبت مسبقًا)
  • Adafruit_Sensor.h
  • ArduinoJSON

بمجرد تثبيت كل هذه المكتبات ، سيتم تجميع التعليمات البرمجية الخاصة بك. بعد الضغط على زر التحقق من الكود (علامة الاختيار) في arduino IDE ، افتح نافذة أداة تحميل التشغيل لـ Teensy. يجب أن تشاهد نافذة صغيرة تحتوي على إصدار افتراضي من Teensy. انقر فوق الزر "تلقائي" وتأكد من انحساره (كما لو كنت قد ضغطت بالفعل على زر … راجع رابط أداة تحميل الإقلاع في سن المراهقة لرؤية ما نعنيه). بعد ذلك ، اضغط على الزر الفعلي على Teensy نفسه الموجود في نهاية اللوحة المقابلة لـ USB. تحقق من اردوينو IDE حيث لديك رسم وانقر على الأدوات. تأكد من أن اللوحة تقول Teensy 3.1 / 3.2 ، تم ضبط نوع USB على Serial ، وتم ضبط سرعة وحدة المعالجة المركزية على 96 ميغاهيرتز المحسنة فيركلوكيد ومنفذ تم تعيينه على "USB متبوعاً بسلسلة طويلة من الأرقام والحروف". بمجرد القيام بذلك ، اضغط على زر التحميل (السهم الجانبي) في اردوينو. يجب أن يحتوي Teensy على مؤشر LED على اللوحة ويجب أن تومض عند تحميل الرمز. بعد الانتهاء من التحميل ، ستحتاج فقط إلى وضع إلكترونياتك في قاعدة المصباح ، وقد انتهيت جميعًا!

إذا كنت مهتمًا بما تفعله الشفرة ، فتحقق من التعليقات المضمّنة في الكود أدناه!

# تشمل # تشمل # تشمل # تشمل # تشمل #تتضمن #تتضمن # تشمل # تشمل
#تتضمن #تتضمن
#تتضمن #define WINC_CS 10 #define WINC_IRQ 7 #define WINC_RST 4 #define AIO_SERVER "mqtt2.seecontrol.com" #define AIO_SERVERPORT 1883 #define AIO_USERNAME "IoTLamp" #define AIO_KEY "b184dl (ق)) ؛ في حين (1)؛ } #define LEDPIN 3 #define LED_RED 23 #define LED_GREEN 5 #define LED_BLUE 6 #define touch_pin0 0 #define touch_pin1 1 #define touch_pin2 2 char ssid = ""؛ // شبكتك SSID (الاسم) char pass = ""؛ // كلمة مرور الشبكة (استخدم لـ WPA ، أو استخدم كمفتاح لـ WEP) int keyIndex = 0؛ // رقم مفتاح الشبكة الخاص بك (مطلوب فقط لـ WEP) int status = WL_IDLE_STATUS؛ // wifi status const char MQTT_SERVER PROGMEM = AIO_SERVER؛ const char MQTT_CLIENTID PROGMEM = __TIME__ AIO_USERNAME؛ const char MQTT_USERNAME PROGMEM = AIO_USERNAME؛ const char MQTT_PASSWORD PROGMEM = AIO_KEY؛ const char IOTLAMP_FEED PROGMEM = "/ IoTLampDemo"؛ // نشر واشترك في اسم القناة const char RETURN_FEED PROGMEM = "/ IoTLampDemo"؛ uint32_t x = 0؛ // uint8_t POWER_STATE = 0 ؛ uint8_t pinNum؛ uint8_t led_brightness = 100 ؛ uint8_t redVal = 0؛ uint8_t greenVal = 0 ؛ uint8_t blueVal = 0؛ uint16_t لوكس. bool Network_Mode = خطأ ؛ bool cap_touch_activated = false ؛ const int irqpin = 2 ؛ // رقم الدبوس للعلم المنطقي المتقلب ومؤشر النشاط ؛ struct JSON {const char * targetVal؛ const char * codeVal ؛ لام lamponVal. كثافة العمليات }؛ / * جميع الإعلانات * / Adafruit_WINC1500 WiFi (WINC_CS ، WINC_IRQ ، WINC_RST) ؛ Adafruit_TSL2591 tsl = Adafruit_TSL2591 (2591) ؛ // مستشعر الضوء Adafruit_WINC1500Client العميل ؛ // wifi chip Adafruit_MQTT_Client mqtt (& client، MQTT_SERVER، AIO_SERVERPORT، MQTT_CLIENTID، MQTT_USERNAME، MQTT_USSNER، MQTT) // mqtt declaration Adafruit_MQTT_Publish IOTLAMP = Adafruit_MQTT_Publish (& mqtt، IOTLAMP_FEED)؛ Adafruit_MQTT_Subscribe VIRTUAL_LAMP = Adafruit_MQTT_Subscribe (& mqtt، RETURN_FEED)؛ / * * هذه الوظيفة هي الإعداد. في الإعداد ، قمنا بتهيئة جميع المسامير الخاصة بمصابيح LED * وكذلك المقاطعات التي نعلقها على الأزرار. لقد أطلقنا على الوظائف التي * إعداد لوحة wifi ، ولوحة اللمس بالسعة ، والوظيفة التي ستشترك في مسار الموضوع الصحيح *. * * / void setup () {pinMode (irqpin، INPUT)؛ Serial.begin (9600)؛ // setup interrupts Serial.println ("بدء البرنامج") ؛ attachInterrupt (irqpin، isrIrqPin، CHANGE)؛ // attach IRQ pin interrupt & RISING / HIGH / CHANGE / LOW / FALLING MPR121.setInterruptPin (irqpin)؛ pinMode (LED_RED ، OUTPUT) ؛ pinMode (LED_BLUE ، OUTPUT) ؛ pinMode (LED_GREEN ، OUTPUT) ؛ كتابة رقمية (LED_RED ، منخفضة) ؛ كتابة رقمية (LED_GREEN، LOW)؛ digitalWrite (LED_BLUE، LOW)؛ capacitiveTouch_Setup ()؛ wifi_module_config ()؛ // قم بتكوين wifi mqtt.subscribe (& VIRTUAL_LAMP)؛ } / * * هذه الوظيفة هي الحلقة. يكرر كل ما يحدث في هذه الوظيفة إلى ما لا نهاية ما لم يتم اكتشاف مقاطعة * في هذه الحالة يتم تنفيذ وظيفة أخرى في حين يتم إيقاف كل شيء آخر. * تتحقق هذه الوظيفة لمعرفة ما إذا كان هناك مقاطعة يتم تشغيلها ، إذا كان الأمر كذلك ، فقم بتشغيل وظيفة resetButton. * إذا كنا في وضع الشبكات (وهذا يعني أن لدينا اتصال واي فاي) ، ثم قم بتشغيل وظيفة الشبكات *. إذا لم يكن هذا صحيحًا ، فما عليك سوى التصرف كالمصباح العادي. * * / void loop () {if (flagIrq == true) {ResetBUTTONFlag ()؛ // في حالة حدوث مقاطعة زر ، إعادة تعيين العلم. } آخر {if (Network_Mode) {networking () ؛ }}} / * * يتم استدعاء هذه الوظيفة عندما يتم تشغيل المقاطعة ثم يتم استدعاء وظيفة الزر بالسعة ثم يتم تعيين علامة المنطق إلى علامة true.* / void isrIrqPin () {capacitiveTouch_buttons ()؛ flagIrq = صواب ؛ } / * * هذه الوظيفة تعتني فقط بالحالات: يتم استدعاؤها فقط عندما يتم تشغيل المقاطعة * ويتحول منطقي العلم إلى خطأ ويتم ضبط منطقية اللمس بالسعة على "صحيح". * / void ResetBUTTONFlag () {// reset BUTTON 1 flag + show led-index-flag flagIrq = false؛ cap_touch_activated = صواب ؛ } // قم بإلغاء تثبيت هذه الوظيفة من أجل قراءة مستشعر لوكس الموسع واستدعاؤها حيثما شئت. // void luxSensor_Readout (void) {// sensor_t sensor؛ // tsl.getSensor (& sensor)؛ // Serial.println ("------------------------------------")؛ // Serial.print ("Max Value:")؛ Serial.print (sensor.max_value)؛ Serial.println ("lux") ؛ // Serial.print ("Min Value:")؛ Serial.print (sensor.min_value)؛ Serial.println ("lux") ؛ // Serial.print ("Resolution:")؛ Serial.print (sensor.resolution)؛ Serial.println ("lux") ؛ // Serial.println ("------------------------------------")؛ // Serial.println ("")؛ // التأخير (500) ؛ //} / * * تقوم هذه الوظيفة بإعداد اللوحة. يبدأ بتوفير عبارات تصحيح الأخطاء لمعرفة ما إذا تم تكوين لوحة اللمس بالسعة * بشكل صحيح. ثم يقوم بتهيئة المسامير الرقمية على اللوحة * نفسها للأزرار وزر الطاقة أيضًا. يعمل على ضبط الحساسية والحصول على بيانات المعايرة * لبدء التشغيل. ثم يقوم بتشغيل مصباح الطاقة لبدء التشغيل. * * / void capacitiveTouch_Setup () {if (! MPR121.begin (0x5A)) {Serial.println ("خطأ في إعداد MPR121")؛ switch (MPR121.getError ()) {case NO_ERROR: Serial.println ("no error")؛ استراحة؛ الحالة ADDRESS_UNKNOWN: Serial.println ("عنوان غير صحيح") ؛ استراحة؛ الحالة READBACK_FAIL: Serial.println ("فشل القراءة")؛ استراحة؛ الحالة OVERCURRENT_FLAG: Serial.println ("التيار الزائد على REXT pin") ؛ استراحة؛ case OUT_OF_RANGE: Serial.println ("electrode out of range") ؛ استراحة؛ الحالة NOT_INITED: Serial.println ("لم تتم التهيئة")؛ استراحة؛ افتراضي: Serial.println ("خطأ غير معروف") ؛ استراحة؛ } بينما (1) ؛ } Serial.println ("تم العثور على MPR121!") ؛ MPR121.setTouchThreshold (2)؛ / القيمة الافتراضية هي 40 للمس MPR121.setReleaseThreshold (1) ؛ القيمة الافتراضية هي 20 للمس ؛ يجب أن تكون دائمًا أصغر من عتبة اللمس MPR121.setNumDigPins (1) ؛ // LED النواتج MPR121.pinMode (11 ، الإخراج) ؛ MPR121.updateTouchData ()؛ // تحديث البيانات الأولية MPR121.digitalWrite (11 ، عالية) ؛ } / * * هذه هي وظيفة تكوين wifi. هذا يتحقق لمعرفة ما إذا تم توفير الطاقة لوحدة * WIFI ثم قم بتعيين منطقية الشبكات إلى صواب أو خطأ اعتمادا على ما إذا تم توفير الطاقة *. ثم إذا كان الأمر كذلك ، اطبع أنك متصل. * * / void wifi_module_config () {Serial.println (F ("Adafruit MQTT demo لـ WINC1500")) ؛ Serial.print (F (" n أدخل وحدة WiFi …"))؛ // تهيئة العميل إذا (WiFi.status () == WL_NO_SHIELD) {// تحقق من وجود الاختراق Serial.println ("WINC1500 غير موجود")؛ // لا تستمر: Network_Mode = false؛ احيانا صحيح)؛ } Serial.println ("ATWINC OK!")؛ Network_Mode = صحيح ؛ } / * * تنشئ هذه الوظيفة تعيينًا لقيم RGB. إنه يقيس ما نغمة اللون الأبيض القصوى التي سيخرجها المصباح. ثم بعد إنشاء التعيين لكل لون أحمر أخضر وأزرق ، * ندعو وظيفة المساعد لتعيين النغمة الفعلية للون LEDs * * / / void map_white (int new_brightness) {redVal = map (new_brightness ، 0 ، 255 ، 0 ، 255) ؛ // خريطة القيم الحمراء greenVal = map (new_brightness ، 0 ، 255 ، 0 ، 255) ؛ // خريطة القيم الخضراء blueVal = map (new_brightness، 0، 255، 0، 240)؛ // تعيين القيم الزرقاء set_leds (redVal ، greenVal ، blueVal) ؛ } / * * تقوم هذه الوظيفة في الواقع بتعيين قيم ألوان LEDs وجعل المصابيح تعمل. * * / void set_leds (uint8_t redVal، uint8_t greenVal، uint8_t blueVal) {analogWrite (LED_RED، redVal)؛ // اكتب القيم الحالية إلى دبابيس LED analogWrite (LED_GREEN، greenVal)؛ analogWrite (LED_BLUE، blueVal)؛ } / * * هذه الوظيفة بتكوين مستشعر الضوء. يتحقق أولاً لمعرفة ما إذا كان المستشعر متصلًا بالطاقة. بمجرد ذلك ، فإنه يحدد المكسب. يعمل على تضخيم القيم التي يحصل عليها initally بناءً على * إذا كان الضوء المحيط بالمستشعر منخفضًا ، فإنه يضخّم لزيادة الكسب. بعد ذلك ، يحدد * وقت التكامل وهو المدة التي سيستغرقها القياس. تقوم بقية الوظيفة * بطباعة معلومات اختياراتك في الشاشة التسلسلية. * / void configurationSensor (void) {Serial.println ("Starting Adafruit TSL2591 Test!")؛ if (tsl.begin ()) {Serial.println ("العثور على جهاز استشعار TSL2591") ؛ } else {Serial.println ("لم يتم العثور على مستشعر … تحقق من الأسلاك الخاصة بك؟") ؛ بينما (1) ؛ } // يمكنك تغيير المكسب أثناء التنقل ، للتكيف مع حالات الإضاءة الأكثر إشراقًا / باهتة //tsl.setGain(TSL2591_GAIN_LOW) ؛ // 1x كسب (ضوء ساطع) tsl.setGain (TSL2591_GAIN_MED) ؛ // 25x كسب // tsl.setGain (TSL2591_GAIN_HIGH) ؛ // 428x ربح // يمنحك تغيير وقت التكامل وقتًا أطول لاستشعار الضوء / تكون الجداول الزمنية الأطول بطيئة ، ولكنها جيدة في فترات الإضاءة المنخفضة جدًا! //tsl.setTiming(TSL2591_INTEGRATIONTIME_100MS)؛ // أقصر وقت تكامل (ضوء ساطع) // tsl.setTiming (TSL2591_INTEGRATIONTIME_200MS) ؛ tsl.setTiming (TSL2591_INTEGRATIONTIME_300MS)؛ // tsl.setTiming (TSL2591_INTEGRATIONTIME_400MS) ؛ // tsl.setTiming (TSL2591_INTEGRATIONTIME_500MS) ؛ // tsl.setTiming (TSL2591_INTEGRATIONTIME_600MS) ؛ // أطول وقت تكامل (ضوء خافت)

/ * عرض الكسب ووقت التكامل من أجل المرجع المرجعي * / Serial.println ("-------------------------------- ---- ")؛ Serial.print ("كسب:") ؛ tsl2591Gain_t gain = tsl.getGain ()؛ التبديل (الكسب) {case TSL2591_GAIN_LOW: Serial.println ("1x (Low)")؛ استراحة؛ الحالة TSL2591_GAIN_MED: Serial.println ("25x (Medium)")؛ استراحة؛ الحالة TSL2591_GAIN_HIGH: Serial.println ("428x (High)")؛ استراحة؛ الحالة TSL2591_GAIN_MAX: Serial.println ("9876x (Max)")؛ استراحة؛ } Serial.print ("التوقيت:") ؛ Serial.print ((tsl.getTiming () + 1) * 100 ، DEC) ؛ Serial.println ("ms") ؛ Serial.println ( "------------------------------------")؛ Serial.println ( "")؛ } / * * يتم إطلاق هذه الوظيفة بمجرد لمس الزر. بعد حدوث ذلك ، يقوم بتحديث البيانات * التي تم تخزينها من لوحة سعوية. ثم تمر عبر المسامير المتاحة (نذهب فقط من 0-2 * لأننا نعلق فقط 3 دبابيس على الأزرار). ثم سيعود الرقم السري الذي تم لمسه *. * * / uint8_t capacitiveTouch_pinTouched () {MPR121.updateTouchData ()؛ لـ (pinNum = 0 ؛ pinNum <= 2 ؛ pinNum ++) {if (MPR121.isNewTouch (pinNum)) {return pinNum؛ }} pinNum = 4؛ عودة pinNum. } / * * الأزرار التي تعمل باللمس بالسعة تحتوي فعليًا على كل المنطق الذي يتم التعامل معه إذا تم لمس الزر. من خلال هذه النقطة ، يُفترض أن زرًا قد تم لمسه ، وسيكتشف الآن * ما يجب فعله بالزر المحدد الذي تم لمسه. إنه يتحكم في كل منطق * حالة الطاقة ومصباح الطاقة وكذلك التحكم في السطوع. * * / void capacitiveTouch_buttons () {uint8_t touchedPin = capacitiveTouch_pinTouched ()؛ التبديل (touchedPin) {case 0: {if (POWER_STATE == 1) {if (led_brightness> 230) {led_brightness = 255؛ map_white (led_brightness)؛ } آخر {led_brightness = led_brightness + 25؛ map_white (led_brightness)؛ }} آخر {MPR121.digitalWrite (11 ، LOW) ؛ map_white (led_brightness)؛ POWER_STATE = 1 ؛ } } استراحة؛ الحالة 1: {if (POWER_STATE == 1) {MPR121.digitalWrite (11، HIGH)؛ POWER_STATE = 0 ؛ map_white (0)؛ } else {MPR121.digitalWrite (11، LOW)؛ POWER_STATE = 1 ؛ map_white (led_brightness)؛ } استراحة؛ الحالة 2: {if (POWER_STATE == 1) {if (led_brightness <= 30) {led_brightness = 25؛ map_white (led_brightness)؛ } آخر {led_brightness = led_brightness - 25؛ map_white (led_brightness)؛ }} آخر {MPR121.digitalWrite (11 ، LOW) ؛ map_white (led_brightness)؛ POWER_STATE = 1 ؛ } } استراحة؛ الافتراضي: {} فاصل ؛ }}} / * * هذه الوظيفة هي وظيفة القراءة المتقدمة لمستشعر الضوء. يمنحك مستشعر الضوء 32 بتة تمثل كلا من طيف الإضاءة بالأشعة تحت الحمراء والمرئية. يتم الحصول على 16 بت * من الطيف المرئي وإرجاع قيمة لوكس محسوبة للطيف المرئي. * * / uint16_t advancedRead (void) {uint32_t lum = tsl.getFullLuminosity ()؛ // قراءة 32 بت مع أفضل 16 بت من IR ، و 16 بت من أسفل الطيف الكامل uint16_t ، ممتلئ ؛ ir = لوم >> 16 ؛ كامل = lum & 0xFFFF؛ لوكس = tsl.calculateLux (ممتلئة ، بالأشعة تحت الحمراء) ؛ عودة لوكس. } / * * تتناول هذه الوظيفة نقل حزم البيانات المنسقة في JSON. سيتم التحقق من * إذا كان اسم قناتك صحيحًا وإذا كان الأمر كذلك ، فسوف ينشر الحزمة على تلك القناة * / void mqtt_transmit (char buf ) {// الآن يمكننا نشر الأشياء! Serial.print (F (" n Sending JSON"))؛ Serial.print ( "…")؛ if (! IOTLAMP.publish (buf)) {Serial.println (F ("Failed"))؛ } {{Serial.println (F ("OK!")) آخر ؛ Serial.println (BUF)؛ }} / * * تقوم هذه الوظيفة بإعداد MQTT وإعدادها. لديه بيانات للتعامل مع المهلة و * بعد تأسيس اتصال wifi ، يحاول البرنامج الاتصال بـ MQTT. بمجرد أن تتصل * ، يومض باللون الأخضر وينطفئ لإعلامك بأنك متصل. إذا لم تكن متصلاً ، فستظل حمراء طوال فترة البحث عن عملية wifi. * * / void MQTT_connect () {int8_t ret؛ مهلة uint8_t = 10 ؛ // انتظر 10 ثوانٍ للاتصال: bool timedOut = false؛ بينما (WiFi.status ()! = WL_CONNECTED && timedOut == false) {// محاولة الاتصال بشبكة Wifi: digitalWrite (LED_RED، HIGH)؛ Serial.print ("محاولة الاتصال بـ SSID:") ؛ Serial.println (SSID)؛ status = WiFi.begin (ssid، pass)؛ // الاتصال بشبكة WPA / WPA2. قم بتغيير هذا الخط إذا كنت تستخدم شبكة مفتوحة أو WEP: timeout--؛ تأخير (10)؛ if (timeout == 0) {timedOut = true؛ كتابة رقمية (LED_RED ، منخفضة) ؛ } Network_Mode = false ؛ } بينما (timedOut) {Network_Mode = false ؛ Serial.println ("الوضع القديم المقيد") ؛ } if (mqtt.connected ()) {// توقف إذا كان متصلاً بالفعل. Network_Mode = صحيح ؛ إرجاع؛ } Serial.print ("جارٍ الاتصال بـ MQTT …") ؛ بينما ((ret = mqtt.connect ())! = 0) {// connect سيعود 0 للتوصيل Serial.println (mqtt.connectErrorString (ret)) المتصل ؛ Serial.println ("إعادة محاولة الاتصال MQTT في 5 ثوان …") ؛ mqtt.disconnect ()؛ Network_Mode = false ؛ تأخير (500)؛ // wait 5 seconds} Network_Mode = true؛ Serial.println ("MQTT Connected!") ؛ كتابة رقمية (LED_RED ، منخفضة) ؛ كتابة رقمية (LED_GREEN ، عالية) ؛ تأخير (1000)؛ كتابة رقمية (LED_GREEN، LOW)؛ } / * * هذه هي الوظيفة التي تقوم بتنسيق JSON. في الوقت الحالي ، يتم ترميزه بشكل صارم إلى حد ما * وهو غير مرن ، ومع ذلك ، يمكنك بسهولة تغيير هذا ليكون مبني على المعلمات التي تم تمريرها في. * * / String json_Packet () {String pubString = "{" target ": "مصباح " ، "رمز ": "مصباح " ، "؛ قيم السلسلة = "" values ​​ ": {"؛ String onOff = "" lampon ":"؛ بقيت // ints ints بدلاً من وضع علامات اقتباس من حولها لتنسيق JSON String lampState = onOff + POWER_STATE + "،"؛ String brightnessState = "" lampintensity ":"؛ String lamp_brightness = brightnessState + led_brightness + "،"؛ سلسلة lamp_luminosity = "" luminosity ":"؛ String initial_string = pubString + values ​​+ lampState + lamp_brightness + lamp_luminosity؛ إرجاع initial_string ؛ } / * * هذه الوظيفة هي منطق البيانات التي تأتي من قناة الاشتراك. * يتحول تشغيل وإيقاف الإضاءة الخلفية للطاقة LED حسب القيمة المرسلة من قناة subcription *. كما أنه يغير سطوع LED الفعلي بناءً على تلك البيانات * * / / void subscribe_StateChange (JSON & json) {POWER_STATE = json.lamponVal؛ led_brightness = json.brightnessVal؛ if (POWER_STATE == 1) {MPR121.digitalWrite (11، LOW)؛ map_white (led_brightness)؛ } {{MPR121.digitalWrite (11، HIGH)؛ map_white (0)؛ }} / * * هذه الوظيفة هي وظيفة المستوى الأعلى التي تتعامل مع جميع الشبكات. يستدعي الدالة * التي تقوم بإعداد اتصال MQTT. بمجرد التأسيس ، قم بتهيئة مثيل * للاشتراك حيث ستحصل على البيانات منه. ثم قم بإجراء مثيل للبنية التي أنشأناها في وقت سابق والتي ستخزن الحقول التي نحللها من حزمة الاشتراك. نقوم بإنشاء * مخزن مؤقت لتخزين جميع بيانات الاشتراك. ثم تحقق لمعرفة ما إذا كان قد تم لمس زر * الأمر الذي سيؤدي بنا إلى القراءة في البيانات الخفيفة ، وتعبئة البيانات ، ثم إرسال الحزمة. * إذا لم نقم بتغيير حالة المصباح (لمس أي أزرار) ، ثم معرفة ما إذا كان لدينا أي حزم * لقراءتها. إذا قمنا بذلك ، فقم بتحليله وقم بملء الحقول في بنية JSON التي أنشأناها مسبقًا. * * / void network () {MQTT_connect ()؛ اشتراك Adafruit_MQTT_Subscribe * ؛ JSON json؛ السلسلة basic_string = json_Packet ()؛ StaticJsonBuffer <5000> jsonBuffer؛ بينما (cap_touch_activated) {lux = advancedRead ()؛ // يحصل على قيمة lux ويعينها مساوية لـ lux String finalString = basic_string + lux + "}}"؛ char buf finalString.length () + 1؛ finalString.toCharArray (buf، finalString.length () + 1)؛ mqtt_transmit (BUF)؛ cap_touch_activated = خطأ ؛ } بينما ((subscription = mqtt.readSubscription (5000))) {if (subscription == & VIRTUAL_LAMP) {JsonObject & root = jsonBuffer.parseObject ((char *) VIRTUAL_LAMP.lastread)؛ إذا (! root.success ()) {Serial.println ("parseObject () فشل")؛ إرجاع؛ } json.targetVal = root "target"؛ json.codeVal = root "code"؛ json.lamponVal = root "values" "lampon"؛ json.brightnessVal = root "values" "lampintensity"؛ subscribe_StateChange (سلمان)؛ }}}

الشبكات: WIFI ، MQTT و MQTT.fx

هذا قسم مخصص لشرح ماهية MQTT والشبكات بشكل عام! هيا بنا نبدأ!

قبل أن ندخل في مواد MQTT ، ستحتاج إلى إعداد بيانات اعتماد شبكة WIFI الخاصة بك لهذا الجهاز المنفصل. الآن لا يمكن توصيل هذا المصباح بشبكات مؤسسة WPA2 بسبب الأمان. المكتبات غير مصممة للتعامل مع حقول اسم المستخدم. مجرد SSID وكلمة مرور شبكة مما يجعل دعم شبكة المؤسسة غير متوفر في الوقت الحالي. هناك دعم لشبكات WPA و WPA2 الشخصية وشبكات WEP في الوقت الحالي. ستحتاج إلى تغيير SSID وكلمة المرور لبيانات اعتماد الشبكة التي ستستخدمها. انظر الأسطر أدناه:

char ssid = ""؛ // شبكة SSID الخاصة بك (الاسم)
char pass = ""؛ // كلمة مرور الشبكة (استخدم لـ WPA ، أو استخدم كمفتاح لـ WEP) int keyIndex = 0؛ // رقم فهرس مفتاح الشبكة (مطلوب فقط لـ WEP)

لن تحتاج إلى تغيير قيمة KeyIndex إلا إذا كنت تستخدم شبكة WEP.

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

تستخدم MQTT النشر والاشتراك لإرسال البيانات ذهابًا وإيابًا بين الأجهزة وللقيام بذلك ، فإنها تحتاج إلى وسيط بيانات. هذا يعني أنك بحاجة إلى مكان وسيط لإرسال البيانات التي تنشئ "مواضيع" أو القنوات التي ستخصص لنشر البيانات والاشتراك فيها. يعالج هذا الوسيط منطق إرسال البيانات وتلقيها. بالطبع ، ستظل بحاجة إلى كتابة وظائف تحدد المكان الذي تريد فيه على وجه التحديد سحب البيانات من هذا الوسيط أو إرساله أيضًا ، لكن يمكنك مراقبة البيانات التي يتم تلقيها وإرسالها من هذا الوسيط. النشر هو نفس الإرسال ؛ تقوم بحزم بياناتك بالتنسيق الذي تريده أن تكون فيه ثم تعيّن اسم قناة للنشر إليه. بمجرد القيام بذلك ، يمكنك استخدام المكتبات التي قمت بتنزيلها من adafruit لإرسال بياناتك فعليًا إلى هذه القناة وبعد إعداد الوسيط الخاص بك ، يمكنك مشاهدة البيانات التي يتم تلقيها.

الاشتراك أصعب قليلاً من النشر فيما يتعلق باستلام البيانات فعليًا إلى جهازك. مع النشر ، عليك ببساطة الإرسال. لا يهمك بالضرورة تلقي بياناتك أو تحليلها على الطرف الآخر حسب حالة الاستخدام الخاصة بك. ومع ذلك ، مع الاشتراك ، من جانب العميل (الشركة المصنعة للجهاز) للتأكد من قراءة البيانات بشكل صحيح من موضوع قناة الاشتراك ، ولم يتم فقد أية حزم ، وتحليل البيانات ، والرد وفقًا لتلك البيانات. مع الاشتراك ، يجب أن تستمع باستمرار لمعرفة ما إذا كنت تحصل على البيانات ومنع أي شيء آخر من الحدوث لأن حالة جهازك ستتغير بعد فترة وجيزة من تلقي حزمة. الاشتراك يعمل بشكل مشابه لكيفية النشر. يمكنك إنشاء قناة وقراءة البيانات منها من خلال استدعاء دالة (الاشتراك *. readSubscription (int timeout)) من مكتبة Adafruit MQTT. يمكنك باستمرار التنقل بين الحزم والتحليل أثناء الحصول عليها وتغيير الأمور فورًا حول حالة المصباح المادي كنتيجة لذلك. إذا كنت تفعل شيئًا يحتاج تحديدًا إلى معرفة أنه تم استلام كل حزمة وبأي نوعية ، فهناك مجال إضافي لجودة الخدمة مع إرسال كل حزمة. يستخدم هذا لإعلامك بجودة إرسالك. إذا تلقيت جميع الحزم الخاصة بك ، فسيتم إرجاع 2 إليك. هذا يعني أنك أرسلت حزمة بنجاح واستلمت حزمة ping. إذا حصلت على واحدة ، فقد تم إرسال الحزمة ولكن لا يمكنك التأكد من أنك قد استلمتها كلها مرة أخرى. يخبرك QoS of 0 أنك قد أرسلته وليس هناك معلومات إضافية حول ما إذا كان قد تم استلامه أم لا أو ما إذا كنت قد تلقيت كل الحزم أم لا.

الوسيط الذي استخدمناه هو MQTT.fx والذي يجب تنزيله من هنا. MQTT.fx هو وسيط عميل يتعامل مع كل إدارة البيانات. لاستخدامه ، ستحتاج إلى إعداده. أول شيء عليك القيام به هو النقر فوق الترس للإعدادات قبل محاولة الاتصال بـ MQTT.fx. بمجرد النقر فوقها ، ستحتاج إلى منحها عنوان URL (عنوان وسيط) للخادم الذي سترسل البيانات إليه وكذلك رقم المنفذ. قدّم لنفسك اسم ملف تعريف مؤلف لإبقاء الأمور في نصابها الصحيح بالنسبة إلينا ، فقد استخدمنا اسم الملف الشخصي هذا وجعلناه اسم قناة النشر واسم الاشتراك الخاص بنا بالإضافة إلى "/" قبل اسم الملف الشخصي. بعد إدخال كل هذه المعلومات ، قم بإنشاء مفتاح عشوائي والاحتفاظ بسجل لهذا المفتاح. ستستبدل القيمة الخاصة بـ AIO_KEY في الشفرة بهذا المفتاح الجديد الذي أنشأته. يمكنك أيضًا الانتقال إلى علامة التبويب عام وتقديم اسم مستخدم وكلمة مرور ، رغم أننا لم نفعل ذلك ولم يكن ذلك ضروريًا بشكل خاص. بعد ذلك ، تكون جاهزًا للضغط على الزر "تطبيق" والزر "موافق" ثم الضغط على زر "الاتصال" ، ويجب أن تكون مكونًا لخادم عامل. بعد ذلك ، يمكنك كتابة اسم القناة للنشر والاشتراك في علامة التبويب المنسدلة وستظهر لك بياناتك طالما أنك تتضمن خط مائل عكسي أمام اسم القناة. هذا مهم؛ به تنسيق مضغوط في MQTT ولن تظهر بياناتك إذا لم يكن لديك شرطة مائلة عكسية موجودة أمام اسم القناة الذي حددته. بعد هذا ، كنت كل مجموعة!