Go Down

Topic: Ricevere SMS con GSM Shield (tutto qui)......ma perche non trovo niente (Read 896 times) previous topic - next topic

tronicman

Code: [Select]
#include <SoftwareSerial.h>
#include <String.h>

SoftwareSerial mySerial(7, 8);


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 gsm

 
}
void loop()
{
  SendTextMessage();
 
}

void SendTextMessage()
{
  mySerial.print("AT+CMGF=1\r");   
  delay(100);
  mySerial.println("AT + CMGS = \"+39XXXXXXXX\"");
  delay(100);
  mySerial.println("A test message!");
  delay(100);
  mySerial.println((char)26);
  delay(100);
  mySerial.println();
}

void DialVoiceCall()
{
  mySerial.println("ATD + +39xxxxxxxxx;");
  delay(100);
  mySerial.println();
}


La mia shield http://www.seeedstudio.com/depot/gprs-shield-p-779.html deve solo ricevere un SMS ed eseguire una operazione.
Ma sono ormai settimane che ci perdo le notti ed i pomeriggi a provare tutte le librerie possibili ed immaginabili ma  sembra per me impossibile ricevere un SMS ed immagazzinarlo in una stringa.......

Possibile che nessun italiano abbia mai fatto una cosa del genere......ma che ci fate con la GSM Shield :-D ???

Michele Menniti

Cerca bene sul Forum, ci son almeno 3-4 Topic aperti su questo tipo di schede, in particolare ce n'è uno aperto dal creatore delle librerie per la scheda progettata da Futura Elettronica; se non ricordo male qualcuno un mesetto fa ha risolto problemi simile al tuo proprio grazie a queste librerie, scaricabili gratuitamente.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

tronicman

Si li ho letti tutti ma usando quelle librerie non riesco a dialogare con la shied, l unico modo è stato usando il codice che ho postato. ...addirittura qualche libreria usa un Serial.read (32, BYTE) che non funziona più e l ide mi suggerisce di usare il Serial.Write ()

cyberhs

Forse mi sbaglio, ma mi sembra che il comando per l'invio di un SMS sia errato: che io sappia non è consentito inserire degli spazi nell'invio del comando.

Prova a scrivere così: mySerial.println("AT+CMGS=\"+39XXXXXXXX\"");

tronicman


Forse mi sbaglio, ma mi sembra che il comando per l'invio di un SMS sia errato: che io sappia non è consentito inserire degli spazi nell'invio del comando.

Prova a scrivere così: mySerial.println("AT+CMGS=\"+39XXXXXXXX\"");



non vedo spazi.....e cmq funziona


Il mio problema è trovare dei comandi da unire al listato sopra per poter leggere i messaggi SMS

Vi prego mi date una mano !!!!



tronicman

Dopo le varie notti perse alla ricerca di informazioni su come ricevere SMS con la GSM Shield SIM900, complice anche la poca esperienza, sono finalmente riuscito ad ricevere risposte dal modulo:

sketch
Code: [Select]
String rsms="";

void setup()
{
  Serial.begin(9600);
  Serial2.begin(9600);
}

void receive_sms()
{
  Serial2.print("AT+CMGR=1\r");
  if (Serial2.available()>0)
  {
    int l=Serial.available();
    for (int i=0;i<l;i++)
    {
             rsms += (char)Serial.read();
     }
  }
  Serial.println(rsms);
}

void loop()
{
  receive_sms();
  delay(10000);
}



inviando alla seriale : AT+CMGR=1

Code: [Select]

+CMGL: 1,"REC READ","+39XXXXXXXXX",,"05/02/13,08:00:15+32",145,37
Testo di prova

OK


da qui ora come posso estrapolare il solo contenuto del messaggio "Testo di prova" ??

Sto facendo varie prove utilizzando rsms.indexOf("Testo") >= 0  ma sfortunamente non funziona

Avete qualche suggerimento??


Ovviamente c'è un altro problema ,anche se credo di conoscerne la causa, ovvero i messaggio di risposta dal terminale, è sempre il solito anche se invio nuovi sms, non è che la memoria per i messaggi è piena e non mi fa vedere gli altri ??

GRAZIE

marco134

ciao ho letto il tuo topic ho un listato che fa al caso tuo

marco134

devi usare la funzione clearbuffer per cancellare la memoria della sim

Michele Menniti

Avviso a tutti gli interessati: Elettronica In sta pubblicando, già da un paio di mesi, un eccellente Tutorial sulla programmazione di questi moduli, ovviamente con un occhio di riguardo alle sue schede. Penso che, come sempre, dopo l'ultima puntata ne faranno un file unico scaricabile gratuitamente dal sito (basta registrarsi), ma se qualcuno avesse fretta può dare un'occhiata al numero in edicola per vedere se trova qualcosa di utile.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Go Up