Go Down

Topic: Probleme de reception de SMS. SIM 900 (Read 3639 times) previous topic - next topic

Hache76

Alors deja je te remercie de partager ton code et je comprends mieux pourquoi tu comprends mon problème puisque nos projets sont très similaires sauf que moi je ne fais aucune gestion d'energie puisque mon systeme est sur une batterie de voiture en floating permanent sur le reseau 220V.

Sinon finalement nos codes se ressemble assez, envoie de commande de l'utilisateur et traitement par l'arduino...

Donc dernièrement j'ai abandonné le port serie soft pour passer sur un port série hard ( le serial1 de la Mega ).

j'ai activé l'accusé de réception sur mon portable ( chose que je n'avais jamais pensé a faire jusqu'ici ), l'alarme a bien fonctionné toute l'après midi d'hier et en rentrant du boulot ce matin j'ai  remarqué qu'elle ne répondait pas a mes commandes et que je n'obtenais pas d'accusés de réception...
Arrivé chez moi, j'ai envoyé une SMS depuis mon alarme vers mon portable ( ce qui fonctionne toujours ) et dans les secondes qui ont suivit j'ai vu les accusés de réception apparaitre sur mon portable et les SMS "en attente" ou plutôt non reçus ont été traités...

Finalement cette expérience indique que le GSM ne reçoit pas les SMS de temps en temps (alors que le réseau est bon) alors que moi je m'orientai plus vers un problème de liaison entre Arduino et GSM...
enfin une piste de plus a creuser...


robotdelta

donc ça viendrai effectivement d'un problème de hardware j'ai une petite idée la dessus, tu utilise quelle puce ou shield ? (ref exacte)  je pense qu'il s'agit tout simplement de la gestion d'énergie justement

en fait mon système fonctionne de cette façon:
-alimentation régulée 5V vers powerboost 1000C pour la charge d'une batterie lipo
-powerboost 1000C vers arduino en 5V  et vers la puce GSM (alim 3.7V) depuis la sortie batterie (avec quelques condensateurs pres de la puce GSM)

en fait la batterie lipo sert de tampon, car la puce GSM tire environ 3A en pic de quelques µs toutes les quelques ms. sans la batterie lipo tu vas avoir un énorme parasite sur ton alim ce qui peut amener ton module GSM a reset sans arrêt et le planter (sauf si commande en entrée, je me suis arraché les cheveux dessus aussi)

la solution (peut-être) a ton problème serait d'intercaler une batterie lipo dans ton montage, le module powerboost 1000C est très bien pour ça ;)


de plus je ne pense pas que la connection a l'arduino soit le problème car le module GSM gere les sms en interne, que tu soit branché ou non a l'arduino, si le module GSM est alimenté correctement tu devrait recevoir un accusé de reception quand meme

comment se fait exactement ton alimentation? (un schema serait top)

robotdelta

ah au fait, mon système est autonome et fonctionne directement depuis l'alimentation de la batterie lipo ( merci le powerboost) ça peut être intéressant pour ton projet d'alarme

dans ton cas je pencherai pour un bête adaptateur secteur --> 5V et tu utilise le module GSM pour gérer l'état de charge de ta batterie (le module GSM a une entrée batterie et une fonction interne qui permet directement d'avoir son niveau en % ), un simple relais ou transistor mosfet coupe ou laisse passer le 5V sur l'entrée usb du powerboost

riens je pense que cette fonction que j'ai écrite pourras t'intéresser dans ce cas:
boucle principale :
Code: [Select]
// aquisition tension batterie GSM <-- test OK
    Clock(0, Check_Charge_Clock);
    Last_State_Charge = EN_charge_bat;
    if (EN_charge_bat == 0 || Check_Charge_Clock.compt >= 300) // test de la tension batterie quand eveil ou toutes les 5 mins (300secs) (120secs pour les tests)
    { // si deja en charge (pas de deconnection intempestive de la charge)
      if (EN_charge_bat == 1) // si baterrie en charge on attend 10 sec avant de mesurer sinon on attend pas
      {
        EN_charge_bat = 0; // coupure de la charge pour faire le test
        digitalWrite(Enable_Charge, EN_charge_bat);
        delay(10000); //attente pour stabiliser la tension batterie du module
      }
      else
      {
        EN_charge_bat = 0; // coupure de la charge pour faire le test
        digitalWrite(Enable_Charge, EN_charge_bat);
      }

      Vbat_Save = checkBatGSM(); // aquisition tension batterie GSM
      if (Vbat_Save >= 10)
      {
        Check_Charge_Clock.compt = 0; // si test batterie GSM OK, on reset le chrono
        delay(100);
      }
    }

    // gestion de la charge en focntions du niveau des 2 batteries <-- test OK


et fonction:
Code: [Select]
byte checkBatGSM() {
  boolean last_DTR = 0;
  int Vbat_P = 0;
  int Vbat_mV = 0;
  int mode = 0;
  int TIMEOUT = 0;
  last_DTR = digitalRead(DTR);
  digitalWrite(DTR, HIGH);
  delay(100);
  if (!sim808.checkPowerUp()) // verification de connection avec AT commandes
  {
    digitalWrite(DTR, last_DTR);
    return 1;  // si pas de reponse, code erreur 1
  }
  GSMserial_flush(); // vidange du serial pour eviter les residus de serial

  // emission de la demande d'information sur la charge de la batterie
  GSMserial.println(F("AT+CBC\r\n"));
  delay(500);
  //attente d'une reponse du module
  while (GSMserial.available() == 0 && TIMEOUT <= 500)
  {
    TIMEOUT++;
    delay(10);

  }
  if (GSMserial.available() == 0 && TIMEOUT >= 500)
  {
    digitalWrite(DTR, last_DTR);
    return 2; //si aucune reception en 5s retourne le code d'erreur: code erreur 2
  }
  else
  {
    if (GSMserial.find("+CBC:") == 0)
    {
      digitalWrite(DTR, last_DTR);
      return 3; //si on trouve pas le bon string, retourne le code d'erreur: code erreur 3
    }
  }

  mode = GSMserial.parseInt();
  Vbat_P = GSMserial.parseInt();
  Vbat_mV = GSMserial.parseInt();
  GSMserial_flush(); // vidange une nouvelle fois pour ne rien laisser trainer
  // precautions contre les valeures aberentes
  if (Vbat_P < 10 ) Vbat_P = 10;
  if (Vbat_P < 10 || Vbat_P > 100)
  {
    digitalWrite(DTR, last_DTR);
    return 4;  // si valeures aberantes, retourne code d'erreur: code erreur 4
  }
  else
  {
    digitalWrite(DTR, last_DTR);
    return Vbat_P;
  }

}

Hache76

Mon module est celui la

Concernant l'alimentation du projet c'est une batterie de voiture en floating sur le reseau EDF, en dessous j'ai des LM2596 dont un reglé a 4Volt pour le module GSM.

Je pense que ton idée parasites est probable, j'ai pas d'intérêt a mettre une batterie lipo ( sauf si ça résoud mon problème ;) ) puisque mon alarme est déjà secouru par la batterie de voiture.

Je vais mettre un condensateur entre le LM2596 et le module GSM pour voir si ca aide...

robotdelta

#34
Nov 21, 2017, 12:48 am Last Edit: Nov 21, 2017, 10:56 am by robotdelta
super on a exactement le meme module! donc oui il s'agit bien d'un problème d'alimentation dans ton cas, en effet ta batterie de voiture est la en secours mais la batterie lipo pourrait justement te servir de batterie de secours (plus petite déjà) mais surtout elle va servir de tampon pour les pics de courants de ton module

de plus je sais par experience que les alims regulées (lmXXX) crées des petits parasites ou des je ne sais quoi sur l'alimentation c'est pour ça que la batterie est bien meilleure comme source d'alimentation pour ce module GSM en tout cas ;)

j'ai planché sur ce probleme pendant un moment

Hache76

Bon les petites avancées, maintenant c'est presque sur le soucis vient de parasites qui se promènent ( je n'explique pas leurs rôles sur le module SIM800 ou 900 mais en tout cas ca l'empêche de recevoir des SMS pendant un certain temps ! )

J'ai fais l'essai de mettre une radio a proximité de mon montage et pas moyen de capter un signal clair a deux mètres du coffret d'alimentation là ou se trouve trois LM2596 qui distribuent les différentes tensions ( 7 volts pour l'arduino, 5 volts pour les LCD et les relais et 4 volts pour le GSM).

J'ai changé le LM2596 du module GSM ( car j'ai constaté une baisse de tension autour de 3.2 Volt pendant quelques minutes puis il est remonté a 4 volts ) par un plus puissant ( 5 A ) et j'ai mis un filtre LC derrière.

Je constate toujours mon problème mais moins souvent... je continue de travailler la dessus... mais je n'explique pas pourquoi à la maison de vacance je n'ai aucun problème de parasites comme celui là ! ( la seule différence c'est que le montage est fait sur une grille métallique reliée la terre alors que sur le modèle qui pose problème le montage est sur une planche de bois ! )

robotdelta

3 alimentations? pourquoi une alimentation 7V pour l'arduino? tu pourrais te passer de l'alimentation 7V et de l'alimentation (interne) de la carte ardruino si tu envoie directement ton 5V sur la broche 5V de l'arduino si il est bien régulé

normalement une alim 5A devrais suffire mais assure toi d'avoir la distance la plus courte possible entre ton alim et ton module GSM, de mettre des cables suffisamment gros pour eviter une chute de tension trop importantes due aux cables et de prendre des composants low ESR.

tu peux regarder dans les docs techniques de la sim800L il y a un paragraphe qui traite du filtrage nécessaire à l'alimentation

un coffret d'alimentation? tu passe du 220V juste à coté? il se pourrait que cela cause des interférences dans le réseau mobile (hypothèse) surtout si ton réseau n'est pas très fort tu peux ruiner toutes tes chances.
tu pourrais peut-être créer une cage de faraday autour de ton module GSM et d'utiliser un cable antenne (connecteur micro SMA)  pour déporter l'antenne là où le 220V n'interférerai pas.

Hache76

j'ai modifié un peu le montage des alimentations LM2596 qui étaient dans une boite plexo avec un montage temporaire sur une planche.



Avec ce test, y a toujours des parasites ( d'après le radio :) ) mais beaucoup moins. Tout a bien fonctionné pendant 40 heures et le problème est revenu. Il est nettement mois récurrent mais existe encore...

Je pars quelques jours en vacances et après, je continue de chercher.

robotdelta

Ah oui je comprends mieux pourquoi tu as des soucis,  déjà j'ai un doute sur la section des câbles après l'alim: essaie du 0.75 ou du 1mm2 juste pour être sûr que ça limite pas ta tension ensuite ton filtre LC me paraît inutile vu que l'alim est déjà filtré il me semble (cela n'engage que moi) je pense que le mieux est une liaison directe entre l'alim et le GSM  avec 4 condensateurs en parallèle le plus proche possible du GSM: 1 de 220microF,  1 de 10 microF, 1 de 33 picoF et 1 de 10 picoF (c'est le filtrage qui marche le mieux pour moi)

Maintenant il se peut que tes problèmes viennent d'avant l'alim, tu as beau avoir une superbe alim filtré et tout si ton câble est de section trop faible ou câble trop long tu arriveras au même résultat n'oublie pas que tu as 5À à balader (d'après la catégorie d'alim que tu as choisi)

Une chose qui te serais bénéfique je pense c'est de faire ton montage sur une plaque à trou avec pastilles à souder, avec des connecteurs tulipes ou lyres en faisant les pistes d'alimentation suffisamment épaisses avec de l'etain

Sur ce bonnes vacances à toi ;)

Hache76

Ah oui je comprends mieux pourquoi tu as des soucis,  déjà j'ai un doute sur la section des câbles après l'alim: essaie du 0.75 ou du 1mm2 juste pour être sûr que ça limite pas ta tension ensuite ton filtre LC me paraît inutile vu que l'alim est déjà filtré il me semble (cela n'engage que moi) je pense que le mieux est une liaison directe entre l'alim et le GSM  avec 4 condensateurs en parallèle le plus proche possible du GSM: 1 de 220microF,  1 de 10 microF, 1 de 33 picoF et 1 de 10 picoF (c'est le filtrage qui marche le mieux pour moi)

Maintenant il se peut que tes problèmes viennent d'avant l'alim, tu as beau avoir une superbe alim filtré et tout si ton câble est de section trop faible ou câble trop long tu arriveras au même résultat n'oublie pas que tu as 5À à balader (d'après la catégorie d'alim que tu as choisi)

Une chose qui te serais bénéfique je pense c'est de faire ton montage sur une plaque à trou avec pastilles à souder, avec des connecteurs tulipes ou lyres en faisant les pistes d'alimentation suffisamment épaisses avec de l'etain

Sur ce bonnes vacances à toi ;)
Je te remercie vraiment des conseils, effectivement je pense qu'il faut que je refasse l'alimentation générale. j'ai commandé quelques pieces pour faire des choses plus "propre" deja.

Mon pere actuellement a la maison de vacances a fais quelques mesures pour chercher des difference notables entre l'alarme qui marche parfaitement et la mienne qui déconne...

Il a noté qu'il avait 1 volt entre +12v de la batterie et la terre du 220 EDF...

J'ai fais a même mesure et j'ai 11.5 volt entre ces deux points, comme si le masse de ma batterie était relié a la terre du 220 volt EDF ( alors que je n'ai aucun lien physique entre les deux ). Ca pourrait l'origine de mes parasites... Car la terre du réseau EDF transporte pas mal de choses...


Hache76

Bonjour,

Je reviens vers le forum pour donner la solution au problème que j'ai trainé pendant un sacré bout de temps. Si je n'arrivais pas a le résoudre c'est simplement parce-que le problème ne venait ni du soft ni du hard mais du fournisseur de téléphone...

J'ai un forfait free a 2€ et après pas mal de recherche beaucoup de personne avaient le même genre de soucis que moi, c'est a dire pas de réception de SMS et au bout d'un temps indéterminé la réception en salve de l'ensemble des SMS en attente.
L'explication serait des réseaux surchargés qui déleste des utilisateurs et le seul moyen de s'y reconnecté et de redémarrer le téléphone ou d'envoyer un SMS ( exactement comme la solution que j'avais avec mon alarme).

finalement étant en SMS illimités j'ai décidé que mon alarme s'enverrait un SMS par heure ( qu'elle ne traite pas a la réception ) afin de garder le réseau... et depuis je n'ai plus aucun problème...

Ce n'est certainement pas la solution idéale mais ça fonctionne bien :)

kakachi

hello everybody !!!!
Mr Hache76 merci de partager  ton code avec moi

Go Up