विषयसूची:

RuuviTag और PiZero W और Blinkt! एक ब्लूटूथ बीकन आधारित थर्मामीटर: 3 चरण (चित्रों के साथ)
RuuviTag और PiZero W और Blinkt! एक ब्लूटूथ बीकन आधारित थर्मामीटर: 3 चरण (चित्रों के साथ)

वीडियो: RuuviTag और PiZero W और Blinkt! एक ब्लूटूथ बीकन आधारित थर्मामीटर: 3 चरण (चित्रों के साथ)

वीडियो: RuuviTag और PiZero W और Blinkt! एक ब्लूटूथ बीकन आधारित थर्मामीटर: 3 चरण (चित्रों के साथ)
वीडियो: RuuviTag | Open-Source Bluetooth Sensor Beacon 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! एक ब्लूटूथ बीकन आधारित थर्मामीटर

यह निर्देशयोग्य रास्पबेरी पाई ज़ीरो डब्ल्यू के साथ ब्लूटूथ का उपयोग करके रुविटैग से तापमान और आर्द्रता डेटा पढ़ने और पिमोरोनी ब्लिंक पर बाइनरी नंबरों में मूल्यों को प्रदर्शित करने के लिए एक दृष्टिकोण का वर्णन करता है! pHAT.या संक्षेप में कहें तो: अत्याधुनिक और थोडा नीरस थर्मामीटर कैसे बनाया जाए।

RuuviTag एक खुला स्रोत सेंसर ब्लूटूथ बीकन है जो तापमान/आर्द्रता/दबाव और त्वरण सेंसर के साथ आता है, लेकिन यह एक मानक Eddystone™/iBeacon निकटता बीकन के रूप में भी कार्य कर सकता है। यह एक बहुत ही सफलतापूर्वक किकस्टार्टर प्रोजेक्ट था और मुझे कुछ हफ्ते पहले मेरा मिल गया था। रास्पबेरी का उपयोग करके RuuviTag को पढ़ने के लिए अजगर सॉफ्टवेयर के साथ एक Github है, और मैंने कुछ अतिरिक्त के साथ उनके उदाहरणों में से एक का उपयोग किया है।

रास्पबेरी पाई ज़ीरो डब्ल्यू आरपीआई परिवार का नवीनतम सदस्य है, मूल रूप से ब्लूटूथ और डब्ल्यूएलएएन के साथ एक पाई ज़ीरो जोड़ा गया है।

पलक! पिमोरोनी से पीएचएटी मूल रूप से आठ आरबीजी एल ई डी की एक पट्टी है जिसे रास्पबेरी पीआई के लिए एचएटी के रूप में कॉन्फ़िगर किया गया है। इसका उपयोग करना बहुत आसान है और एक अजगर पुस्तकालय के साथ आता है। विचार RuuviTag से डेटा को पढ़ने और ब्लिंक्ट का उपयोग करके इसे प्रदर्शित करने का था! टोपी। मूल्यों को एल ई डी के 7 का उपयोग करके बाइनरी संख्याओं के रूप में प्रदर्शित किया जाता है, जबकि आठ का उपयोग यह इंगित करने के लिए किया जाता है कि आर्द्रता या तापमान (+/-/0) मान प्रदर्शित होते हैं या नहीं।

चरण 1: सिस्टम की स्थापना

सिस्टम को सेट करना आसान है:- RuuviTag (RuuviTag तापमान सेंसर संस्करण) पर स्विच करें।

- www.raspberrypi.org पर दिए गए निर्देशों का पालन करते हुए अपने RPi Zero W, RPi3, या किसी अन्य RPi को ब्लूटूथ क्षमता के साथ सेट करें।

- पलक झपकाएं! आरपीआई पर एचएटी (बंद होने पर)।

- ब्लिंक्ट स्थापित करें! और RuuviTag सॉफ़्टवेयर, जैसा कि संबंधित GitHub पृष्ठों पर दर्शाया गया है।

- अब आपको अपने RuuviTag. के MAC एड्रेस को पहचानना होगा

- संलग्न पायथन प्रोग्राम को कॉपी करें, इसे Python 3 के लिए IDLE के साथ खोलें

- RuuviTag के MAC एड्रेस को अपने में बदलें, फिर प्रोग्राम को सेव और रन करें।

- कार्यक्रम को संशोधित और अनुकूलित करने के लिए स्वतंत्र महसूस करें। कार्यक्रम वैसे ही आता है, जैसा कि आपके अपने जोखिम पर उपयोग किया जाता है, किसी भी नुकसान के लिए कोई देनदारी नहीं ली जाती है।

चरण 2: डिवाइस और प्रोग्राम

डिवाइस और कार्यक्रम
डिवाइस और कार्यक्रम
डिवाइस और कार्यक्रम
डिवाइस और कार्यक्रम
डिवाइस और कार्यक्रम
डिवाइस और कार्यक्रम
डिवाइस और कार्यक्रम
डिवाइस और कार्यक्रम

जैसा कि ऊपर उल्लेख किया गया है, बीकन से डेटा पढ़ने और पलक झपकते ही संख्यात्मक मान प्रदर्शित करने के लिए एक सरल और सस्ती प्रणाली का निर्माण करने का विचार था! एचएटी, या एक समान एलईडी पट्टी।

आरपीआई आधारित प्रणाली के साथ मापा जाने वाले तापमान के लिए मूल्यों की सीमा ज्यादातर मामलों में कहीं - ५० डिग्री सेल्सियस और +८० डिग्री सेल्सियस के बीच होगी, आर्द्रता के लिए ० और १००% के बीच। तो एक डिस्प्ले जो -100 से +100 तक मान दे सकता है, अधिकांश अनुप्रयोगों के लिए पर्याप्त होगा। 128 से छोटी दशमलव संख्या को 7 बिट्स (या एलईडी) के साथ बाइनरी नंबर के रूप में प्रदर्शित किया जा सकता है। तो प्रोग्राम रूविटैग से "फ्लोट" नंबर के रूप में तापमान और आर्द्रता मान लेता है और उन्हें बाइनरी नंबरों में बदल देता है, जो तब ब्लिंक्ट पर प्रदर्शित होते हैं!

पहले चरण के रूप में, संख्या को गोल किया जाता है, सकारात्मक, नकारात्मक या शून्य होने पर विश्लेषण किया जाता है, और फिर "abs" का उपयोग करके सकारात्मक संख्या में बदल दिया जाता है। फिर दशमलव संख्या को 7-अंकीय बाइनरी संख्या में बदल दिया जाता है, मूल रूप से 0s और 1s की एक स्ट्रिंग, जिसका विश्लेषण किया जाता है और ब्लिंक्ट के अंतिम 7 पिक्सेल पर प्रदर्शित किया जाता है!।

तापमान मानों के लिए पहला पिक्सेल इंगित करता है कि मान धनात्मक (लाल), शून्य (मैजेंटा) या ऋणात्मक (नीला) है। आर्द्रता मान प्रदर्शित करते हुए इसे हरे रंग में सेट किया गया है। तापमान और आर्द्रता मूल्यों के बीच भेदभाव को आसान बनाने के लिए बाइनरी पिक्सल तापमान के लिए सफेद और आर्द्रता के लिए पीले रंग में सेट होते हैं। बाइनरी नंबरों की सुपाठ्यता बढ़ाने के लिए, "0" पिक्सेल पूरी तरह से बंद नहीं होते हैं, बल्कि "1" स्थिति की तुलना में बहुत कमजोर सेट होते हैं। पलक के रूप में! पिक्सेल बहुत उज्ज्वल हैं, आप "उज्ज्वल" पैरामीटर को बदलते हुए सामान्य चमक सेट कर सकते हैं

कार्यक्रम मूल्यों और प्रक्रिया के कुछ हिस्सों को स्क्रीन पर भी प्रदर्शित करता है। इसके अलावा आपको कई म्यूट (#) प्रिंट निर्देश मिलेंगे। मैंने उन्हें अंदर छोड़ दिया, क्योंकि अनम्यूट होने पर आपको प्रक्रिया को समझने में मदद मिल सकती है।

मान लॉग फ़ाइल में भी संग्रहीत किए जा सकते हैं।

चरण 3: प्रोग्राम कोड

कोड थोड़ा डिबग और अनुकूलित था। अब आपको संस्करण 3 (20_03_2017) मिल सकता है।

' इस कार्यक्रम का उद्देश्य तापमान, आर्द्रता और दबाव के मूल्यों को एक रूविटैग' बनाना है और तापमान और आर्द्रता मूल्यों को पिमोरिनी ब्लिंक्ट पर बाइनरी नंबरों के रूप में प्रदर्शित करना है! टोपी। '' '' ' यह गीथब पर ruuvitag पुस्तकालय से print_to_screen.py उदाहरण पर आधारित है। ' 'एक Pi Zero W, Pi 3 या ब्लूटूथ से लैस कोई अन्य RPi और सभी आवश्यक पुस्तकालय स्थापित करने की आवश्यकता है।'

आयात समय

डेटाटाइम से आयात ओएस डेटाटाइम आयात करें

ruuvitag_sensor.ruuvi से आयात करें RuuviTagSensor

ब्लिंक्ट इम्पोर्ट से set_clear_on_exit, set_pixel, clear, show

def temp_blinkt (बीटी):

# यह दिनचर्या तापमान मान लेती है और इसे ब्लिंक्ट पर बाइनरी नंबर के रूप में प्रदर्शित करती है!

स्पष्ट ()

# "1" पिक्सेल का रंग और तीव्रता: सफ़ेद

r1 = 64 g1 = 64 b1 = 64

#रंग और तीव्रता "0" पिक्सेल: सफ़ेद

r0 = 5 g0 = 5 b0 = 5

# गोल करें और पूर्णांक में बदलें

आर = गोल (बीटी)

# vz संकेतक पिक्सेल के लिए बीजीय चिह्न का प्रतिनिधित्व करता है

अगर (r>0): vz = 1 # सकारात्मक elif (r<0): vz= 2 # नकारात्मक अन्य: vz= 0 # शून्य # प्रिंट (vz) i = abs(r) #print (i)

# निरपेक्ष, 7-अंकीय बाइनरी संख्या में बदलना

i1 = i + 128 # के लिए i परिणाम 1 # प्रिंट (i1) से शुरू होने वाले 8-अंकीय बाइनरी नंबर में होता है

b = "{0:b}".format(i1) # बाइनरी में कनवर्ट करें

# प्रिंट (बी)

b0 = str (b) # स्ट्रिंग में कनवर्ट करें

b1 = b0 [1:8] # पहले बिट को छोटा करें

प्रिंट ("बाइनरी नंबर:", बी 1)

# ब्लिंक्ट पर पिक्सल सेट करें!

# बाइनरी नंबर सेट करें

h रेंज में (0, 7) के लिए: f = (h+1) if (b1[h] == "1"): set_pixel (f, r1, g1, b1) # प्रिंट ("बिट", एच, " 1 है, पिक्सेल ", f) और: set_pixel (f, r0, g0, b0) # प्रिंट ("शून्य")

# संकेतक पिक्सेल सेट करें

अगर (vz==1): set_pixel (0, 64, 0, 0) # सकारात्मक मानों के लिए लाल elif (vz==2): set_pixel (0, 0, 0, 64) # नकारात्मक मानों के लिए नीला: set_pixel (०, ६४, ०, ६४) # मैजेंटा अगर शून्य

प्रदर्शन()

# temp_blinkt का अंत ()

def hum_blinkt (बीएच):

# यह आर्द्रता मान लेता है और इसे ब्लिंक्ट पर बाइनरी नंबर के रूप में प्रदर्शित करता है!

स्पष्ट()

# "1" पिक्सेल का रंग और तीव्रता: पीला

r1 = 64 g1 = 64 b1 = 0

#रंग और "0" पिक्सेल की तीव्रता:

r0 = 5 g0 = 5 b0 = 0

# गोल और पूर्णांक में बदलना

आर = गोल (बीएच)

# निरपेक्ष, 7-अंकीय बाइनरी संख्या में बदलना i = abs(r) #print (i)

i1 = i + 128 # के लिए i 1. से शुरू होने वाली 8-अंकीय बाइनरी संख्या देता है

# प्रिंट (i1)

बी = "{0:बी}"। प्रारूप (i1)

# प्रिंट (बी)

बी0 = स्ट्र (बी)

b1 = b0 [1:8] # पहले बिट को छोटा करें

प्रिंट ("बाइनरी नंबर:", बी 1)

# ब्लिंक्ट पर पिक्सल सेट करें!

# बाइनरी नंबर को पिक्सल पर सेट करें

रेंज में h के लिए (0, 7): f = (h+1) if (b1[h] == "1"): set_pixel (f, r1, g1, b1) और: # म्यूट टू ब्लैंक LED set_pixel (f, r0, g0, b0) # म्यूट टू ब्लैंक एल ई डी

# संकेतक पिक्सेल सेट करें

set_pixel (0, 0, 64, 0) # नमी के लिए हरा

प्रदर्शन()

# hum_blinkt का अंत ()

set_clear_on_exit ()

# RuuviTag. से डेटा पढ़ना

मैक = 'ईसी: 6 डी: 59: 6 डी: 01: 1 सी' # अपने डिवाइस के मैक पते में बदलें

प्रिंट ('शुरू')

सेंसर = रुविटैग सेंसर (मैक)

जबकि सच:

डेटा = सेंसर। अपडेट ()

line_sen = str.format ('सेंसर - {0}', मैक)

line_tem = str.format ('तापमान: {0} C', डेटा ['तापमान']) line_hum = str.format ('आर्द्रता: {0} %', डेटा ['आर्द्रता']) line_pre = str.format('दबाव: {0}', डेटा ['दबाव'])

प्रिंट ()

# ब्लिंक्ट पर तापमान प्रदर्शित करें! बीए = str.format ('{0}', डेटा ['तापमान']) बीटी = फ्लोट (बीए) प्रिंट (बीटी, "°C") temp_blinkt (बीटी) प्रिंट ()

समय। नींद (10) # 10 सेकंड के लिए तापमान प्रदर्शित करें

# पलक झपकते ही नमी दिखाओ!

bg = str.format('{0}', data['humidity']) bh = फ्लोट (bg) प्रिंट (bh, "%") hum_blinkt (bh) प्रिंट ()

# स्क्रीन पर साफ़ स्क्रीन और प्रिंट सेंसर डेटा

os.system('clear') प्रिंट ('छोड़ने के लिए Ctrl+C दबाएं।) प्रिंट ('\n\n\r…….')

# कुछ सेकंड रुकें और फिर से शुरू करें

कोशिश करें: time.sleep(8) कीबोर्डइंटरप्ट को छोड़कर: # जब Ctrl + C दबाया जाता है, जबकि लूप बंद हो जाता है, तो प्रिंट ('बाहर निकलें') क्लियर () शो () ब्रेक

सिफारिश की: