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

معبر عن مشاعر النبات الاصطناعي (A.P.E.X.): 7 خطوات (بالصور)
معبر عن مشاعر النبات الاصطناعي (A.P.E.X.): 7 خطوات (بالصور)

فيديو: معبر عن مشاعر النبات الاصطناعي (A.P.E.X.): 7 خطوات (بالصور)

فيديو: معبر عن مشاعر النبات الاصطناعي (A.P.E.X.): 7 خطوات (بالصور)
فيديو: المشاركات الشعبية بالفرح بالنبي صلى الله عليه وسلم الزف السنوي من مسجد البر إلى دار المصطفى 2024, ديسمبر
Anonim
Image
Image

ولكن انتظر هناك المزيد!

الخطوة 1: مقدمة

مقدمة
مقدمة
مقدمة
مقدمة
مقدمة
مقدمة

ما هو ابيكس؟

APEX هو جهاز ذكي لمراقبة المصنع (ناهيك عن كونه لطيفًا). فقط قم بتوصيله بأي نبات وسوف يعرض مستوى "السعادة" للنبات! يعد هذا تذكيرًا رائعًا لسقي نباتاتك إذا كانت لديك عادة سيئة تتمثل في نسيان سقايتها.

كيف يعمل؟

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

لكن لماذا؟

لما لا؟

الخطوة 2: تجميع الأجزاء والأدوات

تجميع الأجزاء والأدوات
تجميع الأجزاء والأدوات
تجميع الأجزاء والأدوات
تجميع الأجزاء والأدوات
تجميع الأجزاء والأدوات
تجميع الأجزاء والأدوات

دعنا ندخله! بالنسبة إلى Instructable ، ستحتاج إلى عدد غير قليل من الأجزاء والأدوات. لحسن الحظ بالنسبة لك ، كلهم مدرجون أدناه:

انطلاقًا من روح مسابقة Microcontrollers ، تم إنشاء هذا المشروع بالكامل من خلال الأجزاء التي تم شراؤها من Amazon! (غير مدعوم)

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

  • اردوينو اونو
  • شاشة LED مقاس 8 × 8
  • مستشعر اللمس بالسعة
  • مستشعر الرطوبة
  • موصل بطارية 9 فولت
  • بطارية 9 فولت

قائمة الأدوات:

  • 22 سلك قياس
  • شريط كهربائي
  • أدوات تقشير الأسلاك
  • لحام حديد
  • مضخة ديسولدينغ

بمجرد جمع كل المعدات اللازمة ، حان الوقت لإعداد برنامج Arduino!

الخطوة 3: تثبيت Arduino IDE

تثبيت Arduino IDE
تثبيت Arduino IDE
تثبيت Arduino IDE
تثبيت Arduino IDE
تثبيت Arduino IDE
تثبيت Arduino IDE

لكي يعمل هذا المشروع ، سنحتاج إلى أن نكون قادرين على برمجة Arduino. يتطلب ذلك تنزيل Arduino Integrated Development Environment (IDE) وتثبيتها على جهاز الكمبيوتر الخاص بك. إنه شرح بسيط إلى حد ما ، لكنني سأوجهك خلال العملية:

1. قم بزيارة موقع Arduino الإلكتروني

2. انتقل إلى صفحة التنزيلات (البرامج> التنزيلات)

3. انقر فوق ارتباط التنزيل لنظام التشغيل الخاص بك

ملاحظة جانبية: سيعمل البرنامج على أنظمة تشغيل Windows و Mac و Linux.

4. التثبيت على نظام التشغيل Windows

  • انقر نقرًا مزدوجًا فوق الملف الذي تم تنزيله لتشغيله
  • انقر فوق "موافق" للموافقة على الترخيص
  • اتبع بقية المطالبات
  • يجب تثبيت البرنامج الآن!

(تأكد من إلقاء نظرة على لقطات الشاشة إذا ضاعت)

5. التثبيت على نظام التشغيل Mac

  • انقر فوق الملف الذي تم تنزيله
  • اختر "فتح"
  • سيتم تثبيت البرنامج وتشغيله تلقائيًا!

(تأكد من إطلاعك على لقطات الشاشة إذا كنت مرتبكًا)

6. هذا كل شيء

وانت انتهيت! لديك الآن Arduino IDE تم تنزيله على نظامك!

الخطوة 4: الكود

الرمز
الرمز
الرمز
الرمز
الرمز
الرمز

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

نظرة عامة موجزة

لأولئك منكم غير المهتمين بالشرح التفصيلي للرمز ، أقدم شريحة TL؛ DR! ها هو التفسير الأساسي. يلتقط Arduino القيم من مستشعر الرطوبة كل بضع ثوانٍ. ثم يتم استخدام هذه المعلومات لحساب وعرض وجه معين! يوجد أيضًا جزء صغير من الكود في النهاية والذي يتيح تشغيل وإيقاف تشغيل زر اللمس السعوي. بسيط جدا أليس كذلك؟

نيتي جريتي

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

ينقسم هذا البرنامج إلى خمسة أقسام:

  1. بما في ذلك المكتبات وإنشاء المتغيرات
  2. وظيفة الإعداد
  3. وظائف لتعبيرات الوجه
  4. كتابة اردوينو على وظيفة المصفوفة
  5. وظيفة الحلقة

بما في ذلك المكتبات وإنشاء المتغيرات:

يتعلق القسم الأول من هذا الكود بالمتغيرات والمكتبات التي سنستخدمها.

# تضمين "LedControlMS.h"

#define TouchSensor 7 LedControl lc = LedControl (12، 11، 10، 1)؛ حساس int sensorPin = A5 ؛ حساس intValue = 0 ؛ بدأت منطقية = خطأ ؛ منطقي = صحيح ؛ ضغط منطقي = منخفض ؛

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

بايت ابتسامة [4] = {B00000100، B00110010، B01100100، B01100000}؛ بايت مفاجأة [4] = {B00001110، B00001010، B01101110، B10010000} ؛ بايت meh [4] = {B00000100 ، B00100100 ، B00100100 ، B00100000} ؛ بايت حزين [4] = {B00000010، B01100100، B00110010، B00110000} ؛ بايت ميت [6] = {B00001010، B00100100، B00101010، B00100000، B01100000، B01101010} ؛ خطأ بايت [8] = {B00111100 ، B01000010 ، B10100001 ، B10010001 ، B10001001 ، B10000101 ، B01000010 ، B00111100} ؛ // Evil Faces byte esmile [4] = {B00000010، B00101010، B01000100، B01000000} ؛ بايت elaugh [4] = {B00000010، B00101010، B01100100، B01100000} ؛ بايت eplain [4] = {B00000010، B00101010، B00100100، B00100000} ؛ byte eyell [4] = {B00000001، B01101001، B01100010، B01100000} ؛ بايت etalk [4] = {B00000001، B00101001، B01100010، B01100000} ؛

تمثل هذه القيم جميع وجوه APEX. كل بايت عبارة عن مصفوفة تحتوي على وحدات بت متعددة تحدد حالة كل بكسل في صف معين. يمثل "1" و "0" تشغيل / إيقاف على التوالي.

وظيفة الإعداد:

بالانتقال إلى القسم التالي ، لدينا وظيفة الإعداد الخاصة بنا.

إعداد باطل () {// MS Serial Output Serial.begin (9600) ؛

pinMode (TouchSensor ، INPUT) ؛

// إعداد مصفوفة LED lc.shutdown (0 ، خطأ) ؛ كثافة lc.set (0 ، 4) ؛ lc.clearDisplay (0) ، }

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

وظائف تعابير الوجه:

ربما يكون هذا هو أطول قسم على الإطلاق ، لكنه بسيط للغاية ومتكرر.

كسر باطل () {lc.setRow (0، 0، error [0])؛ lc.setRow (0، 1، error [1]) ؛ lc.setRow (0، 2، error [2]) ؛ lc.setRow (0، 3، error [3]) ؛ lc.setRow (0، 4، error [4]) ؛ lc.setRow (0، 5، error [5]) ؛ lc.setRow (0، 6، error [6]) ؛ lc.setRow (0، 7، error [7]) ؛ }

سعيد باطل () {

lc.setRow (0، 0، smile [0]) ؛ lc.setRow (0، 1، smile [1]) ؛ lc.setRow (0، 2، smile [2]) ؛ lc.setRow (0، 3، smile [3]) ؛ lc.setRow (0، 4، smile [3]) ؛ lc.setRow (0، 5، smile [2]) ؛ lc.setRow (0، 6، smile [1]) ؛ lc.setRow (0، 7، smile [0]) ؛ }

عادي باطل () {

lc.setRow (0، 0، meh [0]) ؛ lc.setRow (0، 1، meh [1]) ؛ lc.setRow (0، 2، meh [2]) ؛ lc.setRow (0، 3، meh [3]) ؛ lc.setRow (0، 4، meh [3]) ؛ lc.setRow (0، 5، meh [2]) ؛ lc.setRow (0، 6، meh [1]) ؛ lc.setRow (0، 7، meh [0]) ؛ }

فوجئ باطل () {

lc.setRow (0، 0، surprise [0])؛ lc.setRow (0، 1، surprise [1]) ؛ lc.setRow (0، 2، surprise [2])؛ lc.setRow (0، 3، surprise [3])؛ lc.setRow (0، 4، surprise [3]) ؛ lc.setRow (0، 5، surprise [2]) ؛ lc.setRow (0، 6، surprise [1]) ؛ lc.setRow (0، 7، surprise [0])؛ }

الموت الباطل () {

lc.setRow (0، 0، dead [0]) ؛ lc.setRow (0، 1، dead [1]) ؛ lc.setRow (0، 2، dead [2]) ؛ lc.setRow (0، 3، dead [3]) ؛ lc.setRow (0، 4، dead [4]) ؛ lc.setRow (0، 5، dead [5]) ؛ lc.setRow (0، 6، dead [1]) ؛ lc.setRow (0، 7، dead [0]) ؛ }

بكاء باطل () {

lc.setRow (0، 0، sad [0]) ؛ lc.setRow (0، 1، sad [1]) ؛ lc.setRow (0، 2، sad [2]) ؛ lc.setRow (0، 3، sad [3]) ؛ lc.setRow (0، 4، sad [3]) ؛ lc.setRow (0، 5، sad [2]) ؛ lc.setRow (0، 6، sad [1]) ؛ lc.setRow (0، 7، sad [0]) ؛ }

باطل شرور () {

lc.setRow (0، 0، esmile [0]) ؛ lc.setRow (0، 1، esmile [1]) ؛ lc.setRow (0، 2، esmile [2]) ؛ lc.setRow (0، 3، esmile [3]) ؛ lc.setRow (0، 4، esmile [3]) ؛ lc.setRow (0، 5، esmile [2]) ؛ lc.setRow (0، 6، esmile [1]) ؛ lc.setRow (0، 7، esmile [0]) ؛ }

الشر الباطل () {

lc.setRow (0، 0، elaugh [0]) ؛ lc.setRow (0، 1، elaugh [1]) ؛ lc.setRow (0، 2، elaugh [2]) ؛ lc.setRow (0، 3، elaugh [3]) ؛ lc.setRow (0، 4، elaugh [3]) ؛ lc.setRow (0، 5، elaugh [2]) ؛ lc.setRow (0، 6، elaugh [1]) ؛ lc.setRow (0، 7، elaugh [0]) ؛ }

مفهوم شرير باطل () {

lc.setRow (0، 0، eplain [0]) ؛ lc.setRow (0، 1، eplain [1]) ؛ lc.setRow (0، 2، eplain [2]) ؛ lc.setRow (0، 3، eplain [3]) ؛ lc.setRow (0، 4، eplain [3]) ؛ lc.setRow (0، 5، eplain [2]) ؛ lc.setRow (0، 6، eplain [1]) ؛ lc.setRow (0، 7، eplain [0]) ؛ }

باطل evilyell () {

lc.setRow (0، 0، eyell [0]) ؛ lc.setRow (0، 1، eyell [1]) ؛ lc.setRow (0، 2، eyell [2]) ؛ lc.setRow (0، 3، eyell [3]) ؛ lc.setRow (0، 4، eyell [3]) ؛ lc.setRow (0، 5، eyell [2]) ؛ lc.setRow (0، 6، eyell [1]) ؛ lc.setRow (0، 7، eyell [0]) ؛ }

eviltalk باطل () {

lc.setRow (0، 0، etalk [0]) ؛ lc.setRow (0، 1، etalk [1]) ؛ lc.setRow (0، 2، etalk [2]) ؛ lc.setRow (0، 3، etalk [3]) ؛ lc.setRow (0، 4، etalk [3]) ؛ lc.setRow (0، 5، etalk [2]) ؛ lc.setRow (0، 6، etalk [1]) ؛ lc.setRow (0، 7، etalk [0]) ؛ }

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

وظيفة WriteArduinoOnMatrix:

القسم الرابع يستخدم لحساب وكتابة الوجوه المناسبة على شاشة LED. يتكون من سلسلة من عبارات else if التي تتحقق من قيم المياه ثم تعين العرض عن طريق استدعاء وظائف مختلفة من القسم السابق.

void writeArduinoOnMatrix () {if (sensorValue> 0 && sensorValue 30 && sensorValue 100 && sensorValue 200 && sensorValue 400 && sensorValue 650 && sensorValue <= 800) {surprised ()؛ } آخر {مكسور () ؛ }}

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

وظيفة الحلقة:

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

حلقة باطلة () {إذا (بدأت == صحيح) {delaytime = 3000 ؛ } // ضغط زر القراءة = digitalRead (TouchSensor) ؛

إذا (تم الضغط عليه) {

إذا (on == true) {lc.clearDisplay (0) ؛ على = خطأ ؛ تأخير (تأخير) ؛ } else {on = true؛ تأخير (تأخير) ؛ }} sensorValue = analogRead (sensorPin) ؛ تأخير (تأخير) ؛ if (on == true) {// Draw Faces writeArduinoOnMatrix () ؛ }

بدأت = صحيح ؛

}

هذا كل ما في الكود. نأمل الآن أن يكون لديك فهم أفضل لكيفية عمل كل شيء ، ويمكنك استخدام هذه المعرفة لبدء تخصيصها لمشروعك!

دفع الكود إلى Arduino

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

الخطوة 5: مخطط الدائرة

مخطط الرسم البياني
مخطط الرسم البياني

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

شاشة LED:

  • VCC -> 5 فولت
  • GRD -> GRD
  • DIN -> دبوس 12
  • CS -> دبوس 10
  • CLK -> دبوس 11

مستشعر الرطوبة:

  • موجب -> 5V
  • سلبي -> GRD
  • الإشارة -> A5

مستشعر اللمس السعوي:

  • VCC -> 5 فولت
  • GRD -> GRD
  • SIG -> 7

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

الخطوة 6: وضع كل ذلك معًا

ضع كل شيء معا
ضع كل شيء معا
ضع كل شيء معا
ضع كل شيء معا
ضع كل شيء معا
ضع كل شيء معا

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

تهانينا! إذا تم كل شيء بنجاح ، يجب أن يكون لديك الآن وحدة APEX تعمل بكامل طاقتها!

لاختبار وحدتك ، ابحث عن نبتة مروية وقم بتوصيلها! يجب أن تجد أنها إما سعيدة أو متفاجئة وهذا يعني أنها يجب أن تعمل !!! عمل رائع لإكمال المشروع!

الخطوة 7: الخاتمة

استنتاج
استنتاج

وهذا هو كل شيء Instructable! شكرا لتفقدك المشروع! اترك أي أسئلة وتعليقات أدناه وتأكد من اتباع Urban Farming Guys لمزيد من البرامج التعليمية الرائعة مثل هذا! نود أن نسمع كيف سار تصميم APEX الخاص بك ، والصور موضع تقدير كبير! شكرا مرة أخرى لزيارتكم ، أتمنى لك يوما سعيدا!

(هذا Instructable مستوحى من مشروع قديم ، Plant Emoji!)

ملاحظة. تم إدخال هذا Instructable في مسابقة Microcontrollers ، لذلك لا تنس التصويت لنا! نحن نقدر ذلك كثيرا:)

P. دعنا نحصل على APEX في Make Magazine! صوت هنا ! شكرا:)

موصى به: