Taula de continguts:

RuuviTag i PiZero W i Blinkt! un termòmetre basat en balisa Bluetooth: 3 passos (amb imatges)
RuuviTag i PiZero W i Blinkt! un termòmetre basat en balisa Bluetooth: 3 passos (amb imatges)

Vídeo: RuuviTag i PiZero W i Blinkt! un termòmetre basat en balisa Bluetooth: 3 passos (amb imatges)

Vídeo: RuuviTag i PiZero W i Blinkt! un termòmetre basat en balisa Bluetooth: 3 passos (amb imatges)
Vídeo: Вещи, которые мистеру Уэлчу больше не разрешается делать в сборнике для чтения RPG № 1-2450 2024, Juliol
Anonim
RuuviTag i PiZero W i Blinkt! un termòmetre basat en balisa Bluetooth
RuuviTag i PiZero W i Blinkt! un termòmetre basat en balisa Bluetooth
RuuviTag i PiZero W i Blinkt! un termòmetre basat en balisa Bluetooth
RuuviTag i PiZero W i Blinkt! un termòmetre basat en balisa Bluetooth
RuuviTag i PiZero W i Blinkt! un termòmetre basat en balisa Bluetooth
RuuviTag i PiZero W i Blinkt! un termòmetre basat en balisa Bluetooth

Aquesta instrucció descriu un enfocament per llegir les dades de temperatura i humitat d’un RuuviTag mitjançant Bluetooth amb un Raspberry Pi Zero W i per mostrar els valors en nombres binaris en un parpelleig de Pimoroni. O, per dir-ho en resum, com construir un estat de la tècnica i un termòmetre una mica nerd.

El RuuviTag és un far bluetooth amb sensor de codi obert que ve amb sensors de temperatura / humitat / pressió i acceleració, però que també pot actuar com un far de proximitat Eddystone ™ / iBeacon estàndard. Va ser un projecte Kickstarter amb molt d’èxit i el vaig aconseguir fa unes setmanes. Hi ha un Github amb programari python per llegir el RuuviTag amb un gerd, i he utilitzat un dels seus exemples, amb algunes addicions.

El Raspberry Pi Zero W és l’últim membre de la família RPi, bàsicament un Pi Zero amb Bluetooth i WLAN afegits.

El parpelleig! El pHAT de Pimoroni és bàsicament una tira de vuit LED RBG configurats com a HAT per al Raspberry Pi. És molt fàcil d’utilitzar i inclou una biblioteca Python. La idea era llegir les dades del RuuviTag i mostrar-les amb el parpelleig. BARRET. Els valors es mostren com a nombres binaris mitjançant 7 dels LED, mentre que el vuit s'utilitza per indicar si es mostren els valors d'humitat o temperatura (+ / - / 0).

Pas 1: Configuració del sistema

Configurar el sistema és fàcil: - Engegueu el RuuviTag (versió del sensor de temperatura RuuviTag).

- Configureu el vostre RPi Zero W, RPi3 o qualsevol altre RPi amb capacitat de Bluetooth afegida, seguint les instruccions de www.raspberrypi.org.

- Col·loqueu el parpelleig! HAT al RPi (mentre està apagat).

- Instal·leu el parpelleig. i el programari RuuviTag, tal com s’indica a les pàgines GitHub corresponents.

- Ara heu d’identificar l’adreça MAC del vostre RuuviTag

- copieu el programa Python adjunt, obriu-lo amb IDLE per a Python 3

- canvieu l'adreça MAC del RuuviTag a la vostra i deseu i executeu el programa.

- no dubteu a modificar i optimitzar el programa. El programa ve tal com és, per utilitzar-lo sota el seu propi risc, no es fa responsable de cap dany.

Pas 2: el dispositiu i el programa

El dispositiu i el programa
El dispositiu i el programa
El dispositiu i el programa
El dispositiu i el programa
El dispositiu i el programa
El dispositiu i el programa
El dispositiu i el programa
El dispositiu i el programa

Com es va esmentar anteriorment, la idea era construir un sistema senzill i econòmic per llegir dades de la balisa i mostrar valors numèrics al parpelleig. HAT o una tira LED similar.

L’interval de valors de la temperatura que es mesurarà amb un sistema basat en RPi serà, en la majoria dels casos, entre -50 ° C i + 80 ° C, per a humitats compreses entre el 0 i el 100%. Per tant, una pantalla que pugui donar valors de -100 a +100 serà suficient per a la majoria d’aplicacions. Els nombres decimals menors de 128 es poden mostrar com a nombres binaris de 7 bits (o LED). Per tant, el programa pren els valors de temperatura i humitat del RuuviTag com a números "flotants" i els transforma en nombres binaris, que es mostren al parpelleig !.

Com a primer pas, el nombre s'arrodoneix, s'analitza si és positiu, negatiu o zero, i després es transforma en un nombre positiu mitjançant "abs". A continuació, el nombre decimal es converteix en un número binari de 7 dígits, bàsicament una cadena de 0s i 1s, que s’analitza i es mostra als darrers 7 píxels del parpelleig !.

Per als valors de temperatura, el primer píxel indica si el valor és positiu (vermell), zero (magenta) o negatiu (blau). Si es mostren els valors d'humitat, es posa en verd. Per simplificar la discriminació entre els valors de temperatura i humitat, els píxels binaris es defineixen en blanc per a temperatura i groc per a humitat. Per millorar la llegibilitat dels nombres binaris, el píxel "0" no està completament desactivat, sinó que es defineix molt més feble que en l'estat "1". Com parpellejar! els píxels són molt brillants, podeu definir la brillantor general canviant el paràmetre "brillant"

El programa també mostra els valors i les parts del procés a la pantalla. A més, trobareu diverses instruccions d’impressió silenciades (#). Els he deixat, ja que pot ser que els trobeu útils per entendre el procés si no es silencien.

Els valors també es poden emmagatzemar en un fitxer de registre.

Pas 3: Codi del programa

El codi es va depurar i optimitzar una mica. Ara podeu trobar la versió 3 (20_03_2017).

"Aquest programa està pensat per llegir els valors de temperatura, humitat i pressió que formen un RuuviTag" i mostrar els valors de temperatura i humitat com a nombres binaris en un parpelleig de Pimorini. BARRET. '' '' Es basa en l'exemple print_to_screen.py de la biblioteca ruuvitag de github. '' Requereix un Pi Zero W, Pi 3 o qualsevol altre RPi equipat amb bluetooth i totes les biblioteques necessàries instal·lades. ''

temps d'importació

importació des de datetime

des de la importació ruuvitag_sensor.ruuvi RuuviTagSensor

des d'importació de parpelleig set_clear_on_exit, set_pixel, clear, show

def temp_blinkt (bt):

# aquesta rutina pren el valor de la temperatura i el mostra com un número binari en parpelleig.

clear ()

# color i intensitat de píxels "1": blanc

r1 = 64 g1 = 64 b1 = 64

#color i intensitat de píxels "0": blanc

r0 = 5 g0 = 5 b0 = 5

# Arrodoneix i converteix en enter

r = rodó (bt)

# vz representa el signe algebraic del píxel indicador

if (r> 0): vz = 1 # elif positiu (r <0): vz = 2 # negative else: vz = 0 # zero # print (vz) i = abs (r) #print (i)

# transforma en número binari absolut de 7 dígits

i1 = i + 128 # per a resulta en un número binari de 8 dígits que comença amb 1 # imprimir (i1)

b = "{0: b}". format (i1) # convertir a binari

# print (b)

b0 = str (b) # convertir a cadena

b1 = b0 [1: 8] #truncate primer bit

print ("número binari:", b1)

# Estableix píxels en parpelleig.

# defineix el número binari

per h en l'interval (0, 7): f = (h + 1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " és 1, píxel ", f) else: set_pixel (f, r0, g0, b0) # print (" nul ")

# Estableix el píxel indicador

if (vz == 1): set_pixel (0, 64, 0, 0) # vermell per a valors positius elif (vz == 2): set_pixel (0, 0, 0, 64) # blau per a valors negatius else: set_pixel (0, 64, 0, 64) # magenta si és zero

espectacle()

# end of temp_blinkt ()

def hum_blinkt (bh):

# això pren el valor d'humitat i el mostra com un número binari en parpelleig.

clear ()

# color i intensitat de píxels "1": groc

r1 = 64 g1 = 64 b1 = 0

#color i intensitat de píxels "0":

r0 = 5 g0 = 5 b0 = 0

# Arrodoneix i transforma en enter

r = rodó (bh)

# transforma a número binari absolut de 7 dígits i = abs (r) #print (i)

i1 = i + 128 # per a i dóna un número binari de 8 dígits que comença per 1

# print (i1)

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

# print (b)

b0 = str (b)

b1 = b0 [1: 8] #truncate primer bit

print ("número binari:", b1)

# Estableix píxels en parpelleig.

# defineix el número binari en píxels

per h en l'interval (0, 7): f = (h + 1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) else: # silenciar a LEDs en blanc set_pixel (f, r0, g0, b0) # silenci a LEDs en blanc

# Estableix el píxel indicador

set_pixel (0, 0, 64, 0) # verd per obtenir humitat

espectacle()

# end of hum_blinkt ()

set_clear_on_exit ()

# Lectura de dades del RuuviTag

mac = 'EC: 6D: 59: 6D: 01: 1C' # Canvia a l'adreça mac del teu propi dispositiu

imprimir ("Començar")

sensor = RuuviTagSensor (mac)

mentre que és cert:

data = sensor.update ()

line_sen = str.format ('Sensor: {0}', mac)

line_tem = str.format ('Temperatura: {0} C', dades ['temperatura']) line_hum = str.format ('Humitat: {0}%', dades ['humitat']) line_pre = str.format ('Pressió: {0}', dades ['pressió'])

imprimir()

# temperatura de visualització en parpelleig. ba = str.format ('{0}', data ['temperature']) bt = float (ba) print (bt, "Â ° C") temp_blinkt (bt) print ()

time.sleep (10) # temperatura de visualització durant 10 segons

# mostra la humitat en parpellejar.

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

# Esborreu la pantalla i imprimiu les dades del sensor a la pantalla

os.system ('clear') print ('Premeu Ctrl + C per sortir. / n / n') print (str (datetime.now ())) print (line_sen) print (line_tem) print (line_hum) print (line_pre)) print ('\ n / n / r …….')

# Espereu uns segons i torneu a començar de nou

try: time.sleep (8) excepte KeyboardInterrupt: # Quan es prem Ctrl + C l'execució del bucle mentre s'atura imprimeix ('Surt') clear () show () break

Recomanat: