[risolto]LIBRERIA GSM , GPRS SHIELD e lettura sms in entrata un consiglio...

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…

#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);}
}

proprio nessuno ha mai affrontato questo argomento?

Non credo che lo shield GSM sia molto diffuso. :drooling_face:

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

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....

Trovi altre info qua..

OpenElectronics:
Trovi altre info qua..
http://www.open-electronics.org/gsm-gps-shield-for-arduino/

perche funzionano solo pochissime funzioni cn questa libreria?

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

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

#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