Llego nuevo y presento mi Proyecto con Arduino

Muy buenas, llego nuevo al foro después de haber estado investigando mucho sobre todo el entorno Arduino y las posibilidades que ofrece.
Mi nombre es Víctor y usaré este Proyecto como Proyecto Fin de Carrera de Ingeniería Industrial.
Mi idea es construir una estación de toma de datos para una piscina climatizada. Me explico:
Quiero crear una estación que tome datos con sensores sobre variables que pueden ser de interés y utilidad en una instalación que es una piscina climatizada. Éstas características a medir pueden ser, por ejemplo, temperatura ambiente, temperatura del agua, humedad relativa, luminosidad y calidad del aire.
También me gustaría que ésta información fuera recogida por Arduino a través de módulos instalados y enviada a un ordenador para su análisis. Contemplaría aquí la opción de comunicación inalámbrica (bluetooth o wifi) o cableada.

¿Alguien que me alumbre, oriente, de ideas o me marque el camino por dónde empezar?

Tengo una placa Arduino Leonardo y estoy haciendo los tutoriales de encender Leds y demás.

Al igual que tu estoy empezando con esto de Arduino.
Aunque podría comentar algo al respecto.

La temperatura ambiente Podrías usar un LM35 es un sensor de Temperatura.
Temperatura del agua, No conozco el número exacto pero sé que si existe más de alguno.
Humedad relativa, No conozco el número exacto pero sé que si existe más de alguno
Luminosidad, Podrías usar un LDR o fotocelda.
calidad del aire. No conozco.
bluetooth Supongo que hay varios compatibles con arduino
Wifi. Creo que con NRF20L01

Revisa las Librerías y los datasheet de los componentes.

Buenos dias,

Yo estoy haciendo algo parecido pero estoy tomando datos intensidad y corriente de una placa solar y tambien de una estacion meteorologica. Yo he usado un arduino mega y una tarjeta SD para guardar los datos. Es muy facil programar para la SD y funciona perfectamente. Podriamos estar en contacto viendo el parecido de nuestros proyectos fin de carrera.

Aitor46:
Buenos dias,

Yo estoy haciendo algo parecido pero estoy tomando datos intensidad y corriente de una placa solar y tambien de una estacion meteorologica. Yo he usado un arduino mega y una tarjeta SD para guardar los datos. Es muy facil programar para la SD y funciona perfectamente. Podriamos estar en contacto viendo el parecido de nuestros proyectos fin de carrera.

vitro012:
Al igual que tu estoy empezando con esto de Arduino.
Aunque podría comentar algo al respecto.

La temperatura ambiente Podrías usar un LM35 es un sensor de Temperatura.
Temperatura del agua, No conozco el número exacto pero sé que si existe más de alguno.
Humedad relativa, No conozco el número exacto pero sé que si existe más de alguno
Luminosidad, Podrías usar un LDR o fotocelda.
calidad del aire. No conozco.
bluetooth Supongo que hay varios compatibles con arduino
Wifi. Creo que con NRF20L01

Revisa las Librerías y los datasheet de los componentes.

Perfecto, muchas gracias por vuestra ayuda! Estamos en contacto Aitor46

¿Alguien que sepa de algún sensor de calidad del aire que mida concentración de un gas específico en el aire?

Hola,

No se que gas necesitas detectar o controlar, de todas formas si pones en ebay.es la busqueda de "arduino gas sensor" te devolvera un monton de sensores de gas diferentes: humo, metano, monoxido de carbono, dioxido de carbono, butano, gas natural, ...

no se si te sirve de algo la respuesta... espero que si...

Hasta ahora, he montado en una protoboard una pantalla LCD 48x84, un sensor de temperatura y humedad DHT11 y un modulo reloj RTC DS1307.
Lo he hecho funcionar todo por separado con los codigos de ejemplo y ningún problema.
Estoy intentando que funcione todo junto, el sensor tome datos y se muestren por pantalla junto con la hora y fecha.
Aqui pongo mi código y explico el problema que tengo: Cuando inicio la pantalla en el void setup{} y muestro un mensaje de inicio, lo hace perfectamente. Pero cuando entro en el void loop{} y le pido que muestre los datos sobre fecha, hora, temperatura y humedad, no me muestra nada.
A ver si alguien puede echarme una mano con esto!!

/* PRUEBA DE CONEXION Y COMUNICACION PANTALLA,RELOJ Y SENSOR DE TEMPERATURA
++ LOS PINES DE CONEXION DE CADA MODULO ESTAN NUMERADOS DE IZQ. A DER.++

[ CONEXION PINES DE LA PANTALLA LCD ]

  • Pin 1 (RST) -> Arduino digital 6 (D6)
  • Pin 2 (CE) -> Arduino digital 7 (D7)
  • Pin 3 (DC) -> Arduino digital 5 (D5)
  • Pin 4 (DIN) -> Arduino digital 4 (D4)
  • Pin 5 (CLK) - Arduino digital 3 (D3)
  • Pin 6 (Vcc) -> 3.3V
  • Pin 7 (LIGHT) -> NO CONECTAR
  • Pin 8 (GND) -> GND

[CONEXION PINES DEL SENSOR DE TEMPERATURA Y HUMEDAD]

  • Pin 1 (Vcc) -> +5V
  • Pin 2 (DATA) -> D7 Arduino
  • Pin 3 (NC) -> No Conectar
  • Pin 4 (GND) -> GND

[CONEXION PINES DEL RELOJ]

  • Pin 1 (GND) -> GND
  • Pin 2 (Vcc) -> +5V
  • Pin 3 (SDA) -> SDA Arduino
  • Pin 4 (SCL) -> SCL Arduino
    */

//IMPORTAR LIBRERIAS PARA CONTROLAR MODULOS
#include <Adafruit_GFX.h> //libreria de pantalla LCD
#include <Adafruit_PCD8544.h> //libreria de pantalla LCD
// Adafruit_PCD8544 display = Adafruit_PCD8544(SCLK, DIN, DC, CS, RST);
Adafruit_PCD8544 display = Adafruit_PCD8544(6, 5, 4, 3, 2);

#include <DHT.h> //Libreria del sensor de temperatura y humedad DHT11
#define DHTPIN 7 // Se indica en que pin digital esta conectado el sensor
#define DHTTYPE DHT11 // Indicamos el tipo de sensor DHT 11
DHT dht(DHTPIN, DHTTYPE);

#include <Wire.h> //Libreria protocolo comunicacion I2C
#include "RTClib.h" //libreria de modulo reloj
RTC_DS1307 RTC;

void setup () {

Serial.begin(9600); //Inicio comunicacion puerto serie
display.begin(); //Inicio pantalla
display.setContrast(60); //Defino contraste apropiado
display.clearDisplay(); //limpio la pantalla

dht.begin(); //Inicio sensor DHT11

// IMPRIMO MENSAJE DE COMIENZO POR PANTALLA

display.setTextSize(1);
display.setTextColor(BLACK);
display.setCursor(0,0);
display.println("PRUEBA DE");
display.setCursor(24, 8);
display.print("PROYECTO");
display.setCursor(1, 24);
display.print("lcd-reloj");
display.setCursor(0, 32);
display.print("temp&humedad");
display.setCursor(0, 40);
display.print("version ");
display.setTextColor(WHITE, BLACK);
display.print("1.0");
display.display();
delay (10000);
display.clearDisplay();

Wire.begin(); //inicio comunicacion I2C
Wire.beginTransmission(0x68); //Inicio comunicacion con direccion del reloj
Wire.write(0x07); // move pointer to SQW address
Wire.write(0x10); // sends 0x10 (hex) 00010000 (binary) to control register - turns on square wave
Wire.endTransmission();

RTC.begin(); //Inicio comunicacion reloj
// RTC.adjust(DateTime(DATE, TIME));
// Descomenta la linea de arriba si necesitas ajustar el reloj
if (! RTC.isrunning()) {
Serial.println("Algo falla en el reloj!");

}
}

void loop () {

DateTime now = RTC.now(); //tomo datos del reloj
//Muestra informacion del reloj en puerto serie
Serial.print(now.day(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.year(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();

//muestra informacion del reloj en pantalla
display.setTextSize(1);
display.setTextColor(BLACK);
display.setCursor(0,0);
display.println("HORA");
display.setCursor(0,8);
display.print(now.hour(), DEC);
display.print(':');
display.print(now.minute(), DEC);
display.print(':');
display.print(now.second(), DEC);
display.setCursor(0,16);
display.println("FECHA");
display.setCursor(0,24);
display.print(now.day(), DEC);
display.print('/');
display.print(now.month(), DEC);
display.print('/');
display.print(now.year(), DEC);
display.display();
delay(5000);
display.clearDisplay();

// PROCESO PARA IMPRIMIR TEMPERATURA Y HUMEDAD EN PANTALLA Y SERIE

// La lectura de la temperatura o de la humedad lleva sobre 250 milisegundos
// La lectura del sensor tambien puede estar sobre los 2 segundos (es un sensor muy lento)
int h = dht.readHumidity(); //Guarda la lectura de la humedad en la variable float h
int t = dht.readTemperature(); //Guarda la lectura de la temperatura en la variable float t

// Comprobamos si lo que devuelve el sensor es valido, si no son numeros algo esta fallando
if (isnan(t) || isnan(h)) // funcion que comprueba si son numeros las variables indicadas
{
Serial.println("Fallo al leer del sensor DHT"); //Mostramos mensaje de fallo si no son numeros
} else {

//Mostramos mensaje con valores actuales de humedad y temperatura
Serial.print("Humedad relativa: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.println(" *C");
//Mostramos los valores actuales de humedad y temperatura por pantalla
display.setTextSize(1);
display.setTextColor(BLACK);
display.setCursor(0,0);
display.println("Humedad (%)");
display.setCursor(0,8);
display.print(h);
display.setCursor(0,16);
display.print("Temperatura (ºC)");
display.setCursor(0,24);
display.print(t);
display.display();
delay (10000);
display.clearDisplay();

}
}

He de decir que por el puerto serie se muestra todo perfecto, pero no sale nada en pantalla en el bucle de toma de datos =(