però guarda e riguarda non capisco perché non mi funzioni il relé.
il mio scopo e di usare la gsm e comandare i relè per svariate applicazioni.
Sarei felicissimo se qualcuno mi potesse aiutare..
Ringrazio anticipatamente
ciao
non ho guardato lo sketch, ma meglio postarlo qui, con "non funziona" intendi che hai qualche messaggio di errore dall'ide durante il caricamento, hai controllato bene i collegamenti
Ciao si scusate.. lo sketch funziona ed riesco a caricarlo. però quando mando il messaggio sms nel uscita impostata non mi da HIGH. il problema del relé e nullo, cioè a livello di collegamenti o relè me la cavo. Proprio lo sketch che non mi riconosce il comando.
In realtà potrei abbandonare questo sketch però a livello di gsm non me la cavo molto bene
Fai il debug con il Monitor Seriale ? In quello sketch ci sono molti msg che vanno sulla seriale per vedere se funziona. Ricevi i msg giusti ?
Hai tenuto conto di questo?
"Dispositivo": questa keyword è variabile. Nel nostro caso: Stufetta
Ma nessuno ha mai creato un semplice sketch per accendere un led via gsm? poi cambierebbe poco da led a relè.. e la base che non riesco costruire per il resto me la cavo.. grzie mille
ho lavorato con i gsm della wavecom, ma con i comandi AT che sono lo standard per i modem, ti allego uno sketch che serve per attivare un rele
/*
per apertura e chiusura garage
*/
#define rele 12 //pin rele apertura
#include <SoftwareSerial.h> //per la comuncazione con il modem
#include <string.h> //per le stringhe
char incoming_char = 0; //Will hold the incoming character from the Serial Port.
String stringOne,substringa;
SoftwareSerial cell(4,5); //Create a 'fake' serial port. cell(RX,TX)
void setup()
{
pinMode(rele,OUTPUT);
digitalWrite(rele,LOW);
incoming_char = 0; //inizializza
stringOne = ""; //inizializza
substringa = ""; //inizializza
Serial.begin(9600); //Initialize serial ports for communication.
cell.begin(9600); //Initialize serial ports for communication.
do
{
delay(1000);
cell.print("AT+CREG?;\r\n"); //verificare se questa istruzione funziona
delay(1000);
while(cell.available() > 0)//verifica la presenza di segnali
{
delay(100); //pausa
incoming_char = cell.read(); //Get the character from the cellular serial port.
stringOne += String(incoming_char); //compone la stringa
stringOne.trim(); //compatta la stringa tagliando le formattazioni
//Serial.print(incoming_char); //Print the incoming character to the terminal.
// Serial.println(stringOne); //stampa di controllo
}
Serial.println(stringOne); //stampa di controllo dopo il trim
substringa = stringOne.substring(9,18);
Serial.println(substringa);//stampa controllo substringa
if(substringa == "+CREG:0,1")
{
Serial.println("GSM registrato");
}
else
{
Serial.println("GSM non registrato");
}
stringOne = "";
incoming_char = 0;
}
while(substringa != "+CREG:0,1");
while(cell.available() > 0)//svuota la memoria
{
delay(50);
cell.read();
}
delay(1000); //pausa
cell.print("AT+CLIP=1 \r\n");
delay(1000); //pausa
while(cell.available()>0) //svuota i messaggi dal modem
{
delay(50); //pausa
cell.read();
// Serial.print(incoming_char); //stampa di controllo
}
delay(1000);
}
void loop()
{
/*
//verifica la registrazione del modem
delay(1000);
cell.print("AT+CREG?;\r\n");
delay(1000);
while(cell.available()>0)//verifica la presenza di segnali
{
delay(100); //pausa
incoming_char=cell.read(); //Get the character from the cellular serial port.
stringOne+=String(incoming_char); //compone la stringa
stringOne.trim(); //compatta la stringa tagliando le formattazioni
//Serial.print(incoming_char); //Print the incoming character to the terminal.
// Serial.println(stringOne); //stampa di controllo
}
//Serial.println(stringOne); //stampa di controllo dopo il trim
substringa=stringOne.substring(9,18);
Serial.println(substringa);//stampa controllo substringa
if(substringa=="+CREG:0,1")
{
Serial.println("GSM registrato");
}
else
{
Serial.println("GSM non registrato");
}
stringOne="";
incoming_char=0;
while(cell.available()>0) //svuota i messaggi dal modem
{
delay(50); //pausa
cell.read();
// Serial.print(incoming_char); //stampa di controllo
}
*/
//verifica la chiamata in arrivo
while(cell.available() > 0) //while a character is coming from the terminal to the Arduino
{
delay(50); //pausa
incoming_char = cell.read();
stringOne += String(incoming_char);
stringOne.trim();
//Serial.println(stringOne); //stampa di controllo
substringa = stringOne.substring(11,24);
}
Serial.println(substringa); //stampa di controllo
delay(1000);
if(substringa == "+39numero di telefono")
{
cell.println("ATH\r\n"); //per interruzione chiamata
delay(500); //pausa
digitalWrite(rele,HIGH); //preme pulsante aperura
delay(1000); //pausa
digitalWrite(rele,LOW); //rilascia pulsante apertura
delay(500); //pausa
while(cell.available() > 0) //svuota i messaggi dal modem
{
delay(50); //pausa
cell.read();
// Serial.print(incoming_char); //stampa di controllo
}
}
if(substringa=="+39numero di telefono")
{
cell.println("ATH\r\n"); //per interruzione chiamata
delay(500); //pausa
digitalWrite(rele,HIGH); //preme pulsante aperura
delay(1000); //pausa
digitalWrite(rele,LOW); //rilascia pulsante apertura
delay(500); //pausa
while(cell.available() > 0) //svuota i messaggi dal modem
{
delay(50); //pausa
cell.read();
// Serial.print(incoming_char); //stampa di controllo
}
}
if(substringa == "+39numero di telefono")
{
cell.println("ATH\r\n"); //per interruzione chiamata
delay(500); //pausa
digitalWrite(rele,HIGH); //preme pulsante aperura
delay(1000); //pausa
digitalWrite(rele,LOW); //rilascia pulsante apertura
delay(500); //pausa
while(cell.available() > 0) //svuota i messaggi dal modem
{
delay(50); //pausa
cell.read();
// Serial.print(incoming_char); //stampa di controllo
}
}
if(substringa == "+39numero di telefono")
{
cell.println("ATH\r\n"); //per interruzione chiamata
delay(500); //pausa
digitalWrite(rele,HIGH); //preme pulsante aperura
delay(1000); //pausa
digitalWrite(rele,LOW); //rilascia pulsante apertura
delay(500); //pausa
while(cell.available()>0) //svuota i messaggi dal modem
{
delay(50); //pausa
cell.read();
// Serial.print(incoming_char); //stampa di controllo
}
}
if(substringa == "+39numero di telefono")
{
cell.println("ATH\r\n"); //per interruzione chiamata
delay(500); //pausa
digitalWrite(rele,HIGH); //preme pulsante aperura
delay(1000); //pausa
digitalWrite(rele,LOW); //rilascia pulsante apertura
delay(500); //pausa
while(cell.available() > 0) //svuota i messaggi dal modem
{
delay(50); //pausa
cell.read();
// Serial.print(incoming_char); //stampa di controllo
}
}
//Serial.println("ok"); //stampa di controllo
incoming_char=0; //svuota
stringOne=""; //svuota
substringa=""; //svuota
/*
//If a character is coming from the the Arduino to the terminal
if(Serial.available()>0)
{
incoming_char=Serial.read(); //Get the character coming from the terminal
cell.print(incoming_char); //Send the character to the cellular module.
}
*/
}
ok grazie. ci studierò dietro.. credevo fosse una cosa molto piu semplice tipo sms.read e poi un paio di variabili... alla fine devo solo azionare un relè con un sms.
grazie ancora a tutti sono felice che ci siano ancora persone capaci di aiutare il prossimo..
anche io avevo tentato di capire quelle librerie ma complice il fatto che ero all'inizio con arduino non le ho capite, alla fine mi sono trovato meglio con i comandi AT inoltre i comandi AT sono per la maggior parte uguali per ogni modem
eppure anche questo non mi funziona.. ora sto quasi pensando che è il mio gsm che non va?
qualcuno potrebbe provarlo e dirmi se funziona? e subito fatto 2 led e copiare lo sketch, giusto da capire se è il mio shield oppure anche questo da errori.
un altra cosa, non so che SIM hai usato, ma quella in dotazione alla sche GSM nonostante l'avessi caricata non sono mai riuscito a farla funzionare, mentre con una banalissima telecom dati si.
Ciao si si ho tolto il pin.. ho provato e riprovato ma nulla.. ma mai nessuno ha fatto uno sketch gsm per accendere e spegnere un Led? non trovo nessuno che abbia usato questo modulo per queste operazioni..
Saluti e grazie veramente a tutti.. siete gentilissimi