Nessuna comunicazione con simcom 7600G+H

Buonasera
Ho comprato un modulo simcom 7600G+H
Ho testato la comunicazione con realterm e riesco
Ho impostato il baudrate a 9600
Il problema e' che il nano non comunica
Sotto lo sketch lungo ma ripetitivo
Il nano riusciva a comunicare con il vecchio wavecom
I comandi AT hanno fondamentalmente la stessa sintassi
Il datasheet del modulo dice di attendere un po dopo il comando AT, ho provato diversi valori di delay ma senza successo
Ogni suggerimento benvenuto
Un ultima cosa ho scaricato realterm da

Blockquote](RealTerm: Serial/TCP Terminal download | SourceForge.net)

dopo qualche ora mi appare un messaggio di avviso dall antivirus, preoccupato perche' sono vermente rari ho disintallato, avete un terminale alternativo
Grazie

/*
per testare i comandi AT 
                                                            v55
*/

//comunicazione con modem GSM
#include <AltSoftSerial.h>  // AltSoftSerial - Version: Latest rx 8 tx 9
AltSoftSerial Modem;        // pin 8 arduino -> Modem TX Pin, pin 9 arduino -> Modem RX Pin

char incoming_char;
char stringOne[200] = " ";
char substringa[50] = " ";
char response[200] = " ";

char creg[] = "0,2";

char PhoneNumber1[] = "ATD+39xxx11;\r\n";
char PhoneNumber2[] = "ATD+39xxx22;\r\n";
char PhoneNumber3[] = "ATD+39xxx33;\r\n";
char PhoneNumber4[] = "ATD+39xxx44;\r\n";


char casoSingolo[] = " ";

int comando;

byte i, j, k;  //contatore



void setup() {

  delay(100);

  Serial.begin(9600);  //Initialize serial ports for communication.

  Modem.begin(9600);  //Initialize serial ports for communication.

  i = 0;
  j = 0;
  k = 0;

  comando = 0;

  Serial.println("inizio programma");  //stampa di controllo

  delay(1000);
}

void loop() {

  ReadSerial();

  delay(1000);

  switch (casoSingolo[0]) {
      //switch (comando) {

    case '1':
      Serial.println("caso 1 Manufacturer identification +CGMI");
      Serial.println("AT+CGMI");
      Serial.println("scrivo sul modem");

      Modem.print("AT+CGMI;");
      Modem.write(13);  //\r
      Modem.write(10);  //\n

      delay(100);

      ReadModem();

      memset(casoSingolo, 0, sizeof(casoSingolo));

      comando = 0;
      break;

    case '2':
      Serial.println("caso 2 Request model identification +CGMM");
      Serial.println("AT+CGMM");
      Serial.println("scrivo sul modem");

      Modem.print("AT+CGMM;");
      Modem.write(13);  //\r
      Modem.write(10);  //\n

      delay(50);

      ReadModem();
      memset(casoSingolo, 0, sizeof(casoSingolo));

      break;

    case '3':
      Serial.println("caso 3 Product Serial Number +CGSN");
      Serial.println("AT+CGSN");
      Serial.println("scrivo sul modem");

      Modem.print("AT+CGSN;");
      Modem.write(13);  //\r
      Modem.write(10);  //\n

      delay(50);

      ReadModem();

      memset(casoSingolo, 0, sizeof(casoSingolo));

      break;

    case '4':
      Serial.println("caso 4 Card Identification +CCID");
      Serial.println("AT+CCID;");
      Serial.println("scrivo sul modem");

      Modem.print("AT+CCID");
      Modem.write(13);  //\r
      Modem.write(10);  //\n

      delay(50);

      ReadModem();

      memset(casoSingolo, 0, sizeof(casoSingolo));

      break;

    case '5':
      Serial.println("caso 5 Phone activity status +CPAS");
      Serial.println("AT+CPAS");
      Serial.println("scrivo sul modem");

      Modem.print("AT+CPAS;");
      Modem.write(13);  //\r
      Modem.write(10);  //\n

      delay(50);

      ReadModem();

      memset(casoSingolo, 0, sizeof(casoSingolo));

      break;

    case '6':
      Serial.println("caso 6 Hang-Up command H");
      Serial.println("ATH");
      Serial.println("scrivo sul modem");

      Modem.print("ATH;");
      Modem.write(13);  //\r
      Modem.write(10);  //\n

      delay(50);

      ReadModem();
      memset(casoSingolo, 0, sizeof(casoSingolo));

      break;

    case '7':
      Serial.println("caso 7 Signal Quality +CSQ");
      Serial.println("AT+CSQ");
      Serial.println("scrivo sul modem");

      Modem.print("AT+CSQ;");
      Modem.write(13);  //\r
      Modem.write(10);  //\n

      delay(50);

      ReadModem();

      //estraggo parti dalla la stringa

      for (j = 15; j <= 17; j++) {

        response[k] = stringOne[j];

        k++;
      }

      Serial.print("response");  //stampa di controllo
      Serial.println(response);  //stampa di controllo

      //Serial.println();

      Serial.println("RSSI");          //stampa di controllo
      Serial.println(atoi(response));  //stampa di controllo

      Serial.println();

      Serial.println("0-10 not ok");              //stampa di controllo
      Serial.println("11-31 ok");                 //stampa di controllo
      Serial.println("32-98 not defined");        //stampa di controllo
      Serial.println("99 no measure available");  //stampa di controllo

      Serial.println();

      if (atoi(response) > 11 && atoi(response) < 31) {
        Serial.println("Segnale RSSI sufficente");
      } else {
        Serial.println("Segnale RSSI insufficente");
      }

      Serial.println();

      memset(stringOne, 0, sizeof(stringOne));  //svuoto vettore
      //memset(incoming_char, 0, sizeof(incoming_char));  //svuoto vettore
      memset(response, 0, sizeof(response));  //svuoto vettore

      i = 0;  //azzero contatore
      k = 0;  //azzero contatore

      memset(casoSingolo, 0, sizeof(casoSingolo));
      memset(stringOne, 0, sizeof(stringOne));

      break;

    case '8':
      Serial.println("caso 8 Network registration +CREG");
      Serial.println("AT+CREG?");

      Modem.print("AT+CREG?;");
      Modem.write(13);  //\r
      Modem.write(10);  //\n

      delay(50);

      ReadModem();

      //estraggo parti dalla la stringa

      for (j = 19; j <= 22; j++) {

        //Serial.print(stringOne[j]);  //stampa di controllo
        response[k] = stringOne[j];
        k++;
      }

      Serial.println();

      Serial.println("+CREG response");  //stampa di controllo
      Serial.println(response);          //stampa di controllo

      if (strncmp(response, creg, 3) == 0) {
        Serial.println("dispositivo registrato in rete");
      } else {
        Serial.println("dispositivo non registrato in rete");
      }

      memset(stringOne, 0, sizeof(stringOne));  //svuoto vettore
      //memset(incoming_char, 0, sizeof(incoming_char));  //svuoto vettore
      memset(response, 0, sizeof(response));  //svuoto vettore

      i = 0;  //azzero contatore
      j = 0;  //azzero contatore
      k = 0;  //azzero contatore

      memset(casoSingolo, 0, sizeof(casoSingolo));

      break;

    case '9':
      Serial.println("caso 9 Network registration +CPIN");
      Serial.println("AT+CPIN");

      Modem.print("AT+CPIN?;");
      Modem.write(13);  //\r
      Modem.write(10);  //\n

      delay(50);

      ReadModem();

      memset(casoSingolo, 0, sizeof(casoSingolo));

      break;

    case 'a':
      Serial.println("caso a Dial command D");
      Serial.println("ATD");

      //----------------------------------------------chimata al 1mo numero

      Modem.print("ATD+39123456789;");
      Modem.write(13);
      Modem.write(10);

      delay(50);

      ReadModem();

      memset(casoSingolo, 0, sizeof(casoSingolo));

      break;

    case 'e':
      Serial.println("caso e AT+CMGF configre the text mode");
      Serial.println("AT+CMGF?");

      Modem.print("AT+CMGF?");
      Modem.write(13);
      Modem.write(10);

      delay(50);

      ReadModem();

      memset(casoSingolo, 0, sizeof(casoSingolo));


      break;

    case 'f':
      Serial.println("caso f AT+CMGS Send message");
      Serial.println("AT+CMGS");

      //--------------------------------------------------SMS al 1mo numero

      Modem.print("AT+CMGS=1;");
      Modem.print(13);
      Modem.print(10);

      delay(50);

      ReadModem();

      //Modem.print("AT+CMGS=+39xxxx;\r\n\rilevata presenza attorno JD");  //SMS 1 inserisci tuo num cellulare

      Modem.print("AT+CMGS=+39xxxx");
      Modem.write(13);
      Modem.print("rilevata presenza attorno al verdone JD");  //SMS 1 inserisci tuo num cellulare

      //Modem.print(char(26)); // CTRL Z
      Modem.write(26);  // CTRL Z

      Serial.println("SMS done");

      ReadModem();

      memset(casoSingolo, 0, sizeof(casoSingolo));
      //memset(casoStringa, 0, sizeof(casoStringa));

      break;

    case 'g':
      Serial.println("caso g ATI Display product identification information");
      Serial.println("ATI");
      Serial.println("Scrivo su modem");

      Modem.print("ATI\r\n");
      Modem.write(13);  //\r
      Modem.write(10);  //\n

      ReadModem();

      memset(casoSingolo, 0, sizeof(casoSingolo));

      break;

    default:
      Serial.println("Not a valid command/waiting for a comand");
  }
  delay(1000);
}


void ReadModem() {

  delay(500);

  memset(stringOne, 0, sizeof(stringOne));
  i = 0;

  Serial.println("ReadModem()");  //stampa risposta modem

  //while a character is coming from the Modem
  while (Modem.available() > 0) {

    incoming_char = Modem.read();  //Get the character from the Modem port.
    stringOne[i] = incoming_char;  //compone la stringa

    //Serial.println("incoming_char");
    //Serial.print(incoming_char);

    i++;

    delay(50);
  }

  Serial.println("stringOne");  //stampa risposta modem
  Serial.print(stringOne);      //stampa risposta modem

  //memset(stringOne, 0, sizeof(stringOne));
}

void ModemCRLF() {
  Modem.write(13);
  Modem.write(10);
}

void ReadSerial() {

  i = 0;

  //while a character is coming from the Serial
  while (Serial.available() > 0) {

    incoming_char = Serial.read();  //Get the character coming from the terminal
    casoSingolo[i] = incoming_char;

    Serial.println("incoming_char");
    Serial.println(incoming_char);

    i++;

    delay(50);
  }

  if (i > 0) {

    Serial.println("casoSingolo");
    Serial.println(casoSingolo);

    //comando = atoi(casoSingolo);

    //Serial.println("comando");
    //Serial.println(comando);
  }
}

Fermi tutti
Metto in attesa il post perchè ho fatto un errore nel collegamento non mettendo le masse alimentatore arduino e modulo in comune
Però se mi date un programma per la comunicazione seriale alternativo a real term ringrazio

Puoi provare Putty, semplice ma efficace.

Ciao, Ale.

Molto valido anche YAT (Yet Another Terminal)
Comoda soprattutto la possibilità di definire dei pulsanti "custom" che torna utile quando si ha a che fare con i moduli AT.

provati
belli
il modulo funziona correttamente, aspetto per la sim

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.