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

רכזת בית חכם ESP32: 11 שלבים
רכזת בית חכם ESP32: 11 שלבים

וִידֵאוֹ: רכזת בית חכם ESP32: 11 שלבים

וִידֵאוֹ: רכזת בית חכם ESP32: 11 שלבים
וִידֵאוֹ: ESP32 for Home Automation using Webserver 2024, יוני
Anonim
רכזת בית חכם ESP32
רכזת בית חכם ESP32
רכזת בית חכם ESP32
רכזת בית חכם ESP32
רכזת בית חכם ESP32
רכזת בית חכם ESP32
רכזת בית חכם ESP32
רכזת בית חכם ESP32

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

תודה ל- DFRobot ו- PCBGOGO.com על חסות הפרויקט הזה!

למידע מעמיק יותר, בקר במאגר Github:

אספקה

  • חיפושית אש DFRobot ESP32

    www.dfrobot.com/product-1590.html

  • חיישן DHT22

    www.dfrobot.com/product-1102.html

  • חיישן אור ותנועות APDS9960

    www.dfrobot.com/product-1361.html

  • מודול IX 20X4 LCD

    www.dfrobot.com/product-590.html

  • רצועת LED אנלוגית RGB

    www.dfrobot.com/product-1829.html

  • נהגי מנוע צעד DRV8825
  • קורא כרטיסי SD
  • מנועי צעד NEMA17

שלב 1: תכונות

מאפיינים
מאפיינים
מאפיינים
מאפיינים
מאפיינים
מאפיינים

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

האוטובוס I2C נשבר גם לשימוש עם רכיבים כגון APDS9960 או LCD. לקריאת הטמפרטורה, יש סיכות שבורות לחיבור לחיישן DHT22, כמו גם פוטורסיסטור לקריאת רמות אור הסביבה.

קיימת תמיכה ברצועת אור אנלוגית על הלוח, שעליה שלוש MOSFET להנעת נורות ה- LED.

שלב 2: PCB

PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB

התחלתי את תהליך עיצוב ה- PCB על ידי יצירת תחילה סכמטי ב- Eagle. מכיוון שלא הצלחתי למצוא ספריית ESP32 FireBeetle, פשוט השתמשתי בשתי כותרות פינים 1x18 פינים במקום. לאחר מכן יצרתי מעגל לניהול חשמל שיכול לקבל 12 וולט באמצעות שקע חבית DC ולהמיר אותו ל -5 וולט להפעלת החיישנים ו- ESP32.

לאחר השלמת הסכימה, עברתי לעצב את ה- PCB עצמו.

ידעתי שתקע חבית DC יצטרך להיות קרוב לחזית הלוח, וקבלי החלקת אספקת החשמל של 100uF צריכים להיות קרובים לכניסות הכוח של מנוע הצעד. לאחר שהכל הונח, התחלתי לנתב עקבות.

בעוד Oshpark מייצרת מחשבי PCB באיכות מעולה, המחירים שלהם גבוהים למדי. למרבה המזל, PCBGOGO.com מייצרת גם PCB מעולים במחיר נוח. הצלחתי לקנות עשרה PCB ב -5 $ בלבד, במקום לשלם 52 $ עבור שלושה לוחות בלבד מ- Oshpark.com.

שלב 3: הרכבה

הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה

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

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

שלב 4: סקירת תכנות

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

שלב 5: קלט

תשומות
תשומות
תשומות
תשומות
תשומות
תשומות

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

כפתור צור

קבל אם לוחצים על הכפתור

קבל מספר לחיצות על כפתורים

קבל את המחווה האחרונה

קבל ערך מגע קיבולי

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

ערכי מגע קיבוליים הם הרבה יותר פשוטים. הם נשלפים על ידי העברת סיכת המגע לפונקציית touchRead ().

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

שלב 6: יציאות

יציאות
יציאות
יציאות
יציאות
יציאות
יציאות

מרכז הבית החכם כולל מספר דרכים להפיק מידע ולשנות אורות. ישנם סיכות הפורצות את האוטובוס I2C, המאפשרות למשתמשים לחבר LCD. עד כה נתמך רק גודל LCD אחד: 20 x 4. באמצעות הפונקציה "hub.display_message ()", משתמשים יכולים להציג הודעות על ה- LCD על ידי העברת אובייקט מחרוזת.

יש גם כותרת סיכה לחיבור מחרוזת נוריות אנלוגיות. קריאת הפונקציה "hub.set_led_strip (r, g, b)", קובעת את צבע הרצועה.

שני מנועי הצעד מונעים באמצעות זוג לוחות דרייבר DRV8825. החלטתי להשתמש בספריית BasicStepper לטיפול בשליטה מוטורית. כאשר אתחול הלוח נוצרים שני אובייקטים של צעדים ושני המנועים הופכים לפעילים. כדי לדרג כל מנוע, משתמשים בפונקציה "hub.step_motor (motor_id, steps)", כאשר מזהה המנוע הוא 0 או 1.

שלב 7: רישום

רישום
רישום
רישום
רישום
רישום
רישום

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

כדי להתחיל להיכנס, נוצר קובץ חדש עם "hub.create_log (שם קובץ, כותרת)", שבו הכותרת משמשת ליצירת שורת קובץ CSV המציינת עמודות. העמודה הראשונה היא תמיד חותמת זמן בשנה ביום יום בחודש: מינימום: פורמט שניות. כדי לקבל את הזמן, הפונקציה hub.log_to_file () מקבלת את הזמן עם הפונקציה basic_functions.get_time (). מבנה הזמן tm מועבר אז בהתייחסות לפונקציית הרישום, יחד עם הנתונים ושם הקובץ.

שלב 8: באזר

זַמזָם
זַמזָם

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

שלב 9: שילובי IoT חיצוניים

שילובי IoT חיצוניים
שילובי IoT חיצוניים
שילובי IoT חיצוניים
שילובי IoT חיצוניים
שילובי IoT חיצוניים
שילובי IoT חיצוניים

הרכזת תומכת כיום ב- IFTTT webhooks. ניתן להפעיל אותם על ידי קריאה לפונקציה Hub_IoT.publish_webhook (כתובת אתר, נתונים, אירוע, מפתח) או Hub_IoT.publish_webhook (כתובת אתר, נתונים). זה שולח בקשת POST לכתובת האתר הנתונה עם הנתונים המצורפים, יחד עם שם אירוע במידת הצורך. כדי להגדיר דוגמא לשילוב IFTTT, צור תחילה יישומון חדש. לאחר מכן בחר את שירות webhook המופעל כאשר מתקבלת בקשה.

לאחר מכן, קרא לאירוע "high_temp" ושמור אותו. לאחר מכן, בחר את שירות Gmail עבור החלק "זה" ובחר באפשרות "שלח דוא"ל לעצמי". בתוך ההתקנה של השירות, שים "הטמפרטורה גבוהה!" עבור הנבדק, ואז שמתי את "הטמפרטורה הנמדדת של {{ערך 1}} ב {{OccuredAt}}", המציגה את הטמפרטורה הנמדדת ואת השעה שבה האירוע הופעל.

לאחר שתגדיר אותו, פשוט הדבק את כתובת האתר של webhook שנוצר על ידי IFTTT והכנס את "high_temp" למקטע האירוע.

שלב 10: שימוש

נוֹהָג
נוֹהָג
נוֹהָג
נוֹהָג
נוֹהָג
נוֹהָג
נוֹהָג
נוֹהָג

כדי להשתמש ב- Smart Home Hub, פשוט התקשר לכל הפונקציות הדרושות בהגדרות () או בלולאה (). כבר שמתי שיחות פונקציה לדוגמא, כגון הדפסת השעה הנוכחית והתקשרות לאירוע IFTTT.

שלב 11: תוכניות עתידיות

מערכת Smart Home Hub פועלת טוב מאוד למשימות אוטומטיות פשוטות ואיסוף נתונים. ניתן להשתמש בו כמעט לכל דבר, כגון הגדרת צבע של רצועת LED, ניטור הטמפרטורה של החדר, בדיקה אם נורה דולקת ועוד שלל פרויקטים פוטנציאליים. בעתיד, ברצוני להרחיב את הפונקציונליות עוד יותר. זה יכול לכלול הוספת שרת אינטרנט חזק יותר, אחסון קבצים מקומי ואפילו Bluetooth או mqtt.

מוּמלָץ: