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

قم ببناء وحدة اللمعان باستخدام AtHome: 7 خطوات
قم ببناء وحدة اللمعان باستخدام AtHome: 7 خطوات

فيديو: قم ببناء وحدة اللمعان باستخدام AtHome: 7 خطوات

فيديو: قم ببناء وحدة اللمعان باستخدام AtHome: 7 خطوات
فيديو: دمج المراسلات - إنشاء 1000 شهادة تقدير وإرسالها ل 1000 طالب بأسماء مختلفة في خطوة واحدة 2024, شهر نوفمبر
Anonim
قم ببناء وحدة اللمعان باستخدام AtHome
قم ببناء وحدة اللمعان باستخدام AtHome

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

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

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

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

الخطوة 1: تجميع المكونات

تجميع المكونات
تجميع المكونات

بالنسبة لهذا المشروع ، ستحتاج إلى بعض المكونات لبناء وحدة AtHome الخاصة بك:

  • لوحة متوافقة مع Arduino 1x: سأستخدم هنا Arduino UNO (ولكنها تعمل أيضًا مع لوحات أخرى مثل TI Launchpads ولوحات ESP8266)
  • مستشعر 1x: سأستخدم مستشعر الإضاءة TSL2561 (قائمة المستشعرات المدعومة متاحة في وثائق مكتبتنا)
  • 1x led: سأستخدم Grove Chainable RGB LED هنا (ولكن يمكن أن يكون أيضًا مصباحًا أحمر بسيطًا أو NeoPixel)
  • أسلاك دوبونت

قائمة المكونات المتوافقة متاحة في وثائق مشروعنا.

الخطوة الثانية: تثبيت مكتبتنا

تثبيت مكتبتنا
تثبيت مكتبتنا
تثبيت مكتبتنا
تثبيت مكتبتنا

لتثبيت مكتبتنا ، ستحتاج إلى التنزيل من مستودعنا (سننشره لاحقًا في قائمة Arduino IDE و PlatformIO) باستخدام هذا الرابط:

gitlab.com/Woodbox/Framework/-/jobs/artifacts/master/download؟job=deploy

بعد ذلك ، انتقل إلى Arduino IDE واختر "Sketch> Include Library> Add. ZIP Library…". ثم حدد ملف مضغوط باسم "artifacts.zip" وانقر على "موافق".

الخطوة الثالثة: تثبيت المكتبات المطلوبة

تثبيت المكتبات المطلوبة
تثبيت المكتبات المطلوبة
تثبيت المكتبات المطلوبة
تثبيت المكتبات المطلوبة
تثبيت المكتبات المطلوبة
تثبيت المكتبات المطلوبة

للعمل ، تحتاج مكتبتنا إلى تثبيت بعض المكتبات الأخرى على جهاز الكمبيوتر الخاص بك:

  • مكتبة Arkhipenko TaskScheduler
  • مكتبة SEEED Studio Grove Digital Light Sensor
  • مكتبة SEEED Studio Grove Chainable RGB LED
  • مكتبة Adafruit NeoPixel

يمكنك تثبيتها من خلال مدير مكتبة Arduino IDE ، من خلال الانتقال إلى "Sketch"> "Include Library"> "Manage libraries…".

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

الخطوة 4: تجميع الوحدة

تجميع الوحدة
تجميع الوحدة

سنبدأ بالمستشعر. قم بتوصيل دبوس VCC الخاص بـ TSL2561 عبر سلك بدبوس 5 فولت في Arduino ، ودبوس GND الخاص بالمستشعر بأحد دبوس GND في Arduino ودبابيس SDA و SCL الخاصة بالمستشعر إلى دبابيس SDA و SCL في Arduino. الآن انتهيت!

الآن ، قم بتوصيل دبوس VCC الخاص بـ Grove Chainable RGB LED بدبوس 5V من Arduino ودبوس GND الخاص بـ LED إلى GND الثاني من Arduino. إذا كنت تستخدم Arduino كدبوس واحد فقط بجهد 5 فولت ، فيمكنك استخدام لوحة توصيل لتوصيل 5 فولت من Arduino بصف + من اللوح وتوصيل جميع دبابيس المكونات 5 فولت عليها ، أو لحامها معًا على قطعة من اللوح الشريطي أو استخدم موصلات wago أو ما تفضله. الآن ، قم بتوصيل دبوس CI الخاص بمؤشر LED الخاص بك بالدبوس 7 من Arduino ودبوس DI الخاص بمؤشر LED الخاص بك بالطرف 8 من Arduino. إذا لم يكن لديك مثل هذا LED ، فلا تقلق ، فمن الممكن استخدام LED المدمج في لوحة Arduino أو المصباح الكلاسيكي مع تغيير بسيط في الكود.

الخطوة 5: كتابة رسم وحدة اللمعان

كتابة رسم وحدة اللمعان
كتابة رسم وحدة اللمعان

دعنا ننشئ رسمًا جديدًا ونكتب رمز الوحدة الخاصة بنا.

إذا لم تكن مهتمًا بشرح المخطط ، فيمكنك فقط نسخه ولصقه في Arduino IDE الخاص بك:

#يشمل

باستخدام LightModule = AtHomeModule ؛ تيار * تيارات = {& المسلسل ، nullptr} ؛ GroveChainableLED:: دبابيس grovePins = {7 ، 8} ؛ قاد GroveChainableLED (& grovePins) ؛ LightModule * module = LightModule:: getInstance () ؛ إعداد باطل () {// ضع كود الإعداد هنا ، للتشغيل مرة واحدة: Serial.begin (9600)؛ وحدة> setStreams (تيارات) ؛ GroveDigitalLightSensor * lightSensor = new GroveDigitalLightSensor () ؛ الوحدة النمطية-> setSensor (lightSensor) ؛ وحدة> setDisplay (وأدى) ؛ الوحدة النمطية-> الإعداد () ؛ } void loop () {// ضع الكود الرئيسي هنا ، للتشغيل بشكل متكرر: module-> run ()؛ }

إذا كنت تريد فهم كل ما تفعله هذه الشفرة ، فيمكنك قراءة ما يلي أو إذا لم تكن مهتمًا ، يمكنك الانتقال مباشرةً إلى الخطوة التالية.

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

#يشمل

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

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

باستخدام LightModule = AtHomeModule ؛

تعني الكلمة الرئيسية "using" أننا ننشئ اسمًا مستعارًا وأن الاسم الذي نطلقه عليه بعد ذلك مباشرةً يتوافق مع التسلسل الذي يلي الحرف "=".

"AtHomeModule" هو الاسم الحقيقي لهذا المربع الذي نعطيه اسمًا جديدًا ، والمعلمات التي تحدد تمثيل القيمة وعدد القيم المحفوظة في الذاكرة مذكورة بين "".

الآن ، عندما نستخدم الاسم "AtHomeModule" لاحقًا ، سيعرف Arduino أنه يشير إلى الاسم الكامل "AtHomeModule".

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

بعد ذلك ، نحتاج إلى إنشاء مجموعة من المؤشرات التي تحتوي على مؤشرات على تدفقات Arduino التي تستخدمها الوحدة النمطية للتواصل ، والتي يتم إنهاؤها دائمًا بواسطة keyworkd "nullptr". هنا ، أنا أستخدم فقط التدفق "التسلسلي" من Arduino الذي يتواصل مع الكمبيوتر عن طريق منفذ USB ، لذلك تبدو المصفوفة كما يلي:

تيار * تيارات = {& المسلسل ، nullptr} ؛

يعني الحرف "*" أن النوع هو مؤشر (موقع العنصر ، وليس العنصر نفسه) وتعني الأقواس "" في Arduino أنها مصفوفة ، لذلك يمكننا وضع قيم متعددة.

بعد ذلك ، نحتاج إلى إنشاء مصباح LED الخاص بنا. للقيام بذلك ، نحتاج إلى كتابة السطرين التاليين ؛

GroveChainableLED:: دبابيس grovePins = {7 ، 8} ؛

قاد GroveChainableLED (& grovePins) ؛

إذا لم يكن لديك Grove RGB LED ولكنك لا تزال ترغب في الحصول على ملاحظات مرئية ، فيمكنك القيام بذلك بتغيير بسيط في الرسم التخطيطي. استبدل السطرين السابقين بهذا السطر:

ليد أحادي اللون (LED_BUILTIN) ؛

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

LED أحادي اللون (LED_BUILTIN ، صحيح) ؛

الخطوة التالية هي إنشاء الوحدة نفسها. تم ذلك في المرة الأولى التي نحصل فيها على موقعه في الذاكرة عن طريق استدعاء طريقة "getInstance" ، على النحو التالي:

LightModule * module = LightModule:: getInstance () ؛

بعد ذلك ، نحتاج إلى ضبط المعلمات في وظيفة "setup ()" في Arduino ، بدءًا من تهيئة المنفذ "Serial" كالمعتاد في رسومات Arduino:

Serial.begin (9600) ؛

نقوم بإنشاء مستشعر الضوء من خلال كتابة هذا السطر:

GroveDigitalLightSensor * lightSensor = new GroveDigitalLightSensor () ؛

بعد ذلك ، نطلب من الوحدة الخاصة بنا استخدام مجموعة المؤشرات الخاصة بنا على Arduino Stream للتواصل من خلالها:

الوحدة النمطية-> setStreams (تيارات) ؛

نطلب أيضًا من وحدتنا استخدام مستشعر الضوء الخاص بنا لمراقبة شدة الضوء حيث تكون الوحدة:

الوحدة النمطية-> setSensor (lightSensor) ؛

نطلب من الوحدة الخاصة بنا استخدام LED الخاص بنا لتزويدنا بتعليقات بصرية:

وحدة> setDisplay (وأدى) ؛

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

الوحدة النمطية-> الإعداد () ؛

خطوتنا الأخيرة الآن هي استدعاء وظيفة "run ()" لوحدتنا ، والتي صُممت ليتم استدعاؤها عند كل تكرار لوظيفة "loop" في Arduino عن طريق كتابة هذا السطر داخل وظيفة "loop":

وحدة> تشغيل () ؛

الآن ، أصبح رسمنا جاهزًا أخيرًا للتحميل إلى Arduino واختبار وحدتنا!

الخطوة السادسة: اختبار وحدة AtHome

اختبار وحدة AtHome الخاصة بنا
اختبار وحدة AtHome الخاصة بنا
اختبار وحدة AtHome الخاصة بنا
اختبار وحدة AtHome الخاصة بنا

لتحميل الرسم التخطيطي إلى Arduino ، اختر لوحة Arduino UNO الخاصة بك بالانتقال إلى "Tools"> "Port"> "[COMx أو / dev / x] (Arduino / Genuino UNO)".

آخر شيء ، ما عليك سوى النقر فوق الزر "تحميل" (زر الدائرة مع سهم يشير إلى اليمين ، الرمز الثاني لشريط الأدوات) لتحميل الرسم في لوحتك.

تم التنفيذ! الآن يجب أن تعمل الوحدة النمطية الخاصة بك وترسل القيم إلى جهاز الكمبيوتر الخاص بك مرئية في Serial Monitor of Arduino. يمكنك التحقق من ذلك عن طريق فتح "Serial Monitor" الخاص بـ Arduino في قائمة "Tools" ويجب أن يكون لديك إخراج يشبه صورة العنوان الثانية لهذه الخطوة:)

الخطوة 7: بناء حالة للوحدة

بناء حالة للوحدة
بناء حالة للوحدة

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

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

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

الآن فقط أضف بطارية لتشغيل Arduino ، أغلق العلبة وستكون الوحدة النمطية الخاصة بك جاهزة ويجب أن تبدو جيدة:)

موصى به: