תוכן עניינים:

Arduino Datalogger: 8 שלבים (עם תמונות)
Arduino Datalogger: 8 שלבים (עם תמונות)

וִידֵאוֹ: Arduino Datalogger: 8 שלבים (עם תמונות)

וִידֵאוֹ: Arduino Datalogger: 8 שלבים (עם תמונות)
וִידֵאוֹ: Почему Строительство Дорог Занимает Так Много Времени? 2024, יולי
Anonim
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger

במדריך זה נכין לוגר נתונים פשוט באמצעות Arduino. הנקודה היא ללמוד את היסודות של שימוש בארדואינו ללכידת מידע והדפסה למסוף. אנו יכולים להשתמש בהתקנה בסיסית זו להשלמת מגוון משימות.

להתחיל:

תזדקק לחשבון Tinkercad (www.tinkercad.com). היכנס והירשם באמצעות הדוא ל או חשבון המדיה החברתית שלך.

הכניסה מעבירה אותך ללוח המחוונים של Tinkercad. לחץ על "מעגלים" משמאל ובחר "צור מעגל חדש". בואו נתחיל!

אתה יכול למצוא את הקובץ המלא במעגלי TInkercad - תודה שבדקת אותו!

שלב 1: הוסף כמה רכיבים

הוסף כמה רכיבים
הוסף כמה רכיבים
הוסף כמה רכיבים
הוסף כמה רכיבים
הוסף כמה רכיבים
הוסף כמה רכיבים

תזדקק לכמה רכיבים בסיסיים. אלו כוללים:

  • לוח ארדואינו
  • לוח לחם

הוסף אותם על ידי חיפוש אותם ולחיצה עליהם וגרור אותם לאזור האמצעי.

מניחים את לוח הלחם מעל הארדואינו. זה מקל על הצפייה בחיבורים מאוחר יותר.

שלב 2: הערה לגבי לוחות לחם

הערה לגבי לוחות לחם
הערה לגבי לוחות לחם

קרש לחם הוא מכשיר מועיל במיוחד לאב טיפוס מהיר. אנו משתמשים בו לחיבור רכיבים. כמה דברים שכדאי לשים לב אליהם.

  1. הנקודות מחוברות אנכית, אך השורה באמצע מפרידה בין חיבור זה לבין העמודות העליונות והתחתונות.
  2. העמודות אינן מחוברות משמאל לימין, כמו בשורה השנייה. המשמעות היא שצריך לחבר את כל הרכיבים לרוחב העמודות במקום להוריד אותם אנכית.
  3. אם אתה צריך להשתמש בלחצנים או במתגים, חבר אותם לרוחב ההפסקה באמצע. נבקר בזה בהדרכה מאוחרת יותר.

שלב 3: הוסף שני חיישנים

הוסף שני חיישנים
הוסף שני חיישנים

שני החיישנים בהם אנו משתמשים הם חיישן רגיש וחיישן טמפרטורה.

חיישנים אלה מעריכים אור וטמפרטורה. אנו משתמשים ב- Arduino כדי לקרוא את הערך ולהציג אותו במסך הסידורי של Arduino.

חפש והוסף את שני החיישנים. וודא שהם ממוקמים על פני העמודות שעל לוח הלחם. שים מספיק מקום ביניהם כדי שיהיה קל יותר לראות אותם.

שלב 4: חיישן רגיש

חיישן רגיש
חיישן רגיש
חיישן רגיש
חיישן רגיש
חיישן רגיש
חיישן רגיש
חיישן רגיש
חיישן רגיש
  1. עבור החיישן הרגיש, הוסף חוט מהסיכה 5V בארדואינו לאותה העמודה כמו הרגל הימנית בחלק בלוח הלחם. שנה את צבע החוט לאדום.
  2. חבר את רגל שמאל באמצעות הסיכה באותה העמודה לסיכה A0 (A-zero) בארדואינו. זהו הסיכה האנלוגית, בה נשתמש כדי לקרוא את הערך מהחיישן. צבע את החוט הזה בצהוב או משהו אחר מאשר אדום או שחור.
  3. מניחים נגד (חיפוש ולחיצה-גרירה) על הלוח. זה משלים את המעגל ומגן על החיישן והסיכה.

    • סובב אותו כך שיחצה את העמודות.
    • חבר רגל אחת לעמוד הרגל הימנית בלוח הלחם
    • הניחו חוט מהקצה השני של הנגד לקרקע

      שנה את צבע החוט לשחור

  4. בדוק שוב את כל החיבורים. אם משהו לא נמצא במקום הנכון, זה לא יפעל כראוי.

שלב 5: הפעל את הקוד

התחל את הקוד
התחל את הקוד
התחל את הקוד
התחל את הקוד
התחל את הקוד
התחל את הקוד

בואו נסתכל על הקוד של רכיב זה.

ראשית, הסתכל על התמונה השלישית בשלב זה. הוא מכיל קוד כלשהו עם שתי פונקציות:

הגדרת חלל ()

לולאת חלל ()

ב- C ++, כל הפונקציות מספקות את סוג ההחזרה שלהן, ואז את השם ולאחר מכן את שתי הפלטות העגולות שניתן להשתמש בהן כדי להעביר ארגומנטים, בדרך כלל כמשתנים. במקרה זה, סוג ההחזרה הוא בטל או כלום. השם מוגדר והפונקציה לא דורשת טיעונים.

פונקציית ההתקנה פועלת פעם אחת כאשר ארדואינו מגפיה (כאשר אתה מחבר אותה או מחבר סוללות).

פונקציית הלולאה פועלת בלולאה קבועה מהאלפית השנייה שפונקציית ההתקנה משלימה.

כל מה שאתה מכניס לפונקציית הלולאה יפעל כאשר ארדואינו יפעל. כל מה שבחוץ יפעל רק כאשר קוראים לו. כאילו אם הגדרנו ונקרא פונקציה אחרת מחוץ ללולאה.

מְשִׁימָה

פתח את לוח הקוד עם הלחצן ב- Tinkercad. שנה את התפריט הנפתח בלוקים לטקסט. מסכים לתיבת האזהרה שצצה. כעת, מחק את כל מה שאתה רואה למעט הטקסט שבתמונה השלישית בשלב זה.

משתנים

כדי להתחיל, עלינו להקצות כמה משתנים כדי להפוך את הקוד שלנו ליעיל באמת.

משתנים הם כמו דליים שיכולים להכיל אובייקט אחד בלבד (C ++ הוא מה שאנו מכנים מונחה עצמים). כן, יש לנו מערכים, אבל אלה משתנים מיוחדים ונדבר עליהם מאוחר יותר. כאשר אנו מקצים משתנה, עלינו לומר לו באיזה סוג מדובר ואז לתת לו ערך. זה נראה כמו זה:

int someVar = A0;

אז הקצנו משתנה ונתנו לו סוג int. Int הוא מספר שלם או מספר שלם.

"אבל לא השתמשת במספר שלם!", אני שומע אותך אומר. זה נכון.

ארדואינו עושה עבורנו משהו מיוחד כדי שנוכל להשתמש ב- A0 כמספר שלם, מכיוון שבקובץ אחר הוא מגדיר את A0 כמספר שלם, כך שנוכל להשתמש בקבוע A0 כדי להתייחס למספר שלם זה מבלי שנצטרך לדעת מהו. אם רק הקלדנו 0, היינו מתייחסים לסיכה הדיגיטלית במיקום 0, וזה לא יעבוד.

לכן, עבור הקוד שלנו נכתוב משתנה עבור החיישן שצירפנו. למרות שאני ממליץ לתת לו שם פשוט, זה תלוי בך.

הקוד שלך אמור להיראות כך:

int lightSensor = A0;

הגדרת void () {} לולאת void () {}

עכשיו, בואו לספר לארדואינו כיצד להתמודד עם החיישן בסיכה הזו. נפעיל פונקציה בתוך ההתקנה כדי להגדיר את מצב הסיכה ונגיד ל- Arduino היכן לחפש אותה.

int lightSensor = A0;

הגדרת void () {pinMode (lightSensor, INPUT); } לולאת חלל () {}

הפונקציה pinMode אומרת ל- Arduino שהסיכה (A0) תשמש כסיכת INPUT. שים לב ל- camelCaseUsed (ראה כל אות ראשונה היא בירה, שכן יש בה גבשושיות, מכאן … קאמל …!) עבור המשתנים ושמות הפונקציות. זו מוסכמה וטוב להתרגל אליה.

לבסוף, בואו נשתמש בפונקציה analogRead כדי לקבל קצת נתונים.

int lightSensor = A0;

הגדרת void () {pinMode (lightSensor, INPUT); } לולאת חלל () {int reading = analogRead (lightSensor); }

תראה שאחסנו את הקריאה במשתנה. זה חשוב מכיוון שאנחנו צריכים להדפיס אותו. בואו נשתמש בספרייה הסדרתית (ספרייה היא קוד שאנו יכולים להוסיף לקוד שלנו כדי להפוך את הדברים למהירים יותר בכתיבה שלנו, רק על ידי כך שנקרא אותה לפי ההגדרה שלה) כדי להדפיס את זה לצג הטורי.

int lightSensor = A0;

הגדרת void () {// הגדר מצבי סיכה pinMode (lightSensor, INPUT); // הוסף את הספרייה הטורית Serial.begin (9600); } לולאת חלל () {// קראו את קריאת החיישן int = analogRead (lightSensor); // הדפס את הערך לצג Serial.print ("Light:"); Serial.println (קריאה); // לעכב את הלולאה הבאה באיחור של 3 שניות (3000); }

כמה דברים חדשים! ראשית, תראה את אלה:

// זו הערה

אנו משתמשים בהערות כדי לספר לאנשים אחרים מה הקוד שלנו עושה. אתה צריך להשתמש אלה לעתים קרובות. המהדר לא יקרא את אלה וימיר אותם לקוד.

כעת הוספנו גם את הספרייה הסידרית עם השורה

Serial.begin (9600)

זוהי דוגמה לפונקציה שלוקחת ויכוח. קראת לספרייה Serial ואז הפעלת פונקציה (אנו יודעים שזו פונקציה בגלל הפלטה העגולה) והעברת במספר שלם כארגומנט, והגדרת את הפונקציה הסריאלית לפעול על 9600baud. אל תדאג למה - רק שתדע שזה עובד, בינתיים.

הדבר הבא שעשינו היה הדפסה למסך הטורי. השתמשנו בשתי פונקציות:

// זה מדפיס לסדרה ללא שבירת שורות (כניסה בסוף)

Serial.print ("אור:"); // זה מכניס את שורת השורות כך שבכל פעם שאנו קוראים וכותבים, הוא עובר בשורה חדשה Serial.println (קריאה);

מה שחשוב לראות הוא שלכל אחת יש מטרה נפרדת. וודא שהמחרוזות שלך משתמשות במרכאות כפולות וכי אתה עוזב את החלל אחרי המעי הגס. זה עוזר לקריאות המשתמש.

לבסוף, השתמשנו בפונקציית העיכוב, כדי להאט את הלולאה שלנו ולהפוך אותה לקריאה אחת לשלוש שניות בלבד. זה כתוב באלפי שנייה. שנה אותו לקריאה רק אחת ל -5 שניות.

גדול! ממשיכים!

שלב 6: סימולציה

סימולציה
סימולציה
סימולציה
סימולציה
סימולציה
סימולציה

בדוק תמיד שהדברים עובדים על ידי הפעלת הסימולציה. עבור מעגל זה, יהיה עליך גם לפתוח את הסימולטור כדי לבדוק אם הוא פועל ולבדוק את הערכים שלך.

התחל את הסימולציה ובדוק את הצג הטורי. שנה את הערך של חיישן האור על ידי לחיצה עליו ושינוי הערך באמצעות המחוון. אתה אמור לראות את שינוי הערך גם בצג הטורי. אם לא, או אם כאשר אתה לוחץ על כפתור התחל סימולציה אתה מקבל שגיאות, חזור בזהירות ובדוק את כל הקוד שלך.

  • התמקדו בשורות המצוינות בחלון הבאגים האדומים שיוצגו בפניכם.
  • אם הקוד שלך נכון והסימולציה עדיין לא עובדת, בדוק את החיווט שלך.
  • טען מחדש את הדף - ייתכן שיש לך שגיאת מערכת/שרת שאינה קשורה.
  • נענע את אגרוףך במחשב ובדוק שוב. כל המתכנתים עושים זאת. את כל. ה. זְמַן.

שלב 7: חיבור חיישן הטמפ '

חבר את חיישן הטמפ '
חבר את חיישן הטמפ '

אני מניח שאתה בדרך הנכונה עכשיו. קדימה, חברו את חיישן הטמפרטורה כפי שהתמונה מציעה. שים לב למיקומם של חוטי 5V ו- GND באותו שטח כמו אלה של האור. זה בסדר. זה כמו מעגל מקביל ולא יגרום לבעיות בסימולטור. במעגל בפועל, עליך להשתמש בלוח פריצה או במגן כדי לספק ניהול חשמל וחיבורים טובים יותר.

עכשיו, בואו נעדכן את הקוד.

קוד חיישן הטמפ '

זה קצת יותר מסובך, אבל רק בגלל שאנחנו צריכים לעשות קצת מתמטיקה כדי להמיר את הקריאה. זה לא גרוע כלכך.

int lightSensor = A0;

int tempSensor = A1; הגדרת void () {// הגדר מצבי סיכה pinMode (lightSensor, INPUT); // הוסף את הספרייה הטורית Serial.begin (9600); } לולאת חלל () {// חיישן הטמפ '// יצירת שני משתנים בשורה אחת - אוי יעילות! // Float var לאחסון מתח צף עשרוני, מעלות C; // קרא את ערך הסיכה והמיר אותו לקריאה מ 0 - 5 // בעיקרו מתח = (5/1023 = 0.004882814); מתח = (analogRead (tempSensor) * 0.004882814); // המר למעלות C מעלות 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: בדיקה ובדיקה

בדיקה ובדיקה
בדיקה ובדיקה

כל הדברים מתכננים, צריך שיהיה לך מעגל עבודה. בדוק על ידי הפעלת הסימולציה ושימוש במסך הטורי. אם יש לך שגיאות, בדוק, בדוק שוב ונענע את אגרוף.

האם עשית את זה? שתפו וספרו לנו את הסיפור שלכם!

זהו המעגל הסופי המוטמע עבורך, כך שתוכל לשחק/לבדוק את היצירה הסופית. תודה על השלמת ההדרכה!

מוּמלָץ: