האק לשינה בesp8266 esp-01

בעודי ממשיך במשחקים עם הesp8266 כבקר בפני עצמו ושימוש בArduino IDE לפיתוח אליו, הייתי צריך שהוא ישן, שינה עמוקה וטובה,כדי שיפסיק לזלול 80mA בIdle..
שינה בesp8266 זה לא דבר חדש..אבל, כדי לאפשר לו להתעורר הוא צריך גישה לפין Reset של עצמו מפין GPIO אחר.. כן גם אני לא הבנתי.. אבל זה מה יש, אם לדייק, צריך שGPIO16 יהיה מחובר לפין Reset, מה הבעיה?

GPIO16 לא נגיש בלוח esp-01

והבעיה היא לא רק בesp-01, למעשה הוא נגיש רק בלוחות 03,04,06,07,08,11,12,201.
אז 01,02,05,09,10 לא יכולים לישון בלי התערבות בחומרה.
מכיוון שאני מהחבר'ה שרק תתנו להם להתערב .. לקחתי מלחם, בדיל, חוט חשמל דק ויד יציבה וניגשתי לעבודה, כמה יציבה היד? יציבה מאוד!
למען האמת צריך קצת יותר ממלחם, בדיל וחוט חשמל.. שמתי למלחם ראש שפיץ מחט, בדיל 0.3מ"מ, חוט חשמל הכי דק שמצאתי, חשפתי אותו, הפרדתי סיב אחד ואת כל השאר חתכתי – העדפתי את שאר החוט להשאיר בתוך הבידוד כדי שלא יקצר עם שום דבר בדרך לפין הReset.
יד שלישית שתחזיק את הesp8266, פינצטה להחזיק איתה את החוט ויאללה…
עם ציוד מתאים זה לא קשה כמו שזה נראה 🙂
ניתן לתמונות קצת לדבר ..

ironandsolder
wire
esp8266 closeup

חיסכון מוחלט

אם כבר חוסכים אז בוא נחסוך עד הסוף לא? הרי אני צריך שהוא ישן כדי שהוא יחסוך באנרגיה, אז על הדרך גם פירקתי את הלד האדום שעל הלוח, לד שדלוק קבוע, לא באמת צריך אותו ..

איך ישנים?

השינה עובדת גם בסביבת עבודה NodeMCU, וגם Arduino IDE.
בגלל שאני עובד עם הAdruino IDE אפרט עליו, אבל החבר'ה של הNodeMCU לא ישארו מאחור.

פקודת השינה היא:

ESP.deepSleep(microseconds, mode);

שימו לב שזה מיקרו-שניות, ולא מילי-שניות כמו שאתם רגילים..
מצבי השינה הם:
WAKE_RF_DEFAULT – התעוררות ברירת מחדל (אפשר להרחיב על זה אבל זה ממש מתקדם)
WAKE_RFCAL – התעוררות וביצוע כיול לרדיו – צורך יותר זרם
WAKE_NO_RFCAL – התעוררות ללא ביצוע כיול לרדיו – צורך פחות זרם
WAKE_RF_DISABLED – התעוררות וכיבוי רדיו – בעצם כיבוי הWIFI – צריכת זרם נמוכה – כ13mA

מה זה נתן?

לאחר העבודה ובמהלכה עשיתי כמה מדידות והתוצאות להלן:
עבודה במצב Idle – זרם 70mA ומעלה – בשידור הזרם עולה
שינה עמוקה עם הלד – 353uA – מיקרו-אמפר!, כבר מרשים
שינה עמוקה ללא הלד – 18.8uA – כן, 18.8 מיקרו אמפר.

הבחור שעשה את זה לראשונה קיבל תוצאה של 78 מיקרו-אמפר, אני קיבלת הרבה פחות, אולי זה קשור גם לקושחה ולסביבת עבודה.

לא כמו המוכרים של Atmel שישנים ב9 מיקרו-אמפר ומטה, אבל 18.8 זה עדיין נתון מאוד משמח, יחסית לזללן שהוא כאשר הוא עובד רגיל, הוא ישן ממש טוב, מה שמאפשר לנו להשתמש בו למטרות Low Power IoT, וזה חדשות טובות לתחנת מזג האויר שלי שהולכת לעבור הסבה מלאה לesp8266 בלבד.

sleep

מקורות:
http://tim.jagenberg.info/2015/01/18/low-power-esp8266/
https://github.com/esp8266/Arduino
https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en

Comments

comments

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *