Problema libreria GPRS_Shield_Arduino.h

Link libreria: Libreria

Salve, come da titolo ho un problema con la libreria sopra citata.
Il problema consiste nella lettura degli sms che alcune volte mi ritorna il valore -1 e non funzionerà mai. Se la riavvio diverse volte invece, mi spunta il numero degli sms non letti, e funziona in modo corretto.
Scheda che utilizzo: Arduino mega

#include <GPRS_Shield_Arduino.h>
#include <SoftwareSerial.h>
#include <Wire.h>

#define PIN_TX    10
#define PIN_RX    3
#define BAUDRATE  19200

#define MESSAGE_LENGTH 160
char message[MESSAGE_LENGTH];
int messageIndex = 0;

char phone[16];
char datetime[24];

#define cellulare "+39xxxxxxxxxxx"
#define messaggio  "ciao"

GPRS gprsTest(PIN_TX, PIN_RX, BAUDRATE); //RX,TX,PWR,BaudRate

void setup() {
  Serial.begin(19200);
  while (!gprsTest.init()) {
    Serial.print("Errore ");
    delay(1000);
  }
  delay(3000);
  Serial.println("Connessione eseguita");
  //gprsTest.sendSMS(cellulare, "ciao");
}

void loop() {
  messageIndex = gprsTest.isSMSunread();
  Serial.println(messageIndex);
  if (messageIndex > 0) {
    gprsTest.readSMS(messageIndex, message, MESSAGE_LENGTH, phone, datetime);
    gprsTest.deleteSMS(messageIndex);
    Serial.print("From number: ");
    Serial.println(phone);
    Serial.print("Datetime: ");
    Serial.println(datetime);
    Serial.print("Recieved Message: ");
    Serial.println(message);
    String prova;
    prova = message;
    if (prova == "ciao") {
      Serial.println("invio messaggio");
      gprsTest.sendSMS(phone, "ciao");
    }
  }
}

Seriale:

Connessione eseguita
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1

up

Cosí Ti fai antipatico.

Cancello l' altro post perché é doppio. Ciao Uwe

Help !! :)

Un primo tentativo che puoi fare e scendere con la velocità della SoftwareSerial a 9600 ... da prove che alcuni utenti qui sul forum hanno fatto, sembra che sopra i 9600 la percentuale di errori salga rapidamente. Questa cosa implica però che tu riesca a mandare alla scheda almeno il comando AT per cambiare velocità.

Comunque, -1 è il valore che viene ritornato quando si cerca di leggere dalla seriale e NON ci sono caratteri disponibili, quindi:

  1. o è un problema di collegamenti non affiabili

  2. o è un problema di velocità della SoftwareSerial

  3. o è un problema nella libreria (... ma lo ritengo* improbabile*)

  4. o la scheda è difettosa (... e anche questo mi sembra improbabile)

  5. o ... è un problema di assobimento della scheda e di Arduino che, a volte, NON ce la fa ad alimentarla ::)

Ti consiglio un'attenta lettura del vecchio WiKi, quello relativo alla versione 2.0, dove venivano date molte informazioni utili.

Guglielmo

Buongiorno Guglielmo, una cosa strana che ho notato che se all'inizio gli faccio mandare un messaggio, lui non mi da -1 ma 0 che sta a significare nessun messaggio non letto. Per quanto riguarda l'alimentazione utilizzo due alimentatori separati, quello della scheda GSM è di 12V 2A. Per quanto riguarda la velocità, ho sempre utilizzato la 19200 e con i comandi AT non ho avuto nessun problema.

Prova, invece che con il tuo applicativo, con quanto descritto in "Examples/Applications" del suddetto WiKi e verifica che il tutto funzioni correttamente.

Altro non mi viene in mente.

Guglielmo

Grazie Guglielmo per i suggerimenti, proverò a diminuire il baud e portarlo a 9600