- חומרים נדרשים:
- עבודה של חיישן זרם ACS712:
- תרשים מעגל
- קוד והסבר:
- אפליקציית Android לניטור צריכת החשמל:
כולנו יודעים על מדדי אנרגיה חשמליים המותקנים בבית של כולם או במשרדים כדי למדוד את צריכת החשמל. סוף סוף בכל חודש, רבים מאיתנו מודאגים מחשבון החשמל הגבוה ועלינו להסתכל מדי פעם על מד האנרגיה. אבל מה אם נוכל לפקח על השימוש בחשמל שלנו מכל מקום בעולם ולקבל SMS / דואר אלקטרוני כאשר צריכת האנרגיה שלך מגיעה לערך סף. כאן אנו בונים פרויקט של מד אנרגיה מבוסס IoT.
בעבר בנינו מעגל מד אנרגיה ששולח לך SMS על החשבון באמצעות מודול GSM. בפרויקט זה אנו מכינים מד חכם לאנרגיה באמצעות מודול ה- Wi-Fi של Arduino ו- ESP8266 אשר לא רק יכול לשלוח לך SMS / דוא"ל של חשבון החשמל שלך, אלא גם אתה יכול לפקח על השימוש באנרגיה בכל עת ומכל מקום בעולם. כאן השתמשנו בחיישן זרם ACS712 למדידת צריכת האנרגיה, נדון בנושא בקרוב.
אנו נעזור בפלטפורמת IFTTT כדי לקשר את ה- Wi-Fi שלנו להודעות SMS / דואר אלקטרוני. אנו נשתמש גם באפליקציית Android של MQTT Dashboard כדי לפקח על השימושים באנרגיה שלנו. אז בואו נתחיל….
חומרים נדרשים:
- ארדואינו אונו
- ESP12 / NodeMCU
- ACS712-30Amp חיישן זרם
- כל מכשיר AC
- חוטי זכר-נקבה
עבודה של חיישן זרם ACS712:
לפני שנתחיל בבניית הפרויקט חשוב לנו מאוד להבין את פעולתו של חיישן הזרם ACS712 מכיוון שהוא מרכיב המפתח בפרויקט. מדידת זרם במיוחד זרם זרם חילופין היא תמיד משימה קשה בגלל הרעש יחד עם בעיית בידוד לא נכונה וכו '. אך בעזרת מודול ACS712 זה שתוכנן על ידי דבר אלגרו הפכו להיות קלים יותר.
מודול זה פועל על פי העיקרון של Hall-effect, שהתגלה על ידי ד"ר אדווין הול. על פי העיקרון שלו, כאשר מוליך מוליך זרם לשדה מגנטי, נוצר מתח על קצוותיו בניצב לכיווני הזרם והשדה המגנטי כאחד. אל לנו להיכנס עמוק מדי למושג, אלא בפשטות אנו משתמשים בחיישן אולם למדידת השדה המגנטי סביב מוליך נושא זרם. מדידה זו תהיה במונחים של מילי-וולט שקראנו להם מתח ההיכל. מתח אולם מדוד זה פרופורציונלי לזרם שזרם דרך המוליך.
היתרון העיקרי של שימוש בחיישן זרם ACS712 הוא שהוא יכול למדוד זרם זרם זרם זרם זרם זרם זרם זרם זרם זה בזה והוא גם מספק בידוד בין העומס (עומס זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם זרם מתח). כפי שמוצג בתמונה יש לנו שלושה פינים על המודול שהם Vcc, Vout ו- Ground בהתאמה.
בלוק המסוף הדו פינים הוא המקום בו צריך לעבור את חוט הנשיאה הנוכחי. המודול עובד על + 5 וולט, כך שה- Vcc צריך להיות מופעל על ידי 5 וולט, והאדמה צריכה להיות מחוברת לקרקע של המערכת. לסיכת ה- Vout מתח קיזוז של 2500mV, כלומר כאשר אין זרם הזורם דרך החוט מתח המתח יהיה 2500mV וכאשר הזרם הנוכחי חיובי, המתח יהיה גדול מ- 2500mV וכאשר הזרם הזורם הוא שלילי, מתח יהיה פחות מ 2500mV.
נשתמש בסיכה האנלוגית של Arduino כדי לקרוא את מתח המוצא (Vout) של המודול, שיהיה 512 (2500mV) כאשר אין זרם הזורם דרך החוט. ערך זה יקטן ככל שהזרם יזרום לכיוון שלילי ויגדל ככל שהזרם יזרום לכיוון החיובי. הטבלה שלהלן תעזור לך להבין כיצד מתח המוצא וערך ה- ADC משתנים בהתאם לזרם הזורם דרך החוט.
ערכים אלה חושבו על בסיס המידע שנמסר בגליון הנתונים של ACS712. אתה יכול גם לחשב אותם באמצעות הנוסחאות הבאות:
מתח Vout (mV) = (ערך ADC / 1023) * 5000 זרם דרך החוט (A) = (Vout (mv) -2500) / 185
כעת, כשאנו יודעים כיצד עובד חיישן ACS712 ולמה היינו יכולים לצפות ממנו. בואו נמשיך לתרשים המעגל.
השתמשנו בחיישן זה כדי ליצור מעגל מד זרם דיגיטלי באמצעות מיקרו-בקר PIC ו- ACS712.
תרשים מעגל
שלב 1: התחבר ל- IFTTT עם האישורים שלך.
שלב 2: ביישומונים שלי לחץ על יישומון חדש
שלב 3: לחץ על + זה
שלב 4: חפש ב- AdaFruit ולחץ עליו.
שלב 5: לחץ על צג עדכון ב- AdaFruit IO.
שלב 6: בחר Feed כמו הצעת חוק, מערכת יחסים כמו " שווה ל" ואת סף הערך שבו אתה רוצה דואר אלקטרוני. לחץ על צור פעולה . השתמשתי ב -4 כערך ההדק שלי.
שלב 7: לחץ על + זה . חפש דואר אלקטרוני ולחץ עליו והיכנס באמצעות אישורי הדואר האלקטרוני שלך.
שלב 8: לחץ על שלח לעצמך דוא"ל.
שלב 9: כתוב את הנושא והגוף שלך כפי שמוצג ולחץ כדי ליצור.
שלב 10: ' המתכון ' שלך מוכן. בדוק אותו ולחץ על סיום.
כעת, סיימנו עם אינטגרציה באינטרנט. בואו נמשיך לקידוד חלק..
קוד והסבר:
אנו משתמשים בתקשורת סדרתית בין ESP12 לארדואינו. אז עלינו לכתוב קוד עבור Arduino ו- NodeMCU להעברה וקבלה.
קוד עבור משדר חלק כלומר עבור Arduino Uno:
קוד ארדואינו מלא ניתן בסוף הדרכה זו. נשתמש בספרייה לחיישן הנוכחי שניתן להוריד מקישור זה.
לספרייה זו פונקציה מובנית לחישוב הזרם. אתה יכול לכתוב את הקוד שלך כדי לחשב את הזרם, אך בספריה זו יש אלגוריתמים מדויקים של מדידת זרם.
ראשית, כלול ספרייה לחיישן הנוכחי כ:
# כלול "ACS712.h"
צור מערך לאחסון כוח לשליחתו ל- NodeMCU.
וואט צ'אר;
צור מופע לשימוש ACS712-30Amp ב- PIN A0. שנה את הארגומנט הראשון אם אתה משתמש בגרסת 20Amp או 5 Amp.
חיישן ACS712 (ACS712_30A, A0);
בשנת התקנת פונקציה, להגדיר קצב שידור של 115,200 לתקשר עם NodeMCU. התקשר לפונקציה sensor.calibrate () לכיול חיישן הנוכחי כדי לקבל קריאות מדויקות.
הגדרת חלל () { Serial.begin (115200); חיישן.כייל (); }
בשנת לולאת פונקציה, אנחנו נתקשר sensor.getCurrentAC (); פונקציה כדי לקבל את הערך הנוכחי ולאחסן במשתנה המצוף I. לאחר קבלת הזרם, חישב את הכוח באמצעות נוסחת P = V * I. אנו משתמשים ב -230 וולט מכיוון שזה הסטנדרט הנפוץ במדינות אירופה, שנה למקומי שלך, במידת הצורך
לולאה בטלה () { צף V = 230; לצוף I = sensor.getCurrentAC (); לצוף P = V * I;
קווים אלה ממירים כוח ל- Wh.
זמן_ אחרון = זמן הנוכחי; current_time = מילי (); Wh = Wh + P * ((זמן_זמן אחרון-זמן) / 3600000.0);
כעת עלינו להמיר את ה- Wh לצורת תו כדי לשלוח אותו ל- NodeMCU, עבור dtostrf זה (); ימיר מצוף למערך צ'אר כך שניתן יהיה להדפיס אותו בקלות:
dtostrf (Wh, 4, 2, וואט);
הפורמט הוא:
dtostrf (floatvar, StringLengthIncDecimalPoint, numVarsAfterDecimal, charbuf);
כתוב מערך תווים זה למאגר סדרתי באמצעות Serial.write () ; פוּנקצִיָה. זה ישלח את ערך ה- Wh ל- NodeMCU.
Serial.write (ואט); עיכוב (10000); }
קוד עבור מקלט חלק הצומת MCU ESP12:
לשם כך אנו זקוקים לספריית AdaFruit MQTT שניתן להוריד מקישור זה.
עכשיו, פתח את Arduino IDE. עבור לדוגמאות -> ספריית MQTT של AdaFruit -> mqtt_esp8266
אנו נערוך קוד זה על פי מפתחות ה- AIO שלנו ואישורי ה- Wi-Fi והנתונים הטוריים הנכנסים מהארדואינו.
ראשית, כללנו את כל הספריות עבור מודול ה- Wi-Fi ESP12 ו- AdaFruit MQTT.
#לִכלוֹל
אנו מגדירים את ה- SSID והסיסמה עבור ה- Wi-Fi שלך, שממנו ברצונך לחבר את ה- ESp-12e.
#define WLAN_SSID "xxxxxxxx" #define WLAN_PASS "xxxxxxxxxxx"
סעיף זה מגדיר את שרת AdaFruit ויציאת השרת אשר קבועים כ- "io.adafruit.com" ו- "1883" בהתאמה.
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883
החלף את השדות האלה בשם המשתמש שלך ובמפתחות AIO שהעתקת מאתר AdaFruit בעת ביצוע העדכון.
#define AIO_USERNAME "********" #define AIO_KEY "*****************************"
לאחר מכן יצרנו מחלקת ESP12 WiFiClient להתחברות לשרת MQTT.
לקוח WiFiClient;
הגדר את מחלקת הלקוחות MQTT על ידי העברת לקוח ה- WiFi ושרת MQTT ופרטי הכניסה.
Adafruit_MQTT_Client mqtt (& client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
הגדרת הזנה שנקרא "כוח" ו "שטר" לפרסום לשינויים.
Adafruit_MQTT_Publish Power = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/ feeds / Power"); Adafruit_MQTT_Publish bill = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/ feeds / bill");
בשנת ההתקנה פונקציה, אנו מתחברים מודול Wi-Fi לנקודת גישה Wi-Fi.
הגדרת חלל () { Serial.begin (115200); עיכוב (10); Serial.println (F ("הדגמת AdQruit MQTT")); // התחבר לנקודת גישה WiFi. Serial.println (); Serial.println (); Serial.print ("מתחבר אל"); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); …. …. ... }
בשנת לולאה פונקציה, אנו נבדוק את הנתונים הנכנסים מן Arduino ולפרסם בנתונים אלה כדי Adafruit IO.
void loop () { // וודא שהחיבור לשרת MQTT חי (פעולה זו תעשה את החיבור // ותתחבר אוטומטית מחדש לאחר הניתוק). ראה את הגדרת הפונקציה MQTT_connect // בהמשך. MQTT_connect (); int i = 0; צף וואט 1;
פונקציה זו בודקת את הנתונים הנכנסים מהארדואינו ומאחסנת נתונים אלה במערך וואט באמצעות הפונקציה serial.read ().
אם (Serial.available ()> 0) { עיכוב (100); // מאפשרת לקבל את כל הסידורים שנשלחים יחד כאשר (Serial.available () && i <5) { watt = Serial.read (); } וואט = '\ 0'; }
פונקציית atof () ממירה את התווים לערכי צף ואנו נאחסן ערך צף זה במשתנה צף אחר watt1.
ואט 1 = אטוף (ואט);
חישב את סכום השטר על ידי הכפלת ההספק (ב- Wh) עם תעריף האנרגיה וחלק אותו ב 1000 כדי להכין הספק בקוט"ש.
bill_amount = watt1 * (energyTariff / 1000); // 1 יחידה = 1 קילוואט
עכשיו אנחנו יכולים לפרסם דברים!
Serial.print (F ("\ n נשלח כוח val")); Serial.println (watt1); Serial.print ("…");
פיסת קוד זו מפרסמת ערכי כוח בפיד הכוח
אם (! Power.publish (watt1)) { Serial.println (F ("נכשל")); } אחר { Serial.println (F ("OK!")); }
זו תפרסם חשבון חשמל על הצעת החוק להאכיל.
אם (! bill.publish (bill_amount)) { Serial.println (F ("נכשל")); } אחר { Serial.println (F ("OK!")); }
סכום החיוב שלנו עשוי להשתנות במהירות אך ל- IFTTT לוקח זמן להפעיל את היישומון כך ששורות אלה יתנו זמן להפעלה כדי שנוכל לקבל דוא"ל סף.
שנה את ערך bill_amount עליו ברצונך לקבל דוא"ל. כמו כן, שינוי בהתקנת IFTTT AdaFruit IO.
אם (bill_amount == 4) { for (int i = 0; i <= 2; i ++) { bill.publish (bill_amount); עיכוב (5000); } bill_amount = 6; }
הקוד השלם עבור Arduino ו- NodeMCU ESP12 ניתן בסוף הדרכה זו.
כעת העלה את הקודים לשני הלוחות. חבר את החומרה שלך כפי שמוצג בתרשים המעגלים ופתח io.adafruit.com. פתח את לוח המחוונים שיצרת זה עתה. תראה את חשבון צריכת החשמל והחשמל מתעדכן.
כאשר הצעת החוק שלך הגיע ל INR 4 אז אתה תקבל דוא"ל כזה.
אפליקציית Android לניטור צריכת החשמל:
אתה יכול להשתמש באפליקציית Android לניטור הערכים. להורדה זו אפליקציית האנדרואיד MQTT Dashboard מחנות Play או מקישור זה.
כדי להתקין חיבור עם io.adafruit.com, בצע את הצעדים הבאים:
שלב 1: פתח את האפליקציה ולחץ על סימן "+". מלא את מזהה הלקוח כל מה שאתה רוצה. השרת והיציאה נשארים זהים כפי שמוצג בצילום המסך. תקבל שם משתמש וסיסמה (מפתח פעיל) מלוח המחוונים של AdaFruit IO כמוצג להלן.
מפתח פעיל הוא הסיסמה שלך.
שלב 2: בחר מד חשמל ובחר הירשם. במנוי, ציין שם ידידותי ונושא. פורמט הנושא הוא 'שם המשתמש שלך ' / עדכונים / 'שם העדכון' ולחץ על צור.
שלב 3: באותו אופן, הזן מנוי לעדכון חשבונות.
שלב 4: כמו המכשירים שלך גוזלים אנרגיה, ערכים מעודכנים מיוצגים תחת Power ו ביל .
כך תוכלו ליצור מד חכם לחשמל, אשר לא רק ניתן לפקח מכל מקום בעולם אלא גם להפעיל דוא"ל כשיש לכם צריכת חשמל גבוהה.
בדוק גם את כל פרויקטי ה- IoT שלנו.