תוכן עניינים:

קל מאוד נמוך BLE ב Arduino חלק 2 - צג טמפרטורה/לחות - Rev 3: 7 שלבים
קל מאוד נמוך BLE ב Arduino חלק 2 - צג טמפרטורה/לחות - Rev 3: 7 שלבים

וִידֵאוֹ: קל מאוד נמוך BLE ב Arduino חלק 2 - צג טמפרטורה/לחות - Rev 3: 7 שלבים

וִידֵאוֹ: קל מאוד נמוך BLE ב Arduino חלק 2 - צג טמפרטורה/לחות - Rev 3: 7 שלבים
וִידֵאוֹ: ELF/EMBARC Bronchiectasis conference 2023 with subtitles 2024, נוֹבֶמבֶּר
Anonim
קל מאוד נמוך BLE ב Arduino חלק 2 - צג טמפרטורה/לחות - Rev 3
קל מאוד נמוך BLE ב Arduino חלק 2 - צג טמפרטורה/לחות - Rev 3
קל מאוד נמוך BLE ב Arduino חלק 2 - צג טמפרטורה/לחות - Rev 3
קל מאוד נמוך BLE ב Arduino חלק 2 - צג טמפרטורה/לחות - Rev 3
קל מאוד נמוך BLE ב Arduino חלק 2 - צג טמפרטורה/לחות - Rev 3
קל מאוד נמוך BLE ב Arduino חלק 2 - צג טמפרטורה/לחות - Rev 3

עדכון: 23 בנובמבר 2020 - החלפה ראשונה של 2 x סוללות AAA מאז 15 בינואר 2019 כלומר 22 חודשים ל- 2xAAA Alkaline עדכון: 7 באפריל 2019 - Rev 3 של lp_BLE_TempHumidity, מוסיף עלילות תאריך/שעה, באמצעות pfodApp V3.0.362+, והצערה אוטומטית בעת שליחה נתונים

עדכון: 24 במרץ 2019 - Rev 2 של lp_BLE_TempHumidity, מוסיף אפשרויות עלילה נוספות ו- i2c_ClearBus

מדריך זה, צג לחות בטמפרטורה נמוכה במיוחד, הוא חלק 2 מתוך 3.

חלק 1 - בניית מכשירי BLE בעלי צריכת חשמל נמוכה מאוד באמצעות מכשירי Arduino קלים להתקנת Arduino לקוד התקני nRF52 בעלי צריכת חשמל נמוכה, מודול התכנות ומדידת זרם האספקה. הוא מכסה גם טיימרים ושווקים מתמחים בהספק נמוך וכניסות מנותקות ומשתמשים ב- pfodApp כדי להתחבר למכשיר nRF52 ולשלוט בו.

חלק 2 - צג לחות בטמפרטורה נמוכה במיוחד, זה מכסה באמצעות מודול Redbear Nano V2 וחיישן טמפרטורה / לחות Si7021 לבניית סוללה / צג סולארי עם צריכת חשמל נמוכה. הוא כולל גם שינוי בספריית Si7021 לכוח הספק נמוך, כוונון מכשיר BLE כדי להפחית את צריכתו הנוכחית של <25uA ועיצוב תצוגת טמפרטורה/לחות מותאמת אישית לנייד שלך.

חלק 3 - החלפת Redbear Nano V2 מכסה באמצעות מודולים אחרים מבוססי nRF52 במקום ה- Nano V2. הוא מכסה בחירת רכיבי אספקה, בנייה, הסרת ההגנה על תכנות שבבי nRF52, שימוש בסיכות NFC כ- GPIO רגיל והגדרת לוח nRF52 חדש בארדואינו.

מדריך זה הוא יישום מעשי של חלק 1 בניית מכשירי BLE בעלי צריכת חשמל נמוכה מאוד, הקלה על Arduino על ידי בניית צג טמפרטורה ולחות של BLE בעל הספק נמוך מאוד. המסך יפעל במשך שנים על מטבעות סלולר או 2 סוללות AAA, אפילו יותר זמן עם סיוע סולארי. הדרכה זו מכסה את כוונון הפרמטרים של BLE לצריכת חשמל נמוכה וכיצד להפעיל את המכשיר מהסוללה או מסוללה + סולארית או סולארית בלבד.

בנוסף להצגת הטמפרטורה והלחות הנוכחיים, הצג מאחסן את 36 השעות האחרונות של 10 דקות קריאות ואת 10 הימים האחרונים של קריאות לפי שעה. אלה יכולים להתרשם בנייד ה- Android שלך ולשמור את הערכים בקובץ יומן. אין צורך בתכנות אנדרואיד, pfodApp מטפל בכל זה. התצוגה והתרשים של אנדרואיד נשלטים לחלוטין על ידי סקיצת ה- Arduino שלך כך שתוכל להתאים אותה לפי הצורך.

לוח Redbear Nano V2 משמש לרכיב nRF52832 BLE ולוח Sparkfun Si7021 משמש לחיישן הטמפרטורה / לחות. משתמשים בספריית צריכת חשמל נמוכה עם Si7021. PCB קטן תוכנן להכיל את NanoV2 ולספק רכיבים. עם זאת מכיוון שלא נעשה שימוש ברכיבים על פני השטח, אתה יכול לבנות זאת בקלות על לוח vero. שלוש גרסאות אספקת חשמל מכוסות. i) סוללה בתוספת סיוע סולארי, ii) סוללה בלבד, iii) סולארית בלבד. לאפשרות Solar Only אין אחסון סוללות ולכן היא תפעל רק כאשר יש מעט אור. מספיק חדר אור בהיר או מנורת שולחן.

מתווה

לפרויקט זה יש 4 חלקים עצמאיים יחסית:-

  1. בחירת רכיבים ובנייה
  2. קוד - ספריית חיישן צריכת חשמל נמוכה, ממשק משתמש וסקיצה של Arduino
  3. מדידת זרם אספקה וחיי סוללה
  4. חלופות אספקה - Solar Assist, סוללה בלבד, סולארית בלבד

שלב 1: בחירת רכיבים

בחירת רכיבים

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

הרכיב nRF52832

שבב nRF52832 יכול לפעול עם אספקת חשמל של בין 1.7V ל- 3.6V (מתח מרבי מוחלט 3.9V). המשמעות היא שתוכל להפעיל את השבב ישירות מתא מטבע או 2 סוללות AAA. עם זאת זה זהירות להוסיף ווסת מתח כדי להגן על השבב מפני יותר מדי וולט. רכיב נוסף זה כרוך בעלות חשמל, אך במקרה של הלוח NanoV2 הרגולטור המשולב, TLV704, צורך פחות מ 5.5uA מקסימום, בדרך כלל רק 3.4uA. עבור צריכת החשמל הנוספת הקטנה הזו אתה מקבל הגנה על כניסות אספקה של עד 24 וולט.

רכיב Si7021

החיישן Si7021 עצמו שואב בדרך כלל <1uA כאשר לא מבצעים מדידה, כלומר במצב המתנה, ועד 4mA בעת העברת הנתונים באמצעות I2C. מכיוון שאיננו מבצעים מדידה ללא הרף, 4mA אינו חלק משמעותי מזרם האספקה הממוצע. קריאה של 30 שניות מאוד מוסיפה פחות מ 1uA לזרם האספקה הממוצע, עיין במדידות זרם האספקה להלן.

ישנם שני לוחות פריצה Si7021 זמינים. אחד מ- Adafruit ואחד מ- Sparkfun. מבט חטוף על שני הלוחות יגיד לך שלוח Adafruit מכיל הרבה יותר רכיבים מלוח Sparkfun, כך שאתה נוטה לבחור בלוח Sparkfun. עיון בתרשימים של כל לוח מראה שלוח Sparkfun הוא רק החיישן החשוף ושני resisotors 4k7, בעוד שלל Adafruit יש רגולטור על הלוח, MIC5225, שבדרך כלל מצייר 29uA כל הזמן. זה משמעותי כאשר מעל כל הזרם לשאר המעגל הוא <30uA. מכיוון שכבר יש לנו רגולטור לשבב nRF52832, אין צורך ברכיב נוסף זה וניתן להפעיל את ה- Si7021 מאספקת 3.3V זה. אז הפרויקט הזה ישתמש בלוח הפריצה Si7021 מבית Sparkfun.

למזער את הזרם באמצעות נגדי משיכה/משיכה חיצוניים בכניסות

נגדי ה- pullup 4K7 I2C אינם בעלי ערך גבוה במיוחד וימשכו 0.7mA כאשר יימשכו נמוך. זו תהיה בעיה אם הם נמצאים על קלט מתג שהיה מקורקע לתקופות ארוכות. אולם בפרויקט זה הזרם דרך נגדים אלה ממוזער רק על ידי שימוש בממשק I2C לעיתים רחוקות ולזמן קצר בלבד. לרוב קווי I2C אינם בשימוש והם גבוהים / תלת-מצביים כך שלא זורם זרם דרך נגדים אלה.

שלב 2: בנייה

בְּנִיָה
בְּנִיָה
בְּנִיָה
בְּנִיָה
בְּנִיָה
בְּנִיָה

הפרויקט בנוי על לוח PCB קטן, אך מכיוון שאין רכיבי SMD, ניתן לבנות אותו באותה קלות באמצעות לוח vero. ה- PCB יוצר על ידי pcbcart.com מתוך קבצי Gerber אלה, TempHumiditySensor_R1.zip ה- PCB מיועד למטרה כללית מספיקה לשימוש בפרויקטים אחרים של BLE.

הסכימה מוצגת למעלה. לפניכם גרסת pdf.

רשימת חלקים

עלות משוערת ליחידה בדצמבר 2018, 62 ₪, לא כולל משלוח ומתכנת מתוך חלק 1

  • Redbear NanoV2 ~ 17 $
  • לוח פריצה של Sparkfun Si7021 ~ 8 $
  • 2 x 53mm x 30mm 0.15W 5V תאים סולאריים למשל Overfly ~ 1.10 דולר ארה"ב
  • 1 x PCB TempHumiditySensor_R1.zip ~ 25 $ עבור 5 הנחות www.pcbcart.com או לוח Vero (רצועה נחושת) למשל Jaycar HP9540 ~ 5 $
  • 2 דיודות שוטקי 1N5819 למשל Digikey 1N5819FSCT-ND ~ 1 דולר ארה"ב
  • 1 x 470R 0.4W נגד 1% למשל Digikey BC3274CT-ND ~ 0.25 $
  • 6 x 6 פינים כותרות כותרות זכר למשל Sparkfun PRT-00116 ~ 1.5 דולר ארה"ב
  • קופצת נקבה לנקבה למשל מזהה Adafruit: 1950 ~ 2 $
  • ברגי ניילון 3 מ"מ על 12 מ"מ, למשל Jaycar HP0140 ~ 3 $
  • אגוזי ניילון 3 מ"מ על 12 מ"מ, למשל Jaycar HP0146 ~ 3 $
  • סרט הרכבה קבוע Scotch Cat 4010 למשל מאמזון ~ 6.6 $
  • מחזיק סוללה AAA x 2, למשל. Sparkfun PRT-14219 ~ 1.5 $
  • 2 x סוללות אלקליין AAA 750mA, למשל Sparkfun PRT-09274 ~ US $ 1.0 סוללות אלה אמורות להחזיק מעמד> שנתיים. לסוללות האלקליין של Energizer יש קיבולת גבוהה יותר
  • קופסת פלסטיק (ABS) 83 מ"מ x 54 מ"מ x 31 מ"מ, למשל Jaycar HB6005 ~ 3 $
  • pfodApp ~ 10 דולר ארה"ב
  • 1 x 22uF 63V קבלים ESR נמוכים (אופציונלי) למשל Jaycar RE-6342 ~ 0.5 $ או Digikey P5190-ND ~ 0.25 $

הבנייה היא קדימה. מחזיק הסוללה והתאים הסולאריים מאובטחים לקופסת הפלסטיק בעזרת סרט דו צדדי כבד.

שים לב לחוט הקישור Gnd מה- CLK ל- GND בחלק המוגמר. זה מותקן לאחר תכנות כדי למנוע רעש בכניסת CLK להפעיל את שבב ה- nRF52 למצב איתור באגים הנוכחי

שלב 3: קוד - ספריית חיישן צריכת חשמל נמוכה, ממשק משתמש וסקיצה של Arduino

קוד - ספריית חיישן צריכת חשמל נמוכה, ממשק משתמש וסקיצה של Arduino
קוד - ספריית חיישן צריכת חשמל נמוכה, ממשק משתמש וסקיצה של Arduino
קוד - ספריית חיישן צריכת חשמל נמוכה, ממשק משתמש וסקיצה של Arduino
קוד - ספריית חיישן צריכת חשמל נמוכה, ממשק משתמש וסקיצה של Arduino
קוד - ספריית חיישן צריכת חשמל נמוכה, ממשק משתמש וסקיצה של Arduino
קוד - ספריית חיישן צריכת חשמל נמוכה, ממשק משתמש וסקיצה של Arduino

הורד את הקוד המרופד, lp_BLE_TempHumidity_R3.zip, ופתח אותו למדריך Arduino Sketches שלך. עליך גם להתקין את ספריית lp_So7021 מקובץ zip זה ולהתקין גם את ספריית pfodParser.

ספריית חיישן צריכת חשמל נמוכה, lp_Si7021

הן Adafruit והן Sparkfun מספקות ספריות תמיכה לגישה לחיישן Si7021, אולם שתי הספריות אינן מתאימות לשימוש בהספק נמוך מאוד. שניהם משתמשים בעיכוב (25) בקוד כדי לעכב את קריאת החיישן בזמן שהוא מבצע את מדידתו. כפי שצוין בחלק הראשון עיכובים הם רעים. העיכוב של Arduino () רק משאיר את מעבד המיקרו פועל באמצעות כוח בזמן שהוא ממתין שהעיכוב יסתיים. זה מפר את הכלל הראשון של צריכת חשמל נמוכה BLE, אל תעשה דבר רוב הזמן. הספרייה החלופית lp_Si7021, מחליפה את כל העיכובים ב- lp_timers שהרדימו את המעבד המיקרו בזמן שהמתינו לחיישן שיסיים את מדידתו.

עד כמה ההבדל עושה את הספרייה lp_Si7021? שימוש בספריית התמיכה המקורית של SparkFun Si7021 ולקחת קריאה אחת לשנייה ללא הדפסים סדרתיים, מצייר ממוצע של ~ 1.2mA. החלפת ספריית Sparkfun בספריית lp_Si7021 מפחיתה את הזרם הממוצע ל ~ 10uA, כלומר פי 100 פחות. בפרויקט זה קצב המדידה המהיר ביותר הוא אחת ל -30 שניות כאשר הנייד מחובר, מה שמביא לזרם חיישן ממוצע של פחות מ 1uA. כאשר אין חיבור BLE קצב המדידה הוא אחת ל -10 דקות וזרם אספקת החיישנים הממוצע זניח.

ממשק משתמש

למעלה מוצגת תצוגת המסך הראשית ותצוגה מוגדלת של ההיסטוריה לשעה של 10 ימים. ניתן להתקרב ולצלול את החלקות לשני הכיוונים באמצעות שתי אצבעות.

ממשק המשתמש מקודד בסקיצה של Arduino ולאחר מכן נשלח ל- pfodApp בחיבור הראשון היכן הוא מאוחסן במטמון לשימוש ועדכונים חוזרים. התצוגה הגרפית בנויה מציור פרימיטיבים. ראה פקדי Arduino מותאמים אישית עבור Android לקבלת הדרכה כיצד לבנות פקדים משלך. קובצי המדחום, ה- RHGauge והכפתור מכילים את פקודות הציור של פריטים אלה.

הערה: אף אחד אם תצוגה זו מובנית ב- pfodApp. המסך כולו נשלט לחלוטין על ידי הקוד במערכון הארדואינו שלך

שיטת sendDrawing_z () בסקיצה lp_BLE_TempHumidity_R3.ino מגדירה את ממשק המשתמש.

void sendDrawing_z () {dwgs.start (50, 60, dwgs. WHITE); // ברירת המחדל של הרקע ל- WHITE אם היא מושמטת כלומר התחלה (50, 60); parser.sendRefreshAndVersion (30000); // בקשה מחדש ל- dwg כל 30 שניות. זה מתעלם אם לא הוגדרה גרסת מנתח // גע בכפתורים למעלה כדי לאלץ עדכוני תצוגה dwgs.touchZone (). cmd ('u'). size (50, 39).send (); dwgs.pushZero (35, 22, 1.5); // העבר את האפס למרכז ה- dwg ל -35, 22 וסולם פי 1.5 rhGauge.draw (); // צייר את הפקד dwgs.popZero (); dwgs.pushZero (18, 33); // העבר אפס למרכז dwg עד 18, סולם 33 הוא 1 (ברירת מחדל) מדחום. צייר (); // צייר את הפקד dwgs.popZero ();

dwgs.pushZero (12.5, 43, 0.7); // העבר את האפס למרכז ה- dwg ל -12.5, 43 וסולם ב -0.7

hrs8PlotButton.draw (); // צייר את הפקד dwgs.popZero (); dwgs.pushZero (37.5, 43, 0.7); // העבר את האפס למרכז ה- dwg ל -37.5, 43 וסולם ב -0.7 ימים1PlotButton.draw (); // צייר את הפקד dwgs.popZero ();

dwgs.pushZero (12.5, 54, 0.7); // העבר את האפס למרכז dwg ל -12.5, 54 וסולם ב -0.7

days3PlotButton.draw (); // צייר את הפקד dwgs.popZero (); dwgs.pushZero (37.5, 54, 0.7); // העבר את האפס למרכז ה- dwg ל 37.5, 54 וסקלה ב- 0.7 ימים 10PlotButton.draw (); // צייר את הפקד dwgs.popZero (); dwgs.end (); }

פקודות pushZero משנות את המקור ואת קנה המידה לציור הרכיב הבא. זה מאפשר לך לשנות בקלות את הגודל והמיקום של הכפתורים והמדדים.

בחיבור הראשון התצוגה הראשונית לוקחת 5 או 6 שניות להורדת ~ 800 בתים המגדירים את התצוגה. pfodApp שומר את התצוגה במטמון כך שעדכונים עתידיים צריכים לשלוח רק את השינויים, את עמדות המדד ואת הקריאות. עדכונים אלה לוקחים רק כמה שניות לשלוח את הצורך של 128 בתים לעדכון התצוגה.

בתצוגה מוגדרים חמישה (5) אזורי מגע פעילים. לכל כפתור יש כפתור אחד המוגדר בשיטת הציור שלו (), כך שתוכל ללחוץ עליו כדי לפתוח את העלילה המתאימה, והחצי העליון של המסך מוגדר כאזור המגע השלישי.

dwgs.touchZone (). cmd ('u'). גודל (50, 39).שלח ();

כאשר אתה לוחץ על המסך שמעל הכפתורים, הפקודה 'u' dwg נשלחת למערכון שלך כדי לאלץ מדידה ועדכון מסך חדש. בדרך כלל כאשר הם מחוברים, עדכונים מתרחשים רק כל 30 שניות. כל לחיצה או רענון של הציור מאלצת מדידה חדשה. התגובה ממערכון Arduino ל- pfodApp מתעכבת עד להשלמת המדידה החדשה (~ 25mS) כך שניתן לשלוח את הערך האחרון בעדכון.

סקיצה של ארדואינו

הסקיצה של Arduino, lp_BLE_TempHumidity_R3.ino, היא גרסה משופרת של הסקיצה לדוגמא בה נעשה שימוש בחלק 1. המערכון lp_BLE_TempHumidity_R3.ino מחליף את התפריט בשרטוט המוצג למעלה. הוא גם מוסיף את תמיכת החיישנים lp_Si7021 ומערכי נתונים לאחסון המדידות ההיסטוריות של 10 דקות ושעה.

הסיבוך העיקרי במערכון lp_BLE_TempHumidity_R3.ino הוא טיפול בשליחת נתוני העלילה. בזמן ביצוע המדידות readRHResults () מטפל באיסוף התוצאות ושמירתן במערכים ההיסטוריים. המערכים ארוכים 120 אך כאשר הנתונים נשלחים, 30 נקודות הנתונים הראשונות מיועדות במרווח זמן עדין יותר.

יש להקפיד על כמה נקודות בעת שליחת 200 נקודות העלילה המוזרות לתצוגה:-

  1. אורך כל נקודת נתונים ~ 25 בתים, בפורמט טקסט CSV. אז 150 נקודות הן 3750 בתים של נתונים. למחלקה lp_BLESerial יש מאגר של 1536 בתים, 1024 מהם גדולים מספיק להודעת ה- pfod הגדולה ביותר. 512 הבייטים האחרים שמורים לשליחת הנתונים. לאחר שהנתונים ההיסטוריים מילאו את 512 הבייטים, שליחת נתונים נוספים מתעכבת עד שיש מקום במאגר.
  2. כדי למנוע את נתוני העלילה להאט את עדכוני התצוגה העיקריים, נתוני העלילה נשלחים רק כאשר מסך העלילה מוצג. לאחר שהמשתמש חוזר למסך הראשי, שליחת נתוני העלילה מושהית. שליחת נתוני העלילה מתחדשת כאשר המשתמש לוחץ על כפתור העלילה כדי להציג את העלילה שוב.
  3. העלילות ההיסטוריות מתחילות מ -0 (עכשיו) וחוזרות אחורה בזמן. אם לא הייתה מדידה חדשה מאז הוצגה העלילה האחרונה, הנתונים הקודמים שכבר הורדו יוצגו שוב מיד. אם יש מדידה חדשה, אז היא מתווספת לנתוני העלילה הקודמים.
  4. כאשר הצג מופעל לראשונה, אין קריאות היסטוריות ו- 0 מאוחסן במערכים כקריאה לא חוקית. כאשר העלילה מוצגת, פשוט מדלגים על קריאות לא חוקיות, וכתוצאה מכך חלקה קצרה יותר.

צלזיוס ופרנהייט

המערכון lp_BLE_TempHumidity_R3.ino מציג ומתווה את הנתונים בצלזיוס. כדי להמיר את התוצאות לפרנהייט החלף את כל המופעים של

parser.print (sensor. Temp_RawToFloat (..

עם

parser.print (sensor. CtoF (sensor. Temp_RawToFloat (…

והחלף את סמל degCode degC באוקטל / 342 / 204 / 203 בסמל degF / 342 / 204 / 211

pfodApp יציג כל Unicode שאתה יכול להציג בנייד.

עיין בשימוש בתווים שאינם ASCII בארדואינו לפרטים נוספים. שנה גם את ההגדרות MIN_C, MAX_C ב- Thermometer.h. לבסוף התאם את גבולות העלילה כרצונך למשל. שינוי | טמפ 'C ~ 32 ~ 8 ~ מעלות צלזיוס |

לומר

| טמפ 'F ~ 90 ~ 14 ~ מעלות F |

שלב 4: מדידת זרם האספקה

מדידת זרם האספקה
מדידת זרם האספקה

שימוש בספריית lp_Si7021, אפילו מדידת טמפרטורה/לחות כל 10 שניות תורמת רק ~ 1uA לזרם האספקה הממוצע, כך שהגורם העיקרי בזרם האספקה ומכאן חיי הסוללה הוא הזרם המשמש את הפרסום והחיבור והעברת הנתונים של BLE..

חבר את לוח הטמפרטורה/לחות למתכנת המתואר בחלק 1 כפי שמוצג למעלה.

כשהתאים הסולאריים והסוללות מנותקים, Vin ו- Gnd מחוברים ל- Vdd ול- Gnd של המתכנת (ההובלות הצהובות והירוקות) ו- SWCLK ו- SWDIO מתחברים ל- Clk ו- SIO של לוח הכותרת של המתכנת (הכבלים הכחולים והורודים)

כעת תוכל לתכנת את NanoV2 ולמדוד את זרם האספקה כמתואר בחלק 1.

התקן את ספריית Si7021 עם צריכת חשמל נמוכה מקובץ zip זה, lp_Si7021.zip והתקן את ספריית pfodParser ופרק את lp_BLE_TempHumidity_R3.zip לספריית הסקיצות של Arduino ותכנת את לוח Temp/Humditiy עם lp_BLE_TempHumidity_R3.ino

כפי שצוין לעיל תרומת החיישן היא <1uA, ממוצע, בשיעור המדידה הגבוה ביותר המשמש בפרויקט זה, ולכן פרמטרי הפרסום והחיבור של BLE הם הגורם הקובע לחיי הסוללה.

פרמטרי הפרסום והחיבור של BLE המשפיעים על הצריכה הנוכחית הם: -X כוח, מרווח פרסום, מרווחי חיבור מרביים ומינימליים, וחביון העבדות.

הערה: באמצעות החיבורים למעלה ישנם שני (2) רגולטורים באספקה, אחד על לוח NanoV2 באמצעות Vin ו- MAX8881 על אספקת המתכנת. המשמעות היא שזרמי האספקה הנמדדים יהיו גבוהים ~ 5uA מהמציאות, עקב הרגולטור השני. הערכים המובאים להלן הם הזרמים הנמדדים בניכוי 5uA הנוספים.

כוח Tx

Tx אפקטים של אספקת חשמל מספקים זרם גם כאשר הם מחוברים וגם כאשר הם מפרסמים (לא מחוברים). פרויקט זה משתמש בהגדרת ההספק המרבי (+4) ומספק את הטווח הטוב ביותר וחסינות הרעשים הגדולה ביותר עבור החיבורים האמינים ביותר. תוכל להשתמש בשיטת lp_BLESerial setTxPower () כדי לשנות את הגדרת ההספק. ערכים תקפים הם, בהגברת ההספק, -40, -30, -20, -16, -12, -8, -4, 0 +4. עליך לקרוא לשיטת lp_BLES Serial begin () לפני שתתקשר ל- setTxPower (). עיין במערכון lp_BLE_TempHumidity_R3.ino.

אתה יכול להתנסות בהפחתת ה- Tx Power, אך הפשרה היא טווח קצר יותר ויותר נשירת חיבורים עקב הפרעות. בפרויקט זה Tx Power נשאר כברירת מחדל, +4. כפי שתראו להלן, אפילו עם הגדרה זו, עדיין ניתן להשיג זרם אספקה נמוך מאוד.

מרווח פרסום

עבור כוח Tx נתון, כאשר אין קשר, מרווח הפרסום קובע את הצריכה הנוכחית הממוצעת. הטווח המומלץ הוא 500 עד 1000mS. כאן נעשה שימוש ב- 2000mS. הפשרה היא שמרווחי פרסום ארוכים יותר משמעו שהנייד שלך איטי יותר למצוא את המכשיר ולהקים חיבור. באופן פנימי, מרווחי הפרסום נקבעים בכפלים של 0.625mS בטווח 20mS עד 10.24sec. שיטת lp_BLESerial setAdvertisingInterval () לוקחת mS כארגומנט, מטעמי נוחות. עבור מרווח פרסום +4 TxPower ו- 2000mS הצריכה הנוכחית הייתה ~ 18uA. עבור מרווח הפרסום של 1000mS, זה היה ~ 29uA. Rev 2 השתמש במרווח פרסום של 2000mS אך הדבר גרם לחיבורים איטיים. Rev 3 השתנה למרווח פרסום של 1000 ms כדי להפוך את החיבורים למהירים יותר.

מרווחי חיבור מקסימום ודקה

ברגע שנוצר חיבור, מרווח החיבור קובע באיזו תדירות הנייד יוצר קשר עם המכשיר. Lp_BLESerial setConnectionInterval () מאפשר לך להגדיר את המקסימום והדקה המוצעים, אולם הנייד שולט מהו מרווח החיבור בפועל. מטעמי נוחות, הארגומנטים ל- setConnectionInterval () הם ב- mS, אך בפנים מרווחי החיבור הם במספר של 1.25mS, בטווח 7.5mS עד 4sec.

הגדרת ברירת המחדל היא setConnectionInterval (100, 150) כלומר מינימום 100mS עד 150mS לכל היותר. הגדלת ערכים אלה מפחיתה את זרם האספקה בזמן החיבור, אך הפשרה היא העברת נתונים איטית יותר. כל עדכון של המסך לוקח בערך 7 הודעות BLE, ואילו מדידות שלמות של 36 שעות של 10 דקות לוקחות כ -170 הודעות BLE. אז הגדלת מרווחי החיבור מאטה את עדכוני המסך והעלילה מוצגת.

למחלקה lp_BLESerial יש מאגר שליחה של 1536 בתים ושולח רק בלוק אחד של 20 בתים ממאגר זה, כל מרווח חיבור מקסימלי כדי למנוע הצפת קישור ה- BLE בנתונים. כמו כן בעת שליחת נתוני עלילה, המערכון שולח רק נתונים עד ש -512 בתים ממתינים לשליחה ואז עיכוב שליחת נתונים נוספים עד שליחת נתונים מסוימים. זה מונע הצפה של מאגר שליחה. החנק הזה של השליחות הופך את העברת הנתונים לנייד לאמינה, אך היא אינה מותאמת למקסימום דרך לשים.

בפרויקט זה מרווחי החיבור נותרו כערכי ברירת המחדל.

איחור של עבדים

כאשר אין נתונים לשלוח לנייד, המכשיר יכול להתעלם מחלק מהודעות החיבור מהנייד. זה חוסך חשמל Tx וזרם אספקה. ההגדרה 'חביון עבדים' היא מספר הודעות החיבור שיש להתעלם מהן. ברירת המחדל היא 0. ניתן להשתמש בשיטת lp_BLESerial setSlaveLatency () לשינוי הגדרה זו.

ברירת המחדל של העבדות Slave של 0 נתנה ~ 50uA זרם אספקה, תוך התעלמות מעדכוני המסך כל 30 שניות, אך כולל את הודעות keepAlive 5 שניות מאוד. הגדרת חביון העבדים ל -2 נתנה זרם אספקה מחובר ממוצע של ~ 25uA. הגדרת איחורים של עבדים של 4 נתנה ~ 20uA. נראה כי הגדרות גבוהות יותר לא הפחיתו את זרם האספקה ולכן נעשה שימוש בהגדרת חביון של Slave של 4.

כאשר הוא מחובר, כל 30 שניות pfodApp מבקש עדכון תצוגה. זה מאלץ מדידת חיישן ושולח נתונים חזרה לעדכון התצוגה הגרפית. עדכון זה מביא לתוספת של ~ 66uA למשך 2 שניות כל 30 שניות. זה ממוצע של 4.4uA במשך 30 השניות. הוספת זה ל- 20uA, נותנת זרם אספקת חיבור ממוצע של ~ 25uA

שלב 5: זרם אספקה כולל וחיי סוללה

באמצעות ההגדרות שלמעלה, כפי שהוגדר ב- lp_BLE_TempHumidity_R3.ino, זרם האספקה הכולל בעת חיבור ועדכון התצוגה כל 30 שניות, כ -25uA. כאשר הוא לא מחובר, הוא בערך 29uA.

לחישוב חיי הסוללה יש להניח משיכה שוטפת שוטפת של ~ 29uA.

לסוללות שונות יש יכולות שונות ומאפייני מתח. הסוללות הנחשבות כאן הן תא מטבעות CR2032, תא מטבעות CR2450 (N), 2 x AAA Alkaline, 2 x AAA Lithium ו- LiPo.

סיכום סוללה

אם אתה משתמש ב- Solar Assist, הוסף 50% לנתוני חיי הסוללה האלה (בהנחה של 8 שעות ביום)

הערה: הקבל 22uF LowESR (C1), בנוסף לקבל NanoV2 22uF המשולב, מאחסן את זרם התא הסולארי ולאחר מכן מספק אותו לפולסים הנוכחיים של TX. אחרת, הסוללה מספקת חלק מזרם ה- TX. תוספת 22uF LowESR זו מוסיפה כ -10% לזרם הסוללה כאשר התא הסולארי אינו האספקה, אלא גם מאריך את חיי הסוללה על ידי פיצוי על ההתנגדות הפנימית של הסוללה העולה ככל שהסוללה מגיעה לסוף החיים. המדידות להלן נלקחו ללא הקבל הנוסף 22uF.

CR2032 - 235mAHr - חיי סוללה 10 חודשים CR2450 (N) - 650mAHr (540mAHr) - חיי סוללה 2.3 שנים (2 שנים) 2 x AAA אלקליין - 1250mAHr - חיי סוללה 3.8.yrs2 x AAA ליתיום - 1200mAHr - חיי סוללה 4.7 שנים נטענת LiPo - לא מומלץ בשל פריקה עצמית גבוהה.

CR2032

לתא מטבע זה יש קיבולת של בדרך כלל 235mAHr (סוללת אנרג'ייזר), מתח נומינלי של 3V ומתח פריקה מוגדר של 2V. זה מרמז על חיי סוללה של 8100 שעות או ~ 0.9 שנים. אולם ההתנגדות לתאים הפנימיים עולה ככל שהסוללה מגיעה לסוף החיים ולכן ייתכן שלא תוכל לספק את שיא פולסי זרם ה- Tx. ניתן להשתמש בקבל אספקה גדול יותר להפחתת האפקט הזה, אך נניח 10 חודשי חיים.

CR2450 (N)

לתא מטבע זה יש קיבולת של בדרך כלל 620mAHr (540mAHr עבור CR2450N), מתח נומינלי של 3V ומתח פריקה מוגדר של 2V. זה מרמז על חיי סוללה של 22, 400 שעות או ~ 2yr 6m (18600hrs ~ 2yrs 2m עבור CR2450N). אולם ההתנגדות לתאים הפנימיים עולה ככל שהסוללה מגיעה לסוף החיים ולכן ייתכן שלא תוכל לספק את שיא פולסי זרם ה- Tx. ניתן להשתמש בקבל אספקה גדול יותר כדי להפחית את האפקט הזה, אך נניח חיים של 2 שנים 4 מ '(2 שנים N).

הערה: לגרסת CR2450N יש שפה עבה יותר המסייעת במניעת התקנה לא נכונה במחזיק CR2450N. ניתן להכניס תא CR2450N ו- CR2450 למחזיק CR2450 אך לא ניתן להכניס תא CR2450 למחזיק CR2450N

2 x תאים אלקליין AAA

לסוללות אלה יש קיבולת של כ 1250mAHr (סוללת אנרג'ייזר) לזרמים נמוכים מאוד, מתח נומינלי של 2x1.5V = 3V ומתח פריקה מוגדר של 2x0.8V = 1.6V. אבל מתח פריקה זה שצוין נמוך ממתח ההפעלה של חיישן Si7021 (1.9V), כך שניתן להשתמש בסוללה עד ~ 1V כל אחד. זה מקטין את הקיבולת בכ -10% עד 15% כלומר ~ 1000mAHr.

זה מרמז על חיי סוללה של 34, 500 שעות או ~ 4 שנים. אולם ההתנגדות לתאים הפנימיים עולה ככל שהסוללה מגיעה לסוף החיים ולכן ייתכן שלא תוכל לספק את שיא פולסי זרם ה- Tx. ניתן להשתמש בקבל אספקה גדול יותר כדי להפחית את האפקט הזה, אך נניח 3 שנים 10 מ 'חיים. שימו לב לסוללות האלקליין יש פריקה עצמית של 2% עד 3% בשנה.

2 x תאי ליתיום AAA

לסוללות אלה יש קיבולת של כ 1200mAHr (סוללת אנרג'ייזר), מתח נומינלי של 2x1.7V = 3.4V, בזרמים נמוכים, ומתח פריקה של 2x1.4V = 2.4V. זה מרמז על חיי סוללה של 41, 400 שעות או 4 שנים 8 מ '.

סוללת נטענת LiPo

סוללות אלה מגיעות בקיבולות שונות מ- 100mAHr עד 2000mAHr, בפורמטים שטוחים, ויש להן מתח טעון של 4.2V ומתח פריקה של> 2.7V. עם זאת יש להם פריקה עצמית גבוהה של 2% -3% לחודש (כלומר 24% עד 36% בשנה) ולכן אינם מתאימים ליישום זה כמו שאר הסוללות.

שלב 6: חלופות אספקה - סיוע סולארי, סוללה בלבד, סולארי בלבד

חלופות אספקה - Solar Assist, סוללה בלבד, סולארית בלבד
חלופות אספקה - Solar Assist, סוללה בלבד, סולארית בלבד
חלופות אספקה - Solar Assist, סוללה בלבד, סולארית בלבד
חלופות אספקה - Solar Assist, סוללה בלבד, סולארית בלבד
חלופות אספקה - Solar Assist, סוללה בלבד, סולארית בלבד
חלופות אספקה - Solar Assist, סוללה בלבד, סולארית בלבד
חלופות אספקה - Solar Assist, סוללה בלבד, סולארית בלבד
חלופות אספקה - Solar Assist, סוללה בלבד, סולארית בלבד

סוללה פלוס סיוע סולארי

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

הפאנלים הסולאריים המשמשים קטנים, 50 מ"מ על 30 מ"מ, זולים, $ 0.50 $, והספק נמוך. הם לוחות 5V באופן נומינלי, אך זקוקים לאור שמש בהיר ישיר מלא כדי ליצור 5V. בפרויקט זה שני לוחות מחוברים בסדרה כך שמספיק הצבת המסך במקום כלשהו ליד חלון, מחוץ לשמש ישירה, בכדי להחליף את כוח הסוללה. אפילו חדר מואר היטב, או מנורת שולחן, מספיקים לתאים הסולאריים לייצר> 3.3V ב> 33uA ולהשתלט מהסוללה.

לוח בדיקה פשוט נבנה כדי לקבוע היכן ניתן להציב את צג הטמפרטורה / לחות, מחוץ לשמש ועדיין להיות מופעל באמצעות השמש. כפי שאתה יכול לראות מהתמונה למעלה, שני הלוחות המחוברים לנגד 100K מייצרים 5.64V על פני 100K, כלומר 56uA ב -564V. מדובר בהשתלטות מספקת על הספקת המסך מהסוללה. כל קריאת מתח מעל מתח הסוללה הנומינלי של 3V פירושה שהתאים הסולאריים יפעילו את הצג במקום את הסוללה.

שתי הדיודות במעגל מוניטור לחות הטמפרטורה מבודדות את התאים הסולאריים והסוללות זה מזה ומונעות מפני חיבורן בקוטביות הפוכה. הזנר 10V 1W והנגד מסדרת 470R מגינים על הרגולטור המשולב של ה- NanoV2 מפני מתח יתר משני תאים סולאריים בשמש מלאה, במיוחד אם במקרה נעשה שימוש בתאים של 12V במקום 5V. בפעולה רגילה ב <5V, הזנר 10V מצייר רק ~ 1uA.

סוללה בלבד

עבור אספקת סוללה בלבד, פשוט השמט R1, D1 ו- D3 והתאים הסולאריים. אתה יכול גם להחליף את D1 בחתיכת חוט אם אינך רוצה הגנה על קוטביות הפוכה.

סולארי בלבד

הפעלת המסך מתאים סולאריים בלבד, ללא סוללה, דורשת מעגל אספקת חשמל אחר. הבעיה היא שבעוד הצג יפעל על 29uA, עם ההפעלה nRF52 שואב ~ 5mA למשך 0.32 שניות. המעגל המוצג למעלה (גירסת pdf) מחזיק את הרגולטור MAX8881 כבוי עד שקבלי הכניסה, 2 x 1000uF, נטעינים עד 4.04V. ואז ה- MAX6457 משחרר את קלט MAX8881 SHDN להפעלת ה- nRF52 (NanoV2) 2 קבלים של 1000uF מספקים את זרם ההפעלה הדרושים.

זה מאפשר לצג לפעול ברגע שיש מספיק כוח סולארי לשמור אותו פועל על 29uA.

שלב 7: סיכום

מדריך זה הציג צג לחות טמפרטורה המופעל באמצעות סוללה/סולארית כדוגמא לפרויקט BLE בעל צריכת חשמל נמוכה מאוד בארדואינו עבור שבב nRF52832. זרמי אספקה של ~ 29uA כאשר הם מושגים על ידי כוונון פרמטרי החיבור. כתוצאה מכך אורך חיי סוללה מסוג CR2032 עולה על 10 חודשים. יותר עבור תאי מטבע וסוללות בעלי קיבולת גבוהה יותר. הוספת שני תאים סולאריים זולים האריכה בקלות את חיי הסוללה ב -50% או יותר. מספיק חדר אור בהיר או מנורת שולחן בכדי להפעיל את הצג מהתאים הסולאריים.

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

ה- pfodDesigner החינמי מאפשר לך לעצב תפריטים/תפריטי משנה, לשרטט מול תאריך/שעה ונתוני יומן ולאחר מכן לייצר עבורך את סקיצת ה- Arduino עם צריכת חשמל נמוכה. כאן קודד ממשק מותאם אישית באמצעות פרימיטיבים של ציור pfodApp. החיבור עם pfodApp מציג את ממשק המשתמש ומעדכן את הקריאות בזמן שהצג משתמש ב- ~ 29uA

אין צורך בתכנות אנדרואיד. pfodApp מטפל בכל זה.

מוּמלָץ: