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

חיישן הודעות מכונת כביסה: 6 שלבים (עם תמונות)
חיישן הודעות מכונת כביסה: 6 שלבים (עם תמונות)

וִידֵאוֹ: חיישן הודעות מכונת כביסה: 6 שלבים (עם תמונות)

וִידֵאוֹ: חיישן הודעות מכונת כביסה: 6 שלבים (עם תמונות)
וִידֵאוֹ: עדן חסון ואודיה - הנשיקה! 😱 2024, יולי
Anonim
Image
Image
אב טיפוס
אב טיפוס

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

הקוד ניתן למצוא כאן:

רשימת החלקים המלאה:

  • WEMOS LOLIN32
  • קרש לחם בגודל חצי (לאב טיפוס)
  • תיבת פרויקט ABS עם לוח מטריקס 59x88x30 מ"מ
  • Sparkfun LIS3DH - פריצת מד תאוצה ציר משולש
  • 1x ZVP3306A P-channel MOSFET, 160 mA, 60 V, 3-Pin E-Line
  • 1x טרנזיסטור NPN BC549B TO92 30V
  • כחול 5 מ"מ LED 68 מק"ד
  • נגד 100k 0.125W CF
  • התנגדות 1 x 330k 0.125W CF
  • התנגדות 2 x 10k 0.250W CF
  • התנגדות 1 x 100 0.250W CF
  • כבל 2 פינים נקבה מסוג JST PH (14 ס"מ)
  • 4x M1219-8 מגנט דיסק ניאודימיום 6x4 מ"מ

שלב 1: אב טיפוס

אב טיפוס
אב טיפוס

המכשיר משתמש במיקרו -בקר ESP32. במקרה זה אני משתמש בלוח הפיתוח Lolin32 של Wemos שתוכל לקנות ב- AliExpress בכ -7 $. מד התאוצה הוא ה- Sparkfun LIS3DH - חשוב שמד התאוצה הוא דיגיטלי ולא אנלוגי כפי שתראו מאוחר יותר. את הסוללה לקחתי ממערך ישן של רמקולי Bluetooth.

ה- ESP32 מתחבר למד התאוצה באמצעות I2C. הגרסה הראשונה של הקוד פשוט סקרה את שלושת צירי ההאצה (x, y ו- z) לערך ההאצה הנמדד כל 20 ms. הנחתי את אב הטיפוס של לוח הלחם על מכונת הכביסה וייצרתי את הגרף הנ"ל המציג שיאי האצה בשלבים שונים של מחזור הכביסה. הפסגות שבהן ההאצה המוחלטת הייתה גדולה מ -125 מ"ג (125 אלפיות הכובד הרגיל) מוצגות בכתום. אנו רוצים לזהות תקופות אלה ולהשתמש בהן לקביעת סטטוס מכונת הכביסה.

כיצד לקבוע אם המכונה פועלת או כבויה?

אחת המטרות של בניית מכשיר זה הייתה שהוא יהיה פאסיבי לחלוטין. כְּלוֹמַר. אין צורך ללחוץ על כפתורים; זה פשוט יעבוד. זה גם צריך להיות בעל הספק נמוך מאוד מכיוון שלא ממש היה ניתן להאריך כבלי חשמל למכונת הכביסה במקרה שלי.

למרבה המזל למד התאוצה LIS3DH יש תכונה שבה הוא יכול לעורר הפרעה כאשר האצה חורגת מסף נתון (שימו לב, זה דורש שימוש במסנן המעבר הגבוה של מד התאוצה-עיינו בקוד ב- Github לפרטים) וניתן להעיר את ה- ESP32 למעלה ממצב השינה העמוקה שלו באמצעות הפסקה. אנו יכולים להשתמש בשילוב תכונות זה כדי ליצור מצב שינה בעל הספק נמוך מאוד המופעל על ידי תנועה.

קוד הפסאודו ייראה בערך כך:

# התעוררות המכשיר

notification_threshold = 240 counter = 10 accelerometer.set_threshold (96) # 96mg while counter> 0: if accelerometer.above_threshold (): counter ++ else: counter-- if counter> notification_threshold: # cycle final spin (גילוי מחזור ספין אחרון) (1 שנייה) מד תאוצה. set_threshold_interrupt () esp32.set_wakeup_trigger_on_interrupt () esp32.deep_sleep ()

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

שלב 2: שליחת הודעה באמצעות Blynk

שליחת הודעה באמצעות Blynk
שליחת הודעה באמצעות Blynk

Blynk הוא שירות שנועד לאפשר אינטראקציה עם מכשירי IoT עם אפליקציה בטלפון שלך. במקרה זה, אני משתמש בממשק ה- API להודעת דחיפה המופעל על ידי HTTP פשוט POST ל- API Blynk.

שלב 3: מדידת צריכת החשמל והערכת חיי הסוללה

מדידת צריכת חשמל והערכת חיי סוללה
מדידת צריכת חשמל והערכת חיי סוללה

שבב ESP32 מפורסם כבעל צריכת חשמל נמוכה מאוד כאשר הוא בשינה עמוקה (נמוך עד 5uA). למרבה הצער, המעגלים בלוחות הפיתוח השונים מספקים מאפייני צריכת חשמל שונים מאוד - לא כל לוחות ה- ESP32 dev נוצרים שווים. לדוגמה, כשהתחלתי את הפרויקט הזה לראשונה, השתמשתי ב- Sparkfun ESP32 Thing שיצרוך כ 1mA של כוח במצב שינה עמוק (גם לאחר השבתת נורית ההפעלה). מאז אני משתמש ב- Lolin32 (לא בגרסת הלייט) שעליה מדדתי זרם של 144.5uA בזמן שינה עמוקה. כדי לבצע מדידה זו, פשוט חיברתי מולטימטר בסדרה עם הסוללה והמכשיר. זה בהחלט קל יותר לעשות תוך טיפוס אב טיפוס עם קרש לחם. מדדתי גם את השימוש הנוכחי כשהמכשיר ער:

  • שינה עמוקה: 144.5uA
  • ער: 45mA
  • Wi -Fi מופעל: 150mA

בהנחה שאני משתמש במכונה פעמיים בשבוע, הערכתי את הזמנים הבאים לזמן שהחיישן מבלה בכל מצב:

  • שינה עמוקה: 604090 שניות (~ שבוע)
  • ער: 720 שניות (12 דקות)
  • Wi -Fi מופעל: 10 שניות

מנתונים אלה אנו יכולים להעריך כמה זמן הסוללה תחזיק מעמד. השתמשתי במחשבון שימושי זה כדי לקבל צריכת חשמל ממוצעת של 0.2mA. אורך חיי הסוללה המשוער הוא 201 ימים או כ -6 חודשים! במציאות גיליתי שהמכשיר יפסיק לפעול לאחר כחודשיים כך שעלולות להיות כמה טעויות במדידות או בקיבולת הסוללה.

שלב 4: מדידת רמת הסוללה

מדידת רמת הסוללה
מדידת רמת הסוללה
מדידת רמת הסוללה
מדידת רמת הסוללה

חשבתי שזה יהיה נחמד אם המכשיר יכול להגיד לי מתי הסוללה מתרוקנת אז אני יודע מתי לטעון אותו. כדי למדוד זאת עלינו למדוד את המתח של הסוללה. לסוללה טווח מתח של 4.3V - 2.2V (מתח ההפעלה המינימלי של ה- ESP32). למרבה הצער, טווח המתחים של סיכות ה- ADC של ESP32 הוא 0-3.3V. המשמעות היא שעלינו להוריד את המתח של הסוללה מהמקסימום של 4.3 ל -3.3 כדי למנוע עומס יתר על ה- ADC. זה אפשרי לעשות עם מחלק מתח. כל שעליך לעשות הוא לחבר שני נגדים עם הערכים המתאימים מהסוללה לקרקע ולמדוד את המתח באמצע.

למרבה הצער, מעגל מחלק מתח פשוט יוריד את החשמל מהסוללה גם כאשר המתח אינו נמדד. אתה יכול להקל על זה על ידי שימוש בנגדים בעלי ערך גבוה, אך הצד השפל הוא שאולי ה- ADC לא יצליח למשוך מספיק זרם לביצוע מדידה מדויקת. החלטתי להשתמש בנגדים עם ערכים של 100kΩ ו- 330kΩ שיורידו 4.3V ל -3.3V לפי נוסחת מחלק המתח הזו. בהתחשב בהתנגדות כוללת של 430kΩ, היינו מצפים לתיקו שוטף של 11.6uA (באמצעות חוק אוהם). בהתחשב בשימוש הנוכחי בשינה עמוקה שלנו הוא 144uA, מדובר בעלייה משמעותית למדי.

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

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

אחוזי סוללה():

# אפשר מעגל מתח סוללה gpio_set_level (BATTERY_EN_PIN, HIGH) # רמת הסוללה מוחזרת כמספר שלם בין 0 ל- 4095 adc_value = adc1_get_value (ADC_PIN) # אפשר מעגל מתח סוללה gpio_set_level (BATTERY_EN_PIN, LOW) adc_volt מחלק משתמש בנגדים של 100k/330k אוהם # 4.3V -> 3.223, 2.4 -> 1.842 צפויה_מקס = 4.3*330/(100+330) צפויה_מנ = 2.4*330/(100+330) battery_level = (adc_voltage -expected_min)/(צפוי_מקס -expected_min) החזר סוללה_רמה * 100.0

שלב 5: להפוך את זה ליפה יותר

הופך את זה ליפה יותר
הופך את זה ליפה יותר
הופך את זה ליפה יותר
הופך את זה ליפה יותר
הופך את זה ליפה יותר
הופך את זה ליפה יותר

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

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

הוספתי גם נורית מהבהבת כאשר המכשיר זיהה תנועה.

שלב 6: גימור נגיעות

Image
Image
נגיעות
נגיעות
נגיעות
נגיעות

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

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

אם אתה מעוניין בפרטי הפרויקט הזה, אנא אל תהסס להשאיר הערה. אם אתה רוצה לראות את הקוד, אנא בדוק אותו ב- Github:

github.com/alexspurling/washingmachine

מוּמלָץ: