Hola muy buenas, estoy tratando de llevar a cabo un tutorial que he encontrado en internet, se trata de encender varios led con un Sms, el proyecto es este que dejo en el enlace https://rogerbit.com/wprb/2015/11/encendiendo-led-con-sms/ he seguido el tutorial al pie de la letra, tanto en conexiones como en el resto, lo único que en lugar de utilizar GSM SIM900 he utilizado SIM 800l, lo he conectado de la siguiente manera, Arduino UNO, GSM SIM 800l y para alimentar el modulo Gsm, un regulador de tensión a 4v conectado a una fuente de alimentación de 4 amperios, y cuando envío el mensaje ni veo que el modulo Gsm le envíe al Arduino uno ni transmisión ni recepción y ni enciende led ni nada, os dejo la programación para ver si me podéis ayudar, gracias de antemano
#include <SoftwareSerial.h>
#include <string.h>
SoftwareSerial Sim800Serial(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 "+34XXXXXXXX" //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);
Sim800Serial.begin(9600);//Velocidad del puerto serie por Software pines 2 y 3
Serial.begin(9600); //Velocidad del puerto serie por Hardware pines 0 y 1
delay(500);
Sim800_Inti();
}
void loop()
{
if (Sim800Serial.available())
{
while(Sim800Serial.available()) //Leyendo datos del arreglo de caracteres
{
buffer[count++]=Sim800Serial.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
Sim800Serial.write(Serial.read()); // y los escribe en el escudo SIM900
}
// Limpia el buffer
void clearBufferArray()
{
for (int i=0; i<count;i++)
{ buffer[i]=NULL;} // borrar todos los índices del arreglo
}
void Sim800_Inti(void)
{
Sim800Serial.println("AT+CMGF=1");
delay(500);
Sim800Serial.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[i]=char(buffer[i]);}
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);
}
}
}