[Risolto] Non riesco ad inviare SMS con modulo modulo SIM808

Buongiorno ho collegato un Arduino uno e il modulo SIM808 utilizzando un codice di comunicazione seriale caricato su Arduino, usando il terminale seriale comunico con la scheda riesco a dare i vari comandi in AT e la scheda mi risponde, vedo tramite i comandi AT che reti GSM vede la scheda su che rete è agganciata la versione FW, quando provo a mandare un SMS : AT+CMGF = 1 ok AT+CMGS="+393355608213"

test do il CTRL-Z ma il messaggio non parte e devo resettare il modulo SIM808 perchè poi non risponde più ai comandi AT Il modulo SIM808 è alimentato con alimentatore da 12 V 3 A la scheda Arduino è alimentata dalla porta USB del PC Dalla scheda Vodafone ho disabilitato il PIN e ho provato a mandare degli SMS da un telefono e li invia. Ho provato anche a usare un codice che invia gli SMS ma di fatto non li invia come quando uso il monitor seriale. Non so dove stò sbagliando

Mi sembra che vada alimentato a 5 volt.

Ho letto che accetta da 5V a 26V

Buongiorno nessuno mi sa dare qualche indicazione???

Dopo il testo da inviare invi anche un CR/LF? Perché, se ben ricordo, deve ridarti il carattere'>' ... ... comunque la cosa migliore è che controllo la sintassi esatta nel manuale dei comandi AT del SIM808.

Guglielmo

Dopo il testo do l'invio e mi dovrebbe rispondere con l'ok dopo l'invio del messaggio ma si blocca e devo resettare la scheda perchè non risponde più ai comandi AT, perdonami LF cosa sarebbe??? Ora guardo bene sul manuale comunque. Grazie intanto

kchessa: .... perdonami LF cosa sarebbe???

CR = carriage return = 0x0D LF = line fedd = 0x0A

Comunque controlla perché non credo che nell'invio del testo di un SMS risponda OK, ma risponde sempre con un '>' per indicare che attende nuovo testo sino al CTRL-Z.

Guglielmo

Hai ragione il problema è che rimane come in attesa del ctrl-z visualizzando solo > ma ho provato più volte e non accetta il comando ctrl-z tutto questo al di fuori di uno sketch che da i comandi in automatico solo dal monitor seriale, ho anche provato dallo sketch, ma non funziona e fino a quando non riesco dal monitor seriale e inutile provare in altro modo

Non credo che il monitor seriale ti faccia inviare veramente il codice del CTRL-Z ... ... prova con un vero emulatore di terminale, es. CoolTerm (che è gratuito).

Guglielmo

Hai ragione usando coolterm sono riuscito ad inviare messaggio grazie mille ora proverò con gli sketch

Pensavo di aver risolto invece dopo essere riuscito a inviare SMS usando coolterm, ritenevo che inviarli tramite sketch fosse semplice, invece è giorni che ci provo ma non riesco allego il codice che ho semplificato per capire dove sbaglio, non capisco perchè usando il coolterm la scheda rispode ai vari comandi con OK invece da sketch non risponde e ovviamente non invia SMS

#include 
SoftwareSerial mySerial (2, 3);


void setup()
{

Serial.begin(9600);
Serial.print("Please enter AT command:"); 
delay(100);
}
void loop(){



  Serial.println("AT+CMGF=1 \r\n");    //Sending the SMS in text mode);
  delay(3000);
  Serial.println("AT+CMGS=\"+393355608213\" \r\n");//The target phone number
  delay(3000);
  Serial.print("Prova TXT" "\r\n");
  delay(3000);
  Serial.print((char)0x1D);
  delay(3000);

  

 }

Perché stampi su serial invece che myserial?

Ho visto degli esempi e mi sembrava giusto così proverò a fare come dici tu

Se riesci ricordati un karma

ho provato modificando il codice ma non funziona ancora

#include 
SoftwareSerial mySerial (2, 3);


void setup()
{

Serial.begin(9600);
Serial.print("Please enter AT command:"); 
delay(100);
}
void loop(){



  mySerial.println("AT+CMGF=1 \r\n");    //Sending the SMS in text mode);
  delay(3000);
  mySerial.println("AT+CMGS=\"+393355608213\" \r\n");//The target phone number
  delay(3000);
  mySerial.print("Prova TXT" "\r\n");
  delay(3000);
  mySerial.print((char)0x1D);
  delay(5000);

  

 }

boh! Magari non centra nulla, ma lo vedi che usi una println e in più metti anche un ritorno carrello+avanti riga? non credo servano tutti e due sei sicuro del cablaggio? hai incrociato rx con tx? perchè non fai la myserial.begin? prova a scrivere un programma che legge dalla seriale HW e copia sulla seriale SW, e viceversa così puoi comandare il modulo gsm dal terminale "attraverso" Arduino, e avrai certezza che la parte HW funziona correttamente

L'ho fatto e dando i comandi AT direttamente funziona quando provo con lo sketch non funziona

quindi tu hai collegato il PC (col suo terminale) all'arduino via USB, Arduino via Softserial al modulo, e così funziona? bene, si tratta solo di scoprire quale errore c'è nel programma quindi posta quello che funziona con l'emulatore di terminale e da li si parte

Non ho collegato la scheda via USB ma sui pin 10 e 11 come da SW che allego

#include 
SoftwareSerial mySerial (10, 11);// TX, RX

void setup()
{
mySerial.begin(9600);   
Serial.begin(9600);
Serial.print("Please enter AT command:");   
delay(100);
}
void loop()
{
 if (Serial.available()>0)
 mySerial.write(Serial.read());
 if (mySerial.available()>0)
 Serial.write(mySerial.read());
}

quindi riassumendo: con l'ultimo programma tu riesci a mandare gli SMS dal PC usando arduino come ponte invece dando gli stessi comandi da arduino invece che da PC, con gli stessi collegamenti non ti riesce ho capito giusto? a parte che prima usavi 2 e 3, ma va bene, non cambiare più la configurazione, questa va e questa teniamo aspetta che penso un poco...