Go Down

Topic: [risolto]LIBRERIA GSM , GPRS SHIELD e lettura sms in entrata un consiglio... (Read 1 time) previous topic - next topic

skosso

salve ragazzi...

sto implementando il mio progettino basato su arduino uno e gprs shield sim900 (seeedstudio)

fino ad ora tutto ok.. riesco a far partire chiamate o sms al verificarsi di alcune condizioni ecc...

ora mi si pone un problema enorme per me....

vorrei che arduino interpreti una stringa arrivata via sms  ed esegua un comando x...

ho cercato di tutto ma non ci sono proprio riuscito...
le librerie che ho usato per la mia shield sono state fatte a mano da me e da qualche altro utente del forum, funzionano bene ma non trattano assolutamente la lettura degli sms...

girando in rete ho letto qualcosa sulle librerie GSM della seedstudio stessa... dicono che sono molto complete ma nn so proprio da dove iniziare per istallarle....

qualcuno di voi ha qualche altra idea per superare il mio ostacolo?
avete provato queste librerie GSM?


vi posto un pezzo del mio codice dove ovviamente manca la lettura degli sms..... magari qualcuno mi da qualche dritta per farla direttamente io....


Code: [Select]
#include <SoftwareSerial.h>
#include <String.h>
#include <leOS.h>
SoftwareSerial mySerial(7, 8);
int ledcontrollo = 13; //led di controllo stato sensore PIR

int sen = 10; //porta sensore PIR
int allarme = 0; //variabile di controllo attivazione/disattivazione allarme

void setup()
{
 pinMode(9, OUTPUT);
 digitalWrite(9,LOW);
 delay(1000);
 digitalWrite(9,HIGH);
 delay(2000);
 digitalWrite(9,LOW);
 delay(3000);

 mySerial.begin(19200);  //inizializzazione shield gprs
 pinMode(sen, INPUT);  //pin di input sensore PIR
 pinMode(ledcontrollo, OUTPUT);
 delay(500);

 
}
void loop()
{
 if (digitalRead(sen) == HIGH){
   digitalWrite(ledcontrollo, HIGH);
   DialVoiceCall(); }
else{
 digitalWrite(ledcontrollo, LOW);}
 
}

void SendTextMessage()
{
 mySerial.print("AT+CMGF=1\r");    //Because we want to send the SMS in text mode
 delay(100);
 mySerial.println("AT + CMGS = \"+86138xxxxx615\"");//send sms message, be careful need to add a country code before the cellphone number
 delay(100);
 mySerial.println("A test message!");//the content of the message
 delay(100);
 mySerial.println((char)26);//the ASCII code of the ctrl+z is 26
 delay(100);
 mySerial.println();
}

void DialVoiceCall()
{
 mySerial.println("ATD + +3932xxxxxxx;");//dial the number
 delay(100);
 mySerial.println();
}

void controllo(){
if (digitalRead(sen) == HIGH){
   digitalWrite(ledcontrollo, HIGH);}
else{
 digitalWrite(ledcontrollo, LOW);}
}

skosso


PaoloP

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

skosso

asp scusate adesso mi sorge un dubbio...
forse ho sbagliato a scrivere.. la mia non è un gsm shield

è una  SEEEDSTUDIO GPRS SHIELD SIM900


penso siano molto molto simili

skosso

risolto... ho usato le librerie open futura.. modificando il file GSM.H in base al modello della mia board...

l'argomento è molto rognoso...... se qualcuno dovesse avere problemi mandatemi un MP... almeno le notti insonni possono aiutare qualcuno....



OpenElectronics

Dipende cosa includi.
Per ottimizzare la memoria devi includere quello che ti occorre

gerrynigro

Ciao skosso,

scusa ma sto usando grosso modo lo stesso codice che hai usato tu, ma a me pare che il "giocattolo" non funzioni.
Il mio obiettivo è riuscire a fare una chiamata o inviare un sms da arduino.

L'hardware che sto usando è il seguente:
Arduino Uno
Seeduino Gprs Shield

Di seguito il codice, che poi è quello che ho trovato in rete riferito proprio dalla seeduino

Quote


#include <SoftwareSerial.h>
#include <String.h>

SoftwareSerial mySerial(7, 8);

void setup()
{
  mySerial.begin(19200);               // the GPRS baud rate   
  Serial.begin(19200);    // the GPRS baud rate
  delay(500);
}

void loop()
{
       SendTextMessage();
       DialVoiceCall();

///SendTextMessage()
///this function is to send a sms message
void SendTextMessage()
{
  mySerial.print("AT+CMGF=1\r");    //Because we want to send the SMS in text mode
  delay(100);
  mySerial.println("AT + CMGS = \"+39138xxxxx615\"");//send sms message, be careful need to add a country code before the cellphone number
  delay(100);
  mySerial.println("A test message!");//the content of the message
  delay(100);
  mySerial.println((char)26);//the ASCII code of the ctrl+z is 26
  delay(100);
  mySerial.println();
  delay(100000);
}

///DialVoiceCall
///this function is to dial a voice call
void DialVoiceCall()
{
  mySerial.println("ATD + +39138xxxxx615;");//dial the number
  delay(100);
  mySerial.println();
}



Gira tutto, vedo che il serial output si popola, ma dell'sms o della chiamata neppure l'ombra.

Grazie,
ciao

Go Up