Tartalomjegyzék:

RuuviTag és PiZero W és Blinkt! Bluetooth jelzőfényes hőmérő: 3 lépés (képekkel)
RuuviTag és PiZero W és Blinkt! Bluetooth jelzőfényes hőmérő: 3 lépés (képekkel)

Videó: RuuviTag és PiZero W és Blinkt! Bluetooth jelzőfényes hőmérő: 3 lépés (képekkel)

Videó: RuuviTag és PiZero W és Blinkt! Bluetooth jelzőfényes hőmérő: 3 lépés (képekkel)
Videó: Getting started with open-source RuuviTag environmental sensor node 2024, November
Anonim
RuuviTag és PiZero W és Blinkt! egy Bluetooth Beacon alapú hőmérő
RuuviTag és PiZero W és Blinkt! egy Bluetooth Beacon alapú hőmérő
RuuviTag és PiZero W és Blinkt! egy Bluetooth Beacon alapú hőmérő
RuuviTag és PiZero W és Blinkt! egy Bluetooth Beacon alapú hőmérő
RuuviTag és PiZero W és Blinkt! egy Bluetooth Beacon alapú hőmérő
RuuviTag és PiZero W és Blinkt! egy Bluetooth Beacon alapú hőmérő

Ez az útmutató leír egy olyan megközelítést, amely lehetővé teszi a hőmérséklet és páratartalom adatainak olvasását egy RuuviTag -ról Bluetooth -on Raspberry Pi Zero W segítségével, és az értékek bináris számokban való megjelenítését Pimoroni villogáson! pHAT. Vagy röviden: hogyan lehet a legkorszerűbb és egy kicsit ideges hőmérőt felépíteni.

A RuuviTag egy nyílt forráskódú Bluetooth -jelzőfény, amely hőmérséklet-, páratartalom-/nyomás- és gyorsulásérzékelőkkel érkezik, de működhet szabványos Eddystone ™/iBeacon közelségi jelzőfényként is. Ez egy nagyon sikeres Kickstarter projekt volt, és néhány hete megkaptam az enyémet. Van egy Github python szoftverrel a RuuviTag málna segítségével történő olvasásához, és az egyik példájukat használtam, néhány kiegészítéssel.

A Raspberry Pi Zero W az RPi család legújabb tagja, alapvetően egy Pi Zero, Bluetooth és WLAN hozzáadásával.

A pislogás! A Pimoroni pHAT alapvetően egy nyolc RBG LED -es csík, amely a Raspberry Pi HAT -jaként van konfigurálva. Nagyon könnyen használható, és python könyvtárral rendelkezik. Az ötlet az volt, hogy kiolvassa a RuuviTag adatait, és megjeleníti a blinkt segítségével! KALAP. Az értékek bináris számként jelennek meg a 7 LED segítségével, míg a nyolc egy jelzi, ha a páratartalom vagy a hőmérséklet (+/-/0) megjelennek.

1. lépés: A rendszer beállítása

A rendszer beállítása egyszerű:- Kapcsolja be a RuuviTag-ot (RuuviTag hőmérséklet-érzékelő verzió).

- Állítsa be az RPi Zero W, az RPi3 vagy bármely más, hozzáadott Bluetooth -kapacitással rendelkező RPi -t a www.raspberrypi.org oldalon található utasítások szerint.

- Helyezze a blinkt! Kalap az RPi -n (kikapcsolt állapotban).

- Telepítse a blinkt! és RuuviTag szoftver, a megfelelő GitHub oldalakon feltüntetett módon.

- Most be kell azonosítania a RuuviTag MAC -címét

- másolja a csatolt Python programot, nyissa meg az IDLE for Python 3 programmal

- módosítsa a RuuviTag MAC -címét a sajátjára, majd mentse és futtassa a programot.

- bátran módosítsa és optimalizálja a programot. A program úgy jön, ahogy van, saját felelősségére kell használni, semmilyen kárért nem vállalunk felelősséget.

2. lépés: Az eszköz és a program

A készülék és a program
A készülék és a program
A készülék és a program
A készülék és a program
A készülék és a program
A készülék és a program
A készülék és a program
A készülék és a program

Amint fentebb említettük, az ötlet egy egyszerű és olcsó rendszer felépítése volt, amely kiolvassa a jeladóból származó adatokat, és megjeleníti a villogó kijelzőn a számértékeket! Kalap, vagy hasonló LED szalag.

Az RPi -alapú rendszerrel mérhető hőmérséklet értéktartománya a legtöbb esetben -50 ° C és +80 ° C között, a páratartalom 0 és 100%között van. Tehát egy olyan kijelző, amely -100 és +100 közötti értékeket tud adni, elegendő lesz a legtöbb alkalmazáshoz. A 128 -nál kisebb decimális számok bináris számként jeleníthetők meg 7 bittel (vagy LED -ekkel). A program tehát a hőmérséklet- és páratartalom -értékeket a RuuviTag -ból "lebegő" számokká veszi, és bináris számokká alakítja át, amelyeket ezután a villogó jelzés jelenít meg.

Első lépésként a számot kerekítik, elemzik, ha pozitív, negatív vagy nulla, majd az "abs" segítségével pozitív számmá alakítják. Ezután a tizedes szám 7 számjegyű bináris számmá alakul át, alapvetően 0-s és 1-es karakterláncká, amelyet a blinkt utolsó 7 pixelén elemeznek és megjelenítenek.

A hőmérsékletértékeknél az első pixel jelzi, hogy az érték pozitív (piros), nulla (bíbor) vagy negatív (kék). A páratartalom értékek kijelzése zöldre van állítva. A hőmérséklet és a páratartalom közötti megkülönböztetés egyszerűsítése érdekében a bináris képpontok fehérre vannak állítva a hőmérsékletre, és sárgára a páratartalomra. A bináris számok olvashatóságának javítása érdekében a "0" képpontokat nem kapcsolják ki teljesen, hanem sokkal gyengébben vannak beállítva, mint az "1" állapotban. Ahogy villog! A képpontok nagyon fényesek, beállíthatja az általános fényerőt a "fényes" paraméter megváltoztatásával

A program a képernyőn megjeleníti a folyamat értékeit és részeit is. Ezen kívül számos elnémított (#) nyomtatási utasítást talál. Hagytam őket, mivel hasznos lehet számukra a folyamat megértésében, ha a némítás feloldása megtörténik.

Az értékek naplófájlban is tárolhatók.

3. lépés: Programkód

A kódot kissé hibakeresettük és optimalizáltuk. Most megtalálhatja a 3. verziót (20_03_2017).

'Ez a program a hőmérséklet, a páratartalom és a nyomásértékek RuuviTag -ból történő olvasására szolgál', és a hőmérséklet és a páratartalom értékét bináris számként jeleníti meg egy Pimorini villogón! KALAP. '' '' A print_to_screen.py példán alapul, a github ruuvitag könyvtárából. '' Pi Zero W, Pi 3 vagy bármely más, bluetooth -al felszerelt RPi szükséges, és minden szükséges könyvtár telepítve van. '

importálási idő

import os from datetime import datetime

ruuvitag_sensor.ruuvi import RuuviTagSensor

blinkt importból set_clear_on_exit, set_pixel, clear, show

def temp_blinkt (bt):

# ez a rutin felveszi a hőmérséklet értékét, és bináris számként jeleníti meg a blinkt -en!

egyértelmű ()

# "1" pixel színe és intenzitása: fehér

r1 = 64 g1 = 64 b1 = 64

#"0" pixel színe és intenzitása: fehér

r0 = 5 g0 = 5 b0 = 5

# Kerekítse és konvertálja egész számgá

r = kerek (bt)

# vz az indikátor pixel algebrai jelét jelenti

if (r> 0): vz = 1 # pozitív elif (r <0): vz = 2 # negatív else: vz = 0 # zero # print (vz) i = abs (r) #print (i)

# abszolút, 7 számjegyű bináris számmá alakítani

i1 = i + 128 # az i esetén 8 számjegyű bináris számot eredményez 1 # nyomtatással (i1)

b = "{0: b}". format (i1) # konvertálni binárisra

# nyomtatás (b)

b0 = str (b) # karakterlánccá konvertálás

b1 = b0 [1: 8] #futtassa az első bitet

print ("bináris szám:", b1)

# Állítsa be a képpontokat a villogásra!

# állítsa be a bináris számot

h esetén a (0, 7) tartományban: f = (h+1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " 1, pixel ", f) else: set_pixel (f, r0, g0, b0) # print (" nulla ")

# Állítsa be az indikátor pixelt

if (vz == 1): set_pixel (0, 64, 0, 0) # piros pozitív értékek esetén elif (vz == 2): set_pixel (0, 0, 0, 64) # kék negatív értékek esetén else: set_pixel (0, 64, 0, 64) # bíbor, ha nulla

előadás()

# end of temp_blinkt ()

def hum_blinkt (bh):

# ez veszi a páratartalom értékét, és bináris számként jeleníti meg a blinkt -en!

egyértelmű()

# "1" pixel színe és intenzitása: sárga

r1 = 64 g1 = 64 b1 = 0

#0 pixel színe és intenzitása:

r0 = 5 g0 = 5 b0 = 0

# Kerekítse és alakítsa át egész számgá

r = kerek (bh)

# átalakítás abszolút, 7 számjegyű bináris számmal i = abs (r) #print (i)

i1 = i + 128 # az i esetén 8 számjegyű bináris számot ad, amely 1-gyel kezdődik

# print (i1)

b = "{0: b}". formátum (i1)

# nyomtatás (b)

b0 = str (b)

b1 = b0 [1: 8] #futtassa az első bitet

print ("bináris szám:", b1)

# Állítsa be a képpontokat a villogásra!

# állítsa a bináris számot pixelre

h esetén a (0, 7) tartományban: f = (h+1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) else: # némítás üres LED -ekre set_pixel (f, r0, g0, b0) # némítsa el az üres LED -eket

# Állítsa be az indikátor pixelt

set_pixel (0, 0, 64, 0) # zöld a páratartalomhoz

előadás()

# end of hum_blinkt ()

set_clear_on_exit ()

# Adatok olvasása a RuuviTag -ból

mac = 'EC: 6D: 59: 6D: 01: 1C' # Váltson saját készüléke mac-címére

nyomtatás („Kezdés”)

érzékelő = RuuviTagSensor (mac)

míg igaz:

data = sensor.update ()

line_sen = str.format ('Érzékelő - {0}', mac)

line_tem = str.format ('Hőmérséklet: {0} C', adatok ['hőmérséklet']) line_hum = str.format ('Páratartalom: {0} %', adatok ['páratartalom']) line_pre = str.format ('Nyomás: {0}', adatok ['nyomás'])

nyomtatás()

# kijelző hőmérséklet villog! ba = str.format ('{0}', data ['temperature']) bt = float (ba) print (bt, "Â ° C") temp_blinkt (bt) print ()

time.sleep (10) # kijelző hőmérséklet 10 másodpercig

# villogó kijelzőn a páratartalom!

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

# Törölje a képernyőt, és nyomtassa ki az érzékelő adatait a képernyőre

os.system ('clear') print ('Kilépéshez nyomja le a Ctrl+C billentyűket. / n / n') print (str (datetime.now ())) print (line_sen) print (line_tem) print (line_hum) print (line_pre) print ('\ n / n / r …….')

# Várjon néhány másodpercet, és kezdje elölről

try: time.sleep (8), kivéve a KeyboardInterrupt: # A Ctrl+C billentyűkombináció lenyomása közben a loop végrehajtása leáll nyomtatás ('Kilépés') clear () show () break

Ajánlott: