جدول المحتويات:
- الخطوة 1: مقدمة
- الخطوة 2: تجميع الأجزاء والأدوات
- الخطوة 3: تثبيت Arduino IDE
- الخطوة 4: الكود
- الخطوة 5: مخطط الدائرة
- الخطوة 6: وضع كل ذلك معًا
- الخطوة 7: الخاتمة
فيديو: معبر عن مشاعر النبات الاصطناعي (A.P.E.X.): 7 خطوات (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
ولكن انتظر هناك المزيد!
الخطوة 1: مقدمة
ما هو ابيكس؟
APEX هو جهاز ذكي لمراقبة المصنع (ناهيك عن كونه لطيفًا). فقط قم بتوصيله بأي نبات وسوف يعرض مستوى "السعادة" للنبات! يعد هذا تذكيرًا رائعًا لسقي نباتاتك إذا كانت لديك عادة سيئة تتمثل في نسيان سقايتها.
كيف يعمل؟
سحر. أنا فقط أمزح! يستخدم APEX Arduino متصلًا بجهاز استشعار الرطوبة ، والذي يتم إدخاله في تربة النبات. سيقرأ هذا المستشعر محتوى الرطوبة في التربة ، ثم يقوم Arduino بحساب الوجه المراد عرضه.
لكن لماذا؟
لما لا؟
الخطوة 2: تجميع الأجزاء والأدوات
دعنا ندخله! بالنسبة إلى Instructable ، ستحتاج إلى عدد غير قليل من الأجزاء والأدوات. لحسن الحظ بالنسبة لك ، كلهم مدرجون أدناه:
انطلاقًا من روح مسابقة Microcontrollers ، تم إنشاء هذا المشروع بالكامل من خلال الأجزاء التي تم شراؤها من Amazon! (غير مدعوم)
قائمة الاجزاء:
- اردوينو اونو
- شاشة LED مقاس 8 × 8
- مستشعر اللمس بالسعة
- مستشعر الرطوبة
- موصل بطارية 9 فولت
- بطارية 9 فولت
قائمة الأدوات:
- 22 سلك قياس
- شريط كهربائي
- أدوات تقشير الأسلاك
- لحام حديد
- مضخة ديسولدينغ
بمجرد جمع كل المعدات اللازمة ، حان الوقت لإعداد برنامج Arduino!
الخطوة 3: تثبيت 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 القيم من مستشعر الرطوبة كل بضع ثوانٍ. ثم يتم استخدام هذه المعلومات لحساب وعرض وجه معين! يوجد أيضًا جزء صغير من الكود في النهاية والذي يتيح تشغيل وإيقاف تشغيل زر اللمس السعوي. بسيط جدا أليس كذلك؟
نيتي جريتي
هذا الجزء من البرنامج التعليمي مخصص لأولئك المهتمين جدًا بكيفية عمل البرنامج بأكمله ، سطرًا بسطر. سأقدم لقطات شاشة أعلاه لمساعدتك في فهم ما أتحدث عنه ، بالإضافة إلى تضمين بعض سطور التعليمات البرمجية في هذا الوصف.
ينقسم هذا البرنامج إلى خمسة أقسام:
- بما في ذلك المكتبات وإنشاء المتغيرات
- وظيفة الإعداد
- وظائف لتعبيرات الوجه
- كتابة اردوينو على وظيفة المصفوفة
- وظيفة الحلقة
بما في ذلك المكتبات وإنشاء المتغيرات:
يتعلق القسم الأول من هذا الكود بالمتغيرات والمكتبات التي سنستخدمها.
# تضمين "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! صوت هنا ! شكرا:)
موصى به:
الذكاء الاصطناعي والتعرف على الصور باستخدام HuskyLens: 6 خطوات (بالصور)
الذكاء الاصطناعي والتعرف على الصور باستخدام HuskyLens: مرحبًا ، ما الأمر يا رفاق! Akarsh هنا من CETech. في هذا المشروع ، سنلقي نظرة على HuskyLens من DFRobot. إنها وحدة كاميرا تعمل بالذكاء الاصطناعي وهي قادرة على القيام بالعديد من عمليات الذكاء الاصطناعي مثل التعرف على الوجه
الذكاء الاصطناعي مع Grove Zero و Codecraft (Scratch 3.0): 5 خطوات (بالصور)
AI مع Grove Zero و Codecraft (Scratch 3.0): سنقوم في هذه المقالة ببناء ثلاثة مشاريع باستخدام وظائف الذكاء الاصطناعي في Codecraft ، وهي بيئة برمجة رسومية تعتمد على Scratch 3.0. تم تطوير Codecraft وصيانته بواسطة TinkerGen Education وهو مجاني للاستخدام. AI ومجموعته الفرعية ، أما
معبر العاطفة: 4 خطوات
معبر العاطفة: مقدمة: هذا الجهاز عبارة عن معبر عن المشاعر ، يعمل من خلال مساعدة الأشخاص الذين لا يجيدون التعبير عن مشاعرهم على التعبير عن مشاعرهم. يمكن أن تساعد هذه الآلة الأشخاص الذين يحتاجون إلى المساعدة أو يحتاجون إلى شخص ما للاستماع إليهم يشكو من أشياء
كاشف الثور المدعوم بالذكاء الاصطناعي: 6 خطوات (بالصور)
كاشف الثور المدعوم بالذكاء الاصطناعي: الجهاز الوحيد الذي نحتاجه جميعًا ، كاشف **** الثور المدعوم بالذكاء الاصطناعي
مشروع إشارة مرور اردوينو [مع معبر للمشاة]: 3 خطوات
مشروع إشارات المرور في Arduino [مع Pedestrian Crossing]: إذا كنت تبحث عن شيء سهل وبسيط وفي نفس الوقت تريد إثارة إعجاب الجميع باستخدام Arduino ، فمن المحتمل أن يكون مشروع إشارة المرور هو الخيار الأفضل خاصة عندما تكون مبتدئًا في العالم اردوينو سنرى أولا