Სარჩევი:

RuuviTag და PiZero W და Blinkt! Bluetooth შუქურაზე დაფუძნებული თერმომეტრი: 3 ნაბიჯი (სურათებით)
RuuviTag და PiZero W და Blinkt! Bluetooth შუქურაზე დაფუძნებული თერმომეტრი: 3 ნაბიჯი (სურათებით)

ვიდეო: RuuviTag და PiZero W და Blinkt! Bluetooth შუქურაზე დაფუძნებული თერმომეტრი: 3 ნაბიჯი (სურათებით)

ვიდეო: RuuviTag და PiZero W და Blinkt! Bluetooth შუქურაზე დაფუძნებული თერმომეტრი: 3 ნაბიჯი (სურათებით)
ვიდეო: გადააქციეთ თქვენი Raspberry Pico Mitsubishi FX1N PLC-ზე 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 blinkt– ზე! pHAT. ან მოკლედ რომ ვთქვათ: როგორ უნდა ავაშენოთ თანამედროვე ხელოვნება და ცოტა არ იყოს თერმომეტრი.

RuuviTag არის ღია სენსორის bluetooth შუქურა, რომელსაც გააჩნია ტემპერატურის/ტენიანობის/წნევის და ამაღლების სენსორები, მაგრამ ასევე შეიძლება მოქმედებდეს როგორც სტანდარტული Eddystone ™/iBeacon სიახლოვის შუქურა. ეს იყო ძალიან წარმატებული Kickstarter პროექტი და მე მივიღე ჩემი რამდენიმე კვირის წინ. არსებობს Github პითონის პროგრამული უზრუნველყოფით, რომ წაიკითხოთ RuuviTag ჟოლოს გამოყენებით და მე გამოვიყენე მათი ერთ -ერთი მაგალითი, გარკვეული დამატებებით.

Raspberry Pi Zero W არის RPi ოჯახის უახლესი წევრი, ძირითადად Pi Zero Bluetooth და WLAN დამატებული.

მოციმციმე! PIMORON– ის pHAT ძირითადად არის რვა RBG LED- ების ზოლი, რომელიც კონფიგურირებულია როგორც HASP Raspberry Pi– სთვის. მისი გამოყენება ძალიან ადვილია და გააჩნია პითონის ბიბლიოთეკა. იდეა იყო RuuviTag– ის მონაცემების წაკითხვა და მისი ჩვენება blinkt– ის გამოყენებით! ქუდი ღირებულებები ნაჩვენებია როგორც ორობითი რიცხვები 7 შუქდიოდური შუქდიოდის გამოყენებით, ხოლო რვა ერთი გამოიყენება ტენიანობის ან ტემპერატურის (+/-/0) მნიშვნელობების ჩვენების მიზნით.

ნაბიჯი 1: სისტემის დაყენება

სისტემის დაყენება მარტივია:- ჩართეთ RuuviTag (ტემპერატურის სენსორის RuuviTag ვერსია).

- დააყენეთ თქვენი RPi Zero W, RPi3, ან ნებისმიერი სხვა RPi დამატებული bluetooth ტევადობით, www.raspberrypi.org– ის მითითებების შესაბამისად.

- განათავსეთ მოციმციმე! ქუდი RPi– ზე (გამორთვის დროს).

- დააინსტალირეთ ბლინკი! და RuuviTag პროგრამული უზრუნველყოფა, როგორც მითითებულია შესაბამის GitHub გვერდებზე.

- ახლა თქვენ უნდა დაადგინოთ თქვენი RuuviTag– ის MAC მისამართი

- დააკოპირეთ თანდართული პითონის პროგრამა, გახსენით ის IDLE პითონ 3 -ისთვის

- შეცვალეთ RuuviTag– ის MAC მისამართი თქვენით, შემდეგ შეინახეთ და გაუშვით პროგრამა.

- მოგერიდებათ შეცვალოთ და გააუმჯობესოთ პროგრამა. პროგრამა მოდის ისე, როგორც ის არის, რომ გამოიყენო საკუთარი რისკით, არანაირი ვალდებულება არ აიღო რაიმე ზიანისთვის.

ნაბიჯი 2: მოწყობილობა და პროგრამა

მოწყობილობა და პროგრამა
მოწყობილობა და პროგრამა
მოწყობილობა და პროგრამა
მოწყობილობა და პროგრამა
მოწყობილობა და პროგრამა
მოწყობილობა და პროგრამა
მოწყობილობა და პროგრამა
მოწყობილობა და პროგრამა

როგორც ზემოთ აღვნიშნეთ, იდეა იყო შეექმნა მარტივი და იაფი სისტემა შუქურის მონაცემების წასაკითხად და რიცხვითი მნიშვნელობების ჩვენებისათვის მოციმციმეზე! ქუდი, ან მსგავსი LED ზოლები.

ტემპერატურის მნიშვნელობების დიაპაზონი, რომელიც უნდა შეფასდეს RPi სისტემით, უმეტეს შემთხვევაში იქნება სადღაც - 50 ° C- დან +80 ° C- მდე, ტენიანობა 0 -დან 100%-მდე. ამრიგად, ჩვენება, რომელსაც შეუძლია მნიშვნელობების მინიჭება -100 -დან +100 -მდე, საკმარისი იქნება პროგრამების უმეტესობისთვის. ათწილადის რიცხვები 128 -ით ნაკლები შეიძლება გამოისახოს ორობითი რიცხვებით 7 ბიტიანი (ან LED- ები). ამრიგად, პროგრამა იღებს ტემპერატურისა და ტენიანობის მნიშვნელობებს RuuviTag– დან, როგორც „მცურავი“რიცხვები და გარდაქმნის მათ ორობითი რიცხვებით, რომლებიც შემდეგ ნაჩვენებია მოციმციმე !.

როგორც პირველი ნაბიჯი, რიცხვი მრგვალდება, გაანალიზებულია დადებითი, უარყოფითი ან ნულოვანი და შემდეგ გარდაიქმნება დადებით რიცხვად "აბს" გამოყენებით. შემდეგ ათობითი რიცხვი გარდაიქმნება შვიდნიშნა ორობითი რიცხვით, ძირითადად 0 და 1 სტრიქონად, რომელიც გაანალიზებულია და ნაჩვენებია დახუჭვის ბოლო 7 პიქსელზე !.

ტემპერატურის მნიშვნელობებისთვის პირველი პიქსელი მიუთითებს თუ მნიშვნელობა არის დადებითი (წითელი), ნული (მაგენტა) ან უარყოფითი (ლურჯი). ტენიანობის მნიშვნელობების ჩვენება მწვანეა. ტემპერატურისა და ტენიანობის ღირებულებებს შორის დისკრიმინაციის გასამარტივებლად ორობითი პიქსელი მითითებულია თეთრი ტემპერატურისთვის და ყვითელი ტენიანობისთვის. ორობითი რიცხვების წაკითხვის გასაუმჯობესებლად, "0" პიქსელი არ არის მთლიანად გამორთული, მაგრამ სამაგიეროდ არის გაცილებით სუსტი ვიდრე "1" მდგომარეობაში. როგორც მოციმციმე! პიქსელები ძალიან კაშკაშაა, შეგიძლიათ დააყენოთ ზოგადი სიკაშკაშე, რომელიც ცვლის პარამეტრს "ნათელი"

პროგრამა ეკრანზე აჩვენებს პროცესის ღირებულებებს და ნაწილებს. გარდა ამისა თქვენ ნახავთ რამდენიმე მდუმარე (#) ბეჭდვის ინსტრუქციას. მე დავტოვე ისინი, რადგან თქვენ შეიძლება გამოსადეგი აღმოჩნდეთ პროცესის გასაგებად, თუ ის დადუმებულია.

ღირებულებები ასევე შეიძლება იყოს შენახული ჟურნალის ფაილში.

ნაბიჯი 3: პროგრამის კოდი

კოდი ოდნავ გამართული და ოპტიმიზირებულია. ახლა თქვენ შეგიძლიათ იპოვოთ ვერსია 3 (20_03_2017).

"ეს პროგრამა მიზნად ისახავს ტემპერატურის, ტენიანობის და წნევის მნიშვნელობების წაკითხვას RuuviTag" და აჩვენებს ტემპერატურისა და ტენიანობის მნიშვნელობებს როგორც ორობითი რიცხვები Pimorini blinkt- ზე! ქუდი '' '' იგი დაფუძნებულია print_to_screen.py მაგალითზე ruuvitag ბიბლიოთეკიდან github- ში. "მოითხოვს Pi Zero W, Pi 3 ან ნებისმიერი სხვა RPi აღჭურვილი bluetooth- ით და დაინსტალირებული ყველა საჭირო ბიბლიოთეკა."

იმპორტის დრო

იმპორტი os საწყისი datetime იმპორტი datetime

ruuvitag_sensor.ruuvi იმპორტი RuuviTagSensor

blinkt იმპორტიდან set_clear_on_exit, set_pixel, clear, show

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- სთვის რვა ციფრიანი ორობითი რიცხვი იწყება 1 # ბეჭდვით (i1)

b = "{0: b}". ფორმატი (i1) # გადააკეთეთ ორობითი

# ბეჭდვა (ბ)

b0 = str (b) # გადაიყვანეთ სტრიქონად

b1 = b0 [1: 8] #გაანადგურე პირველი ბიტი

ბეჭდვა ("ორობითი ნომერი:", b1)

# დააყენეთ პიქსელები მოციმციმეზე!

# დააყენეთ ორობითი ნომერი

დიაპაზონში h (0, 7): f = (h+1) თუ (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " არის 1, პიქსელი ", ვ) სხვა: set_pixel (f, r0, g0, b0) # print (" nil ")

# დააყენეთ ინდიკატორის პიქსელი

if (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):

# ეს იღებს ტენიანობის მნიშვნელობას და აჩვენებს მას ორობითი რიცხვის სახით 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 # for i იძლევა 8 ციფრიანი ორობითი რიცხვი 1 – ით დაწყებული

# ბეჭდვა (i1)

b = "{0: b}". ფორმატი (i1)

# ბეჭდვა (ბ)

b0 = str (b)

b1 = b0 [1: 8] #გაანადგურე პირველი ბიტი

ბეჭდვა ("ორობითი ნომერი:", b1)

# დააყენეთ პიქსელები მოციმციმეზე!

# დააყენეთ ორობითი რიცხვი პიქსელებზე

დიაპაზონში h (0, 7): f = (h+1) თუ (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– დან

mac = 'EC: 6D: 59: 6D: 01: 1C' # შეცვალეთ თქვენი საკუთარი მოწყობილობის mac მისამართი

დაბეჭდვა ("იწყება")

სენსორი = RuuviTagSensor (mac)

მართალია:

მონაცემები = 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 ()

დრო. ძილი (10) # ჩვენების ტემპერატურა 10 წამის განმავლობაში

# აჩვენეთ ტენიანობა მოციმციმეზე!

bg = str.format ('{0}', მონაცემები ['ტენიანობა']) bh = float (bg) print (bh, " %") hum_blinkt (bh) print ()

# ეკრანის გასუფთავება და სენსორის მონაცემების დაბეჭდვა ეკრანზე

os.system ('clear') print ('დააჭირეთ 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) კლავიატურის გარდა შეფერხება: # როდესაც Ctrl+C დაჭერილია შესრულებული მარყუჟის შესრულება დაბლოკილია ბეჭდვა ('გასვლა') წმინდა () ჩვენება () შესვენება

გირჩევთ: