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

RuuviTag ו- PiZero W ו- Blinkt! מד חום מבוסס משואות Bluetooth: 3 שלבים (עם תמונות)
RuuviTag ו- PiZero W ו- Blinkt! מד חום מבוסס משואות Bluetooth: 3 שלבים (עם תמונות)

וִידֵאוֹ: RuuviTag ו- PiZero W ו- Blinkt! מד חום מבוסס משואות Bluetooth: 3 שלבים (עם תמונות)

וִידֵאוֹ: RuuviTag ו- PiZero W ו- Blinkt! מד חום מבוסס משואות Bluetooth: 3 שלבים (עם תמונות)
וִידֵאוֹ: РАЗРЯД 300 АМП!!! Генератор из синхронного двигателя СВЧ 220В своими руками 2024, נוֹבֶמבֶּר
Anonim
RuuviTag ו- PiZero W ו- Blinkt! מד חום מבוסס Bluetooth
RuuviTag ו- PiZero W ו- Blinkt! מד חום מבוסס Bluetooth
RuuviTag ו- PiZero W ו- Blinkt! מד חום מבוסס Bluetooth
RuuviTag ו- PiZero W ו- Blinkt! מד חום מבוסס Bluetooth
RuuviTag ו- PiZero W ו- Blinkt! מד חום מבוסס Bluetooth
RuuviTag ו- PiZero W ו- Blinkt! מד חום מבוסס Bluetooth

מדריך זה מתאר גישה לקריאת נתוני טמפרטורה ולחות מ- RuuviTag באמצעות Bluetooth עם Raspberry Pi Zero W ולהצגת הערכים במספרים בינאריים על בלינק של Pimoroni! או בקיצור: איך לבנות מצב חדיש ומד חום קצת חנון.

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

ה- Raspberry Pi Zero W הוא החבר האחרון במשפחת RPi, בעצם Pi Zero עם Bluetooth ו- WLAN נוסף.

החושך! pHAT מפימורוני הוא בעצם רצועה של שמונה נוריות RBG המוגדרות ככובע עבור ה- Raspberry Pi. הוא מאוד קל לשימוש ומגיע עם ספריית פייתון. הרעיון היה לקרוא את הנתונים מ- RuuviTag ולהציג אותם באמצעות בלינק! כּוֹבַע. הערכים מוצגים כמספרים בינאריים באמצעות 7 מנורות הלדים, ואילו השמונה משמשת לציון אם מוצגים ערכי לחות או טמפרטורה (+/-/0).

שלב 1: הגדרת המערכת

התקנת המערכת קלה:- הפעל את RuuviTag (גרסת חיישן הטמפרטורה RuuviTag).

- הגדר את ה- RPi Zero W, RPi3 או כל RPi אחר עם קיבולת בלוטות 'נוסף, בהתאם להנחיות באתר www.raspberrypi.org.

- הניחו את הבלינקט! כובע על ה- RPi (כשהוא כבוי).

- התקן את blinkt! ותוכנת RuuviTag, כפי שמצוין בדפי GitHub המתאימים.

- כעת עליך לזהות את כתובת ה- MAC של RuuviTag שלך

- העתק את תוכנית Python המצורפת, פתח אותה עם IDLE עבור Python 3

- שנה את כתובת ה- MAC של RuuviTag לשלך, ולאחר מכן שמור והפעל את התוכנית.

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

שלב 2: המכשיר והתוכנית

המכשיר והתוכנית
המכשיר והתוכנית
המכשיר והתוכנית
המכשיר והתוכנית
המכשיר והתוכנית
המכשיר והתוכנית
המכשיר והתוכנית
המכשיר והתוכנית

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

טווח הערכים של הטמפרטורה הנמדדת במערכת מבוססת RPi יהיה ברוב המקרים איפשהו בין - 50 ° C ל- +80 ° C, ללחות בין 0 ל -100%. אז תצוגה שיכולה לתת ערכים מ -100 עד +100 תספיק לרוב היישומים. ניתן להציג מספרים עשרוניים קטנים יותר מ -128 כמספרים בינאריים עם 7 סיביות (או נוריות). אז התוכנית לוקחת את ערכי הטמפרטורה והלחות מה- RuuviTag כמספרים "צפים" והופכת אותם למספרים בינאריים, שמוצגים לאחר מכן ב- blinkt !.

כצעד ראשון, המספר מעוגל, נותח אם הוא חיובי, שלילי או אפס, ולאחר מכן הופך למספר חיובי באמצעות "ABS". לאחר מכן המספר העשרוני הופך למספר בינארי בן 7 ספרות, בעצם מחרוזת של 0s ו- 1s, אשר מנותח ומוצג על 7 הפיקסלים האחרונים של בלינק!.

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

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

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

שלב 3: קוד התוכנית

הקוד היה קצת באגים ואופטימיזציה. כעת תוכל למצוא את גרסה 3 (20_03_2017).

'תוכנית זו מיועדת לקריאת ערכי הטמפרטורה, הלחות והלחץ מהווים RuuviTag' 'ולהציג את ערכי הטמפרטורה והלחות כמספרים בינאריים על בלינק של פימורני! כּוֹבַע. '' '' הוא מבוסס על הדוגמה print_to_screen.py מספריית ruuvitag ב- github. '' דורש Pi Zero W, Pi 3 או כל RPi אחר המצויד ב- bluetooth ובכל הספריות הנדרשות. '

זמן יבוא

ייבא מערכת מאת datetime יבוא datetime

מאת ruuvitag_sensor.ruuvi יבוא RuuviTagSensor

מאת blinkt יבוא set_clear_on_exit, set_pixel, נקה, הצג

def temp_blinkt (bt):

# שגרה זו לוקחת את ערך הטמפרטורה ומציגה אותו כמספר בינארי ב- blinkt!

ברור ()

# צבע ועוצמה של פיקסלים "1": לבן

r1 = 64 g1 = 64 b1 = 64

#צבע ועוצמה של פיקסלים "0": לבן

r0 = 5 g0 = 5 b0 = 5

# לעגל ולהמיר למספר שלם

r = עגול (bt)

# vz מייצג סימן אלגברי לפיקסל מחוון

אם (r> 0): vz = 1 # elif חיובי (r <0): vz = 2 # שלילי אחר: vz = 0 # אפס # הדפס (vz) i = abs (r) # הדפסה (i)

# להפוך למספר בינארי מוחלט בן 7 ספרות

i1 = i + 128 # עבור i מביא למספר בינארי בן 8 ספרות המתחיל בהדפסה אחת (i1)

b = "{0: b}". פורמט (i1) # המרה לבינארית

# הדפסה (ב)

b0 = str (b) # להמיר למחרוזת

b1 = b0 [1: 8] #קטע ביט ראשון

print ("מספר בינארי:", b1)

# הגדר פיקסלים ב- blinkt!

# הגדר מספר בינארי

עבור h בטווח (0, 7): f = (h+1) אם (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " הוא 1, פיקסל ", f) אחר: set_pixel (f, r0, g0, b0) # print (" nil ")

# הגדר את פיקסל המחוון

אם (vz == 1): set_pixel (0, 64, 0, 0) # אדום לערכים חיוביים elif (vz == 2): set_pixel (0, 0, 0, 64) # כחול לערכים שליליים else: set_pixel (0, 64, 0, 64) # מגנטה אם אפס

הופעה()

# סוף temp_blinkt ()

def hum_blinkt (בה):

# זה לוקח את ערך הלחות ומציג אותו כמספר בינארי ב- blinkt!

ברור()

# צבע ועוצמה של פיקסלים "1": צהוב

r1 = 64 g1 = 64 b1 = 0

#צבע ועוצמה של "0" פיקסלים:

r0 = 5 g0 = 5 b0 = 0

# עגול והפך למספר שלם

r = עגול (bh)

# להפוך למספר בינארי מוחלט בן 7 ספרות i = abs (r) #print (i)

i1 = i + 128 # עבור i נותן מספר בינארי בן 8 ספרות המתחיל ב -1

# הדפסה (i1)

b = "{0: b}". פורמט (i1)

# הדפסה (ב)

b0 = str (b)

b1 = b0 [1: 8] #קטע ביט ראשון

print ("מספר בינארי:", b1)

# הגדר פיקסלים ב- blinkt!

# הגדר את המספר הבינארי לפיקסלים

עבור h בטווח (0, 7): f = (h+1) אם (b1 [h] == "1"): set_pixel (f, r1, g1, b1) אחר: # השתקה לנוריות ריקות set_pixel (f, r0, g0, b0) # השתקה לנורות LED ריקות

# הגדר את פיקסל המחוון

set_pixel (0, 0, 64, 0) # ירוק ללחות

הופעה()

# סוף hum_blinkt ()

set_clear_on_exit ()

# קריאת נתונים מה- RuuviTag

mac = 'EC: 6D: 59: 6D: 01: 1C' # שנה לכתובת ה- mac של המכשיר שלך

הדפס ('מתחיל')

חיישן = RuuviTagSensor (mac)

בעוד שזה נכון:

data = sensor.update ()

line_sen = str.format ('חיישן - {0}', mac)

line_tem = str.format ('טמפרטורה: {0} C', נתונים ['טמפרטורה']) line_hum = str.format ('לחות: {0} %', נתונים ['לחות']) line_pre = str.format ('לחץ: {0}', נתונים ['לחץ'])

הדפס()

# טמפרטורת תצוגה ב- blinkt! ba = str.format ('{0}', נתונים ['טמפרטורה']) bt = float (ba) הדפסה (bt, "Â ° C") temp_blinkt (bt) הדפסה ()

time.sleep (10) # טמפרטורת תצוגה במשך 10 שניות

# לחות תצוגה ב- blinkt!

bg = str.format ('{0}', נתונים ['לחות']) bh = float (bg) הדפסה (bh, " %") hum_blinkt (bh) הדפסה ()

# נקה מסך והדפס נתוני חיישן למסך

מערכת ההפעלה os.system ('נקה') הדפסה ('הקש Ctrl+C כדי לסיים. / n / n') הדפסה (str (datetime.now ())) הדפסה (line_sen) הדפסה (line_tem) הדפסה (line_hum) הדפסה (line_pre)) הדפס ('\ n / n / r …….')

# המתן מספר שניות והתחל מחדש

נסה: time.sleep (8) למעט KeyboardInterrupt: # כאשר נלחצים על Ctrl+C ביצוע הלולאה while הופסק הדפסה ('יציאה') ברור () הצג () הפסקה

מוּמלָץ: