Tabla de contenido:

Termómetro Bluetooth: 8 pasos
Termómetro Bluetooth: 8 pasos

Video: Termómetro Bluetooth: 8 pasos

Video: Termómetro Bluetooth: 8 pasos
Video: DIGITAL THERMOMETER FROM THE CELL PHONE VIA BLUETOOTH (PRACTICE 08) 2024, Mes de julio
Anonim
Termómetro bluetooth
Termómetro bluetooth
Termómetro bluetooth
Termómetro bluetooth
Termómetro bluetooth
Termómetro bluetooth

Este instructivo detalla la fabricación de un termómetro simple de 2 canales usando sondas de termistor de 100K, un módulo Bluetooth y un teléfono inteligente. El módulo Bluetooth es un LightBlue Bean que fue diseñado para simplificar el desarrollo de la aplicación Bluetooth Low Energy mediante el uso del entorno familiar Arduino para programar el módulo.

Después de tropezar durante un tiempo tratando de averiguar cómo obtener los datos de temperatura del módulo Bluetooth a mi iPhone, encontré una aplicación llamada EvoThings que simplificó considerablemente el desarrollo de aplicaciones del proyecto. No tengo una Mac (¡lo que es sorprendente, lo sé!), Lo que limita mi capacidad para desarrollar una aplicación para iPhone, y no tengo tiempo para descifrar las nuevas herramientas de Microsoft que evidentemente son compatibles con el desarrollo multiplataforma para iOS y Android. He hecho varias aplicaciones de estilo HTML5, pero la única forma de acceder a los datos de Bluetooth es a través de complementos para Cordova, que parecían más desafiantes de lo que tenía tiempo. EvoThings proporciona un conjunto de herramientas muy fácil de usar que convirtió el desafío de Bluetooth a iPhone en un juego de niños. ¡Y me gusta el pastel!

En general, encontré que la combinación de Lightblue Bean y EvoThings es una solución muy práctica con poca inversión de tiempo.

Paso 1: Cosas que necesitará

Cosas que necesitará
Cosas que necesitará
Cosas que necesitará
Cosas que necesitará
Cosas que necesitará
Cosas que necesitará

Usé una sonda de termistor disponible comercialmente para un canal porque quería sellar el termistor para inmersión en líquidos. Para el segundo canal, hice una sonda básica con un termistor, un cable de calibre 26 y un conector para auriculares de 3,5 mm. Usted es libre de usar los termistores que desee y puede hacer sus propias sondas a partir de epoxi termoconductor y pajitas de plástico / agitadores de café, por ejemplo. Lo que sigue es lo que utilicé: ¡no pretende ser una lista prescriptiva!

Hardware

  • 1 sonda termistor de 100 K. Modelo Extech TP890. Estos están comúnmente disponibles en eBay y Amazon.
  • 2 conectores estéreo de 2,5 mm que coinciden con el conector de 2,5 mm de las sondas Extech. Busqué enchufes de 3,5 mm de una computadora vieja, así que corté el enchufe de la sonda Extech y lo reemplacé con enchufes de 3,5 mm. Debe evitar esto y solo use conectores de 2.5 mm, o use un enchufe adaptador estéreo estándar de 2.5 mm a 3.5 mm.
  • Cuenta de termistor de 100K más cable de calibre 26 más enchufe estéreo de 3,5 mm si desea hacer su propia sonda. Si no es así, ¡compre una segunda sonda Extech!
  • 1 x Frijol azul claro de Punch Through Designs. Este es el módulo Bluetooth programable como placa de desarrollo Arduino. El módulo es un poco caro pero elimina mucha complejidad. Están ejecutando una campaña de Kickstarter para el dispositivo de próxima generación que podría valer la pena considerar.
  • 2 resistencias de 1 / 4W 100K que se utilizan para dividir la tensión de referencia de los termistores. Usé resistencias al 5%, pero las resistencias de mayor tolerancia son generalmente menos sensibles a la temperatura y proporcionarán un mejor rendimiento. El 1% es un buen valor de tolerancia para esto.
  • Soldador y soldadura
  • Cortadores de alambre y algunas longitudes pequeñas de alambre de conexión de calibre 26 o 28.

Software y firmware

  • Para programar el Bean, necesitará la aplicación Bean Loader. He usado Windows, por lo que todos los enlaces serán específicos de Windows. Todo lo que necesita para comenzar con el Bean, incluidos los detalles específicos de Arduino, está disponible en el sitio LightBlueBean
  • El banco de trabajo EvoThings para la aplicación de teléfono inteligente está disponible aquí. Toda la documentación de "cómo empezar" también está disponible allí. Está muy bien documentado.

Paso 2: el circuito y la construcción eléctrica

El circuito y la construcción eléctrica
El circuito y la construcción eléctrica
El circuito y la construcción eléctrica
El circuito y la construcción eléctrica
El circuito y la construcción eléctrica
El circuito y la construcción eléctrica

Un termistor es una resistencia dependiente de la temperatura. La sonda Extech tiene un coeficiente de temperatura negativo, lo que significa que a medida que aumenta la temperatura, la resistencia disminuye. El valor de la resistencia se mide con un circuito simple que crea un divisor de voltaje con el termistor en una pata y una resistencia fija de 100K en la otra. El voltaje dividido se alimenta a un canal de entrada analógica en el Bean y se muestrea en el firmware.

Para construir el circuito, busqué conectores de audio de 3,5 mm de una vieja PC rota. Se utilizó un multímetro para determinar los dos puntos del PCB que correspondían a la punta y la primera banda de la sonda. Se soldaron cables a las tomas de audio y al Bean como se muestra en las imágenes. Las tomas de audio se pegaron al área del prototipo del Bean usando cinta de doble cara. La cinta que utilicé es una cinta adhesiva de grado automotriz que crea una unión muy fuerte entre las partes del remolque.

Paso 3: Coeficientes de sonda

Coeficientes de sonda
Coeficientes de sonda

Tan común como es la sonda Extech, los coeficientes de Steinhart-Hart no se publican en ningún lugar que pueda encontrar. Afortunadamente, existe una calculadora en línea que determinará los coeficientes a partir de las 3 mediciones de temperatura que proporciones.

What foillows es el procedimiento básico que utilicé para llegar a los coeficientes. No ganaré ningún punto por estilo, pero lo suficientemente bueno como para que digas +/- 1 grado de precisión (un pulgar total de mi parte)…. dependiendo de la precisión de su termómetro y multímetro de referencia, ¡por supuesto! Mi multímetro es una unidad barata sin marca que compré hace muchos años cuando el dinero escaseaba. ¡El dinero todavía es escaso y todavía funciona!

Para calibrar, necesitamos tres lecturas de resistencia de 3 temperaturas.

  • Casi congelar agregando hielo a un vaso de agua y revolviendo hasta que la temperatura se estabilice. Una vez estabilizado, utilice el multímetro para registrar la resistencia de la sonda y el termómetro de referencia para registrar la temperatura.
  • Ahora coloque la sonda en un vaso de agua a temperatura ambiente, permita que la sonda se iguale con la temperatura del agua y registre la temperatura en su termómetro de referencia y la lectura de resistencia en su multímetro.
  • Coloque la sonda en un vaso de agua caliente y registre la resistencia.

    Temperatura Resistencia
    5.6 218K
    21.0 97,1 mil
    38.6 43.2

Todo este proceso es un poco como la situación del huevo y la gallina, ya que necesita un termómetro calibrado para registrar la temperatura y un multímetro calibrado para registrar la resistencia. Los errores aquí darán como resultado inexactitudes en las mediciones de temperatura que realice, pero para mis propósitos, +/- 1 grado es más de lo que necesito.

Conectar estos valores registrados en la calculadora web produce lo siguiente:

Imagen
Imagen

Los coeficientes (A, B y C) se insertan en la ecuación de Stenhart-Hart para determinar la temperatura a partir de un valor de resistencia muestreado. La ecuación se define como (fuente: wikipedia.com)

Imagen
Imagen

Donde T = Temperatura en Kelvin

A, B y C son los coeficientes de la ecuación de Steinhart-Hart que estamos tratando de determinar R es la resistencia a la temperatura T

El firmware realizará este cálculo.

Paso 4: firmware

Firmware
Firmware
Firmware
Firmware

Los voltajes del termistor se muestrean, se convierten a temperatura y se envían a través de Bluetooth a la aplicación EvoThings que se ejecuta en el teléfono inteligente.

Para convertir el voltaje en un valor de resistencia dentro del Bean, se usa una ecuación lineal simple. La derivación de la ecuación se proporciona como una imagen. En lugar de convertir el valor muestreado en voltaje, dado que tanto el ADC como el voltaje de entrada están referenciados al mismo voltaje de la batería, podemos usar el valor de ADC en lugar del voltaje. Para el Bean ADC de 10 bits, el voltaje total de la batería dará como resultado un valor ADC de 1023, por lo que usamos este valor como Vbat. El valor real de la resistencia divisora es una consideración importante. Mida el valor real de la resistencia divisora de 100 K y utilice el valor medido en la ecuación para evitar una fuente de error innecesaria debido a la tolerancia de la resistencia.

Una vez que se calcula el valor de resistencia, el valor de resistencia se convierte a temperatura utilizando la ecuación de Steinhart-Hart. Esta ecuación se describe en detalle en Wikipedia.

Debido a que tenemos 2 sondas, tenía sentido encapsular la funcionalidad de la sonda en una clase C ++.

La clase encapsula los coeficientes de la ecuación de Steinhart-Hart, el valor nominal de la resistencia del divisor y el puerto analógico al que está conectado el termistor. Un solo método, temperatura (), convierte el valor de ADC en un valor de resistencia y luego usa la ecuación de Steinhart-Hart para determinar la temperatura en Kelvin. El valor de retorno resta el cero absoluto (273,15 K) de la temperatura calculada para proporcionar el valor en grados Celsius.

El poder del Lightblue Bean es evidente en el hecho de que toda la funcionalidad de Bluetooth se implementa esencialmente en una línea de código que escribe los valores de temperatura muestreados en un área de datos de la memoria de Bluetooth.

Bean.setScratchData (TEMPERATURE_SCRATCH_IDX, (uint8_t *) y temperatura [0], 12);

Cada valor de temperatura muestreado está representado por un flotador que ocupa 4 bytes. El área de datos reutilizables puede contener 20 bytes. Solo usamos 12 de ellos. Hay 5 áreas de datos reutilizables para que pueda transferir hasta 100 bytes de datos utilizando datos temporales.

El flujo básico de eventos es:

  • Comprueba si tenemos conexión Bluetooth.
  • Si es así, muestree las temperaturas y escríbalas en el área de datos temporales.
  • Duerme 200ms y repite el ciclo.

Si no está conectado, el firmware pone el chip ATMEGA328P en reposo durante mucho tiempo. El ciclo del sueño es importante para conservar energía. El chip ATMEGA328P entra en modo de bajo consumo y permanece allí hasta que lo interrumpe el módulo Bluetooth LBM313. El LBM313 generará una interrupción para despertar el ATMEGA328P al final del período de suspensión solicitado, o siempre que se establezca una conexión Bluetooth con el Bean. La funcionalidad WakeOnConnect se habilita llamando explícitamente a Bean.enableWakeOnConnect (true) durante setup ().

Es importante tener en cuenta que el firmware funcionará con cualquier aplicación cliente BLE. Todo lo que el cliente necesita hacer es quitar los bytes de temperatura del banco de datos temporal y volver a ensamblarlos en números de punto flotante para su visualización o procesamiento. La aplicación cliente más sencilla para mí fue usar EvoThings.

Paso 5: Aplicación para teléfono inteligente

Aplicación para smartphone
Aplicación para smartphone

La aplicación de muestra Evo Things está muy cerca de lo que necesitaba con solo un pequeño esfuerzo requerido para agregar los elementos de visualización adicionales para completar el dispositivo de medición de temperatura de 3 canales.

La instalación y el funcionamiento básico de la plataforma EvoThings están muy bien documentados en el sitio web de Evo Things, por lo que no vale la pena repetirlo aquí. Todo lo que cubriré aquí son los cambios específicos que realicé en su código de muestra para mostrar 3 canales de información de temperatura, extraídos del área de datos cero de Bluetooth.

Una vez que haya instalado EvoThings Workbench, encontrará el ejemplo de Lightblue Bean aquí (en computadoras con Windows de 64 bits):

ThisPC / Documents / EvothingsStudio_Win64_1. XX / Examples / Lightblue-bean-basic / app

Puede reemplazar los archivos index.html y app.js con los archivos adjuntos a este paso. Los cambios realizados en el archivo jacascript extraen los 3 valores de temperatura de punto flotante que forman el área de datos cero y suben el HTML interno de los nuevos elementos creados en el archivo HTML.

function onDataReadSuccess (datos) {

var temperatureData = new Float32Array (datos);

var bytes = nuevo Uint8Array (datos);

var temperature = temperatureData [0];

console.log ('Lectura de temperatura:' + temperatura + 'C');

document.getElementById ('temperatureAmbient'). innerHTML = temperatureData [0].toFixed (2) + "C °";

document.getElementById ('temperatura1'). innerHTML = temperatureData [1].toFixed (2) + "C °";

document.getElementById ('temperatura2'). innerHTML = temperatureData [2].toFixed (2) + "C °";

}

Paso 6: Recinto

Recinto
Recinto
Recinto
Recinto
Recinto
Recinto
Recinto
Recinto

El recinto es una simple caja impresa en 3D. Usé Cubify Design para crear el diseño, pero cualquier programa de modelado 3D será suficiente. El archivo STL se adjunta para que imprima el suyo. Si tuviera que hacerlo de nuevo, haría las paredes un poco más gruesas de lo que son ahora y cambiaría el diseño del clip que sostiene la tabla en su lugar. Los clips se rompen muy fácilmente porque la tensión se encuentra en el mismo plano que las capas impresas en 3D, que es la orientación más débil para las piezas impresas en 3D. Las paredes son muy delgadas, por lo que el mecanismo de ajuste es un poco débil. Usé cinta adhesiva transparente para mantener la caja cerrada porque las paredes eran demasiado endebles; no es elegante, ¡pero funciona!

Paso 7: Configuración de PC y configuración de Bluetooth

Configuración de PC y configuración de Bluetooth
Configuración de PC y configuración de Bluetooth

El ciclo de creación y carga de firmware para el Bean se realiza a través de Bluetooth. Solo puede haber una conexión Bluetooth activa a la vez. Bean Loader está disponible en la tienda de aplicaciones de Windows.

El ciclo básico que utilizo para emparejar y conectar (y reparar y volver a conectar cuando las cosas van mal) es el siguiente: Desde el Panel de control; / Configuración de Bluetooth, debería ver la siguiente pantalla:

Imagen
Imagen

Eventualmente, Windows informará "Listo para emparejar". En este punto, puede hacer clic en el icono de Bean y, después de unos segundos, Windows le pedirá que ingrese un código de acceso. El código de acceso predeterminado para el bean es 00000

Imagen
Imagen

Si la contraseña se ingresa correctamente, Windows mostrará que el dispositivo está conectado correctamente. Debe estar en este estado para poder programar el Bean.

Imagen
Imagen

Una vez que esté emparejado y conectado, use el Bean Loader para cargar el firmware en el bean. Encontré que esto fallaba la mayoría de las veces y parecía estar relacionado con la proximidad a mi computadora. Mueva el Bean hasta que encuentre una ubicación que funcione para usted. Hay ocasiones en las que nada funcionará y Bean Loader sugerirá volver a emparejar el dispositivo. Por lo general, volver a realizar el proceso de emparejamiento restaurará la conexión. Debe "Quitar el dispositivo" antes de volver a emparejar.

Imagen
Imagen

La operación Bean Loader es sencilla y está bien documentada en su sitio. Con Bean Loader abierto, elija el elemento de menú "Programa" para abrir un cuadro de diálogo para buscar el archivo Hex proporcionado en el paso de firmware de este instructivo.

Imagen
Imagen

Una vez que se haya cargado el firmware, CIERRE el Bean Loader para que se interrumpa la conexión entre el Bean Loader y el hardware Bean. Solo puede tener una conexión a la vez. Ahora abra el banco de trabajo EvoThings e inicie el cliente EvoThings en el teléfono inteligente o tableta.

Imagen
Imagen

Al hacer clic en el botón "Ejecutar", el cliente de EvoThings cargará automáticamente la página html del termómetro. Haga clic en el botón Conectar para conectarse al Bean y debería ver las temperaturas mostradas. ¡Éxito!

Paso 8: Conclusión

Conclusión
Conclusión

Si todo está construido y configurado correctamente, debe tener un sistema en funcionamiento que le permita monitorear las temperaturas con 2 sondas, así como monitorear la temperatura del sensor BMA250 en la placa de desarrollo Bean. Hay más que se puede hacer con EvoThings - ¡Acabo de raspar la superficie, así que dejo esta experimentación para ti! ¡Gracias por leer! Si las cosas salen mal, deja comentarios y te ayudaré en lo que pueda.

Recomendado: