פרסומת

האם רצית פעם להגיע הביתה לקבלת פנים אישית? עם פטל Pi וכמה רכיבים פשוטים אתה יכול! בפרויקט פשוט זה אנו נשתמש במתג ריד כדי להפעיל מנגינת נושא עם פתיחת דלת. אנו נשתמש ב- Raspberry Pi כבקר כאן, אם כי תוכל להשתמש כמעט בכל בקר מיקרו אחר בקרי מיקרו 5 דולר: ארדואינו, פטל פי אפס, או NodeMCU?פעם זה היה המקרה שאם אתה רוצה להשיג מחשב, היית צריך להחזיר את הבית שלך כדי לשלם עבורו. עכשיו אתה יכול להשיג אחד לאברהם לינקולן. קרא עוד עבור פרויקט זה באמצעות אותו מעגל. הנה הדגמה.

אתה תצטרך

סביר להניח שכבר בבעלותך את כל החלקים הדרושים לך בכדי לבצע את זה מלבד מתג ריד, שנמצא סביב 2-3 דולר, או שתוכל להשיג חבילה של 5 תמורת קצת יותר מ- $ 8 כאן.

  • Pi פטל (כל דגם שיעבוד בשביל זה).
  • נגן 1 x 220 אוהם.
  • נגן 1 x 1K אוהם.
  • נגן 3 x 10K אוהם.
  • 1 x מתג ריד מגנטי.
  • 1 x LED.
  • 2 x מתג לחצן.
  • טיפוס לחם.
  • כבלים לחיבור.
  • רמקול מחשב או דומה.

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

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

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

מתחילים

בואו נתחיל במעגל המעגל שלנו. ודא שה- Pi שלך אינו פועל והגדר את המעגל שלך כך:

HQ עם פריצינג מבואר

הנורית מחוברת לפין 7 בפי שלנו. שני מתגי הכפתור דוחפים מחוברים לפינים 11 ו -13, ומתג הקישור מתחבר לפין 15. הכוח שלנו עובר לפין 1 (3v3) ולפין 6 (Gnd).

תרשים סיכה

הקפד לבדוק שהכל נמצא בדיוק במקום הנכון.

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

מתג ריד מותקן

חבר את פלט השקע 3.5 מ"מ של Pi שלך למערכת הרמקולים שלך. ברגע שהכל מורכב זה צריך להיראות כך:

ההתקנה כולה נכונה

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

עכשיו הפעל את ה- Pi שלך, וגש אליו באמצעות SSH כדי שנוכל לגשת למסוף. אם אינך בטוח כיצד לעשות זאת, המדריך הזה הגדרת Pi פטל שלך לשימוש ללא ראש עם SSHה- Raspberry Pi יכול לקבל פקודות SSH כאשר הוא מחובר לרשת מקומית (באמצעות Ethernet או Wi-Fi), מה שמאפשר לך להגדיר אותה בקלות. היתרונות של SSH חורגים מהפרת המסך היומי ... קרא עוד יכול לעזור לך. אם אתה משתמש ב- Raspberry Pi שלך עם צג, עכבר ומקלדת, דלג על שלב זה ופתח את המסוף.

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

כעת נוכל להמשיך ולהביא את ה- Pi שלנו לדבר עם המעגל שלנו.

בדיקת ההתקנה שלנו

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

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

בטרמינל, צור סקריפט חדש:

מבחן ננו

לאחר פתיחה, הוסף קוד זה לקובץ ולחץ על Ctrl-C כדי לצאת, בעקבות דיאלוג השמירה:

# הקוד הזה נכתב למאמר באתר www. MakeUseOf.com מאת איאן באקלי. יבוא RPi. GPIO בתור GPIO. זמן יבוא. GPIO.setwarnings (False) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN) בעוד נכון: GPIO.output (7, GPIO.HIGH) אם (GPIO.input (11) == 1): הדפס ("כפתור ב- GPIO 11") זמן. שינה (1 ) אם (GPIO.input (13) == 1): הדפס ("כפתור ב- GPIO 13") זמן. שינה (1) אם (GPIO.input (15) == 1): הדפס ("כפתור ב- GPIO 15") זמן ישן (1) GPIO.cleanup ()

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

מתגים

הפעל את התוכנית:

מבחן פיתון

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

מבחן

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

עלינו להתחיל בייבוא ​​כמה מודולים:

יבוא Rpi. GPIO בתור GPIO. יבוא pygame.mixer. זמן יבוא. 

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

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

def activeSetup (): global active active = 0 print ("כרגע לא פעיל") def activeState (): global active if active == 1: active = 0 הדפסת GPIO.output (7, GPIO.LOW) ("כרגע לא פעיל") elif active == 0: הדפסה ("הפעלה תוך 10 שניות") עבור x בטווח (0,10): GPIO.output (7, GPIO.HIGH) time.sleep (0.5) GPIO.output (7, GPIO.LOW) time.sleep (0.5) פעיל = 1 GPIO.output (7, GPIO.HIGH) הדפס ("כרגע פעיל ") אחר: חזור. 

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

הפונקציה השנייה כאשר היא מתקשרת בודקת אם המערכת פעילה (או פעיל == 1). אם זה כן, היא מגדירה את המערכת לא פעילה (פעיל == 0), מכבה את ה- LED ומדפיס למסוף. אם זה לא, זה נותן לך ספירה לאחור של 10 שניות לעזוב את החדר בו הנורית מהבהבת, לפני שתישאר דלוקה כדי להראות שהמערכת פעילה.

כעת אנו יכולים להגדיר פונקציה שתצפה במתג המגנט שלנו:

def watchDoor (): משחק גלובלי משחק = שווא בזמן אמת: אם פעיל == 1 ו- GPIO.input (15) == 1 ומשחק == שווא: משחק = נכון pygame.mixer.music.play () אם GPIO.input (13) == 1: הדפסה ("לחץ על לחצן עצירה: יוצא") pygame.mixer.music.stop () הפסקה אם GPIO.input (11) == 1: activeState () זמן. שינה (0.5)

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

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

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

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

עכשיו הגיע הזמן להגדיר את סיכותיו של Pi.

GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, התחלתי = GPIO.LOW) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN)

אם עשית ניסויים עם ה- Pi לפני שזה אמור להיות מוכר לך. ה ראשוני = GPIO.LOW הארגומנט בהתקנה של פין 7 מגדיר אותו לנמוך ברגע שהוא מאתחל.

כעת נוכל לקרוא לפונקציה שלנו שתגדיר את המערכת כמי שלא תהיה פעילה עם הפעלת התוכנית.

ActiveSetup ()

מוזיקה מאסטרו!

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

ווגט

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

pygame.mixer.init (44100, -16,2,1024) pygame.mixer.music.set_volume (1.0) name = "מאסטרו עם עין אחת.mp3" pygame.mixer.music.load (שם) הדפס ("מסלול טעון -" + str (שם))

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

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

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

בעוד נכון: אם (GPIO.input (13) == 1): הדפס ("לחצן עצירה לחץ: יוצא") pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): breakDoor () break GPIO.cleanup ()

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

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

יבוא RPi. GPIO בתור GPIO. יבוא pygame.mixer. זמן יבוא def active Setup (): global active active = 0 print ("כרגע לא פעיל") def activeState (): global active if active == 1: active = 0 GPIO.output (7, GPIO.LOW) הדפס ("כרגע לא פעיל ") elif active == 0: הדפסה (" הפעלה תוך 10 שניות ") עבור x בטווח (0,10): GPIO.output (7, GPIO.HIGH) זמן. שינה (0.5) GPIO.output (7, GPIO.LOW) time.sleep (0.5) פעיל = 1 GPIO.output (7, GPIO.HIGH) הדפס ("פעיל כרגע") אחר: להחזיר def watchDoor (): משחק גלובלי משחק = לא נכון בעוד נכון: אם פעיל == 1 ו- GPIO.input (15) == 1 ומשחק == שקר: משחק = נכון pygame.mixer.music.play () אם GPIO.input (13) == 1: הדפסה ("לחץ על לחצן עצירה: יוצא") pygame.mixer.music.stop () הפסקה אם GPIO.input (11) == 1: activeState () time.sleep (0.5) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, התחלתי = GPIO.LOW) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN) active Setup () pygame.mixer.init (44100, -16,2,1024) pygame.mixer.music.set_volume (1.0) name = "מאסטרו עם עין אחת.mp3" pygame.mixer.music.load (שם) הדפס ("מסלול טעון -" + str (שם)) בזמן אמת: אם (GPIO.input (13) == 1): הדפסה ("לחצן עצירה לחוץ: יוצא") pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () break GPIO.cleanup ()

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

עכשיו אתה צריך לקבל מנגינה ביתית מבורכת מתפקדת! חבר את מתג המקל לדלת שלך ונסה אותה. ריקוד מביך הוא אופציונלי אך מומלץ.

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

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

אורות ממסר

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

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