פתיחת דלתות המוסך של Raspberry Pi 3: 15 שלבים (עם תמונות)
פתיחת דלתות המוסך של Raspberry Pi 3: 15 שלבים (עם תמונות)
Anonim
פתיחת דלתות המוסך של Raspberry Pi 3
פתיחת דלתות המוסך של Raspberry Pi 3

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

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

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

מטרות הפרויקט הן:

  • הפוך את ההוראה הראשונה שלי - לא תכננתי לפרסם את זה, אבל קיבלתי פניות רבות
  • פתח דלת מוסך עם שלט רגיל
  • פתח דלת מוסך עם פותחן המוסך הפעמון המורכב על הקיר
  • פתח דלת מוסך עם סמארטפון
  • עקוב אחר מצב דלת המוסך מרחוק באמצעות טלפון נייד או מחשב נייד (האם הוא פתוח או סגור?)
  • שלח הודעת טקסט לטלפון הנייד שלי אם הדלת פתוחה כאשר היא צריכה להיות סגורה
  • שמור על דלת המוסך מאובטחת (למשל, באובדן חשמל, הדלת לא צריכה להיפתח)
  • אל תאפשר לאף אחד אחר ברשת לפתוח את הדלת (תעודת SSL בחתימה עצמית)
  • השתמש ב- WiFi במקום בחיבור קווי
  • השתמש ב- Raspberry Pi 3

הבסיס ליישום זה של פתיחת דלתות המוסך נגזר מ- Instructable: Raspberry Pi Opener Door Door by quartarian. במקור השתמשתי בדגם B+ Raspberry Pi, ואז עברתי ל- Raspberry Pi 2 דגם B, ועכשיו הוא משתמש ב- Raspberry Pi 3.

השתמשתי ב- MacBook כדי לתקשר עם ה- Raspberry Pi, אך ניתן להשתמש בכל מחשב.

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

  • ליפט מאסטר 828LM
  • צ'מברליין MyQ $ 129
  • שער GoGo 179 דולר
  • אומן 100 $

הערות:

  • יש להחליף טקסט המוקף באתים, כמו זה 'החלף-זה' בערך בפועל
  • הטקסט הכחול המודגש של Arduino הוא קישור. במקרה זה, זהו קישור לגרסת ארדואינו של פותחן דלת המוסך.
  • ניסיתי לזכות בכל מקור בשימוש. אני מתנצל על כל השמטות. רוב המסמך הזה מבוסס על עבודות של אנשים אחרים.
  • $ מציין פקודה המבוצעת בחלון מסוף ב- MacBook ובדרך כלל מתבצעת ב- Raspberry Pi

שלב 1: אסוף חלקים

קנה או אסוף חלקים וכלים (מחירים בדולר).

  • Raspberry Pi 3 דגם B ניוארק אלמנט 14 $ 35
  • מתאם מתח USB של 5.2V 2.5A מבית אמזון 9.99 $
  • כבל מיקרו USB ל USB 6 מטר מאמזון 7.99 $
  • מארז מאמזון 6.99 $
  • SanDisk Ultra 16 GB microSDHC Class 10 עם מתאם (SDSQUAN-016G-G4A) מאמזון 8.99 $
  • מודול מגן ממסר SunFounder 2 Channel 5V עבור Arduino UNO 2560 1280 ARM PIC AVR STM32 Raspberry Pi - $ 6.79
  • 3x חוטי מגשר נקבה-נקבה. נקנה אצל פריי במחיר של 4.95 $.
  • DNS דינאמי 40 $ לשנה עבור 30 שמות (dyn.com)
  • 1 כנופיה 18 מ"ק. ב. מתג קיר כבד ישן ותיבת יציאה, 3.12 $
  • צלחת קיר לבנה אחת של אולטרה פרו, 7.88 $
  • SECO-LARM SM 226L, חיישן דלתות מוסך, המחיר משתנה מאוד, $ 9.99 באמזון עם משלוח חינם
  • 50 רגל חוט תרמוסטט מוצק, הום דיפו או לואו, 20 $

הסכום שלי: ~ 172.00 $

היו לי את החלקים, הכלים והשירותים הבאים:

  • כבל אתרנט CAT5
  • חוט מד קטן, באורך 6 רגל
  • מברג ראש פיליפס
  • צבת אף מחט
  • חותכי קופסאות
  • תכשיטנים מברג שטוח, צריך לשחרר ברגים בממסר
  • MacBook (ניתן להשתמש במחשב אישי)
  • AT&T GigaPower (ניתן להשתמש בכל ספק שירותי אינטרנט)

שלב 2: הגדרת Raspberry Pi ללא צג או מקלדת

הגדר Raspberry Pi ללא צג או מקלדת
הגדר Raspberry Pi ללא צג או מקלדת

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

הגדר את Raspberry Pi באמצעות ההוראות הבאות:

הגדר Raspberry Pi ללא צג או מקלדת

ההוראות לעיל כוללות שלבים אופציונליים בנספח. הקפד לבצע את הצעד:

הוסף אישורים בצד הלקוח לשרתי אינטרנט

כיבוי פטל פטל

כיבוי $ sudo -h 0

לאחר כיבוי, הסר

  • כבל אתרנט
  • כבל טורי USB

אלה לא יהיו נחוצים יותר. השתמש ב- wifi, ssh וחלון מסוף ב- Mac Book להפעלת פקודות ב- Raspberry Pi.

נתק את החשמל וחבר אותו לחשמל, ופאי פטל אמור לאתחל מחדש.

שלב 3: התקן את Wiring Pi, Apache ו- PHP

התקן את חיווט Pi

פתח חלון מסוף ב- Mac Book. התחבר ל- Raspberry Pi ולאחר מכן הורד, ריכז והתקן את Wiring Pi. תוכנה זו מאפשרת שליטה על סיכות ה- GPIO. להלן מדריך שלב אחר שלב:

wiringpi.com/download-and-install/

להלן גרסה מרוכזת של ההוראות:

$ ssh pi@♣ פטל-פי-ip ♣

סיסמא: ♣ סיסמה ♣ $ sudo apt-get install git-core $ git שיבוט git: //git.drogon.net/wiringPi $ cd wiringPi $ git pull origin $./build

הפעל את הפקודה gpio כדי לבדוק את ההתקנה:

$ gpio -v

גרסת gpio: 2.29 זכויות יוצרים (ג) 2012-2015 גורדון הנדרסון זוהי תוכנה חינמית ללא אחריות לחלוטין. לפרטים סוג: gpio -warry Raspberry Pi פרטי: סוג: דגם 2, עדכון: 1.1, זיכרון: 1024MB, יוצר: Sony [OV] עץ ההתקנים מופעל. פטל פטל זה תומך בגישת GPIO ברמת המשתמש. -> עיין בדף האדם לפרטים נוספים $ gpio readall+-----+-----+---------+------+---+--- פי 2 ---+---+------+---------+-----+-----+| BCM | wPi | שם | מצב | V | פיזית | V | מצב | שם | wPi | BCM | +-----+-----+---------+------+---+---- ++ ----+---+- -----+---------+-----+-----+| | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | IN | 1 | 3 || 4 | | | 5V | | | | 3 | 9 | SCL.1 | IN | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | החוצה | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | ALT0 | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 1 | IN | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | מיסו | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 | +-----+-----+---------+------+---+---- ++ ----+---+- -----+---------+-----+-----+| BCM | wPi | שם | מצב | V | פיזית | V | מצב | שם | wPi | BCM | +-----+-----+---------+------+---+--- Pi 2 ---+---+--- ---+---------+-----+-----+

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

התקן Apache ו- PHP

הפעל את הפקודות הבאות:

$ CD..

$ sudo apt-get update $ sudo apt-get install apache2 php5 libapache2-mod-php5

כדי לוודא ששרת האינטרנט פועל, פתח דפדפן ובתיבת כתובת האתר הזן:

♣ פטל-פי-ip ♣

אתר ברירת המחדל של אפאצ'י מגיב עם "זה עובד!"

שלב 4: אתר אינטרנט

פתח חלון מסוף ב- Mac Book. התחבר ל- Raspberry Pi, ולאחר מכן הסר את קובץ ברירת המחדל index.html, שנה את ההרשאות בספריית האתר וערוך קובץ בשם index.php.

$ ssh pi@♣ פטל-פי-ip ♣

סיסמה: ♣ סיסמא ♣ $ sudo rm /var/www/index.html $ sudo chown pi: root/var/www $ sudo nano /var/www/index.php

והזן את הקוד הבא:

פתיחת מוסך

בית אוטומטי

<? php if ($ switch == 1) {echo"

";} אחר {הד"

"; } ?>

פותחן דלת המוסך מדריך לפתיחת דלתות המוסך סגור 1 פתוח 0
<? php if ($ trigger == 0) {echo "<td colspan = \" 4 / "} אחר {echo"

var13 ->

CTRL-o ו- ENTER כדי לכתוב את הקובץ ו- CTRL-x ליציאה מהעורך.

שנה הרשאות בקובץ

$ sudo chmod 664 /var/www/index.php

שלב 5: תמונת אתר

תמונת אתר
תמונת אתר
תמונת אתר
תמונת אתר

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

תמונה אחת היא הרקע (remote-background.jpg), והשנייה היא התמונה הפעילה (remote-press.jpg).

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

העתיקו את התמונות לפאי הפטל:

$ scp *-j.webp

סיסמא: ♣ סיסמא ♣

לאתר האינטרנט יש כפתור לחיצה יחיד. לאימות, פתח דפדפן והזן את 'raspberry-pi-ip'. במקום אתר ברירת המחדל של Apache, שבו כתוב "זה עובד!", הכפתור אמור להופיע. לחץ על זה.

שלב 6: שליטה מרחוק על שרת האינטרנט

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

בעזרת תכונה זו, אני מזין 'שם מארח דינאמי'.getmyip.com בשדה כתובת האתר של דפדפן. הערה: ה- IP בנתבים ביתיים יכול להשתנות ללא הודעה מוקדמת, אך זה קורה לעתים רחוקות. בחרתי להשתמש ב- DynDNS. יהיה עליך לדעת את כתובת ה- IP הציבורית של הנתב שלך.

נתב U-Verse נתב: ♣ uverse-public-ip ♣

תוכל להציג את שמות המארח ואת פרטי חשבון DynDNS Pro שלך. להלן מספר טיפים לתחילת העבודה:

  • צור את שם המארח ה- DNS הדינאמי שלך (1 מתוך 30):

    • ♣ שם מארח דינאמי ♣
    • מפתח עדכון: key dynamic-ip-updater-key ♣
  • התקן לקוח עדכון כדי לוודא ששמו המארח תמיד מופנה לכתובת ה- IP הנכונה.

    • הורד והתקן ב- MacBook
    • כתובות ה- IP של AT&T U-Versus משתנות לעתים רחוקות, כך שניתן לעדכן את העדכון למעלה בכל פעם שהוא משתנה
    • בצע את ההנחיות:

      • הוסף חשבון
      • הזן שם משתמש וסיסמה: ♣ dynamic-ip-username ♣ ♣ dynamic-ip-password ♣
      • בחר שם מארח
      • לחץ על הגדר מארחים נבחרים
      • המארח צריך להיות פעיל
    • הגדר את הרשת שלך כדי לאפשר גישה למכשיר שלך מהאינטרנט. תוכל להשתמש באשף Dyn שלך לקבלת כמה הוראות כלליות כיצד לעשות זאת, להשתמש במשאבים כגון PortForward.com או לפנות ליצרן ההתקן לקבלת סיוע.

      • AT-T פסוק U
      • העברת יציאות ל- 2-Wire 3801HGV-זהו נתב AT&T U-Verse שיש לי. עיין בעדכונים בנספח כיצד להעביר קדימה בנתב AT&T U-vers 5268ac.
      • פתח את הדפדפן ועבור אל ♣ raspberry-pi-ip ♣
      • סיסמא: ♣ סיסמא ♣
      • הגדרות
      • חומת אש

        • בחר 'שם פטל-פאי-מארח'
        • שרתים

          • יציאת שרת אינטרנט 80
          • שרת HTTPS - יציאה 443
        • לְהוֹסִיף
      • להציל

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

שלב 7: חברו את המעגל ל- Pi Raspberry

חבר את המעגל ל- Raspberry Pi
חבר את המעגל ל- Raspberry Pi

עבור הקוד שסופק (שלב 4 ו -6), השתמשתי בסיכת GPIO 7. זה צירוף מקרים ש- GPIO 7 זהה לסיכה wiringPi 7. בקוד PHP משתמשים בחיבורים של פיני פינים ולא ב- PINIO PIN. אתה יכול להשתמש בכל אחד שאתה רוצה, אבל הקפד לשנות את הקוד.

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

בניסיוני הראשון יצרתי שלושה כבלי חיבור (נקבה לזכר).

  • השתמש בשלושה כבלי מגשר נקבה לנקבה
  • חותכים שלוש חתיכות של חוט מוצק לכ -1 סנטימטר.

    רצועה 1/4 אינץ 'משני קצות החוט המוצק

  • הכנס חוט מוצק אחד לכבל מגשר נקבה אחד.

להלן דרך טובה יותר ליצור כבלי חיבור (נקבה לזכר):

  • השתמש רק בחוט מוצק
  • חותכים שלוש חתיכות 4 אינץ 'של חוט מוצק
  • רצועה 1/4 אינץ 'משני קצות החוט המוצק
  • השתמש בסיכות חיבור נקבות

    • החלק החלק סיכת חיבור נקבה אחת בקצה אחד של חוט מוצק וקמטים

      סיכת נקבה לא אמורה להשתחרר, להלחם במידת הצורך

    • החלק הקלה במתיחה מעל סיכת חיבור נקבה או סיכת כיסוי בעזרת סרט חשמלאי

חברו את הממסר ל- pi כפי שמוצג בתרשים:

  • חבר את קצה הנקבה של הכבל לסיכה של Raspberry Pi.
  • הכנס חוט מוצק לממסר.

שלב 8: צור שירות הפעלה

רוב הממסרים כולל זה שנרכש, פועלים כך:

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

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

בעיה עלולה להתרחש כאשר ה- Rapberry Pi והממסר יחזירו את החשמל, אך לפני ש- Raspberry Pi יסיים אתחול כדי להפעיל את האות הדרוש כדי למנוע את המעגל. אתה יכול להתעורר בבוקר עם המוסך הפתוח שלך ואולי כמה חברים חדשים!

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

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

$ ssh pi@♣ פטל-פי-ip ♣

$ sudo nano /etc/init.d/garagerelay

לאחר מכן הדבק את הסקריפט הזה:

#! /bin/bash

# /etc/init.d/garagerelay # בצע פונקציות ספציפיות כשתתבקש על ידי מערכת המערכת "$ 1" בהתחלה) הד "ממסר מתחיל" # הפעל 7 מה שמשאיר את ממסר/usr/local/bin/gpio לכתוב 7 1 #התחל מצב Gpio/usr/local/bin/gpio 7 out;; עצור) הד "עצירת gpio";; *) הד "יציאה: /etc/init.d/garagerelay {start | stop}" יציאה 1;; יציאת esac 0

לשמירה: CTRL-o, ENTER

כדי לצאת מננו, CTRL-x

הפוך את הקובץ להפעלה:

$ sudo chmod +x /etc/init.d/garagerelay

עכשיו אמור ל- pi שלך להריץ את הסקריפט הזה בעת האתחול:

$ sudo update -rc.d -f garagerelay start 4

(הערה: תוכל להתעלם בבטחה מהאזהרה "תגי LSB חסרים").

ודא שסקריפט ההפעלה פועל

$ sudo אתחול מחדש

פתח דפדפן ולחץ על הפותח. הממסר אמור ללחוץ.

שלב 9: חבר את Raspberry Pi למוסך

חבר את Raspberry Pi למוסך
חבר את Raspberry Pi למוסך

בעת הזזת ה- Raspberry Pi, הקפד להפעיל:

כיבוי $ -h 0

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

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

תנקב חור מהמוסך שמאחורי פותחן פעמון הדלת אל תוך הבית. בטקסס, ה- Raspberry Pi לא אמור להיות במוסך, וריאציה הטמפרטורה במוסך היא מחוץ למפרט ההפעלה של ה- Raspberry Pi.

העבירו את חוטי הממסר דרך החור (השתמשו במתלה).

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

רצו את שני קצות חוטי הממסר: 1) כ- 1/8 אינץ 'בצד הממסר וכ- ½ אינץ' בצד פעמון הדלת. כופפו את הצד של פעמון הדלת של החוט לתוך חצי לולאה גדולה מספיק כדי להתאים סביב הבורג האחורי.

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

שלב 10: חבר את Raspberry Pi ל- SECO-LARM

חבר את Raspberry Pi ל- SECO-LARM
חבר את Raspberry Pi ל- SECO-LARM
חבר את Raspberry Pi ל- SECO-LARM
חבר את Raspberry Pi ל- SECO-LARM

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

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

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


Fatal error: Uncaught Error: Call to undefined function exec() in W:\www\langs\.php-gen-lang\v3-core\macros.php(127) : eval()'d code:518 Stack trace: #0 W:\www\langs\.php-gen-lang\v3-core\macros.php(127): eval() #1 W:\www\langs\.php-gen-lang\v3-core\index-global.php(231): Macros->macros_parse('<!DOCTYPE html>...') #2 W:\www\langs\howwhatproduce.com\he.howwhatproduce.com\index.php(9): require_once('W:\\www\\langs\\.p...') #3 {main} thrown in W:\www\langs\.php-gen-lang\v3-core\macros.php(127) : eval()'d code on line 518