ciao a tutti
Da poco ho realizzato il progetto di far funzionare dei relè tramite l'invio di sms utilizzando Arduino uno e il modulo sim 800 L
Modificando lo sketch è possibile autorizzare tutti i numeri ? se è possibile mi date qualche dritta su come modificarlo?
lo sketch è il seguente:
//attenzione per collegare il modulo gsm tx su pin 2 e rx su pin 3
#include "SIM900.h"
#include <SoftwareSerial.h> // necessaria alla libreria gsm.h richiamata in sms.h
#include "sms.h" // Libreria per la gestione degli SMS
SMSGSM sms;
int rel1 = 10;// Il Pin 10 è quello connesso al relè1
int rel2 = 9; // Il Pin 9 è quello connesso al relè 2
int rel3 = 8; // Il Pin 8 è quello connesso al relè 3
int rel4 = 7; // Il Pin 7 è quello connesso al relè 4
int rel5 = 6; // Il Pin 6 è quello connesso al relè 5
int rel6 = 5; // Il Pin 6 è quello connesso al relè 6
int rel7 = 11;// Il Pin 11 è quello connesso al relè 7
int rel8 = 12;// Il Pin 11 è quello connesso al relè 8
int numdata;
boolean started = false;
char smsbuffer[160];
char Mittente[20];
void setup()
{
Serial.begin(9600);
// Serial.println("APERTURA TRAMITE RICEZIONE SMS POWERED by adrykx 2016");
pinMode(rel1, OUTPUT); // imposta il pin 10 come pin di OUTPUT.
digitalWrite(rel1, HIGH); // spegne inizialmente il relè, uso High perchè questi relè altrimenti appena accessa la scheda da subito un input e si chiude il contatto
pinMode(rel2, OUTPUT); // imposta il pin 9 come pin di OUTPUT.
digitalWrite(rel2, HIGH); // spegne inizialmente il relè, uso High perchè questi relè altrimenti appena accessa la scheda da subito un input e si chiude il contatto
pinMode(rel3, OUTPUT); // imposta il pin 8 come pin di OUTPUT.
digitalWrite(rel3, HIGH); // spegne inizialmente il relè, uso High perchè questi relè altrimenti appena accessa la scheda da subito un input e si chiude il contatto
pinMode(rel4, OUTPUT); // imposta il pin 7 come pin di OUTPUT.
digitalWrite(rel4, HIGH); // spegne inizialmente il relè, uso High perchè questi relè altrimenti appena accessa la scheda da subito un input e si chiude il contatto
pinMode(rel5, OUTPUT); // imposta il pin 6 come pin di OUTPUT.
digitalWrite(rel5, HIGH); // spegne inizialmente il relè, uso High perchè questi relè altrimenti appena accessa la scheda da subito un input e si chiude il contatto
pinMode(rel6, OUTPUT); // imposta il pin 5 come pin di OUTPUT.
digitalWrite(rel6, HIGH); // spegne inizialmente il relè, uso High perchè questi relè altrimenti appena accessa la scheda da subito un input e si chiude il contatto
pinMode(rel7, OUTPUT); // imposta il pin 10 come pin di OUTPUT.
digitalWrite(rel7, HIGH); // spegne inizialmente il relè, uso High perchè questi relè altrimenti appena accessa la scheda da subito un input e si chiude il contatto
pinMode(rel8, OUTPUT); // imposta il pin 11 come pin di OUTPUT.
digitalWrite(rel8, HIGH); // spegne inizialmente il relè, uso High perchè questi relè altrimenti appena accessa la scheda da subito un input e si chiude il contatto
// Inizializzo la connessione GSM impostando il baudrate
// Per l'utilizzo di HTTP è opportuno usare 4800 baud o meno
if ( gsm.begin(2400) )
{
Serial.println("STATUS Modulo GSM = PRONTO");
started = true;
}
else
Serial.println("STATUS Modulo GSM = INATTIVO");
};
void loop()
{
char inSerial[50];
char position;
if (started)
{
position = sms.IsSMSPresent(SMS_ALL); // Valore da 1..20
if (position)
{
// Leggo il messaggio SMS e stabilisco chi sia il mittente
sms.GetSMS(position, Mittente, smsbuffer, 160);
//cambiare o aggiungere i numeri autorizzati all'apertura
if ((strcmp(Mittente, "1111111111") == 0)
|| (strcmp(Mittente, "11111111") == 0)
|| (strcmp(Mittente, "11111111") == 0)
|| (strcmp(Mittente, "111111111") == 0))
{
Serial.print("Comando Ricevuto [tel. " + String(Mittente) + String("]: ") + String(smsbuffer));
if (strcmp(smsbuffer, "Garage") == 0)
{
digitalWrite(rel1, LOW); // Accende il LED impostando il voltaggio a HIGH
delay(3000);
Serial.println(" => Apro il Garage");
digitalWrite(rel1, HIGH);
}
else if (strcmp(smsbuffer, "Pedonale") == 0) // qui utilizzo password numerica sostituendo "pedonale"
{
digitalWrite(rel2, LOW); // Accende il LED impostando il voltaggio a HIGH
delay(3000);
Serial.println(" => Apro il Pedonale");
digitalWrite(rel2, HIGH);
}
else if (strcmp(smsbuffer, "Cancello") == 0)
{
digitalWrite(rel3, LOW); // Accende il LED impostando il voltaggio a HIGH
delay(3000);
Serial.println(" => Apro il Cancello");
digitalWrite(rel3, HIGH);
}
else if (strcmp(smsbuffer, "Porta") == 0)
{
digitalWrite(rel4, LOW); // Accende il LED impostando il voltaggio a HIGH
delay(3000);
Serial.println(" => Apro la porta");
digitalWrite(rel4, HIGH);
}
else if (strcmp(smsbuffer, "Porta garage") == 0)
{
digitalWrite(rel5, LOW); // Accende il LED impostando il voltaggio a HIGH
delay(3000);
Serial.println(" => Apro la porta del garage");
digitalWrite(rel5, HIGH);
}
else if (strcmp(smsbuffer, "Cancelletto") == 0)
{
digitalWrite(rel6, LOW); // Accende il LED impostando il voltaggio a HIGH
delay(3000);
Serial.println(" => Apro il cancelletto");
digitalWrite(rel6, HIGH);
}
else if (strcmp(smsbuffer, "Uno") == 0)
{
digitalWrite(rel7, LOW); // Accende il LED impostando il voltaggio a HIGH
delay(3000);
Serial.println(" => Apro uno");
digitalWrite(rel7, HIGH);
}
else if (strcmp(smsbuffer, "Due") == 0)
{
digitalWrite(rel8, LOW); // Accende il LED impostando il voltaggio a HIGH
delay(3000);
Serial.println(" => Apro due");
digitalWrite(rel8, HIGH);
}
}
else
Serial.println(" => non riconosciuto!");
sms.DeleteSMS(position); // Elimina l'SMS appena analizzato
}
{
delay(1000);
}
}
};
Grazie per l'attenzione