Monitor de temperatura con Bluetooth usando Arduino Nano
Componentes y suministros
| Arduino Nano R3 | × | 1 |
| Cables de conexión (genéricos) | × | 1 |
| Módulo Bluetooth HC-06 | × | 1 |
| Termistor NTC | × | 1 |
| Resistencia 10k ohm | × | 1 |
| Resistencia 1k ohm | × | 1 |
| Resistencia 2.21k ohm | × | 1 |
Herramientas y máquinas necesarias
- Soldador (genérico) - Opcional
- Impresora 3D (genérica) - Opcional
Aplicaciones y servicios en línea
- MIT App Inventor 2
Sobre este proyecto
En este tutorial te mostraré cómo configurar un controlador de temperatura Arduino que envía valores a una aplicación Android mediante conexión Bluetooth.
Empecemos con el material que necesitarás para construir este proyecto:
- Arduino Nano.
- Termistor NTC, verifica la resistencia a 25°C ya que esto será necesario en el código de Arduino para evaluar correctamente la temperatura usando la fórmula beta.
- Resistencias, 2k, 1k y una de la misma magnitud que el termistor.
- Módulo Bluetooth HC-06.
- Varios jumpers.
Primero necesitarás comenzar a ensamblar el divisor de voltaje usado para el termistor; la figura 1 muestra la conexión que necesitas hacer para calcular la resistencia desconocida del termistor como función de la temperatura.
Figura 1 Divisor de voltaje para evaluación de la resistencia del termistor.
Este circuito permite al Arduino determinar la caída de voltaje después de la resistencia desconocida. Usando el valor de la otra resistencia, somos capaces de calcular el valor de la resistencia desconocida usando la siguiente parte del código (figura 2).
raw= analogRead(analogPin);
if(raw) {
ratio = raw * Vin;
Vout = (ratio)/1024.0;
ratio = (Vin/Vout) -1;
R2= R1 * ratio;
Figura 2 Código de Arduino para evaluación de la resistencia del termistor.
La resistencia obtenida se convierte entonces a temperatura usando la fórmula beta (figura 3).
NOTA: ¡El valor beta de tu termistor y Ro a 25°C están disponibles en la hoja de datos de tu termistor! ¡Revísalo antes de ejecutar el código!
Temp = Beta/log(R2/(Ro*exp(-Beta/To)));
Temp = Temp -273.15;
Figura 3 Código de Arduino para conversión de temperatura.
Luego necesitarás configurar tu módulo Bluetooth; la figura 4 muestra cómo conectar un módulo Bluetooth como el que usé en este proyecto al anterior. Se requiere un divisor de voltaje para conectar el pin TX1 del Arduino al pin RX del módulo ya que este solo acepta 3.3V como entrada.
Figura 4 Esquemático del Arduino con módulo HC-06.
Los datos pueden enviarse a través del módulo Bluetooth inicializando el puerto serie e imprimiendo los valores deseados. En este ejemplo necesité que el dispositivo midiera la temperatura en el rango 25-75°C, para empezar a contar aproximadamente 300 segundos a alta temperatura y luego cambiar el mensaje impreso (figura 5).
void setup() {
Serial.begin(9600);
}
void loop(){
if(Temp >= 74) {
for (int i = 0; i <= 30; i++) {
Serial.print("Temperature >= 74 °C");
delay(10000);
}
Serial.print("Heating Complete");
delay(10000);
} else if (Temp <= 26){
Serial.print("Temperature <= 25 °C");
delay(10000);
} else {
Serial.print("Temperature: ");
Serial.println(Temp);
delay(10000);
}
}
Figura 5 Código de Arduino para inicialización serie e impresión de valores.
El dispositivo final ensamblado en una protoboard se puede ver en la figura 6.
Figura 6 Dispositivo completo en una protoboard.
El paso final es la conexión del módulo Bluetooth a un teléfono Android para visualización de datos. Una aplicación simple ha sido programada usando MIT App Inventor 2. Las figuras 7 y 8 muestran respectivamente la interfaz de usuario y los bloques de programación.
Figura 7 Interfaz de usuario hecha con AppInventor2.
Figura 8 Bloques de programación de AppInventor2.
La aplicación propuesta está disponible en la galería de App Inventor en el siguiente enlace: https://ai2.appinventor.mit.edu/#5876233188016128
De todos modos, usando el simple e intuitivo sistema de programación por bloques de App Inventor, se pueden construir muchas otras aplicaciones para cumplir cualquier propósito que desees. Por ejemplo, necesité que la aplicación me notificara con un sonido si la temperatura baja de 25°C para realizar alguna medición y notificar después de 5 minutos a 75°C que mi ciclo de calentamiento está completo.
Opcional: Un paso final podría ser soldar los componentes e imprimir en 3D alguna caja para mantener las piezas juntas. La figura 9 muestra el resultado de tal enfoque.
Figura 9 Dispositivo completo listo para usar.
Se ha hecho un agujero en el lateral de esta caja para alimentar el Arduino con el cable mini USB. El cable largo rojo y negro se ha añadido solo para aumentar la distancia entre el termistor y el resto del dispositivo (necesito el termistor para comprobar la temperatura de soluciones, así que quería los componentes electrónicos lo más lejos posible).
Espero que este proyecto simple te ayude a entender los fundamentos de la comunicación serie con módulo Bluetooth para aplicarlo a tus propios proyectos.
Si encuentras algún error o simplemente quieres preguntar algo, házmelo saber.
EDIT: Encontré un error en el cableado del esquema para el divisor de voltaje necesario para el módulo Bluetooth. Se ha solucionado.
EDIT2: Si tienes problemas para subir tu código a la placa, intenta desconectando el módulo Bluetooth.
Código
Monitor de temperatura con módulo Bluetooth Arduino
Para calcular la resistencia del termistor NTC, se aplican 5V a este en serie con una resistencia conocida de magnitud aproximadamente igual (en este ejemplo 10kohm). A través del pin analógico A0 se calcula el voltaje del divisor de voltaje hecho de la resistencia en serie y usando el valor conocido de una resistencia, se calcula la resistencia NTC. Este valor se convierte entonces a temperatura usando la ecuación beta (cambia el beta al que estés usando) y se envía a la aplicación Android usando el módulo Bluetooth. El código puede cambiarse para monitorear un rango específico de temperatura; en este ejemplo necesité monitorear entre 25 y 75°C y esperar 5 minutos a la temperatura más alta.
// Monitor de temperatura con módulo Bluetooth
int analogPin= 0;
int raw= 0;
int Vin= 5;
float Vout= 0;
float R1= 10000; //cambiar a tu sistema
float Ro= 10000; //cambiar a tu sistema
float R2= 0;
float ratio= 0;
float Temp = 0;
float Beta = 3694; //cambiar a tu sistema
float To = 298.15; // el termistor va de 10k a 25°C. Elige la resistencia de referencia acorde
void setup() {
Serial.begin(9600);
}
void loop() {
raw= analogRead(analogPin);
if(raw) {
ratio = raw * Vin;
Vout = (ratio)/1024.0;
ratio = (Vin/Vout) -1;
R2= R1 * ratio;
Temp = Beta/log(R2/(Ro*exp(-Beta/To)));
Temp = Temp -273.15;
if(Temp >= 74) {
for (int i = 0; i <= 30; i++) {
Serial.print("Temperature >= 74 °C"); //cambiar a tu sistema
delay(10000);
}
Serial.print("Heating Complete");
delay(10000);
} else if (Temp <= 26){
Serial.print("Temperature <= 25 °C"); //cambiar a tu sistema
delay(10000);
} else {
Serial.print("Temperature: "); //cambiar a tu sistema
Serial.println(Temp);
delay(10000);
}
}
}
Esquemas
La resistencia R2 debe cambiarse de acuerdo con la resistencia del termistor que vayas a usar. El error en la lectura de temperatura aumenta con el sesgo (Rdesconocido - R2).
Proceso de manufactura
- Monitor de temperatura y humedad en red con Raspberry Pi – Guía DIY completa
- Construya un Monitor de Temperatura ThingSpeak con Raspberry Pi y BrickPi
- Monitoriza la temperatura de tu casa con un panel Raspberry Pi
- Alerta de Sed Inteligente para Plantas: Sensor DIY para Riego Óptimo
- Reloj de Palabras en Italiano con Arduino Nano, NeoPixel, LCD y RTC
- Medidor kWh Sigfox Fiable con Arduino MKR Fox 1200
- Cerradura por Gestos Sin Contacto: Acceso Seguro con APDS-9960 y Arduino
- Kit Compañero Arduino Nano: Componentes y Herramientas Esenciales para Electrónica DIY
- Kit Adaptador USB MIDI para Arduino Micro / Leonardo: Lista Completa de Componentes
- Circuito de entrada analógica aislada para Arduino
- Test de Precisión de Tiempo de Reacción con Arduino UNO