সুচিপত্র:

RuuviTag এবং PiZero W এবং Blinkt! একটি ব্লুটুথ বীকন ভিত্তিক থার্মোমিটার: 3 টি ধাপ (ছবি সহ)
RuuviTag এবং PiZero W এবং Blinkt! একটি ব্লুটুথ বীকন ভিত্তিক থার্মোমিটার: 3 টি ধাপ (ছবি সহ)

ভিডিও: RuuviTag এবং PiZero W এবং Blinkt! একটি ব্লুটুথ বীকন ভিত্তিক থার্মোমিটার: 3 টি ধাপ (ছবি সহ)

ভিডিও: RuuviTag এবং PiZero W এবং Blinkt! একটি ব্লুটুথ বীকন ভিত্তিক থার্মোমিটার: 3 টি ধাপ (ছবি সহ)
ভিডিও: আপনার রাস্পবেরি পাই পিকোকে মিতসুবিশি এফএক্স1এন পিএলসিতে পরিণত করা হচ্ছে 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 একটি ওপেন সোর্স সেন্সর ব্লুটুথ বীকন যা একটি তাপমাত্রা/আর্দ্রতা/চাপ এবং অ্যাকসিলেশন সেন্সর সহ আসে, কিন্তু এটি একটি আদর্শ এডিস্টোন ™/iBeacon প্রক্সিমিটি বীকন হিসাবেও কাজ করতে পারে। এটি একটি খুব সফলভাবে কিকস্টার্টার প্রকল্প ছিল এবং আমি কয়েক সপ্তাহ আগে আমার পেয়েছিলাম। একটি রাস্পবেরি ব্যবহার করে রুইভিটেগ পড়ার জন্য পাইথন সফ্টওয়্যার সহ একটি গিথুব রয়েছে এবং আমি তাদের সংযোজনগুলির একটি উদাহরণ ব্যবহার করেছি।

রাস্পবেরি পাই জিরো ডাব্লু হল আরপিআই পরিবারের সর্বশেষ সদস্য, মূলত ব্লুটুথ এবং ডব্লিউএলএএন যুক্ত একটি পাই শূন্য।

পলক! Pimoroni থেকে pHAT মূলত রাস্পবেরি পাই এর জন্য HAT হিসাবে কনফিগার করা আটটি RBG LEDs এর একটি স্ট্রিপ। এটি ব্যবহার করা খুব সহজ এবং একটি পাইথন লাইব্রেরির সাথে আসে। ধারণা ছিল RuuviTag থেকে তথ্য পড়া এবং এটি blinkt ব্যবহার করে প্রদর্শন! HAT। মানগুলি LEDs এর 7 ব্যবহার করে বাইনারি সংখ্যা হিসাবে প্রদর্শিত হয়, যখন আটটি আর্দ্রতা বা তাপমাত্রা (+/-/0) প্রদর্শিত হয় কিনা তা নির্দেশ করতে ব্যবহৃত হয়।

ধাপ 1: সিস্টেম সেট আপ

সিস্টেম সেট আপ করা সহজ:- RuuviTag (RuuviTag তাপমাত্রা সেন্সর সংস্করণ) চালু করুন।

- আপনার RPi জিরো W, RPi3, অথবা ব্লুটুথ ধারণক্ষমতা যুক্ত অন্য কোন RPi সেট আপ করুন, www.raspberrypi.org এর নির্দেশাবলী অনুসরণ করে।

- ঝলকানি রাখুন! RPi এ HAT (বন্ধ থাকা অবস্থায়)।

- ঝলকানি ইনস্টল করুন! এবং রুইভিটেগ সফটওয়্যার, যেমন সংশ্লিষ্ট GitHub পৃষ্ঠায় নির্দেশিত।

- আপনাকে এখন আপনার RuuviTag এর MAC ঠিকানা চিহ্নিত করতে হবে

- সংযুক্ত পাইথন প্রোগ্রামটি অনুলিপি করুন, এটি পাইথন 3 এর জন্য আইডিএল দিয়ে খুলুন

- RuuviTag এর MAC ঠিকানাটি আপনার কাছে পরিবর্তন করুন, তারপরে প্রোগ্রামটি সংরক্ষণ করুন এবং চালান।

- প্রোগ্রামটি সংশোধন এবং অপ্টিমাইজ করার জন্য নির্দ্বিধায়। প্রোগ্রামটি যেমন আছে তেমনি আপনার নিজের ঝুঁকিতে ব্যবহার করার জন্য, কোন ক্ষতির জন্য কোন দায় নেওয়া হয় না।

ধাপ 2: ডিভাইস এবং প্রোগ্রাম

ডিভাইস এবং প্রোগ্রাম
ডিভাইস এবং প্রোগ্রাম
ডিভাইস এবং প্রোগ্রাম
ডিভাইস এবং প্রোগ্রাম
ডিভাইস এবং প্রোগ্রাম
ডিভাইস এবং প্রোগ্রাম
ডিভাইস এবং প্রোগ্রাম
ডিভাইস এবং প্রোগ্রাম

উপরে উল্লিখিত হিসাবে, ধারণাটি ছিল একটি সহজ এবং সস্তা সিস্টেম তৈরি করা যা বীকন থেকে ডেটা পড়া এবং ব্লিঙ্কেটে সংখ্যাসূচক মান প্রদর্শন করা! HAT, বা অনুরূপ LED স্ট্রিপ।

RPi ভিত্তিক সিস্টেমের সাহায্যে তাপমাত্রা পরিমাপের মানগুলির পরিসর বেশিরভাগ ক্ষেত্রেই 50 থেকে 50 ডিগ্রি সেলসিয়াস এবং +80 ডিগ্রি সেন্টিগ্রেডের মধ্যে থাকবে, আর্দ্রতা 0 থেকে 100%এর মধ্যে। তাই এমন একটি ডিসপ্লে যা -100 থেকে +100 পর্যন্ত মান দিতে পারে বেশিরভাগ অ্যাপ্লিকেশনের জন্য যথেষ্ট। 128 এর চেয়ে ছোট দশমিক সংখ্যা 7 বিট (বা LEDs) সহ বাইনারি সংখ্যা হিসাবে প্রদর্শিত হতে পারে। সুতরাং প্রোগ্রামটি RuuviTag থেকে তাপমাত্রা এবং আর্দ্রতার মানগুলিকে "ভাসমান" সংখ্যা হিসাবে গ্রহণ করে এবং সেগুলিকে বাইনারি সংখ্যায় রূপান্তরিত করে, যা পরে ঝলকানিতে প্রদর্শিত হয়!

প্রথম ধাপ হিসাবে, সংখ্যাটি বৃত্তাকার, বিশ্লেষণ করা হয় যদি ধনাত্মক, negativeণাত্মক বা শূন্য হয় এবং তারপর "abs" ব্যবহার করে একটি ধনাত্মক সংখ্যায় রূপান্তরিত হয়। তারপর দশমিক সংখ্যাটি 7-সংখ্যার বাইনারি সংখ্যায় রূপান্তরিত হয়, মূলত 0s এবং 1s এর একটি স্ট্রিং, যা বিশ্লেষণ করে এবং ব্লিঙ্কটের শেষ 7 পিক্সেলে প্রদর্শিত হয়!

তাপমাত্রার মানগুলির জন্য প্রথম পিক্সেল নির্দেশ করে যে মানটি ধনাত্মক (লাল), শূন্য (ম্যাজেন্টা) বা নেতিবাচক (নীল)। আর্দ্রতার মান প্রদর্শন করে এটি সবুজতে সেট করা আছে। তাপমাত্রা এবং আর্দ্রতার মানগুলির মধ্যে বৈষম্য সহজ করার জন্য বাইনারি পিক্সেলগুলি তাপমাত্রার জন্য সাদা এবং আর্দ্রতার জন্য হলুদ নির্ধারণ করা হয়। বাইনারি সংখ্যার সুস্পষ্টতা বৃদ্ধির জন্য, "0" পিক্সেল সম্পূর্ণভাবে বন্ধ করা হয় না, বরং "1" অবস্থার তুলনায় অনেক দুর্বল সেট করা হয়। জ্বলজ্বলে! পিক্সেলগুলি খুব উজ্জ্বল, আপনি "উজ্জ্বল" প্যারামিটার পরিবর্তন করে সাধারণ উজ্জ্বলতা সেট করতে পারেন

প্রোগ্রামটি প্রক্রিয়াটির মান এবং অংশগুলি পর্দায়ও প্রদর্শন করে। উপরন্তু আপনি বেশ কিছু নিutedশব্দ (#) প্রিন্ট নির্দেশ পাবেন। আমি তাদের ছেড়ে দিয়েছি, কারণ আপনি নিutedশব্দ হলে প্রক্রিয়াটি বুঝতে তাদের সহায়ক মনে হতে পারে।

মানগুলি একটি লগ ফাইলে সংরক্ষণ করা যেতে পারে।

ধাপ 3: প্রোগ্রাম কোড

কোডটি কিছুটা ডিবাগ এবং অপ্টিমাইজ করা হয়েছিল। আপনি এখন 3 সংস্করণ (20_03_2017) খুঁজে পেতে পারেন।

'এই কর্মসূচির উদ্দেশ্য হল তাপমাত্রা, আর্দ্রতা এবং চাপের মানগুলি একটি রুইভিটাগ তৈরি করা' এবং তাপমাত্রা এবং আর্দ্রতার মানগুলি পিমোরিনি ব্লিঙ্কে বাইনারি সংখ্যা হিসাবে প্রদর্শন করা! HAT। এটি github এ ruuvitag লাইব্রেরি থেকে print_to_screen.py উদাহরণের উপর ভিত্তি করে তৈরি। '' একটি পাই জিরো ডাব্লু, পাই 3 বা অন্য কোনো আরপিআই ব্লুটুথ এবং সমস্ত প্রয়োজনীয় লাইব্রেরি দিয়ে ইনস্টল করা প্রয়োজন। ''

আমদানির সময়

ডেটটাইম থেকে ওএস আমদানি করুন

ruuvitag_sensor.ruuvi থেকে RuuviTagSensor আমদানি করুন

blinkt আমদানি থেকে set_clear_on_exit, set_pixel, clear, show

def temp_blinkt (bt):

# এই রুটিন তাপমাত্রার মান নেয় এবং এটিকে ব্লাঙ্ক্টে বাইনারি সংখ্যা হিসাবে প্রদর্শন করে!

পরিষ্কার ()

# রঙ এবং "1" পিক্সেলের তীব্রতা: সাদা

r1 = 64 g1 = 64 b1 = 64

#রঙ এবং "0" পিক্সেলের তীব্রতা: সাদা

r0 = 5 g0 = 5 b0 = 5

# গোল এবং পূর্ণসংখ্যা রূপান্তর

r = বৃত্তাকার (bt)

# vz সূচক পিক্সেলের জন্য বীজগণিত চিহ্নকে উপস্থাপন করে

যদি (r> 0): vz = 1 # ইতিবাচক এলিফ (r <0): vz = 2 # নেতিবাচক অন্য: vz = 0 # শূন্য # মুদ্রণ (vz) i = abs (r) #print (i)

# পরম, 7-সংখ্যার বাইনারি সংখ্যায় রূপান্তর করুন

i1 = i + 128 # এর জন্য i এর ফলাফল 8-সংখ্যার বাইনারি সংখ্যায় 1 # মুদ্রণ (i1) দিয়ে শুরু হয়

b = "{0: b}"। ফরম্যাট (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) # print ("bit", h, " হল 1, পিক্সেল ", এফ) অন্য: 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) # নীল অন্য নেতিবাচক মানের জন্য: set_pixel (0, 64, 0, 64) # ম্যাজেন্টা যদি শূন্য হয়

দেখান ()

# temp_blinkt এর শেষ ()

def hum_blinkt (bh):

# এটি আর্দ্রতার মান নেয় এবং এটিকে ব্লাঙ্ক্টে বাইনারি সংখ্যা হিসাবে প্রদর্শন করে!

পরিষ্কার()

# রঙ এবং "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 # এর জন্য আমি 1 দিয়ে শুরু হওয়া 8-সংখ্যার বাইনারি সংখ্যা দেয়

# মুদ্রণ (i1)

b = "{0: b}"। ফরম্যাট (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) অন্য: # নিuteশব্দ ফাঁকা LEDs set_pixel (f, r0, g0, b0) # নি blanশব্দ ফাঁকা LEDs

# নির্দেশক পিক্সেল সেট করুন

set_pixel (0, 0, 64, 0) # আর্দ্রতার জন্য সবুজ

দেখান ()

# hum_blinkt এর শেষ ()

set_clear_on_exit ()

# RuuviTag থেকে তথ্য পড়া

ম্যাক = 'ইসি: 6 ডি: 59: 6 ডি: 01: 1 সি' # আপনার নিজের ডিভাইসের ম্যাক-ঠিকানা পরিবর্তন করুন

মুদ্রণ ('শুরু')

সেন্সর = RuuviTagSensor (ম্যাক)

যখন সত্য:

data = sensor.update ()

line_sen = str.format ('সেন্সর - {0}', ম্যাক)

line_tem = str.format ('তাপমাত্রা: {0} C', ডেটা ['তাপমাত্রা']) line_hum = str.format ('আর্দ্রতা: {0} %', ডেটা ['আর্দ্রতা']) line_pre = str.format ('চাপ: {0}', ডেটা ['চাপ']

ছাপা()

# ব্লিঙ্কে তাপমাত্রা প্রদর্শন করুন! ba = str.format ('{0}', data ['temperature']) bt = float (ba) print (bt, "Â" C ") temp_blinkt (bt) print ()

time.sleep (10) # 10 সেকেন্ডের জন্য তাপমাত্রা প্রদর্শন করুন

# ব্লিঙ্কে আর্দ্রতা প্রদর্শন করুন!

bg = str.format ('{0}', data ['humidity']) bh = float (bg) print (bh, " %") hum_blinkt (bh) print ()

# স্ক্রিন পরিষ্কার করুন এবং স্ক্রিনে সেন্সর ডেটা মুদ্রণ করুন

os.system ('clear') print ('Ctrl+C টিপুন।) মুদ্রণ ('\ n / n / r ……।')

# কয়েক সেকেন্ড অপেক্ষা করুন এবং আবার শুরু করুন

try: time.sleep (8) KeyboardInterrupt ব্যতীত: # যখন Ctrl+C টিপলে এক্সিকিউশন চাপানো হয় যখন লুপ বন্ধ করা হয় ('Exit') clear () show () break

প্রস্তাবিত: