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

Arduino Datalogger: 8 خطوات (بالصور)
Arduino Datalogger: 8 خطوات (بالصور)

فيديو: Arduino Datalogger: 8 خطوات (بالصور)

فيديو: Arduino Datalogger: 8 خطوات (بالصور)
فيديو: Using Micro SD Card and Data logging with Arduino | Arduino Step by Step Course Lesson 106 2024, شهر نوفمبر
Anonim
اردوينو داتلوجر
اردوينو داتلوجر
اردوينو داتلوجر
اردوينو داتلوجر

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

للبدء:

ستحتاج إلى حساب Tinkercad (www.tinkercad.com). توجه وقم بالتسجيل باستخدام بريدك الإلكتروني أو حساب الوسائط الاجتماعية الخاص بك.

ينقلك تسجيل الدخول إلى لوحة معلومات Tinkercad. انقر على "دوائر" على اليسار وحدد "إنشاء دائرة جديدة". هيا بنا نبدأ!

يمكنك العثور على الملف الكامل على TInkercad Circuits - شكرًا للتحقق من ذلك!

الخطوة 1: أضف بعض المكونات

أضف بعض المكونات
أضف بعض المكونات
أضف بعض المكونات
أضف بعض المكونات
أضف بعض المكونات
أضف بعض المكونات

ستحتاج إلى بعض المكونات الأساسية. وتشمل هذه:

  • لوحة اردوينو
  • اللوح

قم بإضافة تلك من خلال البحث عنها والنقر مع سحبها إلى المنطقة الوسطى.

ضع اللوح فوق الأردوينو. يجعل من السهل عرض الاتصالات لاحقًا.

الخطوة 2: ملاحظة حول ألواح التوصيل

ملاحظة حول ألواح التوصيل
ملاحظة حول ألواح التوصيل

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

  1. ترتبط النقاط رأسياً ، لكن الخط الموجود في المنتصف يفصل هذا الاتصال عن العمودين العلوي والسفلي.
  2. الأعمدة غير متصلة من اليسار إلى اليمين ، كما هو الحال في الصف. هذا يعني أنه يجب توصيل جميع المكونات عبر الأعمدة بدلاً من أسفلها عموديًا.
  3. إذا كنت بحاجة إلى استخدام الأزرار أو المفاتيح ، فقم بتوصيلها عبر الفاصل في المنتصف. سنقوم بزيارة هذا في برنامج تعليمي لاحق.

الخطوة 3: أضف مستشعرين

أضف مستشعرين
أضف مستشعرين

المستشعران اللذان نستخدمهما هما مستشعر حساس للضوء ومستشعر درجة الحرارة.

تقوم هذه المستشعرات بتقييم الضوء ودرجة الحرارة. نستخدم Arduino لقراءة القيمة وعرضها في الشاشة التسلسلية على Arduino.

ابحث عن المستشعرين وأضفهما. تأكد من وضعهم عبر الأعمدة على لوح التجارب. ضع مسافة كافية بينهما لتسهيل رؤيتهم.

الخطوة 4: مستشعر حساس للضوء

مستشعر حساس للضوء
مستشعر حساس للضوء
مستشعر حساس للضوء
مستشعر حساس للضوء
مستشعر حساس للضوء
مستشعر حساس للضوء
مستشعر حساس للضوء
مستشعر حساس للضوء
  1. بالنسبة للمستشعر الحساس للضوء ، أضف سلكًا من دبوس 5 فولت في Arduino إلى نفس العمود مثل الساق اليمنى على الجزء الموجود في لوح التجارب. قم بتغيير لون السلك إلى اللون الأحمر.
  2. قم بتوصيل الساق اليسرى عبر الدبوس الموجود في نفس العمود بالدبوس A0 (A-zero) في Arduino. هذا هو الدبوس التمثيلي الذي سنستخدمه لقراءة القيمة من المستشعر. لون هذا السلك أصفر أو أي شيء آخر غير الأحمر أو الأسود.
  3. ضع المقاوم (البحث والنقر والسحب) على السبورة. هذا يكمل الدائرة ويحمي المستشعر والمسمار.

    • اقلبها حتى تمر عبر الأعمدة.
    • قم بتوصيل ساق واحدة بعمود الساق اليمنى على اللوح
    • ضع سلكًا من الطرف الآخر للمقاوم على الأرض

      قم بتغيير لون السلك إلى الأسود

  4. تحقق مرتين من جميع التوصيلات. إذا لم يكن هناك شيء في المكان المناسب ، فلن يعمل هذا بشكل صحيح.

الخطوة 5: ابدأ الكود

ابدأ الكود
ابدأ الكود
ابدأ الكود
ابدأ الكود
ابدأ الكود
ابدأ الكود

لنلقِ نظرة على الكود الخاص بهذا المكون.

أولاً ، انظر إلى الصورة الثالثة في هذه الخطوة. يحتوي على بعض التعليمات البرمجية ذات وظيفتين:

الإعداد باطل()

حلقة فارغة()

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

تعمل وظيفة الإعداد مرة واحدة عندما يقوم Arduino بالتمهيد (عند توصيله أو توصيل البطاريات).

تعمل وظيفة الحلقة في حلقة ثابتة من المللي ثانية تكتمل وظيفة الإعداد.

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

مهمة

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

المتغيرات

للبدء ، نحتاج إلى تعيين بعض المتغيرات حتى نجعل الكود الخاص بنا فعالًا حقًا.

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

int بعض Var = A0 ؛

لذلك ، قمنا بتعيين متغير وأعطيناه النوع int. int هو عدد صحيح أو عدد صحيح.

"لكنك لم تستخدم عددًا صحيحًا!" ، أسمعك تقول. هذا صحيح.

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

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

يجب أن يبدو الرمز الخاص بك على النحو التالي:

int lightSensor = A0 ؛

إعداد باطل () {} حلقة باطلة () {}

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

int lightSensor = A0 ؛

إعداد باطل () {pinMode (lightSensor، INPUT) ؛ } حلقة فارغة() { }

تخبر وظيفة pinMode Arduino أنه سيتم استخدام الدبوس (A0) كدبوس INPUT. لاحظ أن camelCaseUsed (انظر إلى كل حرف أول حرف كبير ، لأنه يحتوي على حدبات ، وبالتالي … جمل …!) للمتغيرات وأسماء الوظائف. هذه اتفاقية ومن الجيد أن تعتاد عليها.

أخيرًا ، دعنا نستخدم وظيفة analogRead للحصول على بعض البيانات.

int lightSensor = A0 ؛

إعداد باطل () {pinMode (lightSensor ، INPUT) ؛ } حلقة فارغة () {قراءة int = analogRead (lightSensor) ؛ }

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

int lightSensor = A0 ؛

إعداد باطل () {// Set pin mode pinMode (lightSensor، INPUT)؛ // أضف المكتبة التسلسلية Serial.begin (9600) ؛ } void loop () {// Read the sensor int reading = analogRead (lightSensor)؛ // اطبع القيمة على الشاشة Serial.print ("Light:") ؛ Serial.println (قراءة) ؛ // تأخير الحلقة التالية بمقدار 3 ثوانٍ تأخير (3000) ؛ }

بعض الأشياء الجديدة! أولاً ، سترى ما يلي:

// هذا تعليق

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

الآن ، أضفنا أيضًا المكتبة التسلسلية بالخط

Serial.begin (9600)

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

الشيء التالي الذي قمنا به هو الطباعة على الشاشة التسلسلية. استخدمنا وظيفتين:

// هذا يطبع إلى المسلسل بدون فاصل أسطر (إدخال في النهاية)

Serial.print ("Light:") ؛ // يضع هذا في فاصل الأسطر ، لذا في كل مرة نقرأ ونكتب ، ينتقل إلى سطر جديد Serial.println (قراءة) ؛

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

أخيرًا ، استخدمنا وظيفة التأخير ، لإبطاء الحلقة وجعلها تقرأ مرة واحدة فقط كل ثلاث ثوانٍ. هذا مكتوب بآلاف من الثانية. قم بتغييره للقراءة مرة واحدة فقط كل 5 ثوان.

رائعة! نذهب!

الخطوة 6: المحاكاة

محاكاة
محاكاة
محاكاة
محاكاة
محاكاة
محاكاة

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

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

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

الخطوة 7: قم بربط مستشعر درجة الحرارة

قم بتوصيل مستشعر درجة الحرارة
قم بتوصيل مستشعر درجة الحرارة

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

الآن ، دعنا نحدث الكود.

كود مستشعر درجة الحرارة

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

int lightSensor = A0 ؛

int tempSensor = A1 ؛ إعداد باطل () {// Set pin mode pinMode (lightSensor، INPUT)؛ // أضف المكتبة التسلسلية Serial.begin (9600) ؛ } void loop () {// The temp sensor // إنشاء متغيرين في سطر واحد - يا كفاءة! // Float var لتخزين جهد عائم عشري ، بالدرجات C ؛ // اقرأ قيمة الدبوس وقم بتحويلها إلى قراءة من 0-5 // بشكل أساسي الجهد = (5/1023 = 0.004882814) ؛ الجهد = (analogRead (tempSensor) * 0.004882814) ؛ // تحويل إلى درجات C درجة مئوية = (الجهد - 0.5) * 100 ؛ // طباعة إلى الشاشة التسلسلية Serial.print ("Temp:") ؛ Serial.print (درجات C) ؛ Serial.println ("oC") ؛ // قراءة قراءة int الاستشعار = analogRead (lightSensor) ؛ // اطبع القيمة على الشاشة Serial.print ("Light:") ؛ Serial.println (قراءة) ؛ // تأخير الحلقة التالية بمقدار 3 ثوانٍ تأخير (3000) ؛ }

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

أولا ، أضفت السطر

int tempSensor = A1 ؛

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

ثم أضفنا سطرًا لتخزين القراءة ودرجة الحرارة في صورة عوامة. لاحظ متغيرين في سطر واحد.

الجهد العائم ، درجات C ؛

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

الآن ، سنقوم بقراءته وتخزينه ، ثم نحوله إلى قيمة المخرجات.

الجهد = (analogRead (tempSensor) * 0.004882814) ؛

درجات C = (الجهد - 0.5) * 100 ؛

يبدو هذان الخطان صعبًا ، لكن في الأول نأخذ القراءة ونضربها في 0.004 … لأنها تحول 1023 (القراءة التناظرية تعيد هذه القيمة) إلى قراءة من 5.

السطر الثاني هناك يضرب تلك القراءة في 100 لتحريك الفاصلة العشرية. هذا يعطينا درجة الحرارة. مرتب!

الخطوة 8: الاختبار والفحص

الاختبار والفحص
الاختبار والفحص

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

هل فعلتها؟ شارك وأخبرنا قصتك!

هذه هي الدائرة النهائية المضمنة لك حتى تتمكن من تشغيل / اختبار الإنشاء النهائي. شكرا لإكمال البرنامج التعليمي!

موصى به: