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

Raspberry Pi Smart Scale: 10 שלבים (עם תמונות)
Raspberry Pi Smart Scale: 10 שלבים (עם תמונות)

וִידֵאוֹ: Raspberry Pi Smart Scale: 10 שלבים (עם תמונות)

וִידֵאוֹ: Raspberry Pi Smart Scale: 10 שלבים (עם תמונות)
וִידֵאוֹ: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, נוֹבֶמבֶּר
Anonim
Image
Image

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

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

רמת הפרויקט: מתחיל זמן משוער להשלמה: 20 דקות גורם כיף: לא ניתן למדידה

במדריך שלב אחר שלב, תוכלו:

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

שלב 1: ציוד

סולם הלוח של Wii Balance
סולם הלוח של Wii Balance

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

  • Raspberry Pi 3 עם כרטיס SD ואספקת חשמל (https://init.st/psuufmj)
  • לוח איזון Wii (https://init.st/qg4ynjl)
  • חבילת סוללה נטענת Wii Fit (https://init.st/iyypz2i)
  • רפידות חוטי 3/8 אינץ '(https://init.st/8gywmjj)
  • עיפרון (אני לא נותן לך קישור לאן לקנות עפרון … אתה צריך להחזיק אחד כזה)

הערה: אם יש לך Raspberry Pi 1 או 2, תזדקק למתאם Bluetooth (https://init.st/7y3bcoe)

שלב 2: סולם הלוח של Wii Balance

למה לוח איזון Wii? מסתבר שמדובר בקנה מידה ממש נחמד ועמיד שיש לו קישוריות בלוטות '. זה יאפשר לנו לחבר אותו למחשב בעל לוח אחד (Raspberry Pi) כדי לקרוא את המשקל שלך בתסריט של פייתון ולשלוח את המדידות האלה לשירות נתונים מקוון כדי לעשות דברים מגניבים. בנוסף, יש סיכוי טוב שיש לך או למישהו שאתה מכיר כבר אחד שפשוט אוסף אבק.

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

שלב 3: הגדרת Bluetooth

ה- Raspberry Pi 3 מגיע עם Bluetooth מובנה, כל מה שאנחנו צריכים כדי לתקשר עם לוח ה- Wii Balance. אם יש לך Raspberry Pi 1 או 2, נצטרך להשתמש באחת מיציאות ה- USB שלנו כדי לחבר מתאם.

הפעל את ה- Pi שלך (אני מניח שכבר התקנת את Raspbian והוא מופעל) ועבור לחלון מסוף ה- Raspberry Pi שלך. אתה יכול לראות את הכתובת של הדונגל Bluetooth שלך באמצעות הפקודה "hcitool dev":

$ hcitool dev Devices: hci0 00: 1A: 7D: DA: 71: 13

התקן את מודולי ה- Bluetooth בהם נשתמש בתסריטים של פייתון:

$ sudo apt-get להתקין python-bluetooth

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

שלב 4: קריאת הסולם

הגיע הזמן לחבר את לוח ה- Wii Balance שלנו ל- Raspberry Pi. אנו נעשה זאת על ידי שינוי גרסה של סקריפט Gr8W8Upd8M8.py של Stavros Korokithakis (https://github.com/skorokithakis/gr8w8upd8m8). סקריפט הפיתון בו נשתמש עבור שלב זה נמצא כאן. אתה יכול להעתיק את התוכן של קובץ זה לקובץ שאתה יוצר ב- Raspberry Pi שלך או שתוכל לשכפל את כל קבצי הפייתון בהם נשתמש עבור כל הפרויקט הזה. בואו נעשה את האחרון. הקלד את הפקודות הבאות במסוף ב- Raspberry Pi שלך:

$ cd ~ $ git שיבוט $ git שיבוט https: github.com/initialstate/smart-scale.git שיבוט ל'קנה מידה חכם '… מרחוק: ספירת אובייקטים: 14, נעשה. מרחוק: דחיסת אובייקטים: 100% (12/12), נעשה. מרחוק: סה כ 14 (דלתא 1), שימוש חוזר 8 (דלתא 0), שימוש חוזר באריזה 0 פריקת חפצים: 100% (14/14), נעשה. בודק קישוריות … הסתיים.

שיבוט ל'קנה מידה חכם '… מרחוק: ספירת אובייקטים: 14, נעשה. מרחוק: דחיסת אובייקטים: 100% (12/12), נעשה. מרחוק: סה כ 14 (דלתא 1), שימוש חוזר 8 (דלתא 0), שימוש חוזר באריזה 0 פריקת חפצים: 100% (14/14), נעשה. בודק קישוריות … הסתיים.

אתה אמור לראות שני קבצי פייתון בספרייה החדשה בקנה מידה חכם - smartscale.py ו- wiiboard_test.py.

$ cd חכם בקנה מידה $ lsREADME.md smartscale.py wiiboard_test.py

הפעל את הסקריפט wiiboard_test.py כדי לבדוק תקשורת ולקחת קריאות משקל מלוח ה- Wii Balance:

$ sudo python wiiboard_test.py

תראה את התגובה הבאה:

לגלות לוח … לחץ על כפתור הסנכרון האדום בלוח כעת

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

נמצא Wiiboard בכתובת 00: 23: CC: 2E: E1: 44 מנסה להתחבר … מחובר ל- Wiiboard בכתובת 00: 23: CC: 2E: E1: 44 Wiiboard מחוברACK לנתוני כתיבה התקבל 84.9185297 lbs84.8826412 lbs84.9275927 lbs

התסריט wiiboard_test.py לוקח את מספר מדידות המשקל שצוין בשורה 10 ומוציא את הממוצע:

# --------- הגדרות משתמש --------- WEIGHT_SAMPLES = 500# ------------------------- --------

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

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

שלב 5: שינויי חומרה

שינויי חומרה
שינויי חומרה

נינטנדו הניחה שתמיד תפעיל את לוח ה- Wii Balance שלך עם ארבע סוללות AA וכלל ללא מתאם מתח AC. רק צריכת חשמל לא תהיה נוחה מכיוון שאיננו יכולים לשייך לצמיתות את לוח ה- Wii שלנו ל- Pi דרך ה- Bluetooth. עלינו לסנכרן אותו ולאחר מכן לאפשר לו להישאר מסונכרן מבלי לרוקן את הסוללות כך שנוכל פשוט לדרוך על המשקל ולשקול. למרבה המזל, ישנם מספר מתאמי צד שלישי שמיועדים ללוח ה- Wii Balance, בהם אנו יכולים להשתמש בכדי לספק כוח קבוע משקע בקיר. החלף את הסוללות בחבילת סוללות וחבר את מתאם ה- AC לשקע בקיר.

הצורך להתאים את לוח ה- Wii Balance ו- Raspberry Pi בכל פעם שאנחנו מריצים את סקריפט ה- Python שלנו מציג אי נוחות נוספת עקב המיקום של כפתור הסנכרון. כפתור הסנכרון נמצא בתחתית לוח ה- Wii, מה שאומר שנצטרך להפוך אותו בכל פעם שנצטרך לסנכרן. נוכל לתקן זאת על ידי יצירת מנוף קטן בעזרת עיפרון ושלוש כריות לבד בגודל 3/8 אינץ 'כפי שמוצג למעלה. מארז הסוללות הנטען חושף את כפתור הסנכרון למשטח התחתון של הלוח. הדבק עיפרון (או משהו דומה) המתפרש מכפתור הסנכרון לחזית החיצונית של הלוח. ערמו שלוש כריות לבד 3/8 אינץ '(או משהו דומה) במרכז העפרון ליצירת ציר נייח. היזהר שלא לחשוף יותר מדי מהעיפרון מהלוח מכיוון שאתה לא רוצה שמישהו יעיף אותו בטעות. הפוך את הלוח ותוכל ללחוץ על כפתור הסנכרון על ידי לחיצה פשוטה על הידית. קצת פריצה אבל יעילה.

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

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

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

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

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

שלב 2: התקן את ISStreamer התקן את מודול ה- Python Initial State על ה- 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 bashPassword: החל מ- ISStreamer פייתון התקנה קלה! ההתקנה עשויה להימשך מספר דקות, לקחת קפה:) אבל אל תשכח לחזור, יהיו לי שאלות בהמשך!

נמצא easy_install: setuptools 1.1.6

נמצאה פיפ: פיפ 1.5.6 מ /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) גירסת pip major: 1 גירסת מינור אחת: 5 ISStreamer נמצא, מתעדכן … דרישה כבר מעודכן: ISStreamer ב- /Library/Python/2.7/site-packages מנקה … האם אתה רוצה לקבל באופן אוטומטי סקריפט לדוגמה? [y/N]

(הפלט עשוי להיות שונה ולוקח יותר זמן אם מעולם לא התקנת את מודול הזרמת Python Initial State קודם לכן)

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

היכן ברצונך לשמור את הדוגמה? [ברירת מחדל:./is_example.py]:

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

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

בואו נסתכל על התסריט לדוגמה שנוצר.

$ nano is_example.py

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

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

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

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

$ python is_example.py

שלב 6: רווח

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

שלב 7: סקריפט סופי

בהנחה שהפעלת את הפקודה "git clone https://github.com/InitialState/smart-scale.git" בחלק 2, התסריט הסופי שמרכיב הכל נקרא smartscale.py בספריית ~/smart-scale שלך. (https://github.com/InitialState/smart-scale/blob/master/smartscale.py)

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

$ cd ~ $ cd חכם בקנה מידה $ nano smartscale.py

קרוב לראש הקובץ הזה, ישנו קטע הגדרות משתמש.

# --------- הגדרות משתמש --------- BUCKET_NAME = ": תפוח: היסטוריית המשקל שלי" BUCKET_KEY = "weight11" ACCESS_KEY = "מקם את מפתח הכניסה שלך למקרא המדינה" METRIC_UNITS = FalseWEIGHT_SAMPLES = 500THROWAWAY_SAMPLES = 100WEIGHT_HISTORY = 7# ---------------------------------

  • BUCKET_NAME קובע את שם דלי הנתונים של מצב ראשוני שאליו יוזרמו המשקל/הנתונים שלך. ניתן להגדיר זאת כאן ולשנות מאוחר יותר בממשק המשתמש.
  • BUCKET_KEY הוא מזהה הדלי הייחודי המציין לאן הנתונים שלך יזרמו. אם ברצונך ליצור דלי/לוח מחוונים אחר, השתמש כאן במזהה אחר (*שימו לב, אם אתם שולחים דלי לארכיון, לא תוכלו לעשות שימוש חוזר במפתח שלו בדלי חדש).
  • ACCESS_KEY הוא מפתח חשבון המדינה הראשוני שלך. אם לא תשים את ACCESS_KEY בשדה זה, הנתונים שלך לא יופיעו בחשבונך.
  • METRIC_UNITS מאפשר לך לציין את המשקל שלך בק"ג אם הוא מוגדר ל- True או lb אם הוא מוגדר כ- False.
  • WEIGHT_SAMPLES מציין כמה מדידות נלקחות וממוצעים יחד כדי להשיג את המשקל האמיתי שלך. 500 מדידות אורכות כ- 4-5 שניות ומספקות תוצאות מדויקות למדי.
  • THROWAWAY_SAMPLES מציין את מספר הדגימות שנזרקות כשאתה נכנס לראשונה על הלוח. זה מונע את הצעדים הראשונים ואת הזזה מלזרוק את המדידה הסופית. זה תמיד צריך להיות הרבה פחות מ- WEIGHT_SAMPLES.
  • WEIGHT_HISTORY קובע את מספר המדידות שנערכו לפני שליחת עדכון נוסף. רק מדידות בהפרש של שעתיים או יותר נמנות עם ההיסטוריה.

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

  • בתחילת התסריט תתבקש לשייך את לוח ה- Wii Balance שלך ל- Raspberry Pi. השתמש בידית שפרצת יחד בסעיף חלק 2: שינויי חומרה כדי ללחוץ על כפתור הסנכרון כאשר תתבקש.
  • ברגע שהתסריט פועל, צעד על לוח ה- Wii כדי להתחיל למדוד את המשקל שלך. לאחר 4-5 שניות, המשקל שלך יישלח אוטומטית לחשבון המדינה הראשונית שלך.
  • לאחר הגדרת התראות SMS (בכמה שלבים), תקבל הודעת טקסט מיד לאחר המדידה.

הפעל את התסריט כדי להתחיל את הקסם.

$ sudo python smartscale.py

שלב 8: לוח מחוונים

לוּחַ מַחווָנִים
לוּחַ מַחווָנִים

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

אתה יכול להוסיף תמונת רקע ללוח המחוונים שלך כדי לתת לנתונים שלך יותר אישיות והקשר.

שלב 9: SMS

סמס
סמס

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

  1. לחץ על הגדרות הדלי (תחת שמו) בחלון דלי הנתונים.
  2. לחץ על הכרטיסייה מפעילים.
  3. בחר את זרם הנתונים להפעלה. תוכל להשתמש ברשימה הנפתחת כדי לבחור מתוך זרמים קיימים לאחר טעינת דלי נתונים או להקליד את שם הזרם/מפתח הזרם באופן ידני. בצילום המסך לדוגמה שלמעלה, נבחר "עדכון".
  4. בחר את האופרטור המותנה, במקרה זה 'התאמה'.
  5. בחר את ערך ההפעלה שיפעיל פעולה (הקלד ידנית את הערך הרצוי). הקלד lb אם אינך משתמש ביחידות מטריות או הקלד kg אם אתה משתמש ביחידות מטריות. בכל פעם שהזרם "עדכון" מכיל "lb" (או "kg"), תקבל הודעת הודעת טקסט.
  6. לחץ על כפתור '+' כדי להוסיף את מצב ההדק.
  7. הזן את כתובת הדוא"ל או מספר הטלפון שלך בשדה "אנשי קשר להודעה".
  8. לחץ על כפתור '+' כדי להוסיף את פרטי יצירת הקשר.
  9. הזן קוד אימות כלשהו אם הוספת מספר טלפון חדש להשלמת ההגדרה.
  10. לחץ על הלחצן בוצע בתחתית כדי לחזור למסך הראשי. ההדק שלך זמין כעת ויופעל כאשר התנאי מתקיים.

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

שלב 10: סיכום

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

  • אתה יכול להזרים נתונים ממקורות אחרים לאותו לוח מחוונים של היסטוריית משקל (מידע) כדי ליצור לוח מחוונים אישי משלך.
  • אתה יכול לשנות את הבדיחות בפונקציות messageWeighFirst, messageWeighLess, messageWeighMore ו- messageWeighSame לחוש ההומור שלך.
  • אתה יכול לשנות את הבדיחות למסרים מעשיים או להסיר אותן ולהשתמש בקוד הסולם כדי לעקוב אחר המשקל של משהו חשוב יותר מלבד משקל הגוף שלך.
  • אתה יכול ליצור מקרר בירה/יין חכם משלך באותה גישה. יש כאן כבר הדרכה מדהימה שנועדה לעשות זאת.

פרץ והודע לי אם הדרכה זו נותנת לך השראה ליצור משהו מדהים.

מוּמלָץ: