Buenas, ayer se me olvidó poner una imagen del circuito ya montado, así que lo pondré ahora.

Circuito Montado v0.1

Bueno ahora vamos a ver el código, primero debemos saber la estructura a seguir:

– Incluimos librerías, creamos constantes y variables necesarias.
– Configuramos el dispositivo.
– Recogemos los datos de los sensores.
– Actualizamos los actuadores según los datos recogidos.
– Otras etapas que aún no explicaremos.

Bien tras saber las etapas, debemos tener en cuenta la linealización de los sensores que según sea el dato recogido por los sensores, arduino lo mostrará de 0 a 1023. Entonces,

– Sensor de Humedad:
50% de Humedad corresponde a 2,41 V.
Y arduino da el valor de 1023 para 5 V.

– Sensor de Luminosidad:
Y arduino da el valor de 1023 para 5 V, según nuestro conexionado sería que no hay luz.

– Sensor de Temperatura:
1ºF corresponde a 10 mV.
1ºC corresponde según esta fórmula (ºF-32)/1,8
Y arduino da el valor de 1023 para 150 ºC.

– Sensor de Movimiento:
Y arduino da el valor de 0 para 0V, es decir no se ha producido movimiento.

Bien sabiendo todo esto, proseguimos a rellenar el código en las etapas correspondientes,

Primero definir las constantes y variables necesarias, así como las librerías necesarias:

#include // para uso general

// Constantes
#define SECOND 1000 // Tiempo de espera (1 seg)
#define BAUDIOS 9600

// Direccion Nodo
int direccionNodo= 55; //modificar para cada nodo

// puertos de los sensores
int sensorTem = 5; //temperatura
//proseguir para cada sensor

// puertos de los leds, que serán nuestros actuadores
int ledPinGreenTem = 13;
//...
int ledPinRedHum = 2;
// proseguimos con los demás pines de salida...

//puertos para hacer funcionar el sensor de movimiento
int entsensorMov=4;

// valores de los sensores por defecto
int valorLum = -1; //luminosidad
// damos valores que nunca podrían darse...

// valores predefinidos
float temMin = 20; //temperatura minima
float temMax = 25; //temperatura maxima
float humMin = 30; //humedad minima

Bien, ahora proseguimos con la configuración del dispositivo,

void setup(){

Serial.begin(BAUDIOS);

//Configuracion de los sensores que son de entrada
pinMode(sensorLum,INPUT);
//para cada sensor rellenar...

//Configuracion de los leds, nuestros actuadores
pinMode(ledPinGenLum, OUTPUT);
pinMode(ledPinMesLum, OUTPUT);
//Y otras entradas
pinMode(entsensorMov, OUTPUT);

delay(SECOND);

}

Ahora recogemos los datos de los sensores,

void loop(){
//Inicializacion
digitalWrite(entsensorMov, HIGH);

//Recogida de datos
Serial.println("Recogiendo Datos...");
valorLum = analogRead(sensorLum); // valor de la luminosidad lo pasamos en %
valorTem = analogRead(sensorTem)*4.8875/10; // valor de la temperatura, segun linealizacion y conversion, lo tenemos en ºF
valorTem = (valorTem-32)/1.8; // pasamos el valor de la temperatura a ºC
valorHum = analogRead(sensorHum)*0.0977; // valor de la humedad lo pasamos en %
valorMov = analogRead(sensorMov);//maximo del sensor movimiento 1023 y minimo 0

//Muestra de datos...
Serial.print("Luminosidad: ");
Serial.print(valorLum);
//hacemos lo mismo para cada dato

Y por último accionamos los actuadores, en nuestro caso encender los leds correspondientes.

//Comprobación de los datos de cada sensor hacemos igual...
//Comprobación de la temperatura
if (valorTem > temMax){
Serial.println("Estado Temperatura Alta");
digitalWrite(ledPinRedTem, HIGH);
digitalWrite(ledPinBlueTem, LOW);
digitalWrite(ledPinGreenTem, LOW);
}else if (valorTem < temMin){
Serial.println("Estado Temperatura Baja");
digitalWrite(ledPinRedTem, LOW);
digitalWrite(ledPinBlueTem, HIGH);
digitalWrite(ledPinGreenTem, LOW);
}else{
Serial.println("Estado Temperatura OK");
digitalWrite(ledPinRedTem, LOW);
digitalWrite(ledPinBlueTem, LOW);
digitalWrite(ledPinGreenTem, HIGH);
}

delay(SECOND);
Serial.println("");
}

Bueno hasta aquí por hoy, el código ha sido resumido, el completo lo podéis ver en Mi forja.

Anuncios