- תרשים בלוק של מד האנרגיה החכם של פטל
- רכיבים נדרשים
- הכנת הפי
- תרשים מעגלים של מד אנרגיה
- קוד פייתון עבור מד אנרגיה פי
- הַדגָמָה
צגי אנרגיה, בין אם הם מכסים את כל הדירה ובין אם הם פרוסים לפקח על מכשיר אחד בלבד, מספקים דרך לעקוב אחר הצריכה ולבצע התאמות נדרשות. אמנם הם הופכים להיות יותר ויותר זמינים בשוק, אך היצרן שבי עדיין מרגיש שזה יהיה רעיון מצוין לבנות גרסת DIY שעשויה להיות מותאמת כך שתענה על דרישות אישיות ספציפיות. ככזה, לצורך ההדרכה של היום, אנו בונים צג צריכת חשמל של Raspberry Pi המסוגל להשיג צריכת אנרגיה ולהעלות ל- Adafruit.io.
אתה יכול גם לבדוק את מד האנרגיה מבוסס IoT המבוסס על Arduino ואת מד האנרגיה GSM בתשלום מראש שבנינו קודם.
תרשים בלוק של מד האנרגיה החכם של פטל
תרשים בלוקים המראה כיצד עובדת המערכת מוצג להלן.
</s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s>לבחור את היחידות אחת אחרי השנייה;
יחידת חישת זרם: יחידת החישה הנוכחית מורכבת מחיישן הזרם SCT -013 שיכול למדוד עד 100A, תלוי בגרסה שאתה קונה. החיישן הופך את הזרם העובר דרך החוט שעליו הוא מהודק לזרם קטן שמועבר לאחר מכן ל- ADC באמצעות רשת של מחלקי מתח.
יחידת חישת מתח: אמנם לא הצלחתי להניח את ידי על מודול חיישני מתח, אך נקים DIY חיישן מתח ללא שנאי המודד מתח באמצעות עיקרון מחלקי המתח. חיישן המתח DIY כולל את שלב חלוקת המתח בו הופכים את המתח הגבוה לערך המתאים לקלט ל- ADC.
יחידת עיבוד: יחידת העיבוד כוללת את ה- ADC ואת ה- Raspberry pi. ה- ADC לוקח את האות האנלוגי ושולח אותו לפאי פטל, ואז מחשב את כמות הכוח המדויקת הנצרכת ושולח אותו לענן מכשיר ייעודי. לצורך הדרכה זו נשתמש ב- Adafruit.io כענן המכשירים שלנו. בנינו גם אחרים
הצהרת אחריות: לפני שנתחיל, חשוב להזכיר כי פרויקט זה כולל חיבור לאספקת חשמל המסוכנת ועלולה להיות קטלנית אם לא יטופל בבטחה. ודא שיש לך ניסיון בעבודה סביב AC לפני שתנסה זאת.
מוּכָן? בואו נצלול פנימה.
רכיבים נדרשים
הרכיבים הבאים נדרשים לבניית פרויקט זה;
- פטל Pi 3 או 4 (התהליך צריך להיות זהה ל- RPI2 עם דונגל WiFi)
- ADS1115 16bit I2C ADC
- YHDC SCT-013-000
- 2.5A מתאם מתח MicroUSB 5V
- נגד 2W 10K (1)
- 1 / 2W 10K נגד (2)
- נגד נגד 33 אוהם (1)
- נגד 2W 3.3k (1)
- דיודה IN4007 (4)
- 3.6v דיודת זנר (1)
- פוטנציומטר 10k (או מוגדר מראש) (1)
- קבלים 50v 1uf
- קבלים 50v 10uf (2)
- BreadBoard
- כבל מגשר
- אביזרים אחרים לשימוש פטל פי.
מלבד רכיבי החומרה המפורטים לעיל, הפרויקט דורש גם כמה תלות וספריות תוכנה אותם נתקין בהמשך.
בעוד שמדריך זה יעבוד ללא קשר למערכת ההפעלה של פטל pi המשמשת, אני אשתמש במערכת ההפעלה Raspberry Pi buster הפועלת על Pi 3 (צריכה לעבוד גם על Pi 4) ואני מניח שאתה מכיר את הגדרת ה- Raspberry Pi עם את מערכת ההפעלה של Raspbian Buster (בערך אותו תהליך כמו הגרסאות הקודמות), ואתה יודע איך SSH לתוכנה באמצעות תוכנת מסוף כמו hyper. אם יש לך בעיות עם כל זה, יש באתר זה טונות של מדריכי פטל פי שיכולים לעזור
הכנת הפי
לפני שנתחיל לחבר את הרכיבים ולקודד, יש כמה משימות פשוטות שעלינו לבצע על פטל פטל כדי לוודא שאנחנו מוכנים לצאת לדרך.
שלב 1: הפעלת ה- Pi I2C
ביסוד הפרויקט של היום הוא לא רק פטל פטל אלא ADC1115 16bit I2C מבוסס ADC. ה- ADC מאפשר לנו לחבר חיישנים אנלוגיים ל- Raspberry Pi מכיוון שב- Pi עצמו אין ADC מובנה. הוא לוקח את הנתונים דרך ADC משלו ומעביר אותם לפטל פטל דרך I2C. ככזה, עלינו לאפשר תקשורת I2C ב- Pi כדי שתוכל לתקשר איתו.
ניתן להפעיל או להשבית את אוטובוס ה- I2C של ה- Pi באמצעות דף התצורה של פטל. כדי להפעיל אותו, לחץ על אייקון ה- Pi בשולחן העבודה ובחר העדפות ואחריו תצורת ה- Raspberry pi.
זה אמור לפתוח את דף התצורה. בדוק את לחצן הבחירה המאופשר עבור ה- I2C ולחץ על אישור כדי לשמור אותו ואתחל את ה- Pi כדי לבצע את השינויים.
אם אתה מפעיל את ה- Pi במצב ללא ראש, ניתן לגשת לדף התצורה של Raspbian על ידי הפעלת sudo raspi-config.
שלב 2: התקנת ספריית ADS11xx מ- Adafruit
הדבר השני שעלינו לעשות הוא להתקין את ספריית הפיתון ADS11xx המכילה פונקציות ושגרה שמאפשרות לנו לכתוב סקריפט פיתון כדי להביא ערכים מה- ADC.
בצע את השלבים הבאים כדי לעשות זאת.
- עדכן את ה- pi שלך על ידי ריצה; sudo apt-get עדכון ואחריו ידי sudo apt-get לשדרג תעדכן את pi להבטיח שלא קיימות בעיות תאימות עבור כל תוכנה חדשה תבחר להתקין.
- לאחר מכן, הפעל את הפקודה cd ~ כדי להבטיח שאתה נמצא בספריה הביתית.
- לאחר מכן, התקן את יסודות הבניין באמצעות הפעלה; sudo apt-get להתקין build-essential python-dev python-smbus git
- לאחר מכן, שבט את תיקיית git Adafruit המכילה את ספריית ADS על ידי הפעלה; שיבוט git https://github.com/adafruit/Adafruit_Python_ADS1x15.git
- עבור לספריית הקובץ המשובט והפעל את קובץ ההתקנה באמצעות; cd Adafruit_Python_ADS1x1z ואחריו sudo python setup.py להתקין
עם זה, ההתקנה אמורה להסתיים כעת.
באפשרותך לבדוק את התקנת הספרייה על ידי חיבור ה- ADS1115 כמוצג בסעיף התרשימים שלמטה ולהפעיל את קוד הדוגמה שהגיע עם הספרייה על ידי תחילה, לשנות לתיקיה באמצעות; דוגמאות CD והפעלת הדוגמה באמצעות; python simpletest.py
שלב 3: התקן את מודול הפייתון של Adafruit.IO
כאמור במהלך ההיכרות, אנו נפרסם קריאות מחיישני המתח והזרם לענן ה- IO של Adafruit שממנו ניתן לצפות מכל רחבי העולם או להתחבר ל- IFTTT כדי לבצע את הפעולות שתרצו.
מודול הפיתון Adafruit.IO מכיל תת-דרכים ופונקציות שעליהן ננצל כדי להזרים נתונים בקלות לענן. בצע את השלבים הבאים להתקנת המודול.
- הפעל את התקליטור ~ כדי לחזור לספריית הבית.
- לאחר מכן, הפעל את הפקודה; sudo pip3 להתקין את adafruit-io . עליו להתקין את מודול ה- Python IO של Adafruit.
שלב 4: הגדר את חשבון Adafruit.io שלך
כדי להשתמש ב- Adafruit IO יהיה עליך ליצור תחילה חשבון ולקבל מפתח AIO. מפתח AIO זה יחד עם שם המשתמש שלך ישמש את סקריפט הפיתון שלך כדי לגשת לשירות הענן של Adafruit IO. ליצירת חשבון בקר בכתובת; https://io.adafruit.com/, לחץ על כפתור התחל בחינם ומלא את כל הפרמטרים הנדרשים. כאשר ההרשמה הושלמה, אתה אמור לראות את לחצן הצג מפתח AIO בצד ימין של דף הבית שלך.
לחץ עליו כדי לקבל את מפתח ה- AIO שלך.
עם העתקת המפתח אנו מוכנים לצאת לדרך. עם זאת, כדי להקל על תהליך שליחת הנתונים לשירות הענן, ניתן גם ליצור את הפידים אליהם יישלחו נתונים. (מידע נוסף על הזנות AIO ניתן למצוא כאן). מכיוון שבעצם נשלח צריכת חשמל, ניצור הזנה לחשמל. ליצירת פיד, לחץ על "הזנות" בראש עמוד AIO ולחץ על הוסף פיד חדש.
תן לזה איזה שם שתרצה, אבל כדי לשמור על דברים פשוטים, אני אקרא לזה צריכת אנרגיה. אתה יכול גם להחליט ליצור הזנות למתח ולזרם ולהתאים את הקוד לפרסום נתונים אליהם.
עם כל זה במקום, אנו מוכנים כעת להתחיל בבניית הפרויקט.
תרשים מעגלים של מד אנרגיה
התרשימים של פרויקט Raspberry Pi Energy Monitor הם מורכבים יחסית והיא כוללת חיבור למתח AC כאמור, אנא דאגו לנקוט בכל אמצעי הזהירות הדרושים בכדי למנוע התחשמלות. אם אינך מכיר טיפול בבטחה במתח זרם זר, תן לשמחה להטמיע זאת על קרש לחם, מבלי להפעיל אותו, להיות מספק.
התרשימים כוללים חיבור יחידת חיישני המתח והזרם ל- ADC אשר לאחר מכן שולח את הנתונים מהחיישנים ל- Raspberry Pi. כדי להקל על המעקב אחר הקשרים, הסכימות של כל יחידה מוצגות בפני עצמה.
סכמטי חיישן זרם
חבר רכיבים לחיישן הנוכחי כפי שמוצג בתרשימים להלן.
השנאי הנוכחי המשמש בפרויקט זה מוצג להלן, כפי שאתה יכול לראות שיש לנו שלושה חוטים ממנו, כלומר קרקע, קוורץ ו -3.3 וולט
שרטוטים של חיישני מתח
חבר רכיבים לחיישן המתח כפי שמוצג בתרשימים להלן.
יחידת עיבוד סכימות
חבר הכל יחד עם ה- ADC (ADS1115) המחובר לפטל פטל והפלט של חיישני הזרם והמתח המחוברים לסיכה A0 ו- A1 של ה- ADS1115 בהתאמה.
וודא שסיכות GND של שתי יחידות החישה מחוברות ל- GND של ה- ADC או לפטל הפטל.
כדי להפוך את העניינים לקצת פחות מטלטלים, יישמתי את חיישני המתח והזרם ב- Protoboard. כמו כן, לא מומלץ לבנות מעגל זרם חילופין על קרש הלחם. אם תעשה את אותו הדבר, ההתקנה הסופית שלך עשויה להיראות כמו התמונה למטה;
עם השלמת החיבורים, אנו מוכנים כעת לכתוב את הקוד לפרויקט.
קוד פייתון עבור מד אנרגיה פי
כרגיל בפרויקטים שלנו של פטל פטל, נפתח את הקוד לפרויקט באמצעות פיתון. לחץ על סמל פטל פטל על שולחן העבודה, בחר בתכנות והפעל את גרסת הפיתון שבה תרצה להשתמש. אני אשתמש בפייתון 3 וחלק מהפונקציות בפייתון 3 אולי לא יעבדו עבור פייתון 2.7. אז יתכן שיהיה צורך לבצע שינוי משמעותי בקוד אם ברצונך להשתמש בפייתון 2.7. אני אעשה פירוט של הקוד לקטעים קטנים ואשתף את הקוד השלם בסוף.
מוּכָן? מגניב.
האלגוריתם שמאחורי הקוד הוא פשוט. סקריפט הפיתון שלנו שואל את ADS1115 (מעל I2C) לצורך קריאות מתח וזרם. הערך האנלוגי שהתקבל מתקבל, נדגם ומתקבל ערך הריבוע הממוצע של המתח והזרם. ההספק בקילוואט מחושב ונשלח להזנת ה- IO של Adafruit לאחר מרווחים ספציפיים.
אנו מתחילים את התסריט על ידי הכללת כל הספריות בהן נשתמש. זה כולל ספריות מובנות כמו ספריית הזמן והמתמטיקה והספריות האחרות שהתקנו קודם.
יבוא זמן יבוא Adafruit_ADS1x15 מ Adafruit_IO ייבוא * מתמטיקה יבוא
לאחר מכן, אנו יוצרים מופע של ספריית ADS1115 שישמש לטיפול ב ADC הפיזי בהמשך.
# צור מופע ADS1115 ADC (16 סיביות).. adc1 = Adafruit_ADS1x15.ADS1115 ()
בשלב הבא, ספק את שם המשתמש שלך ב- Adafruit IO ומפתח "AIO".
שם משתמש = 'הזן את שם המשתמש שלך בין הציטוטים האלה' AIO_KEY = 'מפתח aio שלך' aio = לקוח (שם משתמש, AIO_KEY)
אנא שמור על המפתח. ניתן להשתמש בו כדי לגשת לחשבון Adafruit io שלך ללא רשותך.
לאחר מכן, אנו יוצרים כמה משתנים כמו הרווח עבור ה- ADC, מספר הדגימות שאנחנו רוצים ונקבע את העיגול שהוא בהחלט לא קריטי.
GAIN = 1 # עיין בתיעוד ads1015 / 1115 לגבי ערכים פוטנציאליים. דוגמאות = 200 מספר מספר דגימות שנלקחו ממודעות 1115 מקומות = int (2) עיגול קבוע #
לאחר מכן, אנו יוצרים לולאת זמן לניטור הזרם והמתח ושליחת הנתונים ל- Adafruit io במרווחים. לולאת ה- while מתחילה בהגדרת כל המשתנים לאפס.
בעוד נכון: מספר משתני איפוס ספירה = int (0) datai = datav = maxIValue = 0 # ערך זרם מקסימלי בתוך המדגם maxVValue = 0 # ערך מתח מקסימלי בתוך המדגם IrmsA0 = 0 # שורש ממוצע זרוע ריבועי VrmsA1 = 0 # מתח ריבוע ממוצע ampsA0 = 0 # וולט שיא הנוכחי A1 = 0 # קילוואט מתח = צף (0)
מכיוון שאנו עובדים עם מעגלי AC, הפלט של SCT-013 וחיישן המתח יהיו גל סינוס, ולכן כדי לחשב את הזרם והמתח מגל סינוס, נצטרך לקבל את ערכי השיא. כדי לקבל את ערכי השיא, נדגום גם מתח וגם זרם (200 דגימות), ונמצא את הערכים הגבוהים ביותר (ערכי שיא).
לספירה בטווח (דוגמאות): datai.insert (ספירה, (abs (adc1.read_adc (0, gain = GAIN)))) datav.insert (count, (abs (adc1.read_adc (1, gain = GAIN)))) # ראה אם יש לך הדפסת maxValue חדשה (datai) אם datai> maxIValue: maxIValue = datai if datav> maxVValue: maxVValue = datav
לאחר מכן, אנו מתקינים את הערכים על ידי המרה מערכי ADC לערך בפועל שלאחריו אנו משתמשים במשוואת הריבוע הממוצע של שורש כדי למצוא את מתח ה- RMS והזרם.
# חשב זרם באמצעות הנתונים שנדגמו # sct-013 בשימוש מכויל עבור פלט 1000mV @ 30A. IrmsA0 = לצוף (maxIValue / לצוף (2047) * 30) IrmsA0 = עגול (IrmsA0, מקומות) ampsA0 = IrmsA0 / math.sqrt (2) ampsA0 = עגול (ampsA0, מקומות) # חישוב מתח VrmsA1 = לצוף (maxVValue * 1100 / צף (2047)) VrmsA1 = עגול (VrmsA1, מקומות) voltsA1 = VrmsA1 / math.sqrt (2) voltsA1 = עגול (voltsA1, מקומות) הדפס ('מתח: {0}'. פורמט (voltsA1)) הדפס ('הנוכחי: {0} '. פורמט (ampsA0))
עם זאת, הכוח מחושב והנתונים מתפרסמים באתר adafruit.io
#calculate power power = round (ampsA0 * voltsA1, places) print ('Power: {0}'. format (power)) # post data to adafruit.io EnergyUsage = aio.feeds ('EnergyUsage') aio.send_data (' EnergyUsage ', כוח)
בחשבונות בחינם, Adafruit דורש שיהיה זמן מה בין בקשות להעלאת נתונים.
# המתן לפני שחוזר על זמן הלולאה. שינה (0)
הקוד המלא של הפרויקט נגיש בתחתית דף זה
הַדגָמָה
עם השלמת הקוד, שמור אותו ולחץ על כפתור ההפעלה ב- python IDE. לפני כן, ודא שה- Pi מחובר לאינטרנט באמצעות WiFi או LAN, ומפתח ה- aio ושם המשתמש שלך נכונים. לאחר זמן מה, עליך להתחיל לראות את נתוני האנרגיה (כוח) המוצגים בעדכון ב- Adafruit.io. הגדרת החומרה שלי במהלך ההדגמה הייתה כזו
כדי להמשיך את הדברים, תוכל ליצור לוח מחוונים ב- adafruit.io ולהוסיף רכיב גרף כדי שתוכל לקבל תצוגה גרפית של הנתונים כפי שמוצג בתמונה למטה.
זהו זה, אתם יכולים כעת לפקח על צריכת האנרגיה שלכם מכל מקום בעולם. חשוב לציין כי בהחלט יש לבצע הרבה יותר כיוונון כיול וכיולים כדי להפוך אותו לפיתרון מדויק באמת, אך אני מאמין שזה נותן לך כמעט כל מה שאתה צריך כדי להמשיך.
אל תהסס לצלם לי שאלות אודות הפרויקט באמצעות קטע ההערות. אנסה לענות כמה שיותר. עד הפעם הבאה.