lunes, 30 de noviembre de 2015

Encendiendo led con mensajes sms



link: https://www.youtube.com/watch?v=6aNeHNQFCi0 

Hoy traigo a ustedes un proyecto donde encenderé 9 led mediante mensajes de texto. 
Para ello voy a utilizar un arduino uno y un escudo gsm el mismo utiliza un chip sim900 muy utilizado en proyectos m2m. 
Se puede aplicar en proyectos de domótica, control industrial, seguridad y por supuesto hobby. 

Hay que tener en cuenta que algunos pines no los vamos a poder utilizar para los led, ya que cumplen ciertas funciones esenciales, como por ejemplo los pines 0 y 1 que son usados para el puerto serie por hardware y los pines 2 y 3 como puerto serie por software. El pin número en este módulo se lo utiliza para encender o apagar el módulo gsm, por lo cual en este proyecto no lo vamos a usar porque no hay necesidad de apagar o encender el módulo. 

Lo pines usados para los led son el numero 4 5 6 8 9 10 11 12 y 13, también se pueden usar los pines A0 al A5 (pines analógicos) y en total podríamos controlar hasta 15 dispositivos a las vez. 

El módulo según el fabricante necesita una fuente que pueda entregar hasta dos amperes de corriente, para poder funcionar sin inconvenientes. El módulo es totalmente compatible con arduino uno y simplemente conectandolo encima del mismo funcionará sin dar ningún problema. 

En cuanto al sketch de arduino, los comandos de texto que podemos enviar son On4 enciende el led conectado al pin 4 si queremos apargarlo enviamos Off5, hay que tener en cuenta que es case sensitive, por lo cual va a distinguir entre mayúsculas y minúsculas, si se envía un carácter en forma incorrecta no funcionará el comando. 

Link del proyecto http://rogerbit.com/wprb/?p=616 (código fuente y más) 
Apoya mi canal suscribiendote en https://www.youtube.com/user/carlosvolt?feature=iv&src_vid=6aNeHNQFCi0&annotation_id=annotation_2136818013 
Mi grupo en facebook es https://www.facebook.com/groups/RogerBit 



Lista de comandos que se pueden usar, ustedes pueden modificarlos a su gusto y agregar otras funciones 

On4—–>Enciende led 4 Off4—–>Apaga el led 4 

On5—–>Enciende led 5 Off5—–>Apaga el led 5 

On6—–>Enciende led 6 Off6—–>Apaga el led 6 

On8—–>Enciende led 8 Off8—–>Apaga el led 8 

On9—–>Enciende led 9 Off9—–>Apaga el led 9 

On10—–>Enciende led 10 Off10—–>Apaga el led 10 

On11—–>Enciende led 11 Off11—–>Apaga el led 12 

On12—–>Enciende led 12 Off12—–>Apaga el led 12 

On13—–>Enciende led 13 Off13—–>Apaga el led 13 

Allon—–>Enciende todos los led 

Alloff—–>Apaga todos los led 

Partes del módulo gsm 

Controlá tu casa con mensajes de texto(código fuente inclu.) 

rogerbit 

Foto del módulo con los led conectados en el protoboad la conexión es muy simple, sólo hay colocarles un resistor de 1k. 

gsm

Código Fuente 

Descargar http://rogerbit.com/wprb/wp-content/uploads/2015/11/smsLed9.rar 

---------------------------------------------------------------------------- 
#include <SoftwareSerial.h> 
#include <string.h> 
SoftwareSerial Sim900Serial(2, 3); 
byte buffer[64]; //Buffer para recivir datos del puerto serie 
int count=0; 
int led13 = 13; 
int led12 = 12; 
int led11 = 11; 
int led10 = 10; 
int led9 = 9; 
int led8 = 8; 
int led7 = 7; 
int led6 = 6; 
int led5 = 5; 
int led4 = 4; 
#define phonenumber “1234567890” //Cambiar por su número de teléfono, el número de teléfono debe ser el mismo que el formato que recibe el SMS, 
//Quizá debe incluir el código de país. 
void setup() 

//Del pin 4 al 13 serán salidas donde se conectaran los led 
pinMode(led13, OUTPUT); 
pinMode(led12, OUTPUT); 
pinMode(led11, OUTPUT); 
pinMode(led10, OUTPUT); 
pinMode(led9, OUTPUT); 
pinMode(led8, OUTPUT); 
pinMode(led7, OUTPUT); 
pinMode(led6, OUTPUT); 
pinMode(led5, OUTPUT); 
pinMode(led4, OUTPUT); 

Sim900Serial.begin(19200);//Velocidad del puerto serie por Software pines 2 y 3 
Serial.begin(19200); //Velocidad del puerto serie por Hardware pines 0 y 1 
delay(500); 
Sim900_Inti(); 


void loop() 

if (Sim900Serial.available()) 

while(Sim900Serial.available()) //Leyendo datos del arreglo de caracteres 

buffer[count++]=Sim900Serial.read(); //Almacenando los datos del arreglo en un buffer 
if(count == 64)break; 

Serial.write(buffer,count); 
Cmd_Read_Act(); 
clearBufferArray(); 
count = 0; 


if (Serial.available()) // Verifica si se dispone de datos en el puerto serie por hardware 
Sim900Serial.write(Serial.read()); // y los escribe en el escudo SIM900 

// Limpia el buffer 
void clearBufferArray() 

for (int i=0; i<count;i++) 
{ buffer=NULL;} // borrar todos los índices del arreglo 

void Sim900_Inti(void) 

Sim900Serial.println(“AT+CMGF=1”); 
delay(500); 
Sim900Serial.println(“AT+CNMI=2,2″); 
delay(500); 

//////Esta función lee los SMS enviados al escudo SIM900 y actua en base a esa orden. 
void Cmd_Read_Act(void) 

char buffer2[64]; 
char comparetext[25]; 
for (int i=0; i<count;i++) 
{ buffer2=char(buffer);} 
memcpy(comparetext,buffer2,25); 
if (strstr(comparetext,phonenumber)) 

///////////LED13/////////////////////////////////////// 
if (strstr(buffer2,”On13″)) 

digitalWrite(led13, HIGH); 


if (strstr(buffer2,”Off13″)) 

digitalWrite(led13, LOW); 


///////////LED12/////////////////////////////////////// 
if (strstr(buffer2,”On12″)) 

digitalWrite(led12, HIGH); 


if (strstr(buffer2,”Off12″)) 

digitalWrite(led12, LOW); 


///////////LED11/////////////////////////////////////// 
if (strstr(buffer2,”On11″)) 

digitalWrite(led11, HIGH); 


if (strstr(buffer2,”Off11″)) 

digitalWrite(led11, LOW); 


///////////LED10/////////////////////////////////////// 
if (strstr(buffer2,”On10″)) 

digitalWrite(led10, HIGH); 

if (strstr(buffer2,”Off10″)) 

digitalWrite(led10, LOW); 

///////////LED9/////////////////////////////////////// 
if (strstr(buffer2,”On9″)) 

digitalWrite(led9, HIGH); 

if (strstr(buffer2,”Off9″)) 

digitalWrite(led9, LOW); 

///////////LED8/////////////////////////////////////// 
if (strstr(buffer2,”On8″)) 

digitalWrite(led8, HIGH); 

if (strstr(buffer2,”Off8″)) 

digitalWrite(led8, LOW); 

///////////LED7/////////////////////////////////////// 
if (strstr(buffer2,”On7″)) 

digitalWrite(led7, HIGH); 

if (strstr(buffer2,”Off7″)) 

digitalWrite(led7, LOW); 

///////////LED6/////////////////////////////////////// 
if (strstr(buffer2,”On6″)) 

digitalWrite(led6, HIGH); 

if (strstr(buffer2,”Off6″)) 

digitalWrite(led6, LOW); 

///////////LED5/////////////////////////////////////// 
if (strstr(buffer2,”On5″)) 

digitalWrite(led5, HIGH); 

if (strstr(buffer2,”Off5″)) 

digitalWrite(led5, LOW); 

///////////LED4/////////////////////////////////////// 
if (strstr(buffer2,”On4″)) 

digitalWrite(led4, HIGH); 

if (strstr(buffer2,”Off4″)) 

digitalWrite(led4, LOW); 


if (strstr(buffer2,”Allon”)) 

digitalWrite(led4, HIGH); 
digitalWrite(led5, HIGH); 
digitalWrite(led6, HIGH); 
digitalWrite(led7, HIGH); 
digitalWrite(led8, HIGH); 
digitalWrite(led9, HIGH); 
digitalWrite(led10, HIGH); 
digitalWrite(led11, HIGH); 
digitalWrite(led12, HIGH); 
digitalWrite(led13, HIGH); 

if (strstr(buffer2,”Alloff”)) 

digitalWrite(led4, LOW); 
digitalWrite(led4, LOW); 
digitalWrite(led4, LOW); 
digitalWrite(led4, LOW); 
digitalWrite(led4, LOW); 
digitalWrite(led4, LOW); 
digitalWrite(led4, LOW); 
digitalWrite(led4, LOW); 
digitalWrite(led4, LOW); 
digitalWrite(led4, LOW); 


}