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

דגל תיבת דואר מופעל באמצעות MQTT ו- Wifi: 7 שלבים (עם תמונות)
דגל תיבת דואר מופעל באמצעות MQTT ו- Wifi: 7 שלבים (עם תמונות)

וִידֵאוֹ: דגל תיבת דואר מופעל באמצעות MQTT ו- Wifi: 7 שלבים (עם תמונות)

וִידֵאוֹ: דגל תיבת דואר מופעל באמצעות MQTT ו- Wifi: 7 שלבים (עם תמונות)
וִידֵאוֹ: שימוש בתיבת דואר משותפת - ענן 365 2024, נוֹבֶמבֶּר
Anonim
דגל תיבת דואר מופעל באמצעות MQTT ו- Wifi
דגל תיבת דואר מופעל באמצעות MQTT ו- Wifi

הערה: מעודכן עם קושחה חדשה, סכמטי וטיפים למתכנת

כמה שנים התחלתי בפרויקט אוטומציה ביתי משלי. זה התחיל בבניית שדר משולב שרת 433 מגה -הרץ עם Arduino להחלפת הרבה מתגים מרחוק מבוססי PT2262. מאוחר יותר הוספתי מקלט מבוסס Arduino לתחנת מזג האוויר שלי, חיברתי את מגע השליטה של מטען ה- EV שלי וכו '. העניינים השתלבו יותר ויותר זה בזה (ומסובכים!). לכן, לפני מספר חודשים החלטתי לתקנן את כל מה שמבוסס על MQTT למסרים, Node-RED לאוטומציה (שניהם פועלים ב- Raspberry Pi B+יחיד) ו- MariaDb לצורך רישום (פועל ב- NAS Synology שלי). מאוחר יותר העברתי גם את מתווך MQTT (Mosquitto) ו- Node-RED ל- NAS.

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

שלב 1: מתאר, דרישות מוקדמות וחלקים

מתווה

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

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

תנאים מוקדמים

אני מניח שיש לך כישורי הלחמה צנועים, עבדת קצת עם ה- Arduino IDE והתקנת את לוחות ESP8266 באמצעות מנהל הלוחות. אתה צריך גם מתאם טורי USB 3.3 וולט כדי לתכנת את הבקר המיקרו.

אני גם מניח שיש לך מתווך MQTT ושרת Node-RED. אם לא, יש הרבה הוראות באינטרנט, אבל אני ממליץ לך ללכת בדרך העצלה ולהשתמש בתסריט ההתקנה המעולה של פיטר סקרגיל אם אתה רוצה להריץ את זה על כל פי או אובונטו, או להשתמש בתמונתו של אנדראס ספיס עבור ה- Pi Zero W (קישורים בתיאור הסרטון), מה שיחסוך לך כמה שעות של צפייה בסקריפטים להתקנה. לחלופין, תוכל לגרום לקושחה לשלוח מייל ישירות, אך תאבד גמישות רבה בכך.

חלקים

  • ארגז סוללות אחד סגור, 3 AA
  • 2 סוללות AA
  • מודול 1 ESP8266. לפרויקט זה השתמשתי ב- ESP-01
  • מתג מיקרו אחד
  • נגד 47K
  • נגד 4M7
  • קבל 2.2uF
  • 1 צינורית פלסטיק דקה. השתמשתי בעט
  • 1 מקל גפרור עבה וארוך או סוכריה על מקל. הוא צריך להתאים ולנוע בקלות בצינור הפלסטיק

שלב 2: חומרה: התיבה, המתג והחיווט

חומרה: התיבה, המתג והחיווט
חומרה: התיבה, המתג והחיווט
חומרה: התיבה, המתג והחיווט
חומרה: התיבה, המתג והחיווט
חומרה: התיבה, המתג והחיווט
חומרה: התיבה, המתג והחיווט

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

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

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

שלב 3: חומרה: ה- ESP-01

חומרה: ה- ESP-01
חומרה: ה- ESP-01
חומרה: ה- ESP-01
חומרה: ה- ESP-01
חומרה: ה- ESP-01
חומרה: ה- ESP-01

בהתחשב בדרישת ה- WiFi, כל הפרויקט צועק ESP8266. בקר ה- WiFi הקטן הזה הפך לסוס העבודה המועדף על קהילת המתעסקים כמודול שנקנה תחת 2.50 אירו ומשלב ערימת WiFi מלאה ו- TCP/IP, עם יותר מידי יכולת פנויה להפעלת תוכניות משלך. ה- Arduino IDE (או Atom עם התוסף PlatformIO) תומך במלואו ב- ESP8266.

בדרך כלל הייתי לוקח ESP-12F, אבל היה לי לוח ESP-01 זעיר שהיה מושלם לתפקיד ומתאים היטב לקופסת הסוללות. הבעיה היחידה היא שזה די מסובך להבהב קושחה ב- ESP-01. עוד על כך בשלב הבא. יש לבצע שינוי אחד: עליך להסיר את נורית ההפעלה האדומה מהלוח, מכיוון שהיא שואבת ברציפות 3mA. כשהמנורה הוסרה, המודול משתמש רק בכמה עשרות uA במצב שינה עמוקה, מה שיגרום לו להימשך יותר משנה על שתי סוללות AA איכותיות.

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

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

  1. סוללה פלוס ל- Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) ונגד 47K.
  2. סוללה מינוס ל- GND (A1) וחוט אחד של המתג.
  3. החוט השני של המתג לקבל 100nF ונגד 4M7.
  4. הקצוות הפתוחים של שני הנגדים ושל הקבל ל- RST (C2).
  5. TXD (A2) יכול להישאר מחובר.

עריכה: הייתי צריך להחליף את ה- ESP-01 כי עשיתי טעות מטופשת והרסתי אותה. התברר כי להפתעתי ה- ESP-01 החדש לא התאפס עם הקבל המקורי של 100nF. כנראה שיש לו עיצוב מעט שונה. החלפתי אותו באחד 2.2 uF ועכשיו הוא עובד שוב

בסיום, הכל יכול להיות מותקן בקופסה, אך המתן, תחילה עלינו לתכנת את המודול.

שלב 4: תכנות ה- ESP-01

תכנות ה- ESP-01
תכנות ה- ESP-01
תכנות ה- ESP-01
תכנות ה- ESP-01
תכנות ה- ESP-01
תכנות ה- ESP-01

כדי להבהב את הקושחה ב- ESP-01 שלך, תוכל לבנות אסדה קטנה או לקנות מתכנת (כמעט) שלם בכ -1 יורו.

תכנות חומרה לתכנות

בנה אסדה קטנה עם שוב שתי כותרות נקבות ל- ESP-01. כמו כן, אתה צריך מודול סידורי USB המסוגל לספק 3.3 וולט. שים לב ששבב ESP8266 אינו מוקשה 5 וולט, כך שטעות כאן עלולה להרוג את המודול שלך. בכל מקרה, שוב בעזרת גיליון הרמאים, חוט את המתקן שלך כדלקמן:

  1. 3.3V מהמודול USBSerial ל- Vcc, CH_PD, RST ו- GPIO2.
  2. GND של מודול USBSerial ל- GND ו- GPIO0.
  3. TXD של המודול USBSerial ל- RXD.
  4. RDX של מודול USBSerial ל- TXD.

מתכנת בנוי מראש

כיף לבנות דברים משלך, הגישה העצלנית יותר היא להשיג ממשק ESP-01-to-serial מאתר המכירות הפומביות האהוב עליך, ראה את התמונה למעלה. זה הרבה יותר קל, קומפקטי ואמין יותר מאשר אסדה. עם זאת, חלקם אינם מתכנתים, אלא ממשקים סדרתיים. עליך להלחם גשר תיל בין GND (סיכה A1) ו- GPIO0 (סיכה C1) בצד האחורי של הממשק, ראה התמונה השנייה. שים לב שיש לחבר את ה- ESP-01 כשהאנטנה פונה לתקע ה- USB, ולא להיפך!

הערה: הם קיימים גם עם מתג, ראו תמונה שלישית, נחמד מאוד.

טען את הקושחה

בהנחה IDE Arduino של 1.8.3 ואילך, בחר כלים> לוח ובחר את הלוח שברשותך. עבור ESP-01 כמו שהשתמשתי בו, בחר "כללי ESP8266 מודול", והגדר את האפשרויות הבאות (אלה צריכות להיות כל ברירות המחדל):

  1. מצב הבזק: DIO
  2. תדר הבזק: 40MHz
  3. תדר המעבד: 80MHz
  4. גודל הבזק: 512KB (64KB SPIFFS) הערה: אם אתה משתמש בלוח ESP-01 שחור, בחר 1MB (64KB SPIFFS)
  5. יציאת ניפוי באגים: מושבתת
  6. רמת ניפוי באגים: אין
  7. שיטת איפוס: ck
  8. מהירות העלאה 115200
  9. יציאה: בחר את היציאה המחוברת לממשק הטורי USB שלך. עבור מחשב אובונטו שלי זה היה /dev /ttyUSB0

חבר את המתקן/מתכנת, טען את הסקיצה שתמצא כאן https://gitlab.com/jeroenmeijer/Mailbox.git. ספק את אישורי הברוקר WiFi ו- MQTT ואת תצורת ה- IP שלך ב- config.h ובחר העלה.

שלב 5: הרכבת הכל

הרכבת הכל
הרכבת הכל

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

$ mosquitto_sub -h mqttbroker -v -t "stat/#" -u משתמש -סיסמא

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

stat/תיבת דואר/טריגר {"vcc": 3050, "flap": true, "prev": 0, "RSSI": 29, "version": "005"}

במהלך תקופה זו, בקר הבקרה השתמש בכ- 70mA. בסיום זה נכנס לשינה עמוקה ובמקרה שלי הוא השתמש בפחות מ 20uA. "דש" תמיד נכון, "vcc" מציין את מתח הסוללה ב- mV ו- "prev" צריך להיות 0. אם הוא 1 או 2, המשמעות היא שתיבת הדואר לא הצליחה לשלוח הודעה מוקדם יותר, גם מכיוון שהיא לא הצליחה להתחבר ה- WiFi, או מכיוון שהוא לא הצליח להתחבר לברוקר MQTT. "RSSI" הוא כוחו של אות ה- WiFi. שניהם נוחים מאוד לאבחון בעיות.

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

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

שלב 6: שימוש ב- Node-RED לפעול על הודעת MQTT

שימוש ב- Node-RED כדי לפעול על הודעת MQTT
שימוש ב- Node-RED כדי לפעול על הודעת MQTT

לבסוף, יצרתי זרימה פשוטה ב- Node-RED. הצומת הראשון נרשם לנושא תיבת הדואר (stat/postbox/trigger). כאשר מתקבלת הודעה, הצומת השני מעצב דוא ל *). הצומת הסופי שולח אותו לכתובת ה- gmail שלי, תוך שימוש ב- gmail כשרת SMTP. לאחר מכן הטלפון יודיע לי על דואר חדש.

הוספתי את זרימת הצומת-אדום לקטע קטע gitlab כך שתוכל לייבא אותו לזרימות הצומת-אדום שלך.

כמובן שאתה יכול להוסיף עוד צמתים, למשל כדי לרשום את אירועי תיבת הדואר ל- MariaDb או SqlLite, או ליצור אזעקות נוספות כאשר מתח הסוללה יורד מתחת ל 2.7 וולט.

ציד דואר שמח!

*) עיין בדף הבא, אני משתמש ב- PushBullet עכשיו במקום בדוא ל.

שלב 7: מחשבות אחרי

תמיד יש תחושה זו שאפשר היה לעשות דברים טוב יותר.

החלף

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

הערה: כפי שהגיב diy_bloke, למגעי קנים יש נטייה להידבק כשהם ממוגנטים לאורך זמן, כך שאולי הבוכנה לא הייתה רעיון כל כך רע בכלל. אנחנו עוד נראה. *)

הודעה על התרוקנות

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

העברת הודעות

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

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

**) אני משתמש ב- PushBullet כעת להודעות דחיפה, בנפרד מלוח המחוונים של MQTT. ניתן למצוא ממשקים נמוכים של Node-RED לממשק ה- API. הקפד לספק את אסימון הגישה בצומת "התכונן ל- pushbullet" וכתובת הדוא"ל שלך למטרות נסיגה בצומת "נסה" שוב.

מוּמלָץ: