DIY: יצירת SmartLock לבית שלך שנפתח רק עם הטלפון החכם שלך

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



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

מנעול דלתות אוטומטי



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



כיצד להפוך את SmartLock המופעל על ידי Android?

שלב 1: איסוף הרכיבים

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



  • ESP32
  • חוטי מגשר
  • מנוע סרוו
  • ברגים
  • לנעול
  • מכונת קידוח

שלב 2: הכנת האפליקציה

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

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

שלב 3: הרכבת הרכיבים

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



קח את מנוע הסרוו וחבר את ה- Vcc והאדמה שלו ל- Vcc ולאדמה של לוח ה- ESP בהתאמה. חבר את סיכת PWM של מנוע הסרוו שלך לסיכה 34 שלך לוח ESP32 . עכשיו ראה שיש כפתור הילוך על מנוע סרוו. הוצא את ידית המנעול על ידי סיבובו וקבע את ידית מנוע ההילוכים במנעול בעזרת כמה דבקים.

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

שלב 4: עבודה

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

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

שלב 5: תחילת העבודה עם ESP32

אם לא עבדתם בעבר על Arduino IDE, אל דאגה מכיוון שלב אחר שלב להגדרת Arduino IDE מוצג למטה.

  1. הורד את הגרסה האחרונה של Arduino IDE מ ארדואינו.
  2. חבר את לוח ה- Arduino למחשב ופתח את לוח הבקרה. לחץ על חומרה וסאונד. עכשיו פתוח מכשירים ומדפסת ומצא את היציאה אליה מחובר הלוח שלך. במקרה שלי זה כן COM14 אבל זה שונה במחשבים שונים.

    מציאת נמל

  3. לחץ על קובץ ואז לחץ על העדפות. העתק את הקישור הבא ב כתובת URL של מנהל דירקטוריון נוסף. ' https://dl.espressif.com/dl/package_esp32_index.json '

    העדפות

  4. כעת, כדי להשתמש ב- ESP32 עם Arduino IDE, עלינו לייבא ספריות מיוחדות שיאפשרו לנו לצרוב קוד ב- ESP32 ולהשתמש בו. שתי ספריות אלה מצורפות בקישור הבא. כדי לכלול את הספרייה, הולך סקיצה> כלול ספרייה> הוסף ספריית ZIP . תיבה תופיע. מצא את תיקיית ה- ZIP במחשב שלך ולחץ על OK כדי לכלול את התיקיות.

    כלול ספרייה

  5. עכשיו הולך סקיצה> כלול ספרייה> נהל ספריות.

    נהל ספריות

  6. תפריט ייפתח. בשורת החיפוש הקלד ארדואינו JSON. תופיע רשימה. להתקין ארדואינו JSON מאת בנואה בלאנשון.

    ארדואינו JSON

  7. כעת לחץ על ה- כלים. תפריט נפתח יופיע. הגדר את הלוח ל- מודול ESP Dev.

    לוח הגדרה

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

    הגדרת נמל

  9. כעת העלה את הקוד המצורף בקישור למטה ולחץ על כפתור ההעלאה כדי לצרוב את הקוד במיקרו-בקרה ESP32.

    העלה

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

בקובץ הכלול מ- C:  Users  Pro  Documents  Arduino  ספריות  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, מ- C:  Users  Pro  Desktop  smartHome  code  code.ino: 2: C :  Users  Pro  Documents  Arduino  ספריות  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 14: 11: שגיאה: StaticJsonBuffer הוא מחלקה מ- ArduinoJson 5. אנא עיין ב- arduinojson.org/upgrade כדי ללמוד כיצד לשדרג את התוכנית שלך ל- ArduinoJson גרסה 6 StaticJsonBuffer jsonBuffer; ^ בקובץ הכלול מ- C:  Users  Pro  Documents  Arduino  ספריות  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, מ- C:  Users  Pro  Desktop  smartHome  code  code.ino: 2: C:  Users  Pro  Documents  Arduino  ספריות  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 65: 11: שגיאה: StaticJsonBuffer הוא מחלקה מ- ArduinoJson 5. אנא עיינו ב- arduinojson.org/upgrade כדי ללמוד כיצד לשדרג את התוכנית שלכם גרסת 6 של ArduinoJson מחזירה את StaticJsonBuffer (). ParseObject (_data); ^ נמצאו ספריות מרובות עבור 'WiFi.h' בשימוש: C:  Users  Pro  AppData  Local  Arduino15  חבילות  esp32  חומרה  esp32  1.0.2  ספריות  WiFi לא בשימוש: C:  Files Files ( x86)  Arduino  ספריות  WiFi שימוש בספריה WiFi בגירסה 1.0 בתיקיה: C:  משתמשים  Pro  AppData  Local  Arduino15  חבילות  esp32  חומרה  esp32  1.0.2  ספריות  WiFi באמצעות ספרייה IOXhop_FirebaseESP32-master בתיקיה: C:  Users  Pro  Documents  Arduino  ספריות  IOXhop_FirebaseESP32-master (מורשת) באמצעות ספריית HTTPClient בגירסה 1.2 בתיקיה: C:  Users  Pro  AppData  Local  Arduino15  חבילות  esp32  חומרה  esp32  1.0.2  ספריות  HTTPClient באמצעות ספרייה WiFiClientSecure בגירסה 1.0 בתיקיה: C:  Users  Pro  AppData  Local  Arduino15  חבילות  esp32  hardware  esp32  1.0.2  ספריות  WiFiClientSecure באמצעות ספרייה ArduinoJson ב גרסה 6.12.0 בתיקיה: C:  Users  Pro  Documents  Arduino  ספריות  ArduinoJson סטטוס יציאה 1 שגיאה ביצירת לוח מודול Dev ESP32.

אין מה לדאוג מכיוון שנוכל לחסל שגיאות אלה על ידי ביצוע צעדים פשוטים. שגיאות אלה נוצרות מכיוון שבגרסה החדשה של Arduino JSON יש מחלקה אחרת במקום StaticJsonBuffer. זה הכיתה של JSON 5. אז אנחנו יכולים פשוט לבטל את השגיאה הזו על ידי שדרוג לאחור של הגרסה של Arduino JSON של IDE שלנו Arduino. פשוט לך אל סקיצה> כלול ספרייה> נהל ספריות. לחפש אחר ארדואינו JSON מאת בנואה בלאנשון שהתקנת בעבר. הסר את ההתקנה תחילה והגדר את גרסתו ל- 5.13.5. עכשיו, כשהגדרנו גרסה ישנה של Arduino JSON, התקן אותה שוב והרכב את הקוד מחדש. הפעם, הקוד שלך יצטבר בהצלחה.

להורדת הקוד, נְקִישָׁה כאן.

שלב 6: קוד

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

1. בתחילת הקוד נכלול שלוש ספריות. הראשון הוא לאפשר Wifi על לוח ה- ESP, השני הוא לאפשר ל- ESP להשתמש במנוע סרוו והשלישי הוא לחבר את לוח ה- ESP למסד הנתונים של firebase. לאחר מכן, נוסיף לקוד את מארח firebase, האימות, שם חיבור האינטרנט המקומי והסיסמה שלו. לאחר שתעשה זאת, צור אובייקט לשימוש במנוע הסרוו.

# כלול // כלול ספרייה לשימוש ב- WiFi # כולל // כולל ספרייה עבור מנוע סרוו # כולל // כולל ספרייה להתחברות ל- Firebase # הגדר FIREBASE_HOST 'xxxxxxxxxx' // החלף את xxxxxxxxxx על ידי מארח ה- firebase שלך ​​כאן # הגדר FIREBASE_AUTH 'xxxxxxxxxx' / / החלף את xxxxxxxxxx על ידי אימות ה- firebase שלך ​​כאן # הגדר WIFI_SSID 'קוד xx, xxxxxxxx' // החלף xxxxxxxxxx בשם חיבור ה- Wifi שלנו # הגדר WIFI_PASSWORD 'xxxxxxxxxx' // החלף xxxxxxxxxx על ידי סיסמת ה- wifi שלך Servo myservo; // ליצור אובייקט עבור מנוע סרוו int pos = 0; // יצירת מצב int משתנה; // יצירת משתנה

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

הגדרת חלל () {Serial.begin (115200); // קביעת קצב השידור myservo.attach (34); // חבר את סיכת PWM של מנוע הסרוו ל- pin34 של ESP32 myservo.write (60); עיכוב (1000); // התחבר ל- wifi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ('מתחבר'); בעוד (WiFi.status ()! = WL_CONNECTED) {Serial.print ('.'); עיכוב (500); } Serial.println (); Serial.print ('מחובר:'); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }

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

loop loop () {state = Serial.println (Firebase.getFloat ('motor')); // קרא את הנתונים מבסיס האש // אם המצב הוא '0' מנוע ה- DC יכבה אם (state == '0') {myservo.write (8); // מיקום מוגדר של עיכוב מנוע סרוו (1000); // המתן ל- Serial.println השנייה ('דלת נעולה'); } אחר אם (state == '1') {myservo.write (55); // הגדר מיקום חדש של עיכוב מנוע סרוו (1000); // המתן לשנייה אחת Serial.println ('דלת סמארטפון'); } // שגיאת טיפול אם (Firebase.failed ()) {Serial.print ('ההגדרה / המספר נכשל:'); Serial.println (Firebase.error ()); לַחֲזוֹר; } עיכוב (1000);