Satura rādītājs:

RuuviTag un PiZero W un Blinkt! termometrs uz Bluetooth bākas: 3 soļi (ar attēliem)
RuuviTag un PiZero W un Blinkt! termometrs uz Bluetooth bākas: 3 soļi (ar attēliem)

Video: RuuviTag un PiZero W un Blinkt! termometrs uz Bluetooth bākas: 3 soļi (ar attēliem)

Video: RuuviTag un PiZero W un Blinkt! termometrs uz Bluetooth bākas: 3 soļi (ar attēliem)
Video: Аудиокнига «Зов предков» Джека Лондона 2024, Jūlijs
Anonim
RuuviTag un PiZero W un Blinkt! termometrs uz Bluetooth bākas bāzes
RuuviTag un PiZero W un Blinkt! termometrs uz Bluetooth bākas bāzes
RuuviTag un PiZero W un Blinkt! termometrs uz Bluetooth bākas bāzes
RuuviTag un PiZero W un Blinkt! termometrs uz Bluetooth bākas bāzes
RuuviTag un PiZero W un Blinkt! termometrs uz Bluetooth bākas bāzes
RuuviTag un PiZero W un Blinkt! termometrs uz Bluetooth bākas bāzes

Šajā pamācībā ir aprakstīta pieeja temperatūras un mitruma datu nolasīšanai no RuuviTag, izmantojot Bluetooth ar Raspberry Pi Zero W, un parādīt vērtības bināros skaitļos uz Pimoroni mirgošanas! pHAT. Vai arī īsi sakot: kā izveidot modernu stāvokli un mazliet nerdy termometru.

RuuviTag ir atvērtā pirmkoda sensora Bluetooth bāka, kas aprīkota ar temperatūras/mitruma/spiediena un paātrinājuma sensoriem, bet var darboties arī kā standarta Eddystone ™/iBeacon tuvuma bāka. Tas bija ļoti veiksmīgs Kickstarter projekts, un es to ieguvu pirms dažām nedēļām. Ir Github ar python programmatūru, lai lasītu RuuviTag, izmantojot aveņu, un esmu izmantojis vienu no viņu piemēriem ar dažiem papildinājumiem.

Raspberry Pi Zero W ir jaunākais RPi ģimenes loceklis, būtībā Pi Zero ar Bluetooth un WLAN.

Mirkšķināt! PHAT no Pimoroni būtībā ir astoņu RBG gaismas diodes, kas konfigurētas kā Raspberry Pi HAT. To ir ļoti viegli lietot, un tam ir python bibliotēka. Ideja bija nolasīt RuuviTag datus un parādīt tos, izmantojot blinkt! Cepure. Vērtības tiek parādītas kā bināri skaitļi, izmantojot 7 no gaismas diodēm, bet astoņi tiek izmantoti, lai norādītu, vai tiek parādītas mitruma vai temperatūras (+/-/0) vērtības.

1. darbība: sistēmas iestatīšana

Sistēmas iestatīšana ir vienkārša:- Ieslēdziet RuuviTag (RuuviTag temperatūras sensora versija).

- Iestatiet savu RPi Zero W, RPi3 vai jebkuru citu RPi ar pievienotu Bluetooth jaudu, ievērojot norādījumus vietnē www.raspberrypi.org.

- Novieto blinktu! Cepure uz RPi (izslēgta).

- Uzstādiet blinktu! un RuuviTag programmatūru, kā norādīts attiecīgajās GitHub lapās.

- Tagad jums jāidentificē RuuviTag MAC adrese

- nokopējiet pievienoto Python programmu, atveriet to ar IDLE for Python 3

- nomainiet RuuviTag MAC adresi uz savu, pēc tam saglabājiet un palaidiet programmu.

- jūtieties brīvi mainīt un optimizēt programmu. Programma ir tāda, kāda tā ir, lai to izmantotu uz savu risku, par jebkādiem zaudējumiem netiek uzņemta atbildība.

2. darbība: ierīce un programma

Ierīce un programma
Ierīce un programma
Ierīce un programma
Ierīce un programma
Ierīce un programma
Ierīce un programma
Ierīce un programma
Ierīce un programma

Kā minēts iepriekš, ideja bija izveidot vienkāršu un lētu sistēmu, lai nolasītu datus no bākas un parādītu skaitliskās vērtības uz mirgošanas! Cepure vai līdzīga LED sloksne.

Temperatūras vērtību diapazons, kas jāmēra ar sistēmu, kas balstīta uz RPi, vairumā gadījumu būs kaut kur robežās no -50 ° C līdz +80 ° C, mitrumam no 0 līdz 100%. Tātad lielākajai daļai lietojumprogrammu pietiks ar displeju, kas var sniegt vērtības no -100 līdz +100. Decimāldaļskaitļus, kas ir mazāki par 128, var parādīt kā binārus skaitļus ar 7 bitiem (vai gaismas diodēm). Tātad programma ņem temperatūras un mitruma vērtības no RuuviTag kā "peldošus" skaitļus un pārveido tos bināros skaitļos, kas pēc tam tiek parādīti mirgojošajā !.

Vispirms skaitlis tiek noapaļots, analizēts, vai tas ir pozitīvs, negatīvs vai nulle, un pēc tam tiek pārveidots par pozitīvu skaitli, izmantojot "abs". Pēc tam decimāldaļskaitlis tiek pārvērsts par 7 ciparu bināru skaitli, kas pamatā ir 0s un 1s virkne, kas tiek analizēta un parādīta mirgošanas pēdējos 7 pikseļos !.

Temperatūras vērtībām pirmais pikselis norāda, vai vērtība ir pozitīva (sarkana), nulle (purpursarkana) vai negatīva (zila). Parādot mitruma vērtības, tas ir iestatīts uz zaļu. Lai vienkāršotu temperatūras un mitruma vērtību nošķiršanu, binārie pikseļi ir iestatīti baltā temperatūrā un dzeltenā mitrumā. Lai uzlabotu bināro skaitļu salasāmību, "0" pikseļi nav pilnībā izslēgti, bet tiek iestatīti daudz vājāk nekā "1" stāvoklī. Kā mirgo! pikseļi ir ļoti spilgti, varat iestatīt vispārējo spilgtumu, mainot parametru "spilgts"

Programma parāda vērtības un procesa daļas arī ekrānā. Turklāt jūs atradīsit vairākas izslēgtas (#) drukāšanas instrukcijas. Es atstāju tos iekšā, jo tie var šķist noderīgi, lai izprastu procesu, ja nav ieslēgta skaņa.

Vērtības var tikt saglabātas arī žurnāla failā.

3. darbība: programmas kods

Kods tika nedaudz atkļūdots un optimizēts. Tagad jūs varat atrast 3. versiju (20_03_2017).

'Šī programma ir paredzēta, lai nolasītu RuuviTag temperatūras, mitruma un spiediena vērtības' un parādītu temperatūras un mitruma vērtības kā binārus skaitļus uz Pimorini mirgojošā mirgoņa! Cepure. '' '' Tas ir balstīts uz print_to_screen.py piemēru no ruuvitag bibliotēkas vietnē github. '' Nepieciešams Pi Zero W, Pi 3 vai jebkurš cits RPi, kas aprīkots ar Bluetooth, un instalētas visas nepieciešamās bibliotēkas. '

importa laiks

importēt os no datetime importēt datetime

no ruuvitag_sensor.ruuvi importēt RuuviTagSensor

no blinkt importa set_clear_on_exit, set_pixel, clear, show

def temp_blinkt (bt):

# šī rutīna ņem temperatūras vērtību un parāda to kā bināru skaitli mirgošanas laikā!

skaidrs ()

# krāsa un “1” pikseļu intensitāte: balta

r1 = 64 g1 = 64 b1 = 64

#krāsa un "0" pikseļu intensitāte: balta

r0 = 5 g0 = 5 b0 = 5

# Noapaļojiet un pārvērtiet par veselu skaitli

r = apaļš (bt)

# vz ir indikatora pikseļa algebriskā zīme

ja (r> 0): vz = 1 # pozitīvs elifs (r <0): vz = 2 # negatīvs cits: vz = 0 # nulle # drukāt (vz) i = abs (r) #print (i)

# pārveidot par absolūtu, 7 ciparu bināru skaitli

i1 = i + 128 #, ja i iegūst 8 ciparu bināru skaitli, kas sākas ar 1 # drukāt (i1)

b = "{0: b}". formāts (i1) # konvertēt uz bināro

# drukāt (b)

b0 = str (b) # pārvērst par virkni

b1 = b0 [1: 8] #truncate pirmais bits

drukāt ("binārais numurs:", b1)

# Iestatiet pikseļus uz mirgošanas!

# iestatiet bināro skaitli

h diapazonā (0, 7): f = (h+1), ja (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " ir 1, pikseļi ", f) cits: set_pixel (f, r0, g0, b0) # print (" nulle ")

# Iestatiet indikatora pikseļu

ja (vz == 1): set_pixel (0, 64, 0, 0) # sarkans pozitīvām vērtībām elif (vz == 2): set_pixel (0, 0, 0, 64) # zils negatīvām vērtībām cits: set_pixel (0, 64, 0, 64) # purpursarkana, ja tā ir nulle

rādīt ()

# beigas temp_blinkt ()

def hum_blinkt (bh):

# tas ņem mitruma vērtību un parāda to kā bināru skaitli mirgošanas laikā!

skaidrs ()

# krāsa un “1” pikseļu intensitāte: dzeltena

r1 = 64 g1 = 64 b1 = 0

#krāsa un 0 pikseļu intensitāte:

r0 = 5 g0 = 5 b0 = 0

# Noapaļojiet un pārveidojiet par veselu skaitli

r = apaļš (bh)

# pārveidot par absolūtu, 7 ciparu bināru skaitli i = abs (r) #print (i)

i1 = i + 128 #, jo i dod 8 ciparu bināro skaitli, kas sākas ar 1

# drukāt (i1)

b = "{0: b}". formāts (i1)

# drukāt (b)

b0 = str (b)

b1 = b0 [1: 8] #truncate pirmais bits

drukāt ("binārais numurs:", b1)

# Iestatiet pikseļus uz mirgošanas!

# iestatiet bināro skaitli uz pikseļiem

h diapazonā (0, 7): f = (h+1), ja (b1 [h] == "1"): set_pixel (f, r1, g1, b1) else: # izslēgt līdz tukšām gaismas diodēm set_pixel (f, r0, g0, b0) # izslēgt tukšas gaismas diodes

# Iestatiet indikatora pikseļu

set_pixel (0, 0, 64, 0) # zaļš mitrumam

rādīt ()

# hum_blinkt () beigas ()

set_clear_on_exit ()

# Datu nolasīšana no RuuviTag

mac = 'EC: 6D: 59: 6D: 01: 1C' # Mainiet uz savas ierīces mac adresi

drukāt ("Sākt")

sensors = RuuviTagSensor (mac)

kamēr taisnība:

dati = sensors.update ()

line_sen = str.format ('Sensors - {0}', mac)

line_tem = str.format ('Temperatūra: {0} C', dati ['temperatūra']) line_hum = str.format ('Mitrums: {0} %', dati ['mitrums']) line_pre = str.format ('Spiediens: {0}', dati ['spiediens'])

drukāt ()

# displeja temperatūra mirgo! ba = str.format ('{0}', dati ['temperatūra']) bt = pludiņš (ba) print (bt, "° C") temp_blinkt (bt) print ()

time.sleep (10) # displeja temperatūra 10 sekundes

# mirgo displeja mitrums!

bg = str.format ('{0}', dati ['mitrums']) bh = pludiņš (bg) print (bh, " %") hum_blinkt (bh) print ()

# Notīriet ekrānu un izdrukājiet sensora datus ekrānā

os.system ('skaidrs') print ('Lai izietu, nospiediet Ctrl+C. / n / n') print (str (datetime.now ())) print (line_sen) print (line_tem) print (line_hum) print (line_pre) drukāt ('\ n / n / r …….')

# Pagaidiet dažas sekundes un sāciet no jauna

izmēģināt: time.sleep (8), izņemot tastatūruInterrupt: # Nospiežot taustiņu kombināciju Ctrl+C, cilpas izpilde tiek pārtraukta drukāt ('Exit') clear () show () break

Ieteicams: