תוכן עניינים:
- שלב 1: כלים וחומרים
- שלב 2: בניית ניסוי
- שלב 3: הפעלת ניסוי
- שלב 4: ניסוי: שיעור מדגם
- שלב 5: ניסוי: מראה רעש
- שלב 6: ניסוי: הפחת רעש עם ממוצע נע
- שלב 7: ניסוי: ממוצע נע ושיעור מדגם
- שלב 8: ניסוי: כניסה באמצעות טריגר
- שלב 9: ניסוי: כניסה עם טריגר - רעש חזק יותר
- שלב 10: ערוך ניסויים משלך
- שלב 11: שימוש בטכניקות בתוכנת הרישום שלך
וִידֵאוֹ: ניסויים ברישום נתונים מתקדם (שימוש בפייתון): 11 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:12
יש הרבה מדריכי רישום נתונים, כך שכאשר רציתי לבנות פרויקט כניסה משלי הסתכלתי סביב על חבורה. חלקם היו טובים, חלקם לא כל כך הרבה, אז החלטתי לקחת כמה מהרעיונות הטובים יותר ולהכין יישום משלי. זה הביא לפרויקט מתקדם יותר ומסובך יותר ממה שציפיתי בהתחלה. חלק אחד ממנו הפך לסדרת ניסויים בעיבוד נתוני חיישן. מדריך זה מאפשר לך לנסות את אותם ניסויים או דומים.
(אתה יכול לצפות בכל הקוד ולהוריד אותו בכתובת: קוד ב- GitHub תוכל להיכנס לצפייה, אולי בחלון אחר, עם 2 קליקים בלבד)
בדרך כלל רישום הנתונים כולל את הדברים הבאים:
- רכישת נתונים: קרא כמה נתונים מחיישן. לעתים קרובות זו רק קריאת ממיר אנלוגי לדיגיטלי (ADC) במכשיר כמו Arduino.
- עיבוד נתונים: בעת קריאת ערך ADC בדרך כלל יש לשנות את פלט הממירים ליחידות הנכונות. ייתכן גם שיהיה צורך לבצע התאמה מסוימת כדי לכייל את הערכים לתיקון טעויות חיישן.
- סינון: בדרך כלל הנתונים מכילים קצת רעש, ניתן לסנן את זה כך שאתה מחפש את האות בנתונים שלך, לא את הרעש.
- אחסון נתונים: הנתונים נשמרים, אולי בקובץ טקסט, אולי בענן. הנתונים צריכים לשרוד גם אם הכוח נכבה. קל לשמור יותר מדי נתונים, יש לנו טריק קטן לצמצם את שטח אחסון הנתונים.
- הצגת נתונים: שיטות להסתכל על הנתונים שלך, לא ממש רישום נתונים, אבל אם אתה לא מציג הצגה כלשהי של הנתונים למה לאסוף אותם?
- גישה מרחוק: לא הכרחי אבל נחמד שיש.
רוב ההוראות כוללות חלק מהאמור לעיל אך לא כולן, או שעושות אותן בצורה פשוטה מאוד. מדריך זה יטפל ב -2 מבעיות הרישום שדלגו עליו לעתים קרובות וכבונוס ייתן לך אמצעי לשרטט את הנתונים שלך מבלי להשתמש בשירות ענן. אתה יכול להשתמש בכל העניין או לשלוף חלקים ולחדש אותם לפרויקט משלך.
שלב 1: כלים וחומרים
הדוגמה הזו כלולה ב- Python כך שהיא תפעל, וניתן להשתמש בה ברכיבים, כמעט בכל מערכת הפעלה כולל Mac, PC, Linux ו- Raspberry Pi.
אז כדי להשתמש במדריך זה כל מה שאתה צריך הוא סביבת Python 3.6 פועלת, והורד את הקוד המצורף. לאחר הפעלת הקוד שהגדרתי, תוכל לשנות אותו לניסויים שלך. כרגיל עם Python ייתכן שיהיה עליך להוסיף כמה חבילות/מודולים כדי שהכל יעבוד. סביבת Spyder שלי כוללת פחות או יותר את כל החלקים הנדרשים (ראו: תצוגות גרף להנחיות עם גרידת מסך פייתון). כאשר תריץ לראשונה הודעות שגיאה כלשהן, הן יודיעו לך על חלקים חסרים בסביבה שלך.
שני השלבים הבאים יגידו לך כיצד לבנות ולהריץ ניסוי משלך, אך כנראה שעדיף לחכות עד שתפעיל את הניסויים הכלולים לפני שתנסה את עצמך.
כדי להבין את הקוד תצטרך קצת ניסיון בפייתון מונחה עצמים, ולהסביר שזה מעבר להיקף ההוראה הזה, אך Google צריכה לתת לך כל עזרה שתזדקק לה.
שימו לב לקוד: (קוד ב- GitHub אתה יכול להיכנס לצפייה, אולי בחלון אחר, עם 2 קליקים בלבד) נמצא כעת ב- Python 3.6, כך שיהיה בעל 3.6 יהיה הטוב ביותר. הגרסה הקודמת של הקוד נמצאת כאן בקישורים למטה.
שלב 2: בניית ניסוי
ישנם שלושה שלבי תכנות (וקווים) בבניית ניסוי. כל ניסוי הוא פונקציה באובייקט LoggingSim בקובץ simulate_logging.py. בואו נסתכל על ניסוי 1 (רק הגרף הראשון) אותו נפעיל בשלב הבא:
def experiment_with_sample_rates (self):
הדפס "" "ניסוי עם שיעורי מדגם בחינת שיעורי מדגם שונים על ידי שינוי דלתא T" "" self.start_plot (plot_title = "מחירים לדוגמא - חלק 1/3: דלתא T = 1.0") self.add_sensor_data (name = "dt = 1. ", משרעת = 1., noise_amp =.0, delta_t = 1., max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot ()
כל ניסוי כתוב כפונקציה משלו כך שיש לנו קו המגדיר את הפונקציה (ניסוי def …..)
השורה הבאה, ללא הערה, (start_plot (…) יוצרת את האובייקט לניסוי ונותנת לו שם.
השורה הבאה, ללא הערות, (add_sensor_data (…) מחולקת למספר שורות. היא מדמה חיישן שמודד אות בעל פוטנציאל רעש וקצת עיבוד. ארגומנטים של הפונקציה הם כדלקמן:
- שם: שם שמופיע בגרף הסופי לזיהוי הנתונים
- משרעת: כמה גדול האות, נשתמש תמיד במשרעת של 1. במדריך זה.
- noise_amp: כמה גדול הרעש, 0. אין רעש, נתחיל כאן.
- delta_t: הזמן בין המדידות, שולט בקצב הדגימה.
- max_t: הזמן המרבי שאנו אוספים נתונים, נשתמש תמיד ב -10 במדריך זה.
- run_ave: עיבוד באמצעות ממוצע פועל, 0 פירושו ללא עיבוד.
- trigger_value: עיבוד באמצעות טריגר, 0 פירושו אין עיבוד
השורה האחרונה, ללא הערות, (self.show_plot ……) מציגה את התרשים.
כדי להפוך את הדברים למעט יותר מסובכים אפשר שיהיו מספר שורות על גרף או גרפים מרובים בניסוי, זה צריך להיות ברור מהניסויים הבאים.
שלב 3: הפעלת ניסוי
זהו הקוד להפעלת ניסוי. כמקובל ב- Python הוא ממוקם בסוף הקובץ.
sim_logging = LoggingSim ()
sim_logging.experiment_with_sample_rates ()
זה רק 2 שורות:
- צור סימולטור רישום (LoggingSim ())
- הפעל אותו (sim_logging.experiment_with_sample_rates ())
בקוד שהורד יש לי עוד כמה שורות והערות, זה אמור להיות קל להבין.
שלב 4: ניסוי: שיעור מדגם
הסימולטור, כפי שהוא מוגדר כאן, תמיד פולט גל סינוס חלק ונחמד של משרעת 1. בניסוי זה נתעסק עם קצב הדגימה, כפי שהותאם על ידי delta_t, הפרש הזמן בין הדגימות. לא יהיה לנו רעש או עיבוד אחר. הקוד משתמש ב -3 קצבי דגימה (delta_t = 1.0, 0.1 ו- 0.01.) מכיוון שהגרפים נופלים זה על זה הניסוי מוגדר לייצר 3 גרפים שונים. הגרפים המתקבלים הם התמונות לשלב זה.
def experiment_with_sample_rates (self):
הדפס "" "ניסוי עם שיעורי מדגם בחינת שיעורי מדגם שונים על ידי שינוי דלתא T" "" self.start_plot (plot_title = "ניסויי דוגמאות 1/3: דלתא T = 1.0") self.add_sensor_data (name = "dt = 1. ", משרעת = 1., noise_amp =.0, delta_t = 1., max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot () # ------------- ----------------------------------- self.start_plot (plot_title = "שיעורי דוגמה לניסוי 2/3: דלתא T = 0.1 ") self.add_sensor_data (name =" dt = 1. ", amplitude = 1., noise_amp =.0, delta_t = 0.1, max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot () # ------------------------------------------------ עצמי.start_plot (plot_title = "ניסויים לדוגמא תעריפים 3/3: דלתא T = 0.01") self.add_sensor_data (שם = "dt = 1.", משרעת = 1., noise_amp =.0, delta_t = 0.01, max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot ()
כדי להפעיל אותו השתמש בשורה: sim_logging.experiment_with_sample_rates ()
מסקנות אפשריות:
- קצב דגימה נמוך מדי זה ממש גרוע.
- תעריפים גבוהים לרוב טובים יותר.
(קוד Python 3.6 בקישור GitHub להלן ב- instructables, 2.7)
שלב 5: ניסוי: מראה רעש
בניסוי זה אנו שומרים על אותו אות, משתמשים בקצב דגימה בינוני ויש לנו כמויות שונות של רעש (noise_amp =.0,.1, 1.0.) הפעל אותו עם: sim_logging.experiment_showing_noise (). הפלט הוא גרף אחד עם 3 שורות.
מסקנה אפשרית:
רעש מקשה על ראיית האות, הפחת אותו אם אתה יכול
הקוד:
# ------------------------------------------------
def experiment_showing_noise (self): הדפס "" "ניסוי המראה רעש התבוננות בכמויות רעש שונות על ידי שינוי משרעת הרעש." "" self.start_plot (plot_title = "ניסוי המציג רעש") self.add_sensor_data (name = "noise = 0.0 ", משרעת = 1., noise_amp =.0, delta_t =.1, max_t = 10., run_ave = 0, trigger_value = 0) self.add_sensor_data (שם =" רעש = 0.1 ", משרעת = 1., noise_amp =. 1, delta_t =.1, max_t = 10., run_ave = 0, trigger_value = 0) self.add_sensor_data (name = "noise = 1.0", amplitude = 1., noise_amp = 1., delta_t =.1, max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot ()
שלב 6: ניסוי: הפחת רעש עם ממוצע נע
ממוצע נע (למשל באורך 8) לוקח את 8 המדידות האחרונות וממוצע אותן. אם הרעש אקראי אנו מקווים שהוא יגיע לממוצע עד קרוב ל -0. הפעל את הניסוי עם: sim_logging.experiment_showing_noise (). פלט גרף אחד.
מסקנות אפשריות:
- ממוצע נע אכן מבטל הרבה מהרעש
- ככל שהממוצע הנע ארוך יותר הפחתת הרעש יותר
- הממוצע הנע יותר עשוי להפחית ולעוות את האות
הקוד:
# ------------------------------------------------
def experiment_with_moving_average (self): הדפס "" "ניסוי ב- MovingAverage התבוננות ב- MovingAverage שונה על ידי שינוי האורך. לכולם יש אותו רעש." "" # ------------------ ------------------------------ self.start_plot (plot_title = "MovingAverage-Part 1/2: אין ממוצע נע") עצמי.add_sensor_data (name = "ave len = 0", amplitude = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot () self.start_plot (plot_title) = "MovingAverage-Part 2/2: Len 8 and 32") self.add_sensor_data (name = "ave len = 8", amplitude = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 8, trigger_value = 0) self.add_sensor_data (name = "ave len = 32", amplitude = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 32, trigger_value = 0) self.show_plot ()
שלב 7: ניסוי: ממוצע נע ושיעור מדגם
בניסוי זה אנו משווים את האות הגולמי עם רעש ו -2 וריאציות שונות על הפחתת הרעש.
- קצב מדגם בינוני וממוצע ריצה בינוני
- קצב מדגם גבוה וממוצע ריצה באורך גבוה
הפעל אותו עם: sim_logging …… פלט הוא גרף אחד. אני חושב שברור ש- #2 עושה עבודה טובה יותר בהפחתת הרעש, כך שנוכל להסיק כי:
קצב מדגם גבוה וממוצע ריצה באורך גבוה טובים
אבל אתה צריך לזכור שיש עלות. מספר 2 דורש הרבה יותר עיבוד וכתוצאה מכך יש לשמור הרבה יותר נתונים. המחיר עשוי להיות שווה את זה ואולי לא. בניסוי הבא נוסיף טריגר, מכשיר להפחתת כמות הנתונים המאוחסנים.
הקוד:
def experiment_with_moving_average_and_sample_rate (self):
הדפס "" "ניסוי עם ממוצע נע וקצב דגימה, dt, ממוצע ריצה הוא מגוון" "" # ---------------------------- -------------------- self.start_plot (plot_title = "ממוצע נע ושיעור מדגם") self.add_sensor_data (name = "dt =.1 ra = 0 trig = 0 ", משרעת = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 0, trigger_value = 0) self.add_sensor_data (name =" dt =.1 ra = 10 trig = 0 ", משרעת = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 10, trigger_value = 0) self.add_sensor_data (שם = "dt =.01 ra = 100 טריג = 0", משרעת = 1., noise_amp =.1, delta_t =.01, max_t = 10., run_ave = 100, trigger_value = 0) self.show_plot ()
שלב 8: ניסוי: כניסה באמצעות טריגר
בניסוי זה אנו מוסיפים טריגר. ראשית, למה אני מתכוון בהדק? טריגר הוא טכניקה שבה אנו אוספים נתונים אך שומרים אותם רק לאחר שמשתנה כלשהו השתנה במידה ניכרת. בניסויים אלה הנחתי טריגר למשתנה הזמן (ציר x). באמצעות ההדק אני יכול לקחת את כמות הנתונים הגבוהה מדגימה מהירה ולהקטין אותו לכמות נתונים סבירה יותר. זה שימושי במיוחד עם שיעורי מדגם גבוהים וממוצע ריצה ארוך.
לקחתי את השורה מספר 2 מהניסוי האחרון שהיה "טוב" והוסיף טריגר. הפעל אותו עם: sim_logging …… הפלט הוא גרף אחד, x קווים.
מה קורה? אנו מקבלים עלילה "טובה" עם כמות נתונים סבירה (זהה למספר 1). היו כמה עלויות בעיבוד גבוה יותר. אולם בסך הכל התוצאות זהות למספר 1 של שיעור המדגם הנמוך יותר עם פחות סינון. אתה יכול להסיק:
- ממוצע ריצה ארוך עם טריגר יכול לתת הפחתת רעש טובה עם כמויות נתונים סבירות.
- העיבוד הנוסף עשוי לא לתת תוצאות טובות בהרבה וכולל עלות.
הקוד:
# ------------------------------------------------
def experiment_with_trigger (self): הדפס "" "ניסוי עם Triggering, dt, הפעל ממוצע והפעל את כל ההשתנות" "" # ----------------------- ------------------------ self.start_plot (plot_title = "טריגר 1/1-מפעילה") self.add_sensor_data (name = "dt =.1 ra = 10, trig = 0 ", amplitude = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 10, trigger_value = 0) self.add_sensor_data (name =" dt =.01 ra = 100, trig =.1 ", משרעת = 1., noise_amp =.1, delta_t =.01, max_t = 10., run_ave = 100, trigger_value =.1) self.show_plot ()
=
שלב 9: ניסוי: כניסה עם טריגר - רעש חזק יותר
בואו ניקח את אותו הניסוי כמו השלב האחרון ונגביר את הרעש. הפעל אותו עם: sim_logging …… הפלט הוא גרף אחד, 2 שורות.
כעת העיבוד הנוסף נראה שווה יותר. מסקנה סבירה כאן עשויה להיות:
בחירת כמות וסוג העיבוד להפחתת רעש תלויה באות וברעש שלך
הקוד:
def experiment_with_trigger_louder_noise (עצמי):
הדפס "" "רעש חזק יותר מהניסוי הקודם" "" self.start_plot (plot_title = "ניסוי עם רעש רם יותר") self.add_sensor_data (name = "… dt =.1 ra = 10", משרעת = 1., noise_amp =.5, delta_t =.1, max_t = 10., run_ave = 10, trigger_value = 0) self.add_sensor_data (שם = "..dt =.01 ra = 100 tv =.1", משרעת = 1., noise_amp =.5, delta_t =.01, max_t = 10., run_ave = 100, trigger_value =.1) self.show_plot ()
שלב 10: ערוך ניסויים משלך
בשלב זה אני מקווה שאתה רואה שהטכניקות במדריך זה יכולות להיות שימושיות ברישום נתונים, אך יש להשתמש בהן גם מתוך מחשבה. ניסוי איתם יכול לסייע לתהליך זה.
כמה הערות על הניסויים ועל דברים שאפשר לבדוק:
- גלי סינוס אינם סוג האות המעניין היחיד, נסה אחרים, גלים או רמפות אחרות או …
- השתמשתי בהתפלגות רגילה עבור הרעש, יש כל כך הרבה סוגים של רעש; כדאי להתחשב באחרים
- ריצה ממוצעת היא שיטה פשוטה אך לא היחידה להסתכלות על רעש
הערה: רישום תמונות מוויקיפדיה.
שלב 11: שימוש בטכניקות בתוכנת הרישום שלך
הקוד שלי מכוון לאובייקטים וניתן להעתיק את העיבוד להפעלת ממוצע וטריגר לסביבת ה- Python שלך ולאחר מכן להשתמש בו. האובייקטים הם:
- DataTrigger ב- data_trigger.py
- MovingAverage ב- moving_average.py
האובייקט העיקרי שלי LoggingSim ב- simulate_logging.py אמור לתת לך דוגמה טובה לאופן השימוש בו. אם אתה משתמש בשפה אחרת אתה יכול לקרוא את הקוד שלי וליישם בשפה שלך.
קוד זה יכול לתת לפרויקט שלך רישום נתונים טוב יותר, נסה זאת.
הגרף למעלה הוא מתוך Graph Your Power Solar מאת russ_hensel שמשתמש באותו אובייקט ממוצע פועל.
מוּמלָץ:
שימוש בפייתון ללימוד פריסות מקלדת שאינן אנגלית: 8 שלבים
שימוש בפייתון כדי ללמוד פריסות מקלדת שאינן אנגלית: היי, אני ג'וליין! אני סטודנט למדעי המחשב והיום אני הולך להראות לך כיצד אתה יכול להשתמש בפייתון כדי ללמד את עצמך את פריסת המקלדת של שפה שאינה אנגלית. הרבה לימוד שפות קורה בימינו באינטרנט, ודבר אחד שאנשים יכולים להגיב
כיצד להפוך לחות וטמפרטורה למקליט נתונים בזמן אמת באמצעות UNO Arduino וכרטיס SD - סימולציית רישום נתונים DHT11 בפרוטוס: 5 שלבים
כיצד להפוך לחות וטמפרטורה למקליט נתונים בזמן אמת באמצעות UNO Arduino וכרטיס SD | סימולציית רישום נתונים ב- DHT11 בפרוטוס: הקדמה: היי, זהו Liono Maker, הנה קישור ל- YouTube. אנו יוצרים פרויקט יצירתי עם Arduino ועובדים על מערכות מוטבעות. Data-Logger: לוגר נתונים (גם לוגר נתונים או מקליט נתונים) הוא מכשיר אלקטרוני המתעד נתונים לאורך זמן עם
מחשב טיסה מדגם מתקדם מדגם מתקדם !: 4 שלבים (עם תמונות)
מחשב טיסה מדגם מתקדם !: הייתי זקוק למחשב טיס טילים מדגם יוקרתי לטיל החדש שלי ששלט על עצמו ללא סנפירים! אז בניתי משלי! הסיבה שהחלטתי לבנות את זה היא בגלל שאני בונה רקטות TVC (בקרת וקטור דחף). משמעות הדבר היא כי
בקרת תנועה עם Raspberry Pi ו- LIS3DHTR, מד תאוצה 3 צירים, שימוש בפייתון: 6 שלבים
בקרת תנועה עם פטל פי ו- LIS3DHTR, מד תאוצה 3 צירים, שימוש בפייתון: היופי מקיף אותנו, אך בדרך כלל עלינו לטייל בגינה כדי לדעת זאת. - רומי כקבוצה המשכילה שאנו נראים, אנו משקיעים את הרוב המכריע של האנרגיה שלנו בעבודה לפני המחשבים והטלפונים הסלולריים שלנו. לכן, לעתים קרובות אנו נותנים לרווחתנו
רכישת נתונים ומערכת ויזואליזציית נתונים לאופנוע מירוץ חשמלי של MotoStudent: 23 שלבים
רכישת נתונים ומערכת ויזואליזציית נתונים לאופנוע מירוץ חשמלי של MotoStudent: מערכת רכישת נתונים היא אוסף של חומרה ותוכנה הפועלים יחד על מנת לאסוף נתונים מחיישנים חיצוניים, לאחסן ולעבד אותם לאחר מכן כך שניתן יהיה להמחיש אותם בצורה גרפית ולנתח אותם, המאפשר למהנדסים לבצע