Documente Academic
Documente Profesional
Documente Cultură
- introduccin:
1.1.b.- Arduino
3.- Justificacin
Justifica el desarrollo del proyecto a nivel cientfico, tcnico, econmico,
social, etc. (a partir del problema planteado), estableciendo una solucin
innovadora o mejorando las ya existentes. NO ES EXPLICAR LA TEORA
Nuestro telfono mvil ser el elemento de control para el hogar, va SMS o
mensaje de texto. El modulo SIM 900, recibir dicho mensaje y dar las
instrucciones al arduino. An estamos desarrollando el cdigo para la parte
de control, pues es otro lenguaje de programacin llamado comandos AT.
Los comandos AT son instrucciones codificadas que conforman un lenguaje de
comunicacin entre el hombre y un terminal modem, o un lenguaje de programacin
de bajo nivel, con una estructura en forma de lnea en vez de bucle.
3.1.- ejemplo de comandos AT
Una vez que programado el cdigo para el modulo SIM 900, tendremos la
orden que llegara al arduino mediante sus puertos de entrada digital, y con
el siguiente cdigo, har el procesamiento necesario para dar las ordenes
de conmutacin a los relays.
#include<SoftwareSerial.h>
#define RxD 6
#define TxD 7
SoftwareSerial BTSerial(RxD, TxD);
byte Encedido;
byte DatoOK;
byte DatoOK2;
byte Dato1;
byte Dato2;
byte Dato3;
byte Dato4;
byte Dato5;
byte Dato6;
byte Dato7;
byte Dato8;
//Comando de inicializacion
//Formato de SMS
//Indicacion de red
//Retorno de carro
//Avance de linea
//Control Z
void setup()
{
BTSerial.begin(9600); //(115200);
delay(100);
pinMode(10, OUTPUT);
digitalWrite(10,LOW);
pinMode(11, OUTPUT);
digitalWrite(11,LOW);
pinMode(12, OUTPUT);
digitalWrite(12,LOW);
pinMode(13, OUTPUT);
digitalWrite(13,LOW);
DatoOK='0';
DatoOK2='0';
Dato1=0;
Dato2=0;
Dato3=0;
Dato4=0;
Dato5=0;
Dato6=0;
Dato7=0;
Dato8=0;
BTSerial.println(comando0);
CompararOK();
DatoOK='0';
DatoOK2='0';
contador1=0;
BTSerial.println(comando1);
CompararOK();
DatoOK='0';
DatoOK2='0';
contador1=0;
BTSerial.println(comando2);
CompararOK();
contador1=0;
BTSerial.println(comando3);
CompararCREG();
digitalWrite(10,HIGH);
contador1=0;
DatoOK='0';
DatoOK2='0';
Dato1=0;
Dato2=0;
Dato3=0;
Dato4=0;
Dato5=0;
Dato6=0;
Dato7=0;
Dato8=0;
i=0;
flag=0;
flag2=0;
}
void loop()
{
//Esperando un mensaje de confirmacion
if(BTSerial.available()){
N=BTSerial.read();
contador1++;
if(Dato2==0 && Dato4==0 && Dato6==0){
SMSentrante();
}
if(Dato2==1)
{
SMSnumero();
}
if(Dato4==1)
{
SMScodigo();
}
}
if(Dato6==1){
SMScomparar();
SMSresponder();
Dato1=0;
Dato2=0;
Dato3=0;
Dato4=0;
Dato5=0;
Dato6=0;
Dato7=0;
Dato8=0;
i=0;
flag=0;
flag2=0;
//Dato6=0;
}
}
void SMSentrante()
{
if(N=='C'){
Dato1=0;
contador2=contador1;
}
if(N=='M'){
contador1--;
if(contador1==contador2){
contador1++;
contador2=contador1;
Dato1++;
}
}
if(N=='T'){
contador1--;
if(contador1==contador2){
contador1++;
contador2=contador1;
Dato1++;
}
}
if(N==':'){
contador1--;
if(contador1==contador2){
contador1++;
contador2=contador1;
Dato1++;
}
}
if(Dato1==3){
//Leemos el numero
Dato2=1;
Dato1=0;
contador2=contador2+6;
}
}
void SMSnumero()
{
if(contador2==contador1){
flag=1;
i=0;
}
if(flag==1){
NUMERO[i]=N;
i++;
}
if(i==9){
Dato2=0;
flag=0;
i=0;
Dato4=1;
}
}
void SMScodigo()
{
if(N==CR){
flag=1;
}
if(N==AL && flag==1){
flag2=1;
i=0;
}
if(flag2==1){
CODIGO[i]=N;
i++;
}
if(i==7){
Dato4=0;
flag=0;
flag2=0;
i=0;
Dato6=1;
}
}
void SMScomparar()
{
Mensaje='0';
flagR1=1;
flagR2=1;
flagR3=1;
flagR4=1;
flagR5=1;
flagR6=1;
for(i=1;i<8;i++){
if(CODIGO[i]==ONrele1[i-1]){
flagR1++;
//break;
}
}
if(flagR1==8){
digitalWrite(11,HIGH);
Mensaje='1';
return;
}
for(i=1;i<8;i++){
if(CODIGO[i]==OFFrele1[i-1]){
flagR2++;
//break;
}
}
if(flagR2==8){
digitalWrite(11,LOW);
Mensaje='2';
return;
}
for(i=1;i<8;i++){
if(CODIGO[i]==ONrele2[i-1]){
flagR3++;
//break;
}
}
if(flagR3==8){
digitalWrite(12,HIGH);
Mensaje='3';
return;
}
for(i=1;i<8;i++){
if(CODIGO[i]==OFFrele2[i-1]){
flagR4++;
//break;
}
}
if(flagR4==8){
digitalWrite(12,LOW);
Mensaje='4';
return;
}
for(i=1;i<8;i++){
if(CODIGO[i]==ONrele3[i-1]){
flagR5++;
//break;
}
}
if(flagR5==8){
digitalWrite(13,HIGH);
Mensaje='5';
return;
}
for(i=1;i<8;i++){
if(CODIGO[i]==OFFrele3[i-1]){
flagR6++;
//break;
}
}
if(flagR6==8){
digitalWrite(13,LOW);
Mensaje='6';
return;
}
}
void SMSresponder()
{
switch(Mensaje){
case '1':
EnvioCmdNumero();
BTSerial.write(rpta0NRele1);
BTSerial.write(CTRZ);
BTSerial.write(CR);
BTSerial.write(AL);
delay(500);
break;
case '2':
//controlZ
EnvioCmdNumero();
BTSerial.write(rpta0FFRele1);
BTSerial.write(CTRZ);
//controlZ
BTSerial.write(CR);
BTSerial.write(AL);
delay(500);
break;
case '3':
EnvioCmdNumero();
BTSerial.write(rpta0NRele2);
BTSerial.write(CTRZ);
//controlZ
BTSerial.write(CR);
BTSerial.write(AL);
delay(500);
break;
case '4':
EnvioCmdNumero();
BTSerial.write(rpta0FFRele2);
BTSerial.write(CTRZ);
//controlZ
BTSerial.write(CR);
BTSerial.write(AL);
delay(500);
break;
case '5':
EnvioCmdNumero();
BTSerial.write(rpta0NRele3);
BTSerial.write(CTRZ);
//controlZ
BTSerial.write(CR);
BTSerial.write(AL);
delay(500);
break;
case '6':
EnvioCmdNumero();
BTSerial.write(rptaOFFRele3);
BTSerial.write(CTRZ);
BTSerial.write(CR);
//controlZ
BTSerial.write(AL);
delay(500);
break;
default:
break;
}
}
void EnvioCmdNumero(){
BTSerial.write(comandoSMS1);
BTSerial.write('"');
BTSerial.write(NUMERO[0]);
BTSerial.write(NUMERO[1]);
BTSerial.write(NUMERO[2]);
BTSerial.write(NUMERO[3]);
BTSerial.write(NUMERO[4]);
BTSerial.write(NUMERO[5]);
BTSerial.write(NUMERO[6]);
BTSerial.write(NUMERO[7]);
BTSerial.write(NUMERO[8]);
BTSerial.write('"');
BTSerial.write(CR);
BTSerial.write(AL);
delay(500);
}
void CompararOK()
{
while(1)
{
if(BTSerial.available()){
N=BTSerial.read();
contador1++;
if(N=='O'){
DatoOK='1';
contador2=contador1;
}
if(N=='K'){
contador1--;
if(contador1==contador2){
contador1++;
DatoOK2='1';
}
}
if(DatoOK=='1' && DatoOK2=='1'){
// digitalWrite(10,HIGH);
return;
}
}
}
}
void CompararCREG()
{
while(1)
{
if(BTSerial.available()){
N=BTSerial.read();
contador1++;
if(N=='C'){
Dato1='1';
contador2=contador1;
}
if(N=='R'){
contador1--;
if(contador1==contador2){
contador1++;
contador2=contador1;
Dato2='1';
}
}
if(N=='E'){
contador1--;
if(contador1==contador2){
contador1++;
contador2=contador1;
Dato3='1';
}
}
if(N=='G'){
contador1--;
if(contador1==contador2){
contador1++;
contador2=contador1;
Dato4='1';
}
}
if(N==':'){
contador1--;
if(contador1==contador2){
contador1++;
contador2=contador1;
Dato5='1';
}
}
if(N=='0'){
contador1--;
contador1--;
if(contador1==contador2){
contador1++;
contador1++;
contador2=contador1;
Dato6='1';
}
}
if(N=='1'){
contador1--;
contador1--;
if(contador1==contador2){
contador1++;
contador1++;
contador2=contador1;
Dato7='1';
}
}
if(Dato1=='1'&&Dato2=='1'&&Dato3=='1'&&Dato4=='1'&&Dato5=='1'&&Dato6=='1'&&Da
to7=='1'){
return;
}
}
}
4.- Objetivos
Nuestro objetivo principal es:
OTRA VEZ EL PROYECTO ESTA ENFOCADO A LA DOMOTICA USANDO
GSM
Investigar una rama de la domtica que no se encuentra desarrollada en
nuestro pas, ya que la electrnica est siendo muy utilizada en la domtica
hoy en da en pases ms desarrollados para brindar confort a las personas y
puede llegar a representar un modelo de negocio el brindar comodidad
mediante mayor sencillez en el control del hogar.
Objetivos secundarios:
Demostrar una reduccin viable en el nmero de controladores fsicos en el
hogar.
Investigar la tecnologa GPRS ms all de la comunicacin entre personas y
transferencia de documentos.
Asimilar el Smartphone a un uso ms dentro del hogar, pues hoy en da gran
parte de la poblacin tiene como parte de su vida un telfono inteligente.