- זרימת הפרויקט:
- דרישות הפרויקט
- תרשים מעגל:
- התקן תלות עבור אוסצילוסקופ Raspberry Pi:
- קוד פיתון לאוסצילוסקופ של פטל פי:
- אוסצילוסקופ פטל פי בפעולה:
היי חבר'ה, ברוכים הבאים לפוסט של היום. אחד הדבר המרתק ביותר בלהיות יצרן הוא לדעת לפתח כלים מאולתרים, לעולם לא תיתקע בעבודה על שום פרויקט כשיש לך צדדיות כזו. אז היום, אשתף כיצד לבנות גרסה מאולתרת מבוססת Raspberry Pi של אחד הכלים החשובים ביותר בהנדסת חשמל / אלקטרוניקה; האוסצילוסקופ.
האוסצילוסקופ הוא מכשיר בדיקה אלקטרוני המאפשר הדמיה ותצפית על מתח אות משתנה, בדרך כלל כעלילה דו מימדית עם אות אחד או יותר מתוכננים כנגד הזמן. הפרויקט של היום ינסה לשחזר את יכולות הדמיית האות של האוסצילוסקופ באמצעות ה- Raspberry Pi ומודול ממיר אנלוגי לדיגיטלי.
זרימת הפרויקט:
שכפול הדמיית האות של האוסצילוסקופ באמצעות ה- Raspberry Pi ידרוש את השלבים הבאים;
1. בצע המרה דיגיטלית לאנלוגית של אות הקלט
2. הכן את הנתונים שהתקבלו לייצוג
3. התווה את הנתונים בגרף זמן חי
דיאגרמת בלוקים פשוטה עבור פרויקט זה תיראה כמו התרשים שלהלן.
דרישות הפרויקט
ניתן לסווג את הדרישה לפרויקט זה לשניים:
- דרישות חומרה
- דרישות תוכנה
דרישות חומרה
לבניית פרויקט זה נדרשים הרכיבים / חלק הבאים;
- פטל pi 2 (או כל דגם אחר)
- כרטיס SD 8 או 16 ג'יגה
- כבל LAN / Ethernet
- ספק כוח או כבל USB
- ADS1115 ADC
- LDR (אופציונלי כמיועד לבדיקה)
- נגד 10k או 1k
- חוטי מגשר
- קרש לחם
- צג או כל דרך אחרת לראות את שולחן העבודה של ה- pi (כולל VNC)
דרישות תוכנה
דרישות התוכנה לפרויקט זה הן בעצם מודולי הפיתון ( matplotlib ו- drawow ) שישמשו להדמיית נתונים ומודול Adafruit להתממשקות עם שבב ADC1115 ADC. אני אראה כיצד להתקין מודולים אלה ב- Raspberry Pi תוך כדי המשך.
בעוד שמדריך זה יעבוד ללא קשר למערכת ההפעלה של פטל pi המשמשת, אני אשתמש במערכת ההפעלה Raspberry Pi stretch ואני מניח שאתה מכיר את הגדרת ה- Raspberry Pi עם OS Raspbian stretch, ואתה יודע כיצד SSH לתוך הפטל pi באמצעות תוכנת מסוף כמו מרק. אם יש לך בעיות עם כל זה, יש באתר זה טונות של מדריכי פטל פי שיכולים לעזור.
עם כל רכיבי החומרה במקום, בואו ניצור את הסכימות ונחבר את הרכיבים יחד.
תרשים מעגל:
כדי להמיר את אותות הקלט האנלוגיים לאותות דיגיטליים שניתן לדמיין באמצעות ה- Raspberry Pi, נשתמש בשבב ADS1115 ADC. שבב זה הופך להיות חשוב מכיוון ש- Raspberry Pi, בניגוד לארדואינו ולמרבית בקרי המיקרו, אין ממיר אנלוגי לדיגיטלי (ADC) על גבי הלוח. אמנם היינו יכולים להשתמש בכל שבב ADC תואם לפטל, אבל אני מעדיף שבב זה בגלל הרזולוציה הגבוהה שלו (16 ביט) וגליון הנתונים המתועד היטב והוראות השימוש של Adafruit. אתה יכול גם לבדוק את המדריך שלנו ל- Raspberry Pi ADC כדי ללמוד עוד על כך.
ה- ADC הוא מכשיר מבוסס I2C ויש לחבר אותו ל- Raspberry Pi, כפי שמוצג בתרשימים שלמטה.
לשם הבהרה, חיבור הסיכה בין שני המרכיבים מתואר גם להלן.
חיבורי ADS1115 ו- Raspberry Pi:
VDD - 3.3 וולט
GND - GND
SDA - SDA
SCL - SCL
עם סיום החיבורים, הפעל את ה- pi שלך והמשך להתקנת התלות המוזכרת להלן.
התקן תלות עבור אוסצילוסקופ Raspberry Pi:
לפני שנתחיל לכתוב את סקריפט הפיתון כדי לשלוף נתונים מ- ADC ולשרטט אותם על גרף חי, עלינו לאפשר את ממשק התקשורת I2C של ה- pipberry pi ולהתקין את דרישות התוכנה שהוזכרו קודם. זה ייעשה בשלבים הבאים, כך שיהיה קל לעקוב אחריו:
שלב 1: אפשר ממשק Raspberry Pi I2C
כדי לאפשר את ה- I2C, הפעל מהטרמינל;
sudo raspi-config
כאשר לוחות התצורה נפתחים, בחר אפשרויות ממשק, בחר I2C ולחץ על הפעל.
שלב 2: עדכן את ה- Raspberry pi
הדבר הראשון שאני עושה לפני תחילת פרויקט כלשהו הוא עדכון ה- Pi. באמצעות זה, אני בטוח שכל דבר במערכת ההפעלה מעודכן ולא נתקל בבעיית תאימות עם כל התוכנה העדכנית ביותר שאבחר להתקין ב- Pi. לשם כך, הפעל מתחת לשתי פקודות:
sudo apt-get עדכון sudo apt-get שדרוג
שלב 3: התקן את ספריית Adafruit ADS1115 עבור ADC
עם סיום העדכון, אנו מוכנים להתקין את התלות החל ממודול הפייתון של Adafruit עבור שבב ADS115. ודא שאתה נמצא בספריית הבית של Raspberry Pi על ידי הפעלה;
cd ~
ואז להתקין את יסודות הבניין על ידי הריצה;
sudo apt-get להתקין build-essential python-dev python-smbus git
לאחר מכן, שיבט את תיקיית git Adafruit עבור הספריה על ידי הפעלת;
שיבוט git https://github.com/adafruit/Adafruit_Python_ADS1x15.git
עבור לספריית הקובץ המשובט והפעל את קובץ ההתקנה;
cd Adafruit_Python_ADS1x1z sudo python setup.py להתקין
לאחר ההתקנה, המסך שלך צריך להיראות כמו התמונה למטה.
שלב 4: בדוק את הספרייה ותקשורת 12C.
לפני שנמשיך בהמשך הפרויקט, חשוב לבדוק את הספרייה ולוודא שה- ADC יכול לתקשר עם פטל pi מעל I2C. לשם כך נשתמש בסקריפט לדוגמא המגיע עם הספרייה.
בזמן שאתה עדיין בתיקיה Adafruit_Python_ADS1x15, שנה את הספרייה לספריית הדוגמאות על ידי הפעלת;
דוגמאות CD
לאחר מכן, הפעל את הדוגמה sampletest.py המציגה את הערך של ארבעת הערוצים ב- ADC בצורה טבלאית.
הפעל את הדוגמה באמצעות:
python simpletest.py
אם מודול I2C מופעל והחיבורים טובים, אתה אמור לראות את הנתונים כפי שמוצג בתמונה למטה.
אם מתרחשת שגיאה, ודא שה- ADC מחובר היטב ל- PI ותקשורת I2C מופעלת ב- Pi.
שלב 5: התקן את Matplotlib
כדי לדמיין את הנתונים עלינו להתקין את מודול matplotlib המשמש לשרטוט כל מיני גרפים בפייתון. ניתן לעשות זאת על ידי ריצה;
sudo apt-get install python-matplotlib
אתה אמור לראות תוצאה כמו התמונה למטה.
שלב 6: התקן את מודול הפיתון Drawnow
לבסוף, עלינו להתקין את מודול הפיתון של drawow . מודול זה עוזר לנו לספק עדכונים חיים לעלילת הנתונים.
אנו נתקין את drawow דרך מתקין חבילות הפיתון; pip , אז עלינו לוודא שהוא מותקן. ניתן לעשות זאת על ידי ריצה;
sudo apt-get install python pip
לאחר מכן נוכל להשתמש ב- pip כדי להתקין את חבילת drawow על ידי הפעלת:
להתקין ציור
אתה אמור להשיג תוצאה כמו התמונה למטה לאחר הפעלת אותה.
עם כל התלות המותקנת, אנו מוכנים כעת לכתוב את הקוד.
קוד פיתון לאוסצילוסקופ של פטל פי:
קוד הפיתון של אוסצילוסקופ Pi זה פשוט למדי, במיוחד אם אתה מכיר את מודול הפיתון matplotlib . לפני שאציג לנו את כל הקוד, אנסה לפרק אותו לחלק ולהסביר מה כל חלק בקוד עושה כדי שיהיה לך מספיק ידע להרחיב את הקוד כדי לעשות עוד דברים.
בשלב זה חשוב לעבור לצג או להשתמש במציג ה- VNC, כל דבר שדרכו תוכלו לראות את שולחן העבודה של Raspberry Pi, מכיוון שהגרף המתואר לא יופיע במסוף.
כשהצג כממשק פותחים קובץ פיתון חדש. אתה יכול לקרוא לזה בכל שם שתרצה, אבל אני אקרא לזה scope.py.
סודו ננו scope.py
עם יצירת הקובץ, הדבר הראשון שאנו עושים הוא לייבא את המודולים בהם נשתמש;
יבוא זמן ייבוא matplotlib.pyplot כ- plt מיבוא drawow * ייבוא Adafruit_ADS1x15
לאחר מכן, אנו יוצרים מופע של ספריית ADS1x15 המציינת את ADS1115 ADC
adc = Adafruit_ADS1x15.ADS1115 ()
לאחר מכן, קבענו את הרווח של ה- ADC. ישנם טווחי רווח שונים ויש לבחור אותם על פי המתח אותו אתה מצפה בכניסה של ה- ADC. לצורך הדרכה זו אנו מעריכים 0 - 4.09v ולכן נשתמש ברווח 1. למידע נוסף על רווח תוכלו לבדוק את גיליון הנתונים ADS1015 / ADS1115.
רווח = 1
לאחר מכן, עלינו ליצור את משתני המערך שישמשו לאחסון הנתונים שישרטטו ועוד אחד שישמש כספירה.
Val = cnt = 0
לאחר מכן אנו מודעים לכוונותינו להפוך את העלילה לאינטראקטיבית ידועה כדי לאפשר לנו לשרטט את הנתונים בשידור חי.
plt.ion ()
לאחר מכן, אנו מתחילים המרת ADC רציפה המציינת את ערוץ ADC, במקרה זה, ערוץ 0 ומציינים גם את הרווח.
יש לציין כי ניתן לקרוא את כל ארבעת ערוצי ה- ADC ב- ADS1115 בו זמנית, אך ערוץ אחד מספיק להדגמה זו.
adc.start_adc (0, gain = GAIN)
לאחר מכן אנו יוצרים פונקציה def makeFig , כדי ליצור ולהגדיר את תכונות הגרף אשר יחזיקו את העלילה החיה שלנו. ראשית אנו קובעים את גבולות ציר ה- y באמצעות ylim , ולאחר מכן אנו מכניסים את כותרת העלילה ואת שם התווית לפני שנקבע את הנתונים שישרטטו וסגנון העלילה וצבעו באמצעות plt.plot (). אנו יכולים גם לציין את הערוץ (כפי שצוין ערוץ 0) כדי שנוכל לזהות כל אות כאשר משתמשים בארבעת הערוצים של ה- ADC. plt.legend משמש כדי לציין היכן אנו רוצים שהמידע על אותו אות (למשל ערוץ 0) יופיע על האיור.
plt.ylim (-5000,5000) plt.title ('אוסילוסקופ') plt.grid (True) plt.ylabel ('תפוקות ADC') plt.plot (val, 'ro-', label = 'lux') plt. אגדה (loc = 'ימנית תחתונה')
הבא אנו כותבים את בעוד לולאה אשר ישמשו הנתונים לקרוא כל הזמן מן ADC ולעדכן את העלילה בהתאם.
הדבר הראשון שאנו עושים הוא לקרוא את ערך ההמרה של ADC
value = adc.get_last_result ()
לאחר מכן אנו מדפיסים את הערך על הטרמינל רק כדי לתת לנו דרך נוספת לאשר את הנתונים המתוימים. אנו ממתינים מספר שניות לאחר ההדפסה ואז אנו מצרפים את הנתונים לרשימה (val) שנוצרה כדי לאחסן את הנתונים עבור אותו ערוץ.
הדפס ('ערוץ 0: {0}'. פורמט (ערך)) time.sleep (0.5) val.append (int (value))
לאחר מכן אנו קוראים ל- drawow כדי לעדכן את העלילה.
drawow (makeFig)
כדי להבטיח שהנתונים האחרונים הם הזמינים בעלילה, אנו מוחקים את הנתונים באינדקס 0 אחרי כל 50 ספירות נתונים.
cnt = cnt + 1 אם (cnt> 50): val.pop (0)
זה הכל!
קוד פיתון מלא ניתן בסוף המדריך זה.
אוסצילוסקופ פטל פי בפעולה:
העתק את קוד הפיתון השלם והדבק בקובץ הפיתון שיצרנו קודם, זכור שנצטרך צג כדי להציג את העלילה ולכן כל זה צריך להיעשות על ידי VNC או עם צג או מסך מחובר.
שמור את הקוד והפעל באמצעות;
סודו פיתון scope.py
אם השתמשת בשם אחר שאינו scope.py, אל תשכח לשנות אותו כך שיתאים.
לאחר מספר דקות, אתה אמור לראות את נתוני ADC מודפסים במסוף. מדי פעם אתה עשוי לקבל אזהרה מ matplotlib (כפי שמוצג בתמונה למטה) שיש לדכא אותה, אך בכל מקרה זה לא משפיע על הנתונים המוצגים או על העלילה. כדי לדכא את האזהרה, ניתן להוסיף את שורות הקוד הבאות לאחר שורות הייבוא בקוד שלנו.
ייבוא אזהרות ייבא matplotlib.cbook warnings.filterwarnings ("התעלם", קטגוריה = matplotlib.cbook.mplDeprecation)
זהו זה עבור חבר'ה הדרכה זו, כדי לבדוק באופן מלא את האוסצילוסקופ שלכם, תוכלו לחבר מכשיר אנלוגי כמו פוטנציומטר לערוץ ב- ADC וכדאי שתראו את שינוי הנתונים בכל סיבוב של הפוטנציומטר. לחלופין, תוכל להזין גל סינוס או גל מרובע כדי לבדוק את הפלט.
תודה על הקריאה, אם יש לך שאלה או משהו שתרצה שאוסיף, פשוט השאיר לי תגובה.
עד הפעם הבאה, תמשיך להכין!