جدول المحتويات:

RuuviTag و PiZero W و Blinkt! ميزان حرارة قائم على منارة بلوتوث: 3 خطوات (بالصور)
RuuviTag و PiZero W و Blinkt! ميزان حرارة قائم على منارة بلوتوث: 3 خطوات (بالصور)

فيديو: RuuviTag و PiZero W و Blinkt! ميزان حرارة قائم على منارة بلوتوث: 3 خطوات (بالصور)

فيديو: RuuviTag و PiZero W و Blinkt! ميزان حرارة قائم على منارة بلوتوث: 3 خطوات (بالصور)
فيديو: QuickBooks Online For Construction Contractors Renovation Demolition 2024, شهر نوفمبر
Anonim
RuuviTag و PiZero W و Blinkt! ميزان حرارة قائم على منارة بلوتوث
RuuviTag و PiZero W و Blinkt! ميزان حرارة قائم على منارة بلوتوث
RuuviTag و PiZero W و Blinkt! ميزان حرارة قائم على منارة بلوتوث
RuuviTag و PiZero W و Blinkt! ميزان حرارة قائم على منارة بلوتوث
RuuviTag و PiZero W و Blinkt! ميزان حرارة قائم على منارة بلوتوث
RuuviTag و PiZero W و Blinkt! ميزان حرارة قائم على منارة بلوتوث

يصف هذا التوجيه طريقة لقراءة بيانات درجة الحرارة والرطوبة من RuuviTag باستخدام Bluetooth مع Raspberry Pi Zero W ولعرض القيم بالأرقام الثنائية على وميض Pimoroni! pHAT أو باختصار: كيفية بناء حالة من الفن وميزان حرارة نردي قليلاً.

RuuviTag عبارة عن منارة بلوتوث مفتوحة المصدر مزودة بمستشعرات درجة الحرارة / الرطوبة / الضغط والتسارع ، ولكنها قد تعمل أيضًا كمنارة تقارب قياسية Eddystone ™ / iBeacon. لقد كان مشروع Kickstarter ناجحًا للغاية وقد حصلت عليه منذ بضعة أسابيع. يوجد Github مع برنامج python لقراءة RuuviTag باستخدام التوت ، وقد استخدمت أحد أمثلةهم ، مع بعض الإضافات.

Raspberry Pi Zero W هو أحدث عضو في عائلة RPi ، وهو أساسًا Pi Zero مع Bluetooth و WLAN المضافة.

وميض! pHAT من Pimoroni هو في الأساس شريط من ثمانية مصابيح RBG تم تكوينها لتكون HAT لـ Raspberry Pi. إنه سهل الاستخدام للغاية ويأتي مع مكتبة بيثون. كانت الفكرة هي قراءة البيانات من RuuviTag وعرضها باستخدام الوميض! قبعة. يتم عرض القيم كأرقام ثنائية باستخدام 7 من مصابيح LED ، بينما يتم استخدام الثمانية للإشارة إلى ما إذا كانت قيم الرطوبة أو درجة الحرارة (+ / - / 0) معروضة.

الخطوة 1: إعداد النظام

يعد إعداد النظام أمرًا سهلاً: - قم بتشغيل RuuviTag (إصدار مستشعر درجة حرارة RuuviTag).

- قم بإعداد RPi Zero W أو RPi3 أو أي RPi آخر بسعة البلوتوث المضافة ، باتباع الإرشادات الموجودة على www.raspberrypi.org.

- ضع الوميض! HAT على RPi (أثناء الإيقاف).

- تثبيت الوميض! وبرنامج RuuviTag ، كما هو موضح في صفحات GitHub المقابلة.

- عليك الآن تحديد عنوان MAC الخاص بـ RuuviTag الخاص بك

- انسخ برنامج Python المرفق ، وافتحه بـ IDLE لـ Python 3

- قم بتغيير عنوان MAC الخاص بـ RuuviTag إلى عنوانك ، ثم قم بحفظ البرنامج وتشغيله.

- لا تتردد في تعديل وتحسين البرنامج. يأتي البرنامج كما هو ، ليتم استخدامه على مسؤوليتك الخاصة ، ولا يتم تحمل أي مسؤولية عن أي أضرار.

الخطوة الثانية: الجهاز والبرنامج

الجهاز والبرنامج
الجهاز والبرنامج
الجهاز والبرنامج
الجهاز والبرنامج
الجهاز والبرنامج
الجهاز والبرنامج
الجهاز والبرنامج
الجهاز والبرنامج

كما ذكرنا أعلاه ، كانت الفكرة هي إنشاء نظام بسيط وغير مكلف لقراءة البيانات من المنارة وعرض القيم الرقمية على وميض! HAT ، أو شريط LED مشابه.

سيكون نطاق قيم درجة الحرارة المراد قياسها باستخدام نظام يعتمد على RPi في معظم الحالات في مكان ما بين -50 درجة مئوية و +80 درجة مئوية ، للرطوبة بين 0 و 100٪. لذا فإن الشاشة التي يمكن أن تعطي قيمًا من -100 إلى +100 ستكون كافية لمعظم التطبيقات. يمكن عرض الأرقام العشرية الأصغر مثل 128 كأرقام ثنائية مع 7 بت (أو المصابيح). لذلك يأخذ البرنامج قيم درجة الحرارة والرطوبة من RuuviTag كأرقام "عائمة" ويحولها إلى أرقام ثنائية ، والتي يتم عرضها بعد ذلك على وميض !.

كخطوة أولى ، يتم تقريب الرقم وتحليله إذا كان موجبًا أو سالبًا أو صفرًا ، ثم يتم تحويله إلى رقم موجب باستخدام "القيمة المطلقة". ثم يتم تحويل الرقم العشري إلى رقم ثنائي مكون من 7 أرقام ، وهو عبارة عن سلسلة من 0 و 1 ، والتي يتم تحليلها وعرضها على آخر 7 بكسل من الوميض !.

بالنسبة لقيم درجة الحرارة ، يشير البكسل الأول إلى ما إذا كانت القيمة موجبة (أحمر) أو صفر (أرجواني) أو سالبة (أزرق). عرض قيم الرطوبة يتم ضبطه على اللون الأخضر. لتبسيط التمييز بين قيم درجة الحرارة والرطوبة ، يتم تعيين وحدات البكسل الثنائية باللون الأبيض لدرجة الحرارة والأصفر للرطوبة. لتعزيز وضوح الأرقام الثنائية ، لا يتم إيقاف تشغيل "0" بكسل تمامًا ، ولكن بدلاً من ذلك يتم تعيينها أضعف بكثير مما كانت عليه في الحالة "1". وميض! وحدات البكسل ساطعة للغاية ، يمكنك ضبط السطوع العام تغيير المعلمة "ساطع"

يعرض البرنامج قيم وأجزاء العملية أيضًا على الشاشة. بالإضافة إلى ذلك ، ستجد العديد من إرشادات الطباعة المكتومة (#). لقد تركتهم ، حيث قد تجدهم مفيدًا في فهم العملية إذا لم يتم كتم الصوت.

يمكن أيضًا تخزين القيم في ملف سجل.

الخطوة 3: كود البرنامج

تم تصحيح التعليمات البرمجية وتحسينها قليلاً. يمكنك الآن العثور على الإصدار 3 (20_03_2017).

يهدف هذا البرنامج إلى قراءة قيم درجة الحرارة والرطوبة والضغط من RuuviTag '' وعرض قيم درجة الحرارة والرطوبة كأرقام ثنائية على وميض بيموريني! قبعة. يعتمد على المثال print_to_screen.py من مكتبة ruuvitag في github. "يتطلب Pi Zero W أو Pi 3 أو أي RPi آخر مجهز بالبلوتوث وجميع المكتبات الضرورية مثبتة."

وقت الاستيراد

استيراد نظام التشغيل من تاريخ الاستيراد والوقت والوقت

من ruuvitag_sensor.ruuvi استيراد RuuviTagSensor

من استيراد blinkt set_clear_on_exit ، set_pixel ، clear ، show

def temp_blinkt (BT):

# هذا الروتين يأخذ قيمة درجة الحرارة ويعرضها كرقم ثنائي عند الوميض!

صافي ()

# لون وكثافة بكسل "1": أبيض

r1 = 64 ج 1 = 64 ب 1 = 64

# اللون وشدة البكسل "0": أبيض

r0 = 5 g0 = 5 b0 = 5

# جولة وتحويلها إلى عدد صحيح

ص = جولة (bt)

يمثل # vz علامة جبرية لبكسل المؤشر

if (r> 0): vz = 1 # elif إيجابي (r <0): vz = 2 # سالب آخر: vz = 0 # صفر # print (vz) i = abs (r) #print (i)

# تحويل إلى رقم ثنائي مطلق مكون من 7 أرقام

i1 = i + 128 # بالنسبة لـ i ينتج عن رقم ثنائي مكون من 8 أرقام يبدأ بـ 1 # print (i1)

b = "{0: b}". تنسيق (i1) # تحويل إلى ثنائي

# طباعة (ب)

b0 = str (b) # تحويل إلى سلسلة

b1 = b0 [1: 8] # اقتطاع البتة الأولى

print ("رقم ثنائي:"، b1)

# تعيين البكسل على الوميض!

# تعيين رقم ثنائي

لـ h في النطاق (0 ، 7): f = (h + 1) if (b1 [h] == "1"): set_pixel (f ، r1 ، g1 ، b1) # print ("bit"، h، " هو 1 ، بكسل "، و) وإلا: set_pixel (f ، r0 ، g0 ، b0) # print (" لا شيء ")

# تعيين بكسل المؤشر

إذا (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 (البحرين):

# هذا يأخذ قيمة الرطوبة ويعرضها كرقم ثنائي عند الوميض!

صافي()

# لون وكثافة بكسل "1": أصفر

r1 = 64 ج 1 = 64 ب 1 = 0

# اللون وشدة البكسل "0":

r0 = 5 g0 = 5 b0 = 0

# جولة وتحويلها إلى عدد صحيح

ص = جولة (bh)

# تحويل إلى رقم ثنائي مطلق مكون من 7 أرقام i = abs (r) #print (i)

i1 = i + 128 # لأعطي رقمًا ثنائيًا مكونًا من 8 أرقام يبدأ بـ 1

# طباعة (i1)

ب = "{0: ب}". تنسيق (i1)

# طباعة (ب)

ب 0 = شارع (ب)

b1 = b0 [1: 8] # اقتطاع البتة الأولى

print ("رقم ثنائي:"، b1)

# تعيين بكسل على الوميض!

# اضبط الرقم الثنائي على وحدات البكسل

لـ h في النطاق (0 ، 7): f = (h + 1) if (b1 [h] == "1"): set_pixel (f ، r1 ، g1 ، b1) وإلا: # كتم الصوت إلى مصابيح LED الفارغة 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 (ماك)

احيانا صحيح:

البيانات = sensor.update ()

line_sen = str.format ('Sensor - {0}'، mac)

line_tem = str.format ('درجة الحرارة: {0} درجة مئوية ، البيانات [' درجة الحرارة ']) line_hum = str.format (' الرطوبة: {0}٪ '، البيانات [' الرطوبة ']) line_pre = str.format ("الضغط: {0}" ، البيانات ["الضغط"])

مطبعة()

# عرض درجة الحرارة على الوميض! ba = str.format ('{0}'، البيانات ['temperature']) bt = float (ba) print (bt، "Â ° C") temp_blinkt (bt) print ()

time.sleep (10) # عرض درجة الحرارة لمدة 10 ثوان

# عرض الرطوبة على الوميض!

bg = str.format ('{0}'، البيانات ['الرطوبة']) bh = float (bg) print (bh، "٪") hum_blinkt (bh) print ()

# مسح بيانات الشاشة ومستشعر الطباعة للشاشة

os.system ('clear') print ('Press Ctrl + C للإنهاء. / n / n') print (str (datetime.now ())) print (line_sen) print (line_tem) print (line_hum) print (line_pre) طباعة ('\ n / n / r …….')

# انتظر بضع ثوان وابدأ من جديد

حاول: time.sleep (8) باستثناء KeyboardInterrupt: # عند الضغط على Ctrl + C ، يتم إيقاف تشغيل حلقة while ، اطبع ('Exit') مسح () show () break

موصى به: