Archivo de la etiqueta: dht11

Nuevos bloques para tarjetas SD

Los nuevos bloques para trabajar con tarjetas SD o microSD (según el módulo o shield utilizado) nos permiten guardar datos en archivos almacenados en la tarjeta. Esto nos abre un mundo de posibilidades a la hora de almacenar datos para su posterior procesamiento o descarga. Una utilización típica de las tarjetas SD sería como “data logger” (registro o histórico de datos)

 

Los módulos o shields de tarjetas SD se conectan por interfaz SPI (pines 11,12,13) y un pin para CS (normalmente conectado en el pin 4):

Antes que nada, debes actualizar a la versión 2 de ArduinoBlocks-Connector si no los has hecho ya…

Descripción de los bloques en ArduinoBlocks para trabajo con archivos en tarjetas SD:

Los nombres especificados de archivo deben ser con formato corto 8.3  (máximo 8 caracteres para el nombre y 3 para la extensión, Ejempo “log.txt”). Se recomienda evitar espacios y caracteres raros en los nombre de los archivos.

  • Iniciar SD: Inicializa el uso del módulo SD indicando los pines donde está conectado:
  • Imprimir: Escribe un texto en un archivo dentro de la SD. Añade una línea al final del archivo. Funciona como print o println
  • Escribir byte: Escribe un un byte al final del archivo indicado, esto permite trabajar con archivos binarios o con archivos de texto a nivel de caracter.

  • Leer byte: Permite leer un carácter (en caso de ser un archivo de texto) o un valor numérico si el archivo lo tratamos como un archivo binario (valor de un byte => 8 bits => valor entre 0…255). Debemos indicar la posición de donde leer (podemos usar el bloque “Tamaño de archivo” para determinar hasta donde podemos leer).

  • Eliminar archivo: Permite eliminar un archivo de la tarjeta SD.
  • Tamaño de archivo: Obtiene el tamaño en bytes del archivo.
  • Leer cada byte: permite recorrer un bucle para leer el archivo y obtener el valor del byte o caracter leído en cada iteración.

Ejemplo: Volcado del contenido de un archivo por la consola sere:

Ejemplo: Registrar la temperatura y humedad cada minuto:

http://arduinoblocks.com/web/project/866

Otros proyectos usando los bloques de tarjetas SD:

Datalogger GPS con tarjeta SD/microSD

Compartir

Termostato con Arduino Uno, DHT11 y LCD

Termostato con Arduino Uno, sensor DHT11 y  pantalla LCD I2C

Un termostato es un dispositivo que, conectado a una fuente de calor, sirve para regular la temperatura de manera automática, impidiendo que suba o baje del grado adecuado

Con el frío necesitamos controlar correctamente la calefacción de nuestra casa, esto se traduce en comodidad y ahorro energético.

Realizar un termostato con ArduinoBlocks es muy sencillo, vamos a ver las diferentes partes que necesitamos:

  • Obtener la temperatura ambiente con un sensor de temperatura DHT11 conectado al pin digital 3:

  • Potenciómetro para permitir que el usuario pueda fijar la temperatura deseada. Mapearemos el valor del potenciómetro de 0 a 30, para un valor menor de 5 desactivaremos el termostato y con valores entre 5 y 30 el termostato estará operativo (así ahorramos poner un botón de encender y apagar). Conectado al pin analógico A0:

 

  • Módulo de relé para activar la fuente calor (caldera, radiador, calefactor, …). Conectado al pin digital 4:

 

  • LCD con conexión I2C (pines A4 y A5) para mostrar la información:

Esquema de conexiones:

Montaje real con módulos:

Programa por bloques:

El programa por bloques se ha dividido en funciones para dividir los diferentes procesos y ver el funcionamiento más claro.

El programa refresca la información cada 1s, el sensor de temperatura puede sufrir oscilaciones momentáneas por fallo en los contactos de la placa de prototipos, mal conexión de los cables, cambios bruscos en la alimentación (al activarse o desactivarse el relé puede afectar a la alimentación y crear picos que afecten a los componentes). Por este motivo el valor de temperatura se hace una media con el valor anterior para suavizar estos cambios bruscos. En una versión mejorada se podría hacer la media de los últimos 5 valores por ejemplo para mayor precisión, pero así se ha probado y se amortigua bastante bien los posibles saltos bruscos del sensor.

Por otro lado se implementa un sistema básico de histéresis para evitar cambios de estado muy rápidos en el relé cuando estamos en un valor de temperatura ambiente muy próximo al de la temperatura seleccionada. A la hora de procesar y decidir el estado del termostato se añade un grado por arriba como límite para desactivar el termostato y se resta un grado por debajo como límite para activar el tersmotato.

Por ejemplo si seleccionamos 22 grados no se apagará la calefacción hasta superar los 23º y no se activará hasta bajar de los 21º  es decir -1º y +1º de margen

Este margen se puede ajustar según la precisión del sensor y la inercia térmica del tipo de calefacción (si el sistema de calefacción es muy rápido el valor de esta variable será más alto, si no más bajo)

Programa completo:

http://arduinoblocks.com/web/project/616

 

Y recuerda, para dominar ArduinoBlocks tienes disponible el libro oficial en Amazon:

Compartir