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
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.
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);
}
}
}
Suscribirse a:
Enviar comentarios (Atom)
hola disculpa la libreria #include donde la puedo descargar
ResponderEliminar#include string.h
ResponderEliminarBuen día estimado:
ResponderEliminarsabes q realice varios de tus proyectos con el sim900 pero este no lo podido hacer q encienda algún led tenes idea x donde comensal a revisar
saludos desde uruguay
no funciona, no enciende nada
ResponderEliminar