כמהנדסים / מפתחים אנו תמיד מסתמכים על הנתונים שנאספו כדי לעצב או לשפר את המערכת. הקלטת נתונים וניתוחם הם נוהגים מקובלים ברוב הענפים, כאן אנו בונים את פרויקט לוגר הנתונים של ארדואינו בו נלמד כיצד אנו יכולים לרשום נתונים בפרק זמן מסוים. נשתמש בלוח של Arduino כדי לקרוא כמה נתונים (כאן טמפרטורה, לחות, תאריך ושעה) ונשמור אותם בכרטיס SD ובמחשב בו זמנית.
ניתן לפתוח את הנתונים השמורים בקלות בגיליון Excel להמשך ניתוח. כדי לשמור על התאריך והשעה נשתמש במודול ה- RTC המפורסם DS3231 וכדי לקבל את הטמפרטורה והלחות נשתמש בחיישן DHT11. בסוף הפרויקט תלמד
- כיצד להיכנס נתונים לכרטיס SD עם ערכי תאריך, שעה וחיישן.
- כיצד לכתוב נתונים ישירות לגליון Excel במחשב באמצעות תקשורת טורית.
חומרים נדרשים:
- קרש לחם
- ארדואינו UNO (כל לוח ארדואינו)
- חיישן טמפרטורה DHT11
- מודול DS3231 RTC
- מודול כרטיס SD
- כרטיס זיכרון
- חוטי חיבור
- מחשב / מחשב נייד
תרשים מעגל:
תרשים המעגל עבור פרויקט לוגר טמפרטורות זה ב- Arduino מוצג להלן.
כפי שמוצג בתרשים המעגלים החיבורים פשוטים מאוד מכיוון שהשתמשנו בהם כמודולים שנוכל לבנות אותם ישירות על קרש לחם. החיבורים מסווגים עוד יותר בטבלה שלהלן
פין ארדואינו |
סיכת מודול |
חיישן טמפרטורה - DHT11 |
|
Vcc |
5V |
Gnd |
Gnd |
Nc |
Nc |
הַחוּצָה |
סיכה 7 |
מודול RTC DS3231 |
|
Vcc |
5V |
Gnd |
Gnd |
SCL |
סיכה A5 |
SDA |
הצמד A4 |
מודול כרטיס SD |
|
Vcc |
5V |
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 מבית GitHub
- ספריית מודולי RTC DS3231 מבית Rinky-Dink Electronics
לאחר שהורדת את הספרייה הוסף אותם ל- ID של Arduino על ידי ביצוע
סקיצה-> כלול ספרייה -> הוסף ספריית.ZIP
כדי להזין את הנתונים מארדואינו באופן חי בגליון אקסל במחשב נצטרך להתקין תוכנה בשם PLX-DAQ המסופקת על ידי Parallax Inc. עקוב אחר הקישור להורדת הקובץ והתקנתם בהתבסס על מערכת ההפעלה שלך. זה אמור היה ליצור תיקיה בשם PLS-DAQ על שולחן העבודה שלך. אנו נטפל בזה בהמשך מדור העבודה שלנו.
כעת לאחר הוספת שתי הספריות ולאחר התקנת התוכנה, תוכלו להשתמש בקוד השלם (המופיע בתחתית ההדרכה) ולהעלות אותם לארדואינו שלכם. ניסיתי בכל כוחי לשמור על הקוד הכי פשוט שאפשר וההסברים ניתנים גם באמצעות קטעי תגובה. בהמשך, אסביר את החלקים החשובים להלן.
1. קריאת נתונים מ- DS3231:
DS3231 הוא מודול RTC (שעון זמן אמת). הוא משמש לשמירה על התאריך והשעה עבור מרבית פרויקטי האלקטרוניקה. למודול זה יש ספק כוח מטבע משלו באמצעותו הוא שומר על התאריך והשעה גם כאשר הספק הראשי הוסר או שה- MCU עבר איפוס קשה. אז ברגע שנקבע את התאריך והשעה במודול זה הוא יעקוב אחריו תמיד.
השימוש במודול זה קל מאוד בגלל הספרייה שמספקת Arduino.
// ראשוני את ה- DS3231 באמצעות ממשק החומרה DS3231 rtc (SDA, SCL); בטל Initialize_RTC () {// אתחל את האובייקט rtc rtc.begin (); // #### לא ניתן להגדיר את השורות הבאות כדי לקבוע את התאריך והשעה בפעם הראשונה ### / * rtc.setDOW (FRIDAY); // הגדר את יום השבוע ל- SUNDAY 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 חלל Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN); }
כאן חיברתי את סיכת הפלט לסיכה 7 כדוגמה, אתה יכול לבחור כל סיכה שתומכת בסדרת תוכנה. קורא DHT.read (מספר PIN); יקרא את ערך הטמפרטורה והלחות וישמור אותו בפרמטר DHT.temperature ו- DHT.Humidity בהתאמה. בדוק גם את מדידת הטמפרטורה הזו המבוססת על DHT11.
3. אתחול מודול כרטיס ה- SC:
בטל Initialize_SDcard () {// ראה אם הכרטיס קיים וניתן לאתחל: אם (! SD.begin (chipSelect)) {Serial.println ("הכרטיס נכשל או לא קיים"); // אל תעשו שום דבר יותר: להחזיר; } // פתח את הקובץ. שים לב שרק קובץ אחד יכול להיות פתוח בכל פעם, // אז אתה צריך לסגור את זה לפני שאתה פותח קובץ אחר. קובץ dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // אם הקובץ זמין, כתוב אליו: if (dataFile) {dataFile.println ("תאריך, שעה, טמפרטורה, לחות"); // כתוב את השורה הראשונה של קובץ ה- Excel dataFile.close (); }}
השימוש בכרטיס SD עם Arduino קל בגלל ספריית כרטיסי SD שתתווסף ל- Arduino IDE כברירת מחדל. בפונקציה לאתחול של כרטיס SD ניצור קובץ טקסט בשם "LoggerCD.txt" ונכתוב את השורה הראשונה בתוכן שלנו. כאן אנו מפרידים את הערכים באמצעות "," כמפריד. הכוונה כשמניחים פסיק זה אומר שעלינו לעבור לתא הבא בגליון האקסל.
4. כתיבת נתונים לכרטיס SD
בטל Write_SDcard () {// פתח את הקובץ. שים לב שרק קובץ אחד יכול להיות פתוח בכל פעם, // אז אתה צריך לסגור את זה לפני שאתה פותח קובץ אחר. קובץ dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // אם הקובץ זמין, כתוב אליו: אם (dataFile) {dataFile.print (rtc.getDateStr ()); // שמירת תאריך בכרטיס SD dataFile.print (","); // עוברים לעמודה הבאה באמצעות "," dataFile.print (rtc.getTimeStr ()); // שמירת תאריך בכרטיס SD dataFile.print (","); // עבור לטור הבא באמצעות "," dataFile.print (DHT.temperature); // אחסן תאריך בכרטיס SD dataFile.print (","); // עבור לטור הבא באמצעות "," dataFile.print (DHT.humidity); // שמירת תאריך בכרטיס SD dataFile.print (","); // עבור לעמודה הבאה באמצעות "," dataFile.println (); // סוף שורה לעבור לשורה הבאה dataFile.close ();// סגור את הקובץ} אחר Serial.println ("OOPS !! כתיבת כרטיס SD נכשלה"); }
כאמור קודם כוונתנו לשמור את התאריך, השעה, הטמפרטורה והלחות בכרטיס ה- SD שלנו. בעזרת ספריית DS3231 וספריית DHT11 הארדואינו שלנו יוכל לקרוא את כל ארבעת הפרמטרים הללו ולאחסן אותם בפרמטרים הבאים כמוצג בטבלה להלן.
תַאֲרִיך |
rtc.getDateStr ()); |
זְמַן |
rtc.getTimeStr ()); |
טֶמפֶּרָטוּרָה |
טמפרטורת DHT |
לחות |
לחות DHT |
כעת אנו יכולים להשתמש ישירות בפרמטרים אלה כדי לאחסן אותם בכרטיס ה- SD באמצעות קו ההדפסה
dataFile.print (פרמטר);
אתה יכול להבחין שכל פרמטר מופרד בפסיק כדי לגרום לו להיראות קריא ו- dataFile.println (); משמש לציון סוף השורה.
5. כתיבת נתונים ל- PLX-DAQ
PLX-DAQ היא תוכנת פלאגין של Microsoft Excel המסייעת לנו לכתוב ערכים מארדואינו ישירות לקובץ אקסל במחשב הנייד או במחשב האישי שלנו. זה הפייבוריט האישי שלי בגלל שתי סיבות:
1. אתה יכול לכתוב ולפקח על הנתונים בו זמנית ומספק לנו דרך לשרטט אותם כגרפים.
2. אינך זקוק למודול RTC כמו DS3231 כדי לעקוב אחר התאריך והשעה. אתה יכול פשוט להשתמש בתאריך ובשעה שרצים במחשב הנייד / המחשב שלך ולשמור אותם ישירות ב- Excel.
כדי להשתמש בתוכנה זו עם Arduino עלינו לשלוח את הנתונים באופן סדרתי בתבנית ספציפית בדיוק כמו הצגת ערך על צג סדרתי. שורות המפתח מוסברות להלן:
בטל Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // מנקה את כל הנתונים שנותרו מפרויקטים קודמים Serial.println ("תווית, תאריך, שעה, טמפרטורה, לחות"); // כתוב תמיד LABEL, כדי לציין אותו כשורה ראשונה} בטל Write_PlxDaq () {Serial.print ("DATA"); // תמיד לכתוב "DATA" כדי לחסל את הדברים הבאים בתור Data Serial.print (","); // עבור לטור הבא באמצעות "," Serial.print ("DATE"); // תאריך חנות ב- 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" כדי לציין שיש לראות את המידע הבא כ- DATA. כדי לציין שעלינו לעבור לשורה הבאה עלינו להשתמש בפסיק (","). כדי לציין את סוף השורה עלינו לשלוח Serial.println ();.
כפי שנאמר קודם אנו יכולים לכתוב את תאריך ושעת המערכת על ידי שליחת מילות המפתח "DATE" ו- "TIME" בהתאמה, כפי שמוצג לעיל.
הערה: אל תשתמש בצג סדרתי בעת שימוש בתוכנת PLX_DAQ זו.
הסבר עבודה:
העבודה של לוגר הנתונים של ארדואינו היא פשוטה. לאחר שהחומרה והתוכנה מוכנות הגיע הזמן לצרוב את התוכנית בלוח Arduino שלך. ברגע שהתוכנית שלך תעלה, ערכי הטמפרטורה והלחות שלך יתחילו להישמר בכרטיס ה- SD שלך. עליך לבצע את השלבים הבאים כדי לאפשר ל- PLX-DAQ להתחבר לגליון Excel במחשב.
שלב 1: פתח את הקובץ "גיליון אלקטרוני Plx-Daq" שנוצר על שולחן העבודה במהלך ההתקנה.
שלב 2: אם יש חסימת אבטחה, לחץ על אפשרויות-> אפשר את התוכן -> סיום -> אישור כדי לקבל את המסך הבא.
שלב 3: כעת בחר את קצב השידור כ- "9600" ואת היציאה שאליה מחובר הארדואינו שלך ולחץ על התחבר. הערכים שלך צריכים להתחיל להיות מחוברים כמו שמוצג בתמונה למטה.
אתה יכול להשאיר את גיליון האקסל הזה פתוח ולפקח על הערכים עם כניסתם. כשזה קורה כרטיס ה- SD שלנו היה גם שומר את אותם ערכים. כדי לבדוק האם זה עובד פשוט הסר את כרטיס ה- SD ופתח אותו במחשב שלך. אתה אמור למצוא בו קובץ טקסט בשם "LoggerCD.txt" . כשנפתח זה ייראה משהו כזה.
לקובץ זה יש נתונים, אך יהיה קשה לנתח אותם בפנקס רשימות. מכאן שנוכל לפתוח אותו ב- Excel כקובץ CSV (ערכים מופרדים בפסיקים) ובכך להפוך אותו ליעיל יותר. לפתוח באקסל
1. פתח את Excel. לחץ על קובץ-> פתח ובחר "כל הקובץ" בפינה השמאלית התחתונה ובחר בקובץ "LoggerCD" מכרטיס ה- SD. פעולה זו תפתח אשף ייבוא טקסט.
2. לחץ על "הבא" ובחר בפסיק כמפריד. לחץ שוב על "הבא". ואז סיים.
3. כעת הערכים שלך ייפתחו בקובץ Excel כמוצג להלן
רישמתי את הערכים כל 5 שניות; אתה יכול לרשום אותם לכל זמן רצוי על ידי שינוי פונקציית העיכוב בתוכנית. להבנה מפורטת של העבודה אנא צפו בסרטון למטה.
מקווה שאהבתם את הפרויקט, אם יש לכם ספק כתוב אותם בסעיף ההערות שלהלן ואני אעזור לכם.
שיפור בונוס - רישום נתונים אלחוטי באמצעות ארדואינו:
ברגע שהצלחת עד לנקודה זו, אז עם התקדמות מועטה ורק הוספת מספר שורות קוד תוכל לרשום נתונים באופן אלחוטי.
כל שעליך לעשות הוא לחבר התקן Bluetooth כמו HC-05 ולכתוב את הנתונים ל- PLX-DAQ באמצעות Bluetooth במקום Serial. זה להחליף את Serial.print (פרמטר); עם BluetoothName.print (פרמטר); וחבר את המחשב הנייד שלך למודול ה- Bluetooth שלך ובחר את יציאת ה- COM אליה מחובר המחשב הנייד שלך ו- Taadaaa…… יש לך עבודה של מערכת רישום נתונים אלחוטית תוך זמן קצר.