Domótica Aplicada a la VSI
Trabajo de Campo
SoftWare realizado con Gambas3 (Linux)
Funcionando con Arduino MEGA
Interface de Monitoreo
y la imagen de la programación en IDE Arduino
Código Arduino IDE
int dato;
int Ent_SMov1=2;
int Sal_SMov1=3;
int sensorValue;
// seccion de ultrasonido
const int EchoPin = 5;
const int TriggerPin = 6;
const int LedPin = 13;
int cm;
void setup()
{
// Inicializamos puerto serie a 9600 bps
Serial.begin(9600);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(TriggerPin, OUTPUT);
pinMode(EchoPin, INPUT);
// Enviamos "Casa Inteligente" con salto de línea al final
Serial.println("Conectado con el Arduino. Casa Inteligente");
//arduino manda esta cadena al PC
}
void loop()
{
// funcionamiento del sensor ultrasonico
int cm = ping(TriggerPin, EchoPin);
Serial.print("Mido Distancia: ");
Serial.println(cm);
delay(1000);
if(cm<120)
{
//¿Existen datos por el puerto serie?
sensorValue=0;
if (Serial.available())
{
//Guardamos el dato por la variable dato
dato=Serial.read();
switch (dato)
{
case 48:
// escribo 0 en el PC y lo envio
//Apagamos el led 13 canal 1
digitalWrite(13,LOW);
Serial.println("Arduino: He apagado el Relay 1 (pin 13)");
break;
case 49:
// escribo 1 en el PC y lo envio al arduino
//Encendemos el led 13
digitalWrite(13,HIGH);
Serial.println("Arduino: He encendido el Relay 1 (pin 13)");
break;
case 50:
// escribo 2 en el PC y lo envio al arduino
//Encendemos el led 12 canal 2
digitalWrite(12,LOW);
Serial.println("Arduino: He apagado el Relay 2 (pin 12)");
break;
case 51:
// escribo 3 en el PC y lo envio al arduino
//Encendemos el led 12
digitalWrite(12,HIGH);
Serial.println("Arduino: He encendido el Relay 2 (pin 12)");
break;
case 52:
// escribo 4 en el PC y lo envio al arduino
//Encendemos el led 11 canal 3
digitalWrite(11,LOW);
Serial.println("Arduino: He apagado el Relay 3 (pin 11)");
break;
case 53:
// escribo 5 en el PC y lo envio al arduino
//Encendemos el led 11
digitalWrite(11,HIGH);
Serial.println("Arduino: He encendido el Relay 3 (pin 11)");
break;
case 54:
// escribo 6 en el PC y lo envio al arduino
//Encendemos el led 10 canal 4
digitalWrite(10,LOW);
Serial.println("Arduino: He apagado el Relay 4 (pin 10)");
break;
case 55:
// escribo 7 en el PC y lo envio al arduino
//Encendemos el led 10
digitalWrite(10,HIGH);
Serial.println("Arduino: He encendido el Relay 4 (pin 10)");
break;
case 56:
// escribo 8 en el PC y lo envio al arduino
//Encendemos el led 10
digitalWrite(9,LOW);
Serial.println("Arduino: He apagado el Relay 5 (pin 9)");
break;
case 57:
// escribo 9 en el PC y lo envio al arduino
//Encendemos el led 10
digitalWrite(9,HIGH);
Serial.println("Arduino: He encendido el Relay 5 (pin 9)");
break;
// sensores de entradas
case 58:
// esc :
sensorValue = analogRead(A0);
Serial.print("Arduino: valor SenTempDig ");
Serial.println(sensorValue);
break;
case 59:
// esc ;
sensorValue = analogRead(A1);
Serial.print("Arduino: valor SenHumDig ");
Serial.println(sensorValue);
break;
case 60:
// esc <
sensorValue = analogRead(A2);
Serial.print("Arduino: valor Sen PHDig ");
Serial.println(sensorValue);
break;
case 61:
// esc =
sensorValue = analogRead(A3);
Serial.print("Arduino: valor Sen GMDig ");
Serial.println(sensorValue);
break;
case 62:
// esc >
sensorValue = digitalRead(2);
Serial.print("Arduino: Mido Distancia 1 ");
Serial.println(sensorValue);
break;
case 63:
// esc ?
sensorValue = digitalRead(3);
Serial.print("Arduino: Mido Distancia 2 ");
Serial.println(sensorValue);
break;
case 64:
// esc @
sensorValue = digitalRead(4);
Serial.print("Arduino: Mido Distancia 3 ");
Serial.println(sensorValue);
break;
case 65:
// esc A
sensorValue = analogRead(A4);
Serial.print("Arduino: valor Celda Base ");
Serial.println(sensorValue);
break;
case 66:
// esc B
sensorValue = digitalRead(6);
Serial.print("Arduino: valor Sen5 ");
Serial.println(sensorValue);
break;
case 67:
// escribo C en el PC y lo envio al arduino
//Encendemos el led 10
digitalWrite(8,LOW);
Serial.println("Arduino: He apagado la Bomb Temp (pin 8)");
break;
case 68:
// escribo D en el PC y lo envio al arduino
//Encendemos el led 10
digitalWrite(8,HIGH);
Serial.println("Arduino: He encendido la Bomb Temp (pin 8)");
break;
case 69:
// esc E
sensorValue = analogRead(A5);
Serial.print("Arduino: valor Celda Base ");
Serial.println(sensorValue);
break;
case 70:
// esc F
sensorValue = analogRead(A6);
Serial.print("Arduino: valor Celda Asido ");
Serial.println(sensorValue);
break;
case 71:
// esc G
sensorValue = analogRead(A7);
Serial.print("Arduino: valor Celda Neutro ");
Serial.println(sensorValue);
break;
case 72:
// esc H
sensorValue = analogRead(A8);
Serial.print("Arduino: valor Celda Muestra ");
Serial.println(sensorValue);
break;
}
}
}
}
// FUNCION DEL SENSOR DE DISTANCIA
int ping(int TriggerPin, int EchoPin)
{
long duration, distanceCm;
digitalWrite(TriggerPin, LOW); //para generar un pulso limpio ponemos a LOW 4us
delayMicroseconds(4);
digitalWrite(TriggerPin, HIGH); //generamos Trigger (disparo) de 10us
delayMicroseconds(10);
digitalWrite(TriggerPin, LOW);
duration = pulseIn(EchoPin, HIGH); //medimos el tiempo entre pulsos, en microsegundos
distanceCm = duration * 10 / 292/ 2; //convertimos a distancia, en cm
return distanceCm;
}