Tabla de contenido:
Video: RuuviTag y PiZero W y Blinkt! un termómetro basado en baliza Bluetooth: 3 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
Este instructivo describe un enfoque para leer datos de temperatura y humedad de un RuuviTag usando Bluetooth con una Raspberry Pi Zero W y para mostrar los valores en números binarios en un Pimoroni blinkt. pHAT. O, en pocas palabras: cómo construir un termómetro de vanguardia y un poco nerd.
El RuuviTag es una baliza bluetooth con sensor de código abierto que viene con sensores de temperatura / humedad / presión y de aceleración, pero también puede actuar como una baliza de proximidad estándar Eddystone ™ / iBeacon. Fue un proyecto de Kickstarter con mucho éxito y obtuve el mío hace unas semanas. Hay un Github con software python para leer el RuuviTag usando una frambuesa, y he usado uno de sus ejemplos, con algunas adiciones.
La Raspberry Pi Zero W es el último miembro de la familia RPi, básicamente un Pi Zero con Bluetooth y WLAN agregados.
¡El blinkt! pHAT de Pimoroni es básicamente una tira de ocho LED RBG configurados como HAT para Raspberry Pi. Es muy fácil de usar y viene con una biblioteca de Python. La idea era leer los datos del RuuviTag y mostrarlos usando el blinkt! SOMBRERO. Los valores se muestran como números binarios usando 7 de los LED, mientras que el ocho se usa para indicar si se muestran los valores de humedad o temperatura (+ / - / 0).
Paso 1: configurar el sistema
Configurar el sistema es fácil: - Encienda el RuuviTag (versión con sensor de temperatura RuuviTag).
- Configure su RPi Zero W, RPi3 o cualquier otro RPi con capacidad bluetooth agregada, siguiendo las instrucciones en www.raspberrypi.org.
- ¡Coloca el blinkt! SOMBRERO en el RPi (mientras está apagado).
- Instale el blinkt! y el software RuuviTag, como se indica en las páginas de GitHub correspondientes.
- Ahora tiene que identificar la dirección MAC de su RuuviTag
- copie el programa Python adjunto, ábralo con IDLE para Python 3
- cambie la dirección MAC del RuuviTag por la suya, luego guarde y ejecute el programa.
- no dude en modificar y optimizar el programa. El programa viene como está, para ser utilizado bajo su propio riesgo, no se asume ninguna responsabilidad por daños.
Paso 2: el dispositivo y el programa
Como se mencionó anteriormente, la idea era construir un sistema simple y económico para leer datos de la baliza y mostrar valores numéricos en el blinkt. HAT, o una tira de LED similar.
El rango de valores de temperatura a medir con un sistema basado en RPi estará en la mayoría de los casos entre - 50 ° C y + 80 ° C, para humedad entre 0 y 100%. Por tanto, una pantalla que pueda dar valores de -100 a +100 será suficiente para la mayoría de las aplicaciones. Los números decimales más pequeños como 128 se pueden mostrar como números binarios con 7 bits (o LED). Entonces, el programa toma los valores de temperatura y humedad del RuuviTag como números "flotantes" y los transforma en números binarios, que luego se muestran en el blinkt !.
Como primer paso, el número se redondea, se analiza si es positivo, negativo o cero, y luego se transforma en un número positivo usando "abs". Luego, el número decimal se convierte en un número binario de 7 dígitos, básicamente una cadena de 0 y 1, que se analiza y se muestra en los últimos 7 píxeles del blinkt !.
Para los valores de temperatura, el primer píxel indica si el valor es positivo (rojo), cero (magenta) o negativo (azul). Al mostrar los valores de humedad, se establece en verde. Para simplificar la discriminación entre los valores de temperatura y humedad, los píxeles binarios se establecen en blanco para la temperatura y en amarillo para la humedad. Para mejorar la legibilidad de los números binarios, los píxeles "0" no se desactivan por completo, sino que se configuran mucho más débiles que en el estado "1". ¡Como blinkt! los píxeles son muy brillantes, puede configurar el brillo general cambiando el parámetro "brillante"
El programa muestra los valores y partes del proceso también en pantalla. Además, encontrará varias instrucciones de impresión silenciadas (#). Los dejé, ya que pueden resultarle útiles para comprender el proceso si no están silenciados.
Los valores también pueden almacenarse en un archivo de registro.
Paso 3: Código de programa
El código fue un poco depurado y optimizado. Ahora puede encontrar la versión 3 (20_03_2017).
'¡Este programa está diseñado para leer los valores de temperatura, humedad y presión de un RuuviTag' 'y mostrar los valores de temperatura y humedad como números binarios en un parpadeo de Pimorini! SOMBRERO. '' '' Se basa en el ejemplo print_to_screen.py de la biblioteca ruuvitag en github. '' Requiere un Pi Zero W, Pi 3 o cualquier otro RPi equipado con bluetooth y todas las bibliotecas necesarias instaladas. '
tiempo de importación
importar sistema operativo desde fecha y hora importar fecha y hora
de ruuvitag_sensor.ruuvi importar RuuviTagSensor
de blinkt import set_clear_on_exit, set_pixel, clear, show
def temp_blinkt (bt):
# ¡esta rutina toma el valor de temperatura y lo muestra como un número binario en blinkt!
claro ()
# color e intensidad de "1" píxeles: blanco
r1 = 64 g1 = 64 b1 = 64
#color e intensidad de "0" píxeles: blanco
r0 = 5 g0 = 5 b0 = 5
# Redondea y convierte en entero
r = redondo (bt)
# vz representa el signo algebraico del píxel indicador
if (r> 0): vz = 1 # positivo elif (r <0): vz = 2 # negativo else: vz = 0 # cero # print (vz) i = abs (r) #print (i)
# transformar en número binario absoluto de 7 dígitos
i1 = i + 128 # para i da como resultado un número binario de 8 dígitos que comienza con 1 # print (i1)
b = "{0: b}". formato (i1) # convertir a binario
# imprimir (b)
b0 = str (b) # convertir a cadena
b1 = b0 [1: 8] #truncar el primer bit
print ("número binario:", b1)
# ¡Establecer píxeles en blinkt!
# establecer número binario
para h en el rango (0, 7): f = (h + 1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " es 1, pixel ", f) else: set_pixel (f, r0, g0, b0) # print (" nil ")
# Establecer píxel indicador
if (vz == 1): set_pixel (0, 64, 0, 0) # rojo para valores positivos elif (vz == 2): set_pixel (0, 0, 0, 64) # azul para valores negativos else: set_pixel (0, 64, 0, 64) # magenta si es cero
show()
# final de temp_blinkt ()
def hum_blinkt (bh):
# ¡Esto toma el valor de humedad y lo muestra como un número binario en blinkt!
claro()
# color e intensidad de "1" píxeles: amarillo
r1 = 64 g1 = 64 b1 = 0
#color e intensidad de "0" píxeles:
r0 = 5 g0 = 5 b0 = 0
# Redondea y transforma en entero
r = redondo (bh)
# transformar a un número binario absoluto de 7 dígitos i = abs (r) #print (i)
i1 = i + 128 # para i da un número binario de 8 dígitos que comienza con 1
# imprimir (i1)
b = "{0: b}". formato (i1)
# imprimir (b)
b0 = str (b)
b1 = b0 [1: 8] #truncar el primer bit
print ("número binario:", b1)
# ¡Establecer píxeles en blinkt!
# establecer el número binario en píxeles
para h en el rango (0, 7): f = (h + 1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) else: # mute to blank LED set_pixel (f, r0, g0, b0) # silenciar a LED en blanco
# Establecer píxel indicador
set_pixel (0, 0, 64, 0) # verde para humedad
show()
# final de hum_blinkt ()
set_clear_on_exit ()
# Leer datos de RuuviTag
mac = 'EC: 6D: 59: 6D: 01: 1C' # Cambie a la dirección mac de su propio dispositivo
print ('Comenzando')
sensor = RuuviTagSensor (mac)
mientras que es cierto:
datos = sensor.update ()
line_sen = str.format ('Sensor - {0}', mac)
line_tem = str.format ('Temperatura: {0} C', datos ['temperatura']) line_hum = str.format ('Humedad: {0}%', datos ['humedad']) line_pre = str.format ('Presión: {0}', datos ['presión'])
impresión()
# muestra la temperatura en blinkt! ba = str.format ('{0}', data ['temperatura']) bt = float (ba) print (bt, "Â ° C") temp_blinkt (bt) print ()
time.sleep (10) # muestra la temperatura durante 10 segundos
# mostrar la humedad en blinkt!
bg = str.format ('{0}', data ['humedad']) bh = float (bg) print (bh, "%") hum_blinkt (bh) print ()
# Limpiar la pantalla e imprimir los datos del sensor en la pantalla
os.system ('clear') print ('Presiona Ctrl + C para salir. / n / n') print (str (datetime.now ())) print (line_sen) print (line_tem) print (line_hum) print (line_pre) imprimir ('\ n / n / r …….')
# Espere unos segundos y comience de nuevo
try: time.sleep (8) excepto KeyboardInterrupt: # Cuando se presiona Ctrl + C, la ejecución del ciclo while se detiene print ('Exit') clear () show () break
Recomendado:
Baliza de pronóstico del tiempo: 4 pasos (con imágenes)
Baliza meteorológica: En este proyecto presento un modelo de una baliza meteorológica local que realicé utilizando impresión 3D, franjas LED, una fuente de alimentación y una placa Arduino con conexión wifi para acceder a la previsión meteorológica del día siguiente. El objetivo principal del
Use el teléfono inteligente como termómetro sin contacto / termómetro portátil: 8 pasos (con imágenes)
Use el teléfono inteligente como termómetro sin contacto / termómetro portátil: mide la temperatura corporal con un termómetro sin contacto / sin contacto como una pistola térmica. Creé este proyecto porque Thermo Gun ahora es muy caro, así que debo buscar una alternativa para hacer bricolaje. Y el propósito es hacer con una versión de bajo presupuesto. SuministrosMLX90614Ardu
Termómetro infrarrojo sin contacto basado en Arduino - Termómetro basado en infrarrojos con Arduino: 4 pasos
Termómetro infrarrojo sin contacto basado en Arduino | Termómetro basado en infrarrojos con Arduino: Hola chicos, en este instructivo, haremos un termómetro sin contacto con arduino, ya que a veces la temperatura del líquido / sólido es demasiado alta o demasiado baja y luego es difícil hacer contacto con él y leer su temperatura entonces en ese escenario
Generador de música basado en el clima (generador Midi basado en ESP8266): 4 pasos (con imágenes)
Generador de música basado en el clima (Generador Midi basado en ESP8266): Hola, hoy explicaré cómo hacer tu propio generador de música basado en el clima. Está basado en un ESP8266, que es como un Arduino, y responde a la temperatura, la lluvia y la intensidad de la luz. No espere que haga canciones completas o programas de acordes
Termómetro digital basado en Picaxe con máximo y mínimo: 13 pasos
Termómetro digital basado en Picaxe con Max y Min: (Por favor, deje un mensaje, pero no sea demasiado crítico, ¡este es mi primer instructivo!) Este es un termómetro que hice para nuestra autocaravana, para mostrar la temperatura externa. Se basa en un chip Picaxe ya que son baratos y fáciles de usar. Si esto es para