Construir tu termómetro Arduino DIY es una forma divertida y práctica de expandir tus habilidades de retoque, pero ¿por dónde deberías empezar? Únase a nosotros mientras profundizamos en el cableado y la codificación necesarios para convertir un Arduino, una sonda de temperatura DS18B20, y una pantalla OLED en un termómetro digital preciso que puede funcionar bien en habitaciones, peceras e incluso al aire libre.

¿Qué necesitas para hacer un termómetro digital Arduino DIY?

Todos estos componentes se pueden encontrar en sitios web como eBay y Amazon.

Una placa Arduino

Puede usar casi cualquier Arduino con una salida de 5V para este proyecto. Estamos usando un Arduino Pro Micro para que nuestro termómetro terminado sea compacto, pero puede usar una placa más grande como Arduino Uno si desea evitar la soldadura para este proyecto.

Sonda de temperatura DS18B20

Los sensores de temperatura DS18B20 se pueden encontrar como pequeños sensores independientes, PCB con sensores conectados o como sondas a prueba de agua en cables largos. Elegimos este último, ya que nos permite usar nuestro termómetro dentro de una pecera, pero puede elegir cualquier variante del sensor de temperatura DS18B20. A diferencia de otros tipos de sensores de temperatura, los DS18B20 proporcionan una señal directa a digital a su Arduino, en lugar de las señales analógicas que provienen de opciones como los sensores de temperatura LM35.

instagram viewer

Una pantalla OLED/LCD

La pantalla que elija para su termómetro tendrá un gran impacto en el producto terminado. Elegimos una pantalla OLED blanca monocromática compatible con I2C de 1,3 pulgadas para nuestro termómetro, pero puede elegir lo que quiera siempre que sea compatible con I2C.

Piezas pequeñas adicionales

  • Resistencia de 4,7 K (kiloohmios)
  • Cable aislado de silicona/PVC de 28 a 22 AWG
  • Una placa de pruebas (opcional para aquellos que no deseen soldar)

Cableado de su termómetro de bricolaje

El cableado para este proyecto es mucho más simple de lo que imagina. Usando el diagrama de circuito anterior, puede crear su propio termómetro digital de bricolaje con poco esfuerzo, pero también hemos desglosado el diagrama a continuación para que sea más fácil de seguir.

Cableado de la sonda de temperatura DS18B20

El cableado correcto de la sonda de temperatura DS18B20 es vital para este proyecto, y debe asegurarse de usar la resistencia de 4,7 K que mencionamos anteriormente o la sonda no funcionará correctamente. La sonda viene con tres cables: tierra (generalmente negro), VCC (generalmente rojo) y datos.

  • VCC se conecta a un pin de 5V en tu Arduino
  • Ground se conecta a un pin GND en tu Arduino
  • Los datos se pueden conectar a cualquier pin digital en tu Arduino (elegimos el pin digital 15)
  • Los cables de datos y VCC también deben conectarse entre sí con una resistencia de 4,7 K.

Cableado de la pantalla OLED I2C

Como estamos usando una conexión I2C entre nuestra pantalla OLED y nuestro Arduino, solo tenemos que conectar cuatro cables antes de que podamos comenzar a usar nuestra pantalla: VCC, Tierra, SDA y SCL. Casi todos los Arduino modernos tienen pines SDA y SCL incorporados, lo que brinda la capacidad de conectar hasta 128 componentes I2C únicos a una sola placa.

Nuestro Arduino Pro Micro tiene SDA en el pin digital 2 y SCL en el pin digital 3, pero es posible que deba buscar un diagrama de pines de la placa específica que ha elegido antes de comenzar.

  • VCC se conecta a un pin de 5V en tu Arduino
  • Ground se conecta a un pin GND en tu Arduino
  • SDA se conecta al pin SDA en tu Arduino
  • SCL se conecta al pin SCL en tu Arduino

Probando su circuito

Es crucial que pruebe el circuito que ha creado antes de empezar a escribir el código final, pero puede usar los proyectos de ejemplo que vienen con las bibliotecas que se analizan a continuación para probar el circuito que tiene hecha.

Codificación de su sensor de temperatura y pantalla OLED

Codificar su termómetro digital de bricolaje es más complicado que cablearlo, pero el IDE de Arduino se puede usar para hacerlo más fácil.

Elegir las bibliotecas correctas

  • Biblioteca de pantallas OLED: Estamos usando la biblioteca Adafruit_SH1106.h para nuestra pantalla, ya que esta es la biblioteca con la que fue diseñada para trabajar. Otras pantallas OLED puede usar sus propias bibliotecas, como la biblioteca Adafruit_SSD1306.h, y generalmente puede averiguar cuál necesita en la página del producto de donde obtuvo su pantalla.
  • Sonda de temperatura DS18B20: Necesitamos dos bibliotecas para nuestra sonda de temperatura. DallasTemperature.h se utiliza para recopilar datos de temperatura y OneWire.h para hacer posible nuestra conexión de un solo cable.

Una vez que estas bibliotecas se hayan instalado e incluido en su proyecto, su código debería parecerse al fragmento de código a continuación. Tenga en cuenta que también hemos incluido código para configurar los pines de nuestros componentes.

#incluir  //Mostrar biblioteca
#incluir
#incluir //Biblioteca de sonda temporal
#definir OLED_RESET -1
Pantalla Adafruit_SH1106 (OLED_RESET);
#define ONE_WIRE_BUS 15 //Pin del cable de datos de la sonda de temperatura
un cable un cable (ONE_WIRE_BUS); //Dile a OneWire qué pin estamos usando
Sensores de temperatura Dallas(&oneWire); //Referencia de OneWire a la temperatura de Dallas

Construyendo las funciones

  • configuración nula: Estamos usando el estándar configuración función para inicializar tanto nuestro display como nuestra sonda de temperatura.
  • bucle vacío: Nuestro estándar lazo La función solo se usará para llamar a nuestro Mostrar función.
  • pantalla nula: Hemos añadido un Mostrar función que llama a nuestro Temperatura función y proporciona información a nuestra pantalla.
  • temperatura interna: Nuestro Temperatura La función se utiliza para obtener una lectura de temperatura para nuestro Mostrar función.

Una vez completado, esto debería verse como el fragmento a continuación.

configuración vacía () {
}
bucle vacío () {
}
pantalla vacía () {
}
temperatura int() {
}

Codificación de la pantalla OLED

Antes de que podamos agregar código a nuestro Mostrar función, debemos asegurarnos de que el panel OLED esté inicializado en nuestro configuración nula función. Primero, usamos un mostrar.comenzar comando para iniciar la pantalla, seguido de un pantalla.clearDisplay Comando para asegurarse de que la pantalla esté clara.

configuración vacía () {
pantalla.begin (SH1106_SWITCHCAPVCC, 0x3C); //Cambio basado en su biblioteca de visualización
pantalla.clearDisplay();
}

Desde aquí, podemos agregar código a nuestro Mostrar función. Esto comienza con otro pantalla.clearDisplay comando, antes de declarar una nueva variable entera con un valor que llama al Temperatura función (cubriremos esto más adelante). Entonces podemos usar esta variable para mostrar la temperatura en la pantalla usando el siguiente código.

pantalla vacía () {
pantalla.clearDisplay();
int intTemp = Temp(); //Llama a nuestra función Temp
mostrar.establecerTamañoTexto (3); //Establece nuestro tamaño de texto
pantalla.setTextColor (BLANCO); //Establece nuestro color de texto
mostrar.setCursor (5, 5); //Establece nuestra posición de texto en la pantalla
pantalla.imprimir (intTemp); //Imprime el valor proporcionado por la función Temp
display.drawCircle (44, 7, 3, BLANCO); //Dibuja un símbolo de grado
mostrar.setCursor (50, 5);
mostrar.imprimir("C"); //Agrega C para indicar que nuestra temperatura esta en Celsius
}

Codificación de la sonda de temperatura DS18B20

Al igual que nuestra pantalla, nuestra sonda de temperatura también necesita un código de configuración para inicializar el componente.

configuración vacía () {
pantalla.begin (SH1106_SWITCHCAPVCC, 0x3C);
pantalla.clearDisplay();
sensores.begin();
}

Luego, es hora de programar la sonda en sí, y necesitamos agregar código a nuestro Temperatura función. Primero, solicitaremos la temperatura de nuestra sonda, luego registraremos el resultado como una variable flotante y la convertiremos en un número entero. Si este proceso tiene éxito, la temperatura vuelve al Mostrar función.

temperatura int() {
sensores.requestTemperatures(); // Enviar el comando para obtener temperaturas
float tempC = sensores.getTempCByIndex (0); //Esto solicita la temperatura en Celsius y la asigna a un flotador
int intTemp = (int) tempC; //Esto convierte el flotante en un entero
if (tempC != DEVICE_DISCONNECTED_C) //Comprueba si nuestra lectura funcionó
{
devuelve intTemp; //Devolver nuestro valor de temperatura a la función Display
}
}

Terminando

Finalmente, solo tenemos que decirle a nuestro principal lazo función para llamar a nuestro Mostrar función con cada ciclo del código, dejándonos con un proyecto que se ve así.

#incluir  //Mostrar biblioteca
#incluir
#incluir //Biblioteca de sonda temporal
#definir OLED_RESET -1
Pantalla Adafruit_SH1106 (OLED_RESET);
#define ONE_WIRE_BUS 15 //Pin del cable de datos de la sonda de temperatura
un cable un cable (ONE_WIRE_BUS); //Dile a OneWire qué pin estamos usando
Sensores de temperatura Dallas(&oneWire); //Referencia de OneWire a la temperatura de Dallas
configuración vacía () {
pantalla.begin (SH1106_SWITCHCAPVCC, 0x3C);
pantalla.clearDisplay();
sensores.begin();
}
bucle vacío () {
Mostrar(); //Llama a nuestra función de visualización
}
pantalla vacía () {
pantalla.clearDisplay();
int intTemp = Temp(); //Llama a nuestra función Temp
mostrar.establecerTamañoTexto (3); //Establece nuestro tamaño de texto
pantalla.setTextColor (BLANCO); //Establece nuestro color de texto
mostrar.setCursor (5, 5); //Establece nuestra posición de texto en la pantalla
pantalla.imprimir (intTemp); //Imprime el valor proporcionado por la función Temp
display.drawCircle (44, 7, 3, BLANCO); //Dibuja un símbolo de grado
mostrar.setCursor (50, 5);
mostrar.imprimir("C"); //Agrega C para indicar que nuestra temperatura esta en Celsius
}
temperatura int() {
sensores.requestTemperatures(); // Enviar el comando para obtener temperaturas
float tempC = sensores.getTempCByIndex (0); //Esto solicita la temperatura en Celsius y la asigna a un flotador
int intTemp = (int) tempC; //Esto convierte el flotante en un entero
if (tempC != DEVICE_DISCONNECTED_C) //Comprueba si nuestra lectura funcionó
{
devuelve intTemp; //Devolver nuestro valor de temperatura a la función Display
}
}

Construcción de un termómetro digital de bricolaje

Este proyecto debe ser divertido e informativo, al mismo tiempo que te da la oportunidad de hacer un artículo práctico. Hemos diseñado este código para que sea lo más simple posible, pero puede usarlo como base para un proyecto más complicado a medida que aprende.

15 grandes proyectos de Arduino para principiantes

¿Está interesado en los proyectos de Arduino pero no sabe por dónde empezar? Estos proyectos para principiantes te enseñarán cómo empezar.

Leer siguiente

CuotaPíoCorreo electrónico
Temas relacionados
  • bricolaje
  • arduino
  • Electrónica
Sobre el Autor
samuel l Garbett (35 artículos publicados)

Samuel es un escritor de tecnología con sede en el Reino Unido apasionado por todo lo relacionado con el bricolaje. Habiendo iniciado negocios en los campos del desarrollo web y la impresión 3D, además de haber trabajado como escritor durante muchos años, Samuel ofrece una visión única del mundo de la tecnología. Centrándose principalmente en proyectos tecnológicos de bricolaje, nada le gusta más que compartir ideas divertidas y emocionantes que puedes probar en casa. Fuera del trabajo, generalmente se puede encontrar a Samuel montando en bicicleta, jugando videojuegos de PC o intentando desesperadamente comunicarse con su cangrejo mascota.

Más de Samuel L. Garbett

Suscríbete a nuestro boletín

¡Únase a nuestro boletín para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!

Haga clic aquí para suscribirse