Taula de continguts:
Vídeo: RuuviTag i PiZero W i Blinkt! un termòmetre basat en balisa Bluetooth: 3 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
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
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:
Utilitzeu el telèfon intel·ligent com a termòmetre sense contacte / termòmetre portàtil: 8 passos (amb imatges)
Utilitzeu el telèfon intel·ligent com a termòmetre sense contacte / termòmetre portàtil: mesurant la temperatura corporal sense contacte / sense contacte com una termopistola. Vaig crear aquest projecte perquè Thermo Gun ara és molt car, de manera que he de tenir una alternativa per fer bricolatge. I el propòsit és fer amb una versió de baix pressupost.SuppliesMLX90614Ardu
Termòmetre infraroig sense contacte basat en Arduino - Termòmetre basat en IR mitjançant Arduino: 4 passos
Termòmetre infraroig sense contacte basat en Arduino | Termòmetre basat en IR que utilitza Arduino: Hola nois, en aquest instructable farem un termòmetre sense contacte amb arduino, ja que de vegades la temperatura del líquid / sòlid és massa alta o baixa a la temperatura i és difícil fer-hi contacte i llegir-ne temperatura llavors en aquell escenari
Generador de música basat en el temps (generador de midi basat en ESP8266): 4 passos (amb imatges)
Generador de música basat en el temps (generador de midi basat en ESP8266): Hola, avui explicaré com fer el vostre propi generador de música basat en el temps. Es basa en un ESP8266, que és com un Arduino, i respon a la temperatura, a la pluja i intensitat lumínica. No espereu que faci cançons senceres o progrés d’acords
Balisa LED giratòria virtual (Rundumlicht): 5 passos
Balisa LED giratòria virtual (Rundumlicht): aquí teniu la meva primera balisa LED rotativa * virtual * molt petita. I el meu primer instructable també! Es basa en 4 x 0603 LED SMD. Només necessiten una habitació d’uns 2,5 mm3. Per fer que la llum rodona es veiés més realista vaig escriure un programa en un PIC12F
Termòmetre digital basat en Picaxe amb màxima i mínima: 13 passos
Termòmetre digital basat en Picaxe amb màxima i mínima: (Si us plau, deixeu un missatge, però no sigueu massa crítics, aquest és el meu primer instructable !!) Aquest és un termòmetre que he fet per a la nostra furgoneta camper, per mostrar la temperatura exterior. Es basa en un xip Picaxe, ja que són econòmics i fàcils d’utilitzar. Si això és per