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

חיישן דלת אלחוטי - הספק נמוך במיוחד: 5 שלבים
חיישן דלת אלחוטי - הספק נמוך במיוחד: 5 שלבים

וִידֵאוֹ: חיישן דלת אלחוטי - הספק נמוך במיוחד: 5 שלבים

וִידֵאוֹ: חיישן דלת אלחוטי - הספק נמוך במיוחד: 5 שלבים
וִידֵאוֹ: טסט ולוג מקיף: שברולט טראקס החדשה - כל מה שצריך לדעת 2024, נוֹבֶמבֶּר
Anonim
חיישן דלת אלחוטי - הספק נמוך במיוחד
חיישן דלת אלחוטי - הספק נמוך במיוחד
חיישן דלת אלחוטי - הספק נמוך במיוחד
חיישן דלת אלחוטי - הספק נמוך במיוחד
חיישן דלת אלחוטי - הספק נמוך במיוחד
חיישן דלת אלחוטי - הספק נמוך במיוחד
חיישן דלת אלחוטי - הספק נמוך במיוחד
חיישן דלת אלחוטי - הספק נמוך במיוחד

עוד חיישן דלתות !! ובכן המניע בשבילי ליצור חיישן זה היה שלרבים שראיתי באינטרנט יש מגבלה כזו או אחרת. כמה ממטרות החיישן מבחינתי הן:

1. החיישן צריך להיות מהיר מאוד - רצוי פחות מ -5 שניות

2. החיישן צריך להריץ סוללת ליתיום 3.7V מכיוון שיש לי עשרות מהם מונחים

3. החיישן אמור לפעול במשך חודשים רבים בטעינה אחת של הסוללה. זה צריך לצרוך <10uA במצב שינה

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

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

6. החיישן צריך לצרוך את אותה הספק ללא קשר למצב הדלת

עבודת החיישן:

לחיישן 2 בקרים עיקריים. הראשון הוא בקר מיקרו זעיר ATiny 13A. השני הוא ה- ESP הנמצא בדרך כלל במצב שינה ומתעורר רק כאשר ה- ATiny מאפשר זאת. המעגל כולו יכול להיעשות רק על ידי ה- ESP על ידי שימוש בו במצב שינה, אך הזרם שהוא צורך גדול בהרבה מהנדרש כדי שהסוללה תחזיק מעמד במשך חודשים כך שה- ATTiny יחלץ להצלה. הוא משמש רק להתעורר כל N שניות, לחפש אירוע דלת או אירוע בדיקת בריאות, אם יש כזה, הוא מחזיק את סיכת CH_PD של ה- ESP ל- HIGH ושולח את האות המתאים של סוג האירוע ל- ESP. תפקידו מסתיים שם.

ESP משתלט לאחר מכן, קורא את סוג האות, מתחבר ל- WiFi/MQTT, מפרסם את ההודעות הדרושות כולל רמת הסוללה ואז מכבה את עצמו על ידי החזרת סיכת ה- EN ל- LOW.

על ידי שימוש בשבבים אלה בדרך זו אני מנצל את זרם השינה הנמוך של ה- ATtiny ואת זרם הסרק האפס של ה- ESP כאשר השבב מושבת באמצעות סיכת CH_PD.

אספקה

דרישה מוקדמת:

- ידע בתכנות ATTiny & ESP 01

- הכרת רכיבי הלחמה על לוח PCB

ESP-01 (או כל ESP)

ATTiny 13A - AVR

LDO 7333 -A - ווסת מתח נמוך

נגדים - 1K, 10K, 3K3

קבלים: 100uF, 0.1 uF

מתג לחצן, מתג הפעלה/כיבוי מיקרו - (שניהם אופציונליים)

דיודה - IN4148 (או שווה ערך)

סוללת ליתיום

מתג קנים

תיק שיכלול את הכל

הלחמה, PCB וכו '

שלב 1: סכמטים וקוד מקור

סכמטים וקוד מקור
סכמטים וקוד מקור

סכמות הן כפי שמוצג בתרשים המצורף.

כללתי MOSFET ערוץ P להגנה על קוטביות הפוכה. אם אינך זקוק לכך, תוכל להשמיט אותו. כל MOSFET ערוץ P עם מופעל Rds נמוך יעשה.

נכון לעכשיו ל- ESP אין יכולת OTA אבל זה לשיפור עתידי.

קוד מקור חכם-דלת-חיישן

שלב 2: עבודה של המעגל

זרימת עבודה של ATTiny

הקסם כאן קורה באופן שבו ה- ATTiny עוקב אחר מיקום מתג הדלת.

האפשרות הרגילה תהיה לחבר נגד מתג למתג ולהמשיך לעקוב אחר מצבו. יש לזה את החיסרון של זרם קבוע הנצרך על ידי הנגד למעלה. הדרך שבה הדבר נמנע כאן היא שהשתמשתי בשני סיכות כדי לפקח על המתג ולא באחד. השתמשתי כאן ב- PB3 & PB4. PB3 מוגדר כקלט ו- PB4 כפלט עם INPUT_PULLUP פנימי ב- PB3. בדרך כלל PB4 מוחזק גבוה כאשר ATtiny נמצא במצב שינה. זה מבטיח שאין זרם זרם דרך הנגד למשוך קלט ללא קשר למיקום מתג הקנה. כְּלוֹמַר. אם המתג סגור, הן PB3 והן PB4 גבוהים ולכן אין זרם ביניהם. אם המתג פתוח אז אין נתיב ביניהם ולכן הזרם הוא אפס. כאשר ה- ATtiny מתעורר הוא כותב LOW ב- PB4 ולאחר מכן בודק את מצב ה- PB3. אם PB3 הוא HIGH אז מתג הקנה פתוח אחרת הוא סגור. לאחר מכן הוא כותב בחזרה HIGH ב- PB4.

התקשורת בין ATtiny ו- ESP מתרחשת באמצעות שני פינים PB1 / PB2 המחוברים ל- Tx / RX של ESP. הגדרתי את האות כ

PB1 PB2 ====== Tx Rx

0 0 ====== WAKE_UP (בדיקת בריאות)

0 1 ====== SENSOR_OPEN

1 0 ====== SENSOR_CLOSED

1 1 ====== לא בשימוש

מלבד שליחת האות ל- ESP הוא גם שולח דופק HIGH ב- PB0 המחובר לסיכה ESP CH_PD. זה מעיר את ה- ESP. הדבר הראשון ש- ESP עושה את זה כדי להחזיק GPIO0 HIGH שמחובר ל- CH_PD ובכך להבטיח את כוחו גם אם ה- ATTiny מוציא את ה- PB0 HIGH. הבקרה כעת היא ב- ESP כדי לקבוע מתי הוא רוצה לכבות.

לאחר מכן הוא מתחבר ל- WiFi, MQTT, מפרסם את ההודעה ומכבה את עצמו על ידי כתיבת LOW ב- GPIO0.

זרימת עבודה ESP 01:

זרימת ESP היא קדימה. הוא מתעורר וקורא את הערכים של סיכות ה- Tx/Rx כדי לקבוע איזה סוג הודעה יש לפרסם. מתחבר ל- WiFi ו- MQTT, מפרסם את ההודעה ומכבה את עצמו.

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

שלב 3: בדיקת בריאות

הייתי צריך גם דרך לקבל הודעת בדיקת בריאות מה- ESP שאליה היא שולחת גם את רמת הסוללה של ה- ESP כדי לוודא שהחיישן עובד תקין ללא בדיקה ידנית. לשם כך ה- ATTiny שולח אות WAKE_UP כל 12 שעות. ניתן להגדיר אותו באמצעות המשתנה WAKEUP_COUNT בקוד ATtiny. זה שימושי מאוד לדלתות או חלונות הנפתחים לעיתים רחוקות ולכן ייתכן שלא תדעו אם משהו לא תקין בחיישן או בסוללה שלו.

אם אינך זקוק לפונקציונליות של בדיקת הבריאות, אין צורך בכל הרעיון של שימוש ב- ATTiny. במקרה זה אתה יכול למצוא עיצובים אחרים שאנשים יצרו בהם האספקה ל- ESP מוזנת באמצעות MOSFET וכך תוכל להשיג משיכה של אפס זרם כאשר הדלת אינה מופעלת. יש לדאוג לדברים אחרים כמו שההגרלה הנוכחית תהיה זהה במצב דלת פתוחה וסגירה של הדלת - לשם כך ראיתי איפשהו עיצוב שעשה שימוש במתג קנה 3 מצבים במקום במצב 2 הרגיל.

שלב 4: מדידות הספק וחיי הסוללה

מדדתי את הצריכה הנוכחית של המעגל וזה לוקח ~ 30uA בעת שינה ומסביב. לפי גיליונות הנתונים של ATTiny, זה צריך להיות סביב 1-4 uA לכל המעגל כולל זרם שקט של ה- LDO אבל אז המדידות שלי מראות 30. ה- MOSFET וה- LDO צורכים זרם לא משמעותי.

אז סוללה של 800mAH אמורה להחזיק הרבה זמן. אין לי נתונים סטטיסטיים מדויקים אבל אני משתמש בה בשתי הדלתות שלי כבר יותר משנה וכל 18650 תא עם כ -800 מיליאמפר שנשאר בהם נמשך כ 5-6 חודשים על הדלת הראשית שלי שנפתחת ונסגרת בשעה לפחות 30 פעמים ביום. זו שעל דלת הגג שנפתחת רק כמה פעמים בשבוע, היא נמשכת 7-8 חודשים.

שלב 5: שיפורים עתידיים

1. ה- ESP אינו מאשר את מסירת הודעת ה- MQTT. ניתן לשפר את התוכנית על ידי הרשמה לנושא שהיא מפרסמת את ההודעה לאישור מסירה או שניתן להשתמש בספריית Async MQTT לפרסום הודעה עם QoS 1.

2. עדכון OTA: ניתן לשנות את קוד ה- ESP לקריאת נושא MQTT לעדכון וכך להיכנס למצב OTA לקבלת קובץ.

3. ניתן להחליף את ESP01 ב- ESP-12 בכדי לקבל גישה למספרי PIN נוספים לקלט וכך ניתן לחבר עוד חיישנים לאותו. במקרה זה לא ניתן לתקשר באמצעות שיטת ה -2 ביט. לאחר מכן ניתן לשפר זאת כדי ליישם תקשורת I2C בין ATtiny ו- ESP. זה קצת מסובך אבל מעשי. יש לי את זה עובד במערך אחר שבו ATTiny שולח ערכי מקודד סיבוביים ל- ESP על קו I2C.

4. המעגל הנוכחי עוקב אחר ה- Vcc הפנימי של ה- ESP, אם נשתמש ב- ESP12 אז ניתן לשנות את זה כדי לקרוא את רמת הסוללה בפועל באמצעות סיכת ה- ADC.

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

6. והרשימה נמשכת …

7. הגנה על סוללה הפוכה - בוצע (תמונות המכשיר בפועל הן ישנות ולכן אינן משקפות את ה- MOSFET)

מוּמלָץ: