SIM800L non riceve SMS (e non li invia)

Salve, a tutti.
Prima di scrivere qui ho provato a fare una ricerca sia direttamente su questo forum, e sia sul motore di ricerca, ma non ho trovato risposte.
Ho una board SIM800L, questa, quella rossa per intederci senza partitore che appunto poi ho fatto io con delle resistenze per avere la giusta tensione sul RX (ho seguito lo schema indicato QUI).
L'alimento con una batteria al piombo 6v 4A e con uno step down, il classico con LM2596 dando appunto la tensione segnata sul datasheet tra 3.4 e 4.4v .
Lo sketch utilizzato è quello sotto preso dal GitHub di Aliverti.
Il problema è quello descritto nel titolo, inserendo una scheda WIND3 ovviamente senza PIN (ho provato anche con altre Sim come Ho.Mobile di VEI che è Vodafone), e provando ad inviare un sms "ledon", tale messaggio non viene ricevuto e di conseguenza non fa quello che deve fare: accendere il led a bordo. Ho provato anche a far inviare dalla scheda ad un numero specifico un SMS, ma sempre non va. Il modulo ai vari comandi "AT" contenuti nel setup risponde con "OK" una volta avviato e quindi il modulo comunica con Arduino. Ma il problema è la ricezione e trasmissione di SMS che non va proprio. L'unica cosa che mi vien da pensare è che magari gli operatori delle SIM sopracitate si agganciano alle BTS solamente con 4G, quindi dato che il modulo è un GSM/GPRS non funziona per tale motivo. Poi magari sbaglierò qualcosa che adesso mi sfugge, quindi chiedo gentilmente a voi, consigli su cosa fare per ovviare a tale problema.
Sotto vi riporto lo sketch per averlo qui ben in vista anche se ho messo il link GitHub di Aliverti sopra.

Grazie in anticipo alle eventuali risposte.

#include <SoftwareSerial.h>

SoftwareSerial sim800(3, 2); //SIM800L Tx & Rx is connected to Arduino #3 & #2

void setup() {
  pinMode(13, OUTPUT);
  Serial.begin(9600);
  sim800.begin(9600);

  Serial.println("Initializing..."); 
  delay(1000);

  sim800.println("AT"); 
  updateSerial();
  
  sim800.println("AT+CMGF=1"); // Configuring TEXT mode
  updateSerial();
  sim800.println("AT+CNMI=1,2,0,0,0"); // Decides how newly arrived SMS messages should be handled
  updateSerial();
}

int n = 0; 
String ret = "";
bool LOOP = true;
  
void loop() {
  if (sim800.available()) {
      char c = sim800.read();
      if (c == '\n') {
        Serial.println("RX:" + ret + "#");                
        if (ret == "ledon") {
          digitalWrite(13, HIGH);
          Serial.println("on");
        } else if (ret == "ledoff") {
          digitalWrite(13, LOW);
          Serial.println("off"); 
        }
        ret = "";
      } else if (c == '\r') {        
      } else {
        ret += c;                 
      }    
    }
}

void updateSerial()
{
  delay(500);
  while (Serial.available()) 
  {
    sim800.write(Serial.read());
  }
  while(sim800.available()) {
    Serial.write(sim800.read());
  }
}

At+creg (network registration) cosa ti risponde?

Risponde così:

16:04:34.038 -> AT+CREG?
16:04:34.038 -> +CREG: 0,0
16:04:34.038 ->
16:04:34.038 -> OK

successivamente così:

16:07:11.926 -> AT+CREG?
16:07:11.926 -> +CREG: 0,2
16:07:11.926 ->
16:07:11.926 -> OK

Non registrato

Ricerca nuovo operatore

Mi sa che ti conviene cambiare modulo

Ho provato quest'altro modulo che ha già un partitore resistivo, ho dovuto fare un ponte tra PWX e GND altrimenti non lampeggiava ne rispondeva ai comandi AT.
Alimentato prima sul pin 5v con alimentatore per smartphone 5v 3A, e poi ho provato anche sul pin VBAT con l'LM2596 portando la tensione a 3,8v così come suggerito nei commenti su Amazon dove l'ho comprato, il risultato è sempre lo stesso, cioè risponde così:

13:06:37.686 -> RX:#
13:06:37.686 -> RX:Call Ready#
13:06:38.136 -> RX:#
13:06:38.239 -> RX:SMS Ready#
13:06:39.298 -> AT+CREG?

13:06:39.298 -> +CREG: 0,2
13:06:39.298 ->
13:06:39.298 -> OK

+CREG a volte mi da 0,2 altre 0,4 ma niente di più, non si registra sulla rete.
Ho messo anche l'antenna che avevo sul precedente modulo, ma niente, non si aggancia.

PS. il GND è messo sempre in comune con l'Arduino

Ho anche io un modulo SIM800L, però QUESTO.
A parte che di tre ordinati, da tre fornitori diversi, ne ho buttati due perché proprio non ne volevano sapere di accendersi, i moduli in questione hanno problemi dovuti all'alimentazione che, in trasmissione, ha dei picchi elevati.
Io l'ho messo da 2200 uF, altro che 0,22 :grinning_face_with_smiling_eyes:
In giro sul web si trovano diverse soluzioni e anche Aliverti dice di mettere un bel condensatore elettrolitico sui pin di alimentazione, per evitare bruschi abbassamenti di tensione. Se poi lo hai su una breadboard, fai attenzione proprio a questi due contatti.

Poi, prova a chiamare quella SIM per vedere se senti il tono di chiamata sul tuo cellulare e se la seriale ti da il messaggio di "chiamata in ingresso"

Ti ringrazio per la risposta. Sì, la questione dei condensatori l'avevo letta e l'ho applicata, ma nemmeno con i condensatori si agganciava alla rete. Diciamo che comunque non mi sono scoraggiato, fortunatamente ho potuto rendere i due moduli di cui ho discorso finora e ne ho ordinato un terzo (QUESTO) che ha un condensatore al tantalio da 1000uF già integrato anzichè i 100uF come le schede provate (è già qualcosa, partire con un condensatore a bordo della capacità espressa nel datasheet del SIM800). Vediamo come va con quest'ultimo (non so se sarà proprio "l'ultimo") tentativo.
Ho letto varie recensioni e questi moduli hanno un bel po' di problemucci.

PS. non funzionava ne sms ne chiamata su ambo due le board, ovviamente la sim funziona inserita nello smartphone.

Problema risolto.
Come indicato nella risposta precedente, ho ordinato questo modulo e finalmente funziona senza troppi problemi.
Voglio precisare però che questo modulo che ho linkato, in un primo momento è arrivato difettoso, infatti non si accendeva; quindi ho contattato il venditore e costatato il problema ha provveduto ad inviarmene un altro. Un'ora fa è arrivato a casa, cablato velocemente (senza il condensatore da 1000uF) alimentato con batteria 6v 4A regolando la tensione con LM2596, è andato subito.
Anche sull'alimentazione c'è da dire una cosa: come è già noto questi moduli necessitano di una alimentazione che regga i picchi di corrente, infatti ci sono dei momenti in cui il modulo assorbe tanto. Ho provato con un alimentatore per smartphone 5v 3A, prima senza e poi con il condensatore da 1000uF, in entrambi i casi al picco il modulo si spegneva, evidentemente era questo alimentatore "a non farcela". Con la batteria, tutto ok!
Grazie a chi mi ha risposto!

Bene

Contento

Perfetto! Contento anche io :slightly_smiling_face:

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