תחנת מזג אויר, low power, מבוססת esp8266.

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

9

מי שיודע וזוכר, בניתי כבר דבר כזה (קישור לפורום מייקרס) שמבוסס ארדואינו ובנוסף גם esp8266 עם קושחת AT, שהיה מקבל פקודות AT מהארדואינו על מנת להעלות את הנתונים, למה לא להשאיר את זה ככה?
ככה! סתם, דבר ראשון גיליתי שesp8266 יכול לבד, הוא בקר בפני עצמו, עם נתונים מרשימים ויכולות wifi :D, סיבה נוספת היא שגם הארדואינו צורך לא מעט אנרגיה, והסיבה הכי גדולה היא שלא אהבתי את ממשק הAT של הesp8266, הוא עשה לי בעיות, היה קשה לדבר איתו, קשה לדבג, והוא בשום פנים באופן לא רצה להתחבר לשרת שלי ישירות, כדי להעלות נתונים לשרת שלי, נרשמתי לשירות אחסון חינמי שאיתו הesp8266 כן הסכים לדבר והוא כבר העביר את הנתונים לשרת שלי, מסובך הא?

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

אז מה יש לנו?

  • בקר esp8266 -01 משופצר, עם גישה ל ADC ועוד 3 פינים דיגיטאליים
  • מד אור דיגיטאלי BH1750 (מודד בlux)
  • מד לחץ ברומטרי BMP180 – מודד גם טמפרטורה בדיוק של 2 ספרות אחרי הנקודה
  • מד לחות וטמפרטורה DHT11 – מודד לחות בלבד, הוא גם תקול – הנתונים משתגעים, ישודרג ל DHT22
  • סוללה, ליטיום-יון 3.7V, רשום 1000mAh, אני לא מאמין לזה, יבדק (פרטים בהמשך)
  • מודול הגנה וטעינה לסוללה, יחובר לפאנל סולארי לטעינה בעתיד.

עוד פרטים

עוד נתון שהיחידה מספקת חוץ מהנתונים הברורים היא מתח הסוללה, נעשה שימוש בADC שבפין TOUT, יש לו רפרנס פנימי בטווח 0-1V, לפי מה שראיתי הדיוק שלו מזעזע, אני משתמש בחלק מתח כדי לחלק 4.2V לפחות מ1V, כשאני מנסה לחסוך באנרגיה ולשים ערכים גבוהים בנגדים הוא מאבד הכל לגמרי, בשינוי המתח משתנה גם השגיאה.. לא ברור בכלל.
שלושת החיישנים מחוברים דרך טרנזיסטור לפין דיגיטאלי בesp8266, והם נדלקים רק כאשר הבקר ער – חיסכון בסוללה.
תקשורות – מד האור ומד הלחץ מתקשרים בi2c, הDHT11, מדבר בשפה שלו..
i2c מומש בקלות בעזרת ספריית wire.

Low Power

מילים גדולות… בוt נראה מה קורה שם עם האנרגיה.
טוב אז יש לנו מקור מתח, סוללת ליטיום-יון 3.7V קטנה וחמודה, למי שלא יודע, מתח של סוללת ליטיום-יון 3.7V הוא לא בהכרח 3.7V, למען האמת המתח הוא 4.2V כשהיא מלאה ו3.0V כשהיא ריקה לחלותין, לחדים שבמגירה ששמו לב שאין לי שום מייצב מתח ביחידה – נכון אין מייצב מתח, מייצב מתח רגיל זולל 10mA ואפשר לשכוח מהמושג low power, אני החלטתי לשים דיודה, אחת, שתפיל את המתח, שמתי דיודה 1N4001 פשוטה והיא מפילה לי מ4.2V ל3.7V, בדף הנתונים של הesp8266 מצויין שהוא מסוגל לעבוד בטווח בריא של 3.0-3.6V בVCC, נכון 0.1V מעל המותר,ועל זה יש לי להגיד "נחייה ונראה",שלא תחשבו שאני לא רציני יש לזה פיתרון, אבל צריך למצוא אחד מתאים, יש מייצבי מתח עם, מה שנקרא "low quiescent current", שזה אומר שהזרם שצורך המייצב לעצמו נמוך מאוד, רק צריך למצוא מייצב מתח 3.3V שמסוגל להביא 300-500mA וגם הזרם שהוא עצמו צורך נמוך.
הלאה – שינה, כמו שכבר רשמתי בעבר, הesp8266 ישן, וישן טוב, 18.8 מיקרו אמפר בשינה עמוקה, אבל לא רק הבקר בתמונה, יש לי מחלק מתח שצורך, וחיישנים שצורכים, וגם צריכה פרזיטית לא מוסברת, על bread board עם ספק כוח, כל המעגל צרך 76 מיקרו אמפר בשינה, אחרי הרכבה, הלחמה ושימוש בסוללה הזרם בשינה עלה ל 99 מיקרו אמפר, הסבר הגיוני הוא שהמתח שהמעגל מקבל לא יתקבל בשום מקום כפיתרון רלוונתי! דיודה?! באמת?! = המתח יורד, הזרם יורד ולהיפך.

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

בזמן שהבקר ער הזרם קופץ בין 30-70-150mA, כדי לחשב זמן סוללה  הנחתי בממוצע 80mA
אז זה 80 כפול 8 שניות, 4 פעמים בשעה, שזה 32 שניות, שזה 0.00888889 שעה
ועוד 0.099 כפול 3568 שניות שהבקר ישן בשעה שזה 0.99111111 שעה
ונקבל זרם ממוצע 0.81mA בשעה

עכשיו הסוללה – סוללה מאיביי במסגרת זיוף הסוללות הגדול = אני לא באמת יודע מה הקיבולת שלה,
ואת זה אנחנו יכולים לבדוק, אני הנחתי שהקיבולת שלה היא 300mAh.
300mAh לחלק ב0.81mA יוצא 370.4 שעות, שזה 15 ימים ו6 שעות, כמובן שזו הערכה גסה.
והיום חיברתי את היחידה לסוללה טעונה במלואה, ונראה לכמה זמן היא תספיק.

את כל הנתונים אפשר לראות בכתובת weather2.alexshu.com

etailhe

To Do

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

תודה שקראתם.

רשם טמפרטורה ולחות על esp8266 כדונגל USB

רשם = logger;

בפעם הקודמת התחלתי לשחק עם הesp8266 בתור בקר עצמאי ותכנותו בעזרת הArduino IDE, זרקתי את הesp8266 על breadboard ועם חיישן DS18B20 וספק כוח חיצוני ל3.3V וכמה כבלים הרצתי סקץ' פשוט שעבד יופי – וכל חצי דקה העלה את הנתונים ל thingspeak.com.
התלהבתי מזה מעט, ואז בא לי הרעיון הבא, באתי לפרק את העניין והתבאסתי, מה כזה דבר נחמד אני אפרק? אבל מה אני אשאיר את זה ככה? מחובר לשנאי DC וחוטים וזה ..
מפה לשם החלטתי שזה עולה על PCB חורים אבל עם חיישן טמפרטורה ולחות DHT11 (כי יש לי מלא) ויעבוד כדונגל USB! שיחובר למטען של טלפון 🙂

back

המעגל פשוט ביותר – מייצב מתח באריזת TO-92 יחד עם 2 קבלים בכניסה וביציאה, מספק 3.3V לVCC של הesp8266 ושל הDHT11, כמובן gnd לgnd ופין data של החיישן לאחת מרגלי gpio בesp8266, כל זה על PCB קטן ובראשו חיבור USB זכר מכבל שזמנו הגיע.
הניסיון שלי לעשות האת ה PCB בצבע super stealth black כשל כמו שאתם רואים 🙂

scheme

והקוד, שהורכב מ2 דוגמאות וקצת שינויים (קוד מלוכלך שלא היה לי כוח לסדר, אז תסלחו לי 🙂 )
בקוד תצתרכו לשנות את שורות 14,15 ו 18, שהם הssid הסיסמא של הרשת והkey של הערוץ בthingspeak.com.

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

אם עשיתם גם, תשתפו גם..
תהנו 8)

esp8266 יכול לבד – רשם טמפרטורה על Wifi

קודם כל החלטתי שפירוש המילה "logger" היא "רשם", עכשיו כשסיכמנו על זה נמשיך…

מזה כמה חודשים קבוצת esp8266.com הכריזה על האפשרות להשתמש בIDE של ארדואינו לתכנות הבקרים הללו, אבל אז היה צריך להוריד IDE שלם, לדרוס או לשמור בנפרד, בקיצור להסתבך.
לא מזמן קבוצת Arduino.cc הציגה את הBoards Manager אשר מאפשר לפנות לשרתים שונים ולהוריד משם תוספות והרחבות ללוחות שונים ומשונים, וכן היה..
קישור לGitHub של ההרחבה

כל מה שצריך לעשות זה להוריד את הגירסא החדשה של Arduino IDE, בPreferences להוסיף קישור לשרת המכיל את ההרחבה, להיכנס לBoards Manager, לבחור את ההרחבה לesp8266 ולהתקין, כן כל כך פשוט.

2015-05-28 12_11_02-Boards Manager

לאחר ההתקנה, תחת Tools, יופיע לכם ברשימת הלוחות הesp8266 בכמה וריאציות, ועוד מגוון אפשריות לבחירה, כל מה שנשאר לעשות זה לחבר את הesp8266 למתח ולממיר USB-RS232, לכתוב קוד ולהעלות אותו ללוח.

ide
פה חשדתי! מה ככה סתם? בלי ארדואינו? בלי לצרוב לו קושחה? איך זה יכול להיות, ובכן ככה!
זה פשוט עובד, מבלי להסתבך יותר מדי, הIDE מקמפל את הקוד לשני קבצי bin ומעלה אותם לesp8266, וזה כל מה שנדרש ממנו בכדי לתפקד.

אז מה עושים עם זה?

ובכן, חבר התקיל אותי באיזה פרויקט מעניין, פרטי הפרויקט מסווגים ביותר, אבל מכיוון שאני מימשתי רק חלקיק ממנו אני יכול לשתף אתכם.
עכשיו תחגרו חגורות והכינו את עצמכם כי הפרויקט כולל esp8266 כמובן, ו..*תופים*… חיישני טמפרטורה DS18B20, מפתיע, הא!!!
עכשיו צחוק בצד, כבר עשיתי פרויקט שכלל את המודול הנ"ל וחיישני טמפרטורה דיגיטליים, מוזמנים לעיין ולהתרשם בפוסט בפורום makers ובאתר weather.alexshu.com שאליו עולים הנתונים.
אבל בפרויקט שלי השתמשתי בארדואינו שיאסוף נתונים מהחיישנים ויפקוד על מודול הwifi לשלוח אותם לשרת, אבל הesp8266 הוא מיקרובקר בפני עצמו, והוא מצליח להתמודד עם המשימה לבד ובאופן מצויין.

secondaryesp8266

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

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

 

כל כך פשוט, נוח ועובד כל כך טוב, כאילו אתם עובדים עם ארדואינו..
נסו גם אתם.