بصفتنا مهندسين / مطورين ، نعتمد دائمًا على البيانات التي تم جمعها لتصميم أو تحسين النظام. يعد تسجيل البيانات وتحليلها ممارسة شائعة في معظم الصناعات ، وهنا نقوم ببناء مشروع Arduino Data Logger حيث سنتعلم كيف يمكننا تسجيل البيانات في فترة زمنية محددة. سنستخدم لوحة Arduino لقراءة بعض البيانات (هنا درجة الحرارة والرطوبة والتاريخ والوقت) وحفظها على بطاقة SD والكمبيوتر في وقت واحد.
يمكن فتح البيانات المحفوظة بسهولة في ورقة Excel لمزيد من التحليلات. للحفاظ على التاريخ والوقت ، سنستخدم وحدة RTC الشهيرة DS3231 وللحصول على درجة الحرارة والرطوبة ، سنستخدم مستشعر DHT11. في نهاية المشروع سوف تتعلم
- كيفية تسجيل البيانات في بطاقة SD بقيم التاريخ والوقت والمستشعر.
- كيفية كتابة البيانات مباشرة إلى Excel Sheet على جهاز الكمبيوتر عن طريق الاتصال التسلسلي.
المواد المطلوبة:
- اللوح
- Arduino UNO (أي لوحة Arduino)
- جهاز استشعار درجة الحرارة DHT11
- وحدة DS3231 RTC
- وحدة بطاقة SD
- بطاقة ذاكرة
- توصيل الأسلاك
- حاسوب محمول
مخطط الرسم البياني:
يظهر أدناه مخطط الدائرة لمشروع مسجل درجة حرارة Arduino.
كما هو موضح في الرسم البياني للدائرة ، فإن التوصيلات بسيطة جدًا نظرًا لأننا استخدمناها كوحدات نمطية يمكننا بنائها مباشرة على لوح التجارب. تم تصنيف التوصيلات في الجدول أدناه
اردوينو دبوس |
وحدة دبوس |
مستشعر درجة الحرارة - DHT11 |
|
Vcc |
5 فولت |
Gnd |
Gnd |
ن |
ن |
خارج |
دبوس 7 |
وحدة RTC DS3231 |
|
Vcc |
5 فولت |
Gnd |
Gnd |
SCL |
دبوس A5 |
SDA |
دبوس A4 |
وحدة بطاقة SD |
|
Vcc |
5 فولت |
Gnd |
Gnd |
ميسو |
دبوس 12 |
MOSI |
دبوس 11 |
SCK |
دبوس 13 |
CS |
دبوس 4 |
يمكنك استبدال مستشعر درجة الحرارة DHT11 بأي من المستشعرات التي تحتاج إلى تسجيل القيم منها. يمكنك التحقق من LM35 باستخدام Arduino لقراءة درجة الحرارة.
يتم توصيل وحدة RTC DS3231 مع Arduino باستخدام اتصال I2C (SCL ، SDA) ويتم توصيل وحدة بطاقة SD باستخدام اتصال SPI (MISO ، MOSI ، SCK ، CS). يتم تعريف الدبابيس 4 و 7 على أنها دبوس CS ودبوس الإخراج بواسطة برنامج Arduino ، يمكنك تغييرها إلى أي دبوس آخر إذا لزم الأمر. لقد قمنا سابقًا بتوصيل بطاقة SD مع Arduino في مشروع مشغل الموسيقى.
شرح برنامج اردوينو:
علينا كتابة برنامج Arduino الذي يمكنه القيام بما يلي.
- اقرأ البيانات من مستشعر DTH11 (أو أي بيانات أخرى ترغب في تسجيلها).
- قم بتهيئة ناقل I2C لقراءة البيانات من وحدة RTC.
- قم بتهيئة ناقل SPI لربط وحدة بطاقة SD مع Arduino.
- قم بتخزين التاريخ والوقت ودرجة الحرارة والرطوبة في بطاقة SD.
- قم بتخزين التاريخ والوقت ودرجة الحرارة والرطوبة على ورقة Excel تعمل على جهاز كمبيوتر / كمبيوتر محمول.
قد تبدو الخطوات المذكورة أعلاه معقدة ولكنها سهلة للغاية لأن لدينا المكتبات للقيام بالعمل الشاق من أجلنا. يجب عليك تنزيل المكتبتين التاليتين
- مكتبة مستشعر DHT11 من جيثب
- مكتبة وحدة DS3231 RTC من شركة Rinky-Dink Electronics
بمجرد تنزيل المكتبة ، قم بإضافتها إلى Arduino IDE الخاص بك باتباعك
Sketch-> Include Library -> Add. مكتبة ZIP
لتغذية البيانات من Arduino lively في ورقة Excel على الكمبيوتر ، سنحتاج أيضًا إلى تثبيت برنامج يسمى PLX-DAQ مقدم من شركة Parallax Inc. ، اتبع الرابط لتنزيل الملف وتثبيته بناءً على نظام التشغيل الخاص بك. من المفترض أن يؤدي ذلك إلى إنشاء مجلد باسم PLS-DAQ على سطح المكتب لديك. سنتولى الأمر لاحقًا في قسم العمل لدينا.
الآن بعد إضافة كلتا المكتبتين وبعد تثبيت البرنامج ، يمكنك استخدام الكود الكامل (الوارد في الجزء السفلي من البرنامج التعليمي) وتحميلها على Arduino. لقد بذلت قصارى جهدي لإبقاء الكود بسيطًا قدر الإمكان ويتم تقديم التفسيرات أيضًا من خلال أقسام التعليقات. علاوة على ذلك ، سأشرح الأجزاء المهمة أدناه.
1. قراءة البيانات من DS3231:
DS3231 عبارة عن وحدة نمطية RTC (ساعة الوقت الحقيقي). يتم استخدامه للحفاظ على التاريخ والوقت لمعظم مشاريع الإلكترونيات. تحتوي هذه الوحدة على مصدر طاقة خلية العملة المعدنية الخاص بها والتي تحافظ من خلاله على التاريخ والوقت حتى عند إزالة الطاقة الرئيسية أو انتهاء وحدة MCU من خلال إعادة التعيين الثابت. لذلك بمجرد أن نحدد التاريخ والوقت في هذه الوحدة ، سوف نتابعها دائمًا.
يعد استخدام هذه الوحدة أمرًا سهلاً للغاية بسبب المكتبة التي يوفرها Arduino.
// ابدأ DS3231 باستخدام واجهة الجهاز DS3231 rtc (SDA ، SCL) ؛ void Initialize_RTC () {// تهيئة الكائن rtc rtc.begin () ؛ // #### يمكن إلغاء تعليق الأسطر التالية لتعيين التاريخ والوقت لأول مرة ### / * rtc.setDOW (FRIDAY)؛ // تعيين يوم من الأسبوع على الأحد rtc.setTime (18 ، 46 ، 45) ؛ // ضبط الوقت على 12:00:00 (تنسيق 24 ساعة) rtc.setDate (6 ، 30 ، 2017) ؛ // تعيين التاريخ على 1 كانون الثاني (يناير) 2014 * /}
ملاحظة: عند استخدام هذه الوحدة لأول مرة ، عليك ضبط التاريخ والوقت. يمكن القيام بذلك عن طريق إزالة التعليقات كما هو مذكور أعلاه وكتابة التاريخ والوقت. تأكد من إعادة التعليق عليها وتحميلها ، وإلا فسيتم تعيين التاريخ والوقت مرة أخرى في كل مرة تقوم فيها بتشغيل اللوحة. يمكنك أيضًا استخدام RTC IC DS1307 لقراءة الوقت باستخدام Arduino.
2. قراءة البيانات من DHT11:
DHT11 عبارة عن مستشعر درجة الحرارة والرطوبة. يرسل قيم درجة الحرارة والرطوبة كبيانات 8 بت بشكل متسلسل من خلال دبوس الإخراج للوحدة. تقرأ المكتبة هذه البيانات باستخدام الوظيفة التسلسلية للبرنامج في Arduino.
#define DHT11_PIN 7 // دبوس خرج المستشعر متصل بالدبوس 7 dht DHT ؛ // كائن المستشعر المسمى باسم DHT void Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN) ؛ }
لقد قمت هنا بتوصيل دبوس الإخراج بالدبوس 7 كمثال يمكنك اختيار أي دبوس يدعم Software Serial. استدعاء DHT.read (الرقم السري) ؛ سيقرأ قيمة درجة الحرارة والرطوبة ويخزنها في المعلمة DHT.temperature و DHT.Humidity على التوالي. تحقق أيضًا من قياس درجة حرارة Arduino المستند إلى DHT11.
3. تهيئة وحدة بطاقة SC:
void Initialize_SDcard () {// تحقق مما إذا كانت البطاقة موجودة ويمكن تهيئتها: if (! SD.begin (chipSelect)) {Serial.println ("البطاقة فشلت ، أو غير موجودة") ؛ // لا تفعل أي شيء آخر: العودة ؛ } // افتح الملف. لاحظ أنه يمكن فتح ملف واحد فقط في كل مرة ، // لذلك عليك إغلاق هذا الملف قبل فتح ملف آخر. ملف dataFile = SD.open ("LoggerCD.txt" ، FILE_WRITE) ؛ // إذا كان الملف متاحًا ، فاكتب إليه: if (ملف البيانات) {dataFile.println ("التاريخ والوقت ودرجة الحرارة والرطوبة") ؛ // اكتب الصف الأول من ملف البيانات إكسل dataFile.close () ؛ }}
يعد استخدام بطاقة SD مع Arduino أمرًا سهلاً بسبب مكتبة بطاقة SD التي ستتم إضافتها إلى Arduino IDE افتراضيًا. في وظيفة تهيئة بطاقة SD ، سننشئ ملفًا نصيًا باسم "LoggerCD.txt" ونكتب الصف الأول من المحتوى الخاص بنا. نحن هنا نفصل القيم باستخدام "،" كمحدد. بمعنى أنه عند وضع الفاصلة ، فهذا يعني أنه يتعين علينا الانتقال إلى الخلية التالية في ورقة Excel.
4. كتابة البيانات على بطاقة SD
باطل Write_SDcard () {// افتح الملف. لاحظ أنه يمكن فتح ملف واحد فقط في كل مرة ، // لذلك عليك إغلاق هذا الملف قبل فتح ملف آخر. ملف dataFile = SD.open ("LoggerCD.txt" ، FILE_WRITE) ؛ // إذا كان الملف متاحًا ، فاكتب إليه: if (dataFile) {dataFile.print (rtc.getDateStr ())؛ // تخزين التاريخ في ملف dataFile.print ("،" SD الخاص ببطاقة SD) ؛ // الانتقال إلى العمود التالي باستخدام "،" dataFile.print (rtc.getTimeStr ()) ؛ // تخزين التاريخ في ملف dataFile.print ("،" SD الخاص ببطاقة SD) ؛ // الانتقال إلى العمود التالي باستخدام ملف البيانات "،" dataFile.print (DHT.temperature) ؛ // تخزين التاريخ في ملف dataFile.print ("،" SD الخاص ببطاقة SD) ؛ // الانتقال إلى العمود التالي باستخدام ملف البيانات "،" dataFile.print (DHT.humidity) ؛ // تخزين التاريخ في ملف dataFile.print ("،") على بطاقة SD ؛ // الانتقال إلى العمود التالي باستخدام "،" dataFile.println () ؛ // نهاية الصف انتقل إلى الصف التالي dataFile.close () ؛// أغلق الملف} else Serial.println ("OOPS !! فشل كتابة بطاقة SD") ؛ }
كما ذكرنا سابقًا ، فإن هدفنا هو حفظ التاريخ والوقت ودرجة الحرارة والرطوبة في بطاقة SD الخاصة بنا. بمساعدة مكتبة DS3231 ومكتبة DHT11 ، سيكون بإمكان Arduino قراءة كل هذه المعلمات الأربعة وتخزينها في المعلمات التالية كما هو موضح في الجدول أدناه
تاريخ |
rtc.getDateStr ()) ، |
زمن |
rtc.getTimeStr ()) ، |
درجة الحرارة |
DHT درجة الحرارة |
رطوبة |
الرطوبة DHT |
يمكننا الآن استخدام هذه المعلمات مباشرة لتخزينها على بطاقة SD باستخدام خط الطباعة
dataFile.print (معلمة) ؛
يمكنك ملاحظة أن كل معلمة مفصولة بفاصلة لتبدو مقروئية و dataFile.println () ؛ يستخدم للإشارة إلى نهاية السطر.
5. كتابة البيانات إلى PLX-DAQ
PLX-DAQ هو برنامج Microsoft Excel Plug-in الذي يساعدنا على كتابة القيم من Arduino مباشرة إلى ملف Excel على الكمبيوتر المحمول أو الكمبيوتر الشخصي. هذا هو المفضل لدي لسببين:
1- يمكنك كتابة البيانات ومراقبتها في نفس الوقت وتوفر لنا طريقة لرسمها على هيئة رسوم بيانية.
2. لا تحتاج إلى وحدة RTC مثل DS3231 لتتبع التاريخ والوقت. يمكنك ببساطة استخدام التاريخ والوقت اللذين يتم تشغيلهما على الكمبيوتر المحمول / الكمبيوتر وحفظهما مباشرة في Excel.
لاستخدام هذا البرنامج مع Arduino ، يتعين علينا إرسال البيانات بشكل تسلسلي بنمط معين تمامًا مثل عرض القيمة على الشاشة التسلسلية. الخطوط الرئيسية موضحة أدناه:
void Initialize_PlxDaq () {Serial.println ("CLEARDATA") ؛ // يمسح أي بيانات متبقية من المشاريع السابقة Serial.println ("LABEL ، التاريخ ، الوقت ، درجة الحرارة ، الرطوبة") ؛ // دائمًا اكتب LABEL ، للإشارة إليه كسطر أول} void Write_PlxDaq () {Serial.print ("DATA")؛ // اكتب دائمًا "DATA" لتوضيح ما يلي مثل Data Serial.print ("،") ؛ // الانتقال إلى العمود التالي باستخدام "،" Serial.print ("التاريخ") ؛ // تخزين التاريخ في Excel Serial.print ("،") ؛ // الانتقال إلى العمود التالي باستخدام "،" Serial.print ("TIME") ؛ // تخزين التاريخ في Excel Serial.print ("،") ؛ // الانتقال إلى العمود التالي باستخدام "،" Serial.print (DHT.temperature) ؛ // تخزين التاريخ في Excel Serial.print ("،") ؛ // الانتقال إلى العمود التالي باستخدام "،" Serial.print (DHT.humidity) ؛// تخزين التاريخ في Excel Serial.print ("،") ؛ // الانتقال إلى العمود التالي باستخدام "،" Serial.println () ؛ // نهاية الصف الانتقال إلى الصف التالي}
يمكن للبرنامج التعرف على كلمات رئيسية مثل LABEL و DATA و TIME و DATE إلخ. كما هو موضح في وظيفة التهيئة ، يتم استخدام الكلمة الأساسية "LABEL" لكتابة الصف الأول من ورقة Excel. في وقت لاحق في وظيفة الكتابة ، نستخدم الكلمة الأساسية "DATA" للإشارة إلى أن المعلومات التالية يجب اعتبارها بيانات. للإشارة إلى أنه يتعين علينا الانتقال إلى الصف التالي ، يتعين علينا استخدام الفاصلة ("،"). للإشارة إلى نهاية الصف ، يتعين علينا إرسال Serial.println () ؛.
كما ذكرنا سابقًا ، يمكننا كتابة تاريخ النظام ووقته عن طريق إرسال الكلمتين الرئيسيتين "DATE" و "TIME" على التوالي كما هو موضح أعلاه.
ملاحظة: لا تستخدم جهاز العرض التسلسلي عند استخدام برنامج PLX_DAQ هذا.
شرح العمل:
تشغيل Arduino Data Logger بسيط. بمجرد أن تصبح الأجهزة والبرامج جاهزة ، فقد حان الوقت لنسخ البرنامج في لوحة Arduino. بمجرد تحميل برنامجك ، سيبدأ تخزين قيم درجة الحرارة والرطوبة في بطاقة SD الخاصة بك. يجب عليك اتباع الخطوات أدناه لتمكين PLX-DAQ من تسجيل الدخول إلى ورقة Excel في الكمبيوتر.
الخطوة 1: افتح ملف "Plx-Daq Spreadsheet" الذي تم إنشاؤه على سطح المكتب أثناء التثبيت.
الخطوة 2: إذا كان هناك حظر أمان ، فانقر فوق خيارات-> تمكين المحتوى -> إنهاء -> موافق للحصول على الشاشة التالية.
الخطوة 3: حدد الآن معدل الباود كـ "9600" والمنفذ الذي يتصل به Arduino الخاص بك وانقر فوق "اتصال". يجب أن تبدأ قيمك في التسجيل كما هو موضح في الصورة أدناه.
يمكنك ترك ورقة Excel هذه مفتوحة ومراقبة القيم عند تسجيلها. نظرًا لأن هذا يحدث ، فإن بطاقة SD الخاصة بنا ستوفر أيضًا نفس القيم. للتحقق من أنه يعمل ، ما عليك سوى إزالة بطاقة SD وفتحها على جهاز الكمبيوتر الخاص بك. يجب أن تجد ملفًا نصيًا باسم "LoggerCD.txt" فيه. عند فتحه سيبدو مثل هذا.
يحتوي هذا الملف على بيانات ، ولكن سيكون من الصعب تحليلها على المفكرة. ومن ثم يمكننا فتحه على Excel كملف CSV (قيم مفصولة بفواصل) ، مما يجعله أكثر فعالية. لفتح في Excel
1.افتح برنامج Excel. انقر فوق ملف-> فتح وحدد "كل الملفات" في الزاوية اليمنى السفلية وحدد ملف "LoggerCD" من بطاقة SD. سيؤدي هذا إلى فتح معالج استيراد النص.
2. انقر فوق "التالي" وحدد الفاصلة كمحدد. انقر فوق "التالي" مرة أخرى. ثم انتهى.
3- الآن سيتم فتح قيمك في ملف Excel كما هو موضح أدناه
لقد قمت بتسجيل القيم لكل 5 ثوان ؛ يمكنك تسجيلها في أي وقت تريده عن طريق تغيير وظيفة التأخير في البرنامج. للحصول على فهم مفصل للعمل ، يرجى مشاهدة الفيديو أدناه.
آمل أن يعجبك المشروع ، إذا كان لديك أي شك ، فاكتبها في قسم التعليقات أدناه وسأساعدك.
تحسين المكافأة - تسجيل البيانات لاسلكيًا باستخدام Arduino:
بمجرد نجاحك حتى هذه النقطة ، يمكنك تسجيل البيانات لاسلكيًا مع بعض التطورات وإضافة بضعة أسطر من التعليمات البرمجية.
ما عليك سوى توصيل جهاز Bluetooth مثل HC-05 وكتابة البيانات إلى PLX-DAQ عبر Bluetooth بدلاً من Serial. هذا هو استبدال Serial.print (معلمة) ؛ مع BluetoothName.print (معلمة) ؛ وقم بتوصيل الكمبيوتر المحمول الخاص بك بوحدة البلوتوث الخاصة بك ، وحدد منفذ COM الذي يتصل به جهاز الكمبيوتر المحمول الخاص بك بتقنية Bluetooth و Taadaaa…… لديك نظام تسجيل بيانات لاسلكي يعمل في أي وقت من الأوقات.