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

Tracker-to-Treat Tracker או פינוק של דלעת: 5 שלבים
Tracker-to-Treat Tracker או פינוק של דלעת: 5 שלבים

וִידֵאוֹ: Tracker-to-Treat Tracker או פינוק של דלעת: 5 שלבים

וִידֵאוֹ: Tracker-to-Treat Tracker או פינוק של דלעת: 5 שלבים
וִידֵאוֹ: Что взять с собой на O Circuit и W Trek в Патагонии + советы для вашей поездки 2024, נוֹבֶמבֶּר
Anonim
Tracker-or-Treat Tracker של דלעת פי
Tracker-or-Treat Tracker של דלעת פי

עקוב אחר מאת המחברת:

כיצד לבנות צג טמפרטורה של פטל פיי
כיצד לבנות צג טמפרטורה של פטל פיי
כיצד לבנות צג טמפרטורה של פטל פיי
כיצד לבנות צג טמפרטורה של פטל פיי
הזרמת נתונים מ- Google Sheets ללוח מחוונים
הזרמת נתונים מ- Google Sheets ללוח מחוונים
הזרמת נתונים מ- Google Sheets ללוח מחוונים
הזרמת נתונים מ- Google Sheets ללוח מחוונים
רשת חיישני טמפרטורה
רשת חיישני טמפרטורה
רשת חיישני טמפרטורה
רשת חיישני טמפרטורה

מחפש פרויקט מהיר של ליל כל הקדושים שימושי ביותר באופנים אחד? רוצה להשתמש ב- Pi Zero WH לשימוש טוב? בא לכם להשתמש בנתונים כדי לקבוע כמה ממתקים תזדקקו לשנה הבאה?

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

אספקה

  • Pi Zero WH עם כרטיס SD
  • חיישן תנועה PIR
  • LED RGB
  • נגדים של 220 אוהם
  • (3) קווי עניבה (F/F, M/F, M/M)
  • סוללה ניידת
  • דלעת מזויפת

שלב 1: הרכבת חומרה

הרכבת חומרה
הרכבת חומרה
הרכבת חומרה
הרכבת חומרה
הרכבת חומרה
הרכבת חומרה

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

חיישן התנועה שלנו דורש שנחבר אותו לחשמל 3.3V, לקרקע ולסיכת נתונים. חיברתי את סיכת החיישן 3.3V לסיכה 1 של ה- Pi, את סיכת החיישנים של הקרקע לסיכה 6 של ה- Pi ואת סיכת חיישן הנתונים לפין 16 של ה- Pi. התמונה הראשונה מציגה את החיבור המלא של ה- Pi וחיישן התנועה.

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

כדי לחבר הכל אתה יכול או:

  • הלחם את רגלי ה- LED לנגדים ולאחר מכן העבר את החוטים לפי
  • השתמש בלוח לחם וקשור קווים כדי לחבר הכל
  • השתמש בקווי קשירה ובדבק חשמלי כדי לחבר הכל (כמו שעשיתי).

אנו נחבר את ה- LED שלנו לפינים 11, 13 ו- 15. זה קצת יותר מסובך מחיישן התנועה, כי הרגליים על ה- LED מתאימות לצבע ספציפי! הרגל הארוכה היא GND; ועל המנורה שלי לפחות, הרגליים היו אדומות, GND, כחולות, ירוקות. חיברתי את כחול לפין פי 11, ירוק לפין 13 ואדום לפין פי 15. התמונה השנייה מציגה את חיבורי המעגל הסופי.

שלב 2: מצב ראשוני

מצב התחלתי
מצב התחלתי
מצב התחלתי
מצב התחלתי

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

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

שלב 1: הירשם לחשבון המדינה הראשוני עבור אל https://iot.app.initialstate.com וצור חשבון חדש.

שלב 2: התקן את ISStreamer

התקן את מודול ה- Python Initial State על ה- Raspberry Pi שלך. בשורת פקודה (אל תשכח קודם כל SSH ל- Pi שלך), הפעל את הפקודה הבאה:

$ cd/home/pi/

$ / curl -sSL https://get.initialstate.com/python -o -| sudo bash

שלב 3: עשה קצת Automagic

לאחר שלב 2 תראה משהו הדומה לפלט הבא למסך:

pi@raspberrypi ~ $ / curl -sSL https://get.initialstate.com/python -o -| sudo bash

סיסמא: החל מ- ISStreamer Python התקנה קלה! ההתקנה עשויה להימשך מספר דקות, לקחת קפה:) אבל אל תשכח לחזור, יהיו לי שאלות בהמשך! נמצא easy_install: setuptools 1.1.6 נמצא pip: pip 1.5.6 מתוך /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) pip major version: 1 pip minor version: 5 ISStreamer נמצא, מתעדכן … הדרישה כבר מעודכנת: ISStreamer ב- /Library/Python/2.7/site-packages ניקוי … האם אתה רוצה לקבל אוטומטית סקריפט לדוגמה? [y/N] היכן ברצונך לשמור את הדוגמה? [ברירת מחדל:./is_example.py] אנא בחר באיזו אפליקציית מצב ראשוני אתה משתמש: 1. app.initialstate.com 2. [NEW!] iot.app.initialstate.com הזן אפשרות 1 או 2: הזן iot.app שם משתמש.initialstate.com: הזן את הסיסמה של iot.app.initialstate.com:

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

שלב 4: מפתחות גישה

בואו נסתכל על התסריט לדוגמה שנוצר. $ nano is_example.py בשורה 15, תראה שורה שמתחילה ב- streamer = Streamer (bucket_…. שורות אלה יוצרות דלי נתונים חדש בשם "דוגמת זרם פייתון" ומשויך לחשבונך. קשר זה קורה בגלל access_key = "…" פרמטר באותה שורה. אותה סדרה ארוכה של אותיות ומספרים היא מפתח הגישה לחשבון המדינה הראשונית שלך. אם אתה נכנס לחשבון המדינה הראשונית שלך בדפדפן האינטרנט שלך, לחץ על שם המשתמש שלך בפינה השמאלית העליונה ולאחר מכן עבור אל ל"הגדרות שלי ", תמצא אותו מפתח גישה בתחתית הדף תחת" מפתחות גישה להזרים ".

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

שלב 5: הפעל את הדוגמה

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

$ python is_example.py

שלב 6: רווח

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

שלב 3: סקריפט פייתון

צור סקריפט ופתח את עורך הטקסט באמצעות הפקודה הבאה:

ננו vistors.py

העתק והעבר את הקוד מכאן לעורך הטקסט שלך.

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

ייבא RPi. GPIO כ- GPIO

מפעם לפעם ייבוא שינה מ- ISStreamer. Streamer יבוא סטרימר # תגיד ל- Pi שאנחנו הולכים להשתמש במערכת המספור שלה GPIO.setmode (GPIO. BCM) # סיכות ש- D1 ו- LED מחוברות ל- PIN = 23 כחול = 17 ירוק = 27 אדום = 22 # ציין את סיכת חיישן התנועה שלנו כקלט GPIO.setup (PIN, GPIO. IN) # ציין את סיכות הלד שלנו כפלט GPIO.setup (אדום, GPIO. OUT) GPIO.output (אדום, 0) GPIO.setup (ירוק, GPIO. OUT) פלט GPIO.output (ירוק, 0) GPIO.setup (כחול, GPIO. OUT) GPIO.output (כחול, 0)

שורות 1-21 מיועדות לאתחול. ראשית אנו מייבאים את ממשק ה- GPIO של ה- Pi ודרך לישון את התסריט שלנו. לאחר מכן אנו מייבאים את הסטרימר של מצב ראשוני שהתקנו בעמוד הקודם.

GPIO.setmode מציין באיזו מערכת מספור אנו משתמשים עבור הסיכות. במקום מיקום פיזי, אנו משתמשים במערכת המספור של הפי. כמו בתרשים שלנו קודם לכן, הסיכות שבחרנו היו 23, 17, 27 ו- 22. לאחר מכן הגדרנו את סיכת התנועה כקלט ואת סיכות ה- LED כפלט.

# שם הדלי הראשוני של המדינה (מוצג)

BUCKET_NAME = ": jack_o_lantern: Trick or Treat Tracker" # מפתח דלי מצב ראשוני (מוסתר) BUCKET_KEY = "trickortreat" # מפתח גישה ראשוני למדינה ACCESS_KEY = "Your_Access_Key" # משתנים שמבטיחים שלא נזרם שהיה או לא היה תנועה פעמיים ברציפות # זה חוסך אירועים שנשלחו וכוח עיבוד כברRecordedMotion = False alreadyRecordedNoMotion = מונה כוזב = 0 # אתחל את סטרימר המדינה ההתחלתי סטרימר = סטרימר (bucket_name = BUCKET_NAME, bucket_key = BUCKET_KEY, access_key = ACCESS_KEY) # הפעל הנורית לצהוב GPIO.output (אדום, 1) GPIO.output (ירוק, 1)

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

# לולאה ללא הגבלת זמן

בעוד נכון: # אם חיישן התנועה מושך גבוה (מזהה תנועה): אם GPIO.input (PIN) == 1: הדפס "תנועה זוהה" # אם עדיין לא הזרמנו: אם לא כבר RecordedMotion: counter = counter + 1 # הגדר נורית לאדום GPIO.output (RED, 1) GPIO.output (GREEN, 0) # Stream ל- Initial State streamer.log (": ghost: or: chocolate_bar:?", ": chocolate_bar: Time For Treats!") streamer.log (": ממתק: בני אדם רעבים?: ממתק:", מונה) streamer.flush () alreadyRecordedMotion = True alreadyRecordedNoMotion = שגוי אחר: # השהה את התסריט לשנת שינה אחת (1) אחר: הדפס "לא זוהה תנועה" # אם עדיין לא הזרמנו: אם לא כברRecordedNoMotion: # הגדר נורית ל GPIO.output צהוב (אדום, 1) GPIO.output (ירוק, 1) # הזרמה ל- State initial streamer.log (": ghost: או: chocolate_bar:? ",": no_pedestrians: No One Around ") streamer.flush () alreadyRecordedNoMotion = True alreadyRecordedMotion = False else: # השהה את התסריט לשנת שינה אחת (1)

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

הגיע הזמן לבדוק את הקוד! ודא ששמרת את הקובץ העריך שלך עם מפתח הגישה שלך נוסף בשורה 28 ולאחר מכן היכנס למסוף:

python visitors.py

אתה אמור לראות את הנורית נדלקת ו"לא זוהה תנועה "להתחיל להדפיס לשורת הפקודה. נסה להניף את היד על חיישן התנועה - כעת אתה אמור לראות נורה אדומה ו"תזוזה תנועה "להתחיל להדפיס!

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

שלב 4: לוח מחוונים לטריק או לטפל

לוח מחוונים לטריק או לטפל
לוח מחוונים לטריק או לטפל

צא למצב ההתחלתי ובדוק את לוח המחוונים שלך! אתה אמור לראות דלי בשם "? Trick or Treat Tracker". הניף את היד ליד חיישן התנועה וצפה בו מתעדכן!

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

להלן מספר דברים שכדאי לקחת בחשבון:

  • סביר להניח שאתה רוצה לחלק את מספר "בני האדם הרעבים" ב -2 כדי להסביר את העובדה שאותו אדם יעבור מול חיישן התנועה פעמיים - בדרך לדלתך ובחזרה. אתה יכול לעשות זאת באמצעות ביטויים בזמן אמת באמצעות המשוואה "= math.round (([רעבים?]/2), 0)".
  • אתה יכול לבדוק עד כמה נראה שחיישן התנועה שלך רגיש ולהניח אותו על המדרכה שלך בהתאם. אני מציע להרחיק אותו מספיק מהדלת כדי שלא יופעל כאשר מישהו עומד ליד הדלת.
  • תוכל גם להגדיר התראות טקסט כדי להגיד לך שמישהו מתקרב.
  • בחר תמונת רקע כדי לתת ללוח המחוונים שלך אישיות קצת מפחידה!

מוּמלָץ: