Sisukord:

RuuviTag ja PiZero W ja Blinkt! Bluetoothi majakatepõhine termomeeter: 3 sammu (koos piltidega)
RuuviTag ja PiZero W ja Blinkt! Bluetoothi majakatepõhine termomeeter: 3 sammu (koos piltidega)

Video: RuuviTag ja PiZero W ja Blinkt! Bluetoothi majakatepõhine termomeeter: 3 sammu (koos piltidega)

Video: RuuviTag ja PiZero W ja Blinkt! Bluetoothi majakatepõhine termomeeter: 3 sammu (koos piltidega)
Video: RuuviTag | IoT for Everyone 2024, Detsember
Anonim
RuuviTag ja PiZero W ja Blinkt! Bluetoothi majakatel põhinev termomeeter
RuuviTag ja PiZero W ja Blinkt! Bluetoothi majakatel põhinev termomeeter
RuuviTag ja PiZero W ja Blinkt! Bluetoothi majakatel põhinev termomeeter
RuuviTag ja PiZero W ja Blinkt! Bluetoothi majakatel põhinev termomeeter
RuuviTag ja PiZero W ja Blinkt! Bluetoothi majakatel põhinev termomeeter
RuuviTag ja PiZero W ja Blinkt! Bluetoothi majakatel põhinev termomeeter

Selles juhendis kirjeldatakse lähenemisviisi temperatuuri ja niiskuse andmete lugemiseks RuuviTagilt Bluetoothi abil koos Raspberry Pi Zero W -ga ja väärtuste kuvamiseks binaararvudena Pimoroni vilkumisel! pHAT. Või lühidalt öeldes: kuidas ehitada uusim tehnika ja natuke nohiklik termomeeter.

RuuviTag on avatud lähtekoodiga Bluetoothi majakas, mis on varustatud temperatuuri/niiskuse/rõhu ja kiirendusanduritega, kuid võib toimida ka tavalise Eddystone ™/iBeacon lähedusmajakana. See oli väga edukas Kickstarteri projekt ja ma sain oma paar nädalat tagasi. RuutTagi lugemiseks vaarika abil on olemas pythonitarkvaraga Github ja ma olen kasutanud ühte nende näidet koos mõningate täiendustega.

Raspberry Pi Zero W on RPi perekonna viimane liige, põhimõtteliselt Pi Zero, millele on lisatud Bluetooth ja WLAN.

Silmapilk! Pimoroni pHAT on põhimõtteliselt kaheksa RBG LED -i riba, mis on konfigureeritud Raspberry Pi mütsiks. Seda on väga lihtne kasutada ja see sisaldab pythoni kogu. Idee oli lugeda andmed RuuviTagilt ja kuvada see blinkti abil! MÜTS. Väärtused kuvatakse binaararvudena, kasutades 7 LED-i, kaheksat aga näitamaks, kas kuvatakse niiskuse või temperatuuri (+/-/0) väärtusi.

Samm: süsteemi seadistamine

Süsteemi seadistamine on lihtne:- Lülitage RuuviTag (RuuviTag temperatuurianduri versioon) sisse.

- Seadistage oma RPi Zero W, RPi3 või mõni muu RPi, millele on lisatud Bluetoothi võimsus, järgides veebisaidil www.raspberrypi.org toodud juhiseid.

- Asetage pilk! MÜTS RPi peal (väljas olles).

- Paigaldage blinkt! ja RuuviTag tarkvara, nagu on näidatud vastavatel GitHubi lehtedel.

- Nüüd peate tuvastama oma RuuviTagi MAC -aadressi

- kopeerige lisatud Pythoni programm, avage see IDLE Python 3 jaoks

- muutke RuuviTagi MAC -aadress omaks, seejärel salvestage ja käivitage programm.

- saate programmi muuta ja optimeerida. Programm tuleb sellisel kujul, et seda tuleks kasutada omal vastutusel, kahjude eest ei võeta vastutust.

Samm: seade ja programm

Seade ja programm
Seade ja programm
Seade ja programm
Seade ja programm
Seade ja programm
Seade ja programm
Seade ja programm
Seade ja programm

Nagu eespool mainitud, oli idee konstrueerida lihtne ja odav süsteem majakalt andmete lugemiseks ja vilkumise numbriliste väärtuste kuvamiseks! MÜTS või sarnane LED -riba.

RPi -põhise süsteemiga mõõdetava temperatuuri väärtuste vahemik jääb enamikul juhtudel vahemikku –50 ° C kuni +80 ° C, niiskuse korral vahemikus 0–100%. Seega piisab enamiku rakenduste jaoks kuvarist, mis võib anda väärtusi vahemikus -100 kuni +100. Kümnendnumbreid, mis on väiksemad kui 128, saab kuvada 7 -bitiste (või LED -ide) kahendarvudena. Niisiis võtab programm RuuviTagilt temperatuuri ja niiskuse väärtused "ujukina" ja teisendab need kahendarvudeks, mis seejärel kuvatakse blinktil !.

Esimese sammuna ümardatakse number, analüüsitakse, kas see on positiivne, negatiivne või null, ja teisendatakse seejärel abs. Seejärel teisendatakse kümnendarv 7-kohaliseks binaararvuks, mis on põhimõtteliselt 0 ja 1 s string, mida analüüsitakse ja kuvatakse blinkti viimase 7 piksli kohta!

Temperatuuri väärtuste puhul näitab esimene piksel, kas väärtus on positiivne (punane), null (magenta) või negatiivne (sinine). Niiskuse väärtuste kuvamisel on see seatud roheliseks. Temperatuuri ja niiskuse väärtuste eristamise lihtsustamiseks on binaarpikslid seatud valgeks temperatuuriks ja kollaseks niiskuse jaoks. Kahendarvude loetavuse parandamiseks ei lülitata "0" piksleid täielikult välja, vaid on seatud palju nõrgemaks kui olekus "1". Nagu vilgub! pikslid on väga heledad, saate määrata üldise heleduse, muutes parameetrit "ere"

Programm kuvab ekraanil ka väärtused ja protsessi osad. Lisaks leiate mitmeid vaigistatud (#) printimisjuhiseid. Jätsin need sisse, sest vaigistuse tühistamise korral võivad need aidata teil protsessi mõista.

Väärtused võidakse salvestada ka logifaili.

Samm: programmi kood

Kood oli natuke silutud ja optimeeritud. Nüüd võite leida versiooni 3 (20_03_2017).

'See programm on ette nähtud RuuviTag' i temperatuuri, niiskuse ja rõhu väärtuste lugemiseks '' ning temperatuuri ja niiskuse väärtuste kuvamiseks binaararvudena Pimorini vilkumisel! MÜTS. '' '' See põhineb näitel print_to_screen.py ruuvitagi raamatukogust aadressil github. '' Vajalik on Pi Zero W, Pi 3 või mõni muu Bluetoothiga varustatud RPi ja kõik vajalikud teegid. '

impordi aeg

impordi osad kuupäevast ja ajast impordivad datetime

ruuvitag_sensor.ruuvi import RuuviTagSensor

alates blinkt import set_clear_on_exit, set_pixel, selge, näita

def temp_blinkt (bt):

# see rutiin võtab temperatuuri väärtuse ja kuvab selle binaarsel numbril!

selge ()

# värv ja intensiivsus "1" pikslit: valge

r1 = 64 g1 = 64 b1 = 64

#värv ja "0" pikslite intensiivsus: valge

r0 = 5 g0 = 5 b0 = 5

# Ümardage ja teisendage täisarvuks

r = ümmargune (bt)

# vz tähistab indikaatorpiksli algebralist märki

kui (r> 0): vz = 1 # positiivne elif (r <0): vz = 2 # negatiivne else: vz = 0 # null # print (vz) i = abs (r) #print (i)

# teisendage absoluutseks, 7-kohaliseks kahendarvuks

i1 = i + 128 # i jaoks annab 8-kohalise kahendarvu, mis algab 1 # print (i1)

b = "{0: b}". format (i1) # teisenda binaarseks

# trükk (b)

b0 = str (b) # teisenda stringiks

b1 = b0 [1: 8] #truncate esimene bitt

print ("binaararv:", b1)

# Määra pikslid vilkuma!

# määrake kahendarv

h vahemikus (0, 7): f = (h+1) kui (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " on 1, piksel ", f) else: set_pixel (f, r0, g0, b0) # print (" null ")

# Määra indikaatorpiksel

kui (vz == 1): set_pixel (0, 64, 0, 0) # punane positiivsete väärtuste jaoks elif (vz == 2): set_pixel (0, 0, 0, 64) # sinine negatiivsete väärtuste jaoks muu: set_pixel (0, 64, 0, 64) # magenta kui null

näita ()

# temp_blinkt () lõpp

def hum_blinkt (bh):

# see võtab niiskuse väärtuse ja kuvab selle binaarsel numbril blinktil!

selge ()

# värv ja intensiivsus "1" pikslit: kollane

r1 = 64 g1 = 64 b1 = 0

#värv ja "0" piksli intensiivsus:

r0 = 5 g0 = 5 b0 = 0

# Ümardage ja teisendage täisarvuks

r = ümmargune (bh)

# teisendada absoluutseks, 7-kohaline kahendarv i = abs (r) #print (i)

i1 = i + 128 # i jaoks annab 8-kohalise kahendnumbri, mis algab 1-ga

# print (i1)

b = "{0: b}". vorming (i1)

# trükk (b)

b0 = str (b)

b1 = b0 [1: 8] #truncate esimene bitt

print ("binaararv:", b1)

# Määra pikslid vilkuma!

# määrake binaararv piksliteks

h vahemikus (0, 7): f = (h+1) kui (b1 [h] == "1"): set_pixel (f, r1, g1, b1) else: # vaigista tühjade LED -ide jaoks set_pixel (f, r0, g0, b0) # vaigista tühjadeks LED -ideks

# Määra indikaatorpiksel

set_pixel (0, 0, 64, 0) # niiskuse jaoks roheline

näita ()

# hum_blinkt () lõpp

set_clear_on_exit ()

# Andmete lugemine RuuviTagist

mac = 'EC: 6D: 59: 6D: 01: 1C' # Muuda oma seadme mac-aadressiks

print ('Alustamine')

sensor = RuuviTagSensor (mac)

kuigi tõsi:

andmed = sensor.update ()

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

line_tem = str.format ('Temperatuur: {0} C', andmed ['temperatuur']) line_hum = str.format ('Niiskus: {0} %', andmed ['niiskus']) line_pre = str.format ('Rõhk: {0}', andmed ['rõhk'])

print ()

# kuva temperatuur vilgub! ba = str.format ('{0}', andmed ['temperatuur']) bt = float (ba) print (bt, "° C") temp_blinkt (bt) print ()

time.sleep (10) # kuvamistemperatuur 10 sekundiks

# vilgub ekraani niiskus!

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

# Tühjendage ekraan ja printige ekraanile anduri andmed

os.system ('selge') print ('Väljumiseks vajutage Ctrl+C. / n / n') print (str (datetime.now ())) print (line_sen) print (line_tem) print (line_hum) print (line_pre) print ('\ n / n / r …….')

# Oodake mõni sekund ja alustage uuesti

try: time.sleep (8), välja arvatud klaviatuur

Soovitan: