Pb envoi sms avec un SIM800C

chez moi il a fallu que j’insiste pour avoir un retour…

minicom : Sending AT Commands

pour la qualité du signal : AT+CSQ
(https://m2msupport.net/m2msupport/atcsq-signal-quality/)

tu ne précises pas si tu utilises un hat (plugé sur les pins du Rpi ) ou directement un module (via usb ou gpio )

dans le premier cas j’avais bien galéré avec un switch pour contrôler l’UART
dans le second il pourrait y avoir un problème d’alimentation ( apparemment des pics qui demande de l’ampérage - mais les modules sim800C que j’ai vu sur le net semble avoir le bon condensateur (?) )

un problème d’antenne ?

J’ai un HAT
Quel problème as tu rencontré ?
J’ai installé minicom
Il plante lorsque j’envoi des commandes !!
J’ai branché le PI et SIM800 avec une alim de 5A
L’antenne était livré avec le SIM

J’ai fait un essai sur un PI4 et zero w avec Bluetooth
Apparemment d’après ce que j’ai lu le bluetooth pose problème
Il faut le désactiver d’après le tuto: raspberry-pi.fr/activer-port-serie-raspberry-pi/
Qu’en penses tu ?

et aussi rediriger le PL011 aux broches 14 et 15 du connecteur GPIO.

J’ai lancé les commandes ci-dessous pour désactiver le bluetooth et rediriger le PL011:
echo « dtoverlay=disable-bt » | sudo tee -a /boot/config.txt
sudo systemctl disable hciuart
sudo reboot
phone = serial.Serial("/dev/serial0", baudrate=115200, timeout=1)

Du coup minicom fonctionne correctement:
Welcome to minicom 2.7.1

OPTIONS: I18n
Compiled on Aug 13 2017, 15:25:34.
Port /dev/serial0, 15:17:21

Press CTRL-A Z for help on special keys

AT
OK
AT+CMGF=1
OK
AT+CNMI=2,1,0,0,0
OK
AT+CSQ=?
+CSQ: (0-31,99),(0-7,99)

OK
AT+CMGS="+336xxxxxxxxx"

Hello cher utilisateur, je suis ton Raspberry Pi (ctrl Z)
ERROR

Voilà cela bloque à ce niveau

le truc c’est qu’on sait toujours pas si ton hat se connecte a l’opérateur…
sur le mien j’obtiens le signal de qualité même sans code pin:

AT+CSQ=?
+CSQ: (0-31,99),(0-7,99)
OK

pour me connecter je suis obligé de saisir un code pin; en le vérifiant il me sort
ready
sinon
+CPIN: SIM PIN

AT+CPIN?
+CPIN: SIM PIN
OK

normalement il devrait pas te donner sim pin

as tu essayer creg ?

le hat pas connecté ça donne :

AT+CREG?
+CREG: 2,0
OK

le hat connecté ça donne :

AT+CREG?
+CREG: 2,5,"2505","FECA"
OK

il me semble que le chiffre signifiant c’est le deuxième ( 0 = pas connecté, 5 : connecté )

Voilà la réponse à un AT+CREG?
+CREG: 0,2
OK
0 → disable network registration unsolicited result code
2 → not registered, but ME is currently searching a new operator to register to

Je suis chez FREE
Apparemment je ne suis pas enregistrée sur le réseau
AT+CREG?
+CME ERROR: 604

AT+CSQ
+CSQ: 0,0
Aucun réseau trouvé

AT+CSCA? service provider sms center number
+CSCA: « +33695000695 »,145
OK
J’habite une zone isolée et le pylône assez récemment installé (zone blanche) est low cost. Il n’y a pas d’antenne FREE.
Je crois que FREE utilise le réseau ORANGE

ok clair !
donc ton hat fonctionne !
as tu essayer d’autres endroit dans la maison si possible en hauteur ( grenier ?)

il y a des solutions genre Femto Freebox si j’ai bien compris autour de la box il y a du réseau et la communication passe par internet ( pas trouvé de tarif ! et apparemment solution en fin de vie…)

ou des amplificateur de signal (StellaHome Repeater Family | Stella Doradus)

mais je ne sais pas ce que vallent ces solutions !

et oui free peut utiliser le réseau orange ( c’est mon cas )

Je ne pense pas que ce soit un pb de couverture car j’ai utilisé la carte SIM dans un téléphone portable et j’arrive à envoyer des SMS.

AT+CPIN? il répond quoi ?

READY
OK

Il faut que j’essai une carte sim d’un autre opérateur

ok pour le code pin …
j’ai essayé ce script python3 sur mon hat tu peux le copier et le coller ds un fichier:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import serial
import time
ser = serial.Serial("/dev/ttyS0", 9600, timeout=5)

# envoie AT
ser.write(b'AT+CMGF=1\r')
time.sleep(5)
# lecture retour
while ser.inWaiting()>0:
   res = ser.readline(None)
   print (res)
# envoie AT
ser.write(b'AT+CMGS=\"+33nnnnnnnnn\"\r')
time.sleep(5)
# lecture retour
while ser.inWaiting()>0:
   res = ser.readline(None)
   print (res)
# envoie AT
ser.write(b'this is a sms (python3).\x1A\r')
time.sleep(5)
# lecture retour
while ser.inWaiting()>0:
   res = ser.readline(None)
   print (res)
ser.close()

après un
chmod +x sms_send.py
tu devrais obtenir ça;

./sms_send_p3.py
b'AT+CMGF=1\r\r\n'
b'OK\r\n'
b'AT+CMGS="+33nnnnnnnnn"\r\r\n'
b'> '
b'this is a sms (python3).\r\n'
b'> \r\n'
b'+CMGS: 143\r\n'
b'\r\n'
b'OK\r\n'
b'\r\n'
b'+CMTI: "SM",2\r\n'

par rapport a python 2.7 il génère des \r\n en pagaille mais ça fonctionne (l"import serial pour python3 doit les rajouter)
c’est peut être la temporisation qui lui permet de mieux digérer les commandes ? (
time.sleep(5) ) ainsi que l’attente avec la boucle while.
j’ai aussi baisser le baudrate ( 9600 vs 115200)

avec cette vitesse de connexion serie et une grosse tempo ça vaudrait peut être le coup de refaire les CREG, CSQ etc.

Voici ce qu’il me réponds:

b’AT+CMGF=1\r\r\n’
b’OK\r\n’
b’AT+CMGS="+336xxxxxxxxxx"\r\r\n’
b’> ’
b’this is a sms (python3).\r\n’
b’> ’

pas cool ! aucun retour des commande !
dansla doc des commande AT j’ai trouvé ça
AT+CMGS=?
il doit repondre OK
et chez toi ?
l’idée c’est que quand c’est pas ok il envoie un message d’erreur CME

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import serial
import time
ser = serial.Serial("/dev/ttyS0", 9600, timeout=5)
# envoie AT
ser.write(b'AT+CMEE=2\r\n')
time.sleep(2)
# lecture retour
while ser.inWaiting()>0:
   res = ser.readline()
   print (res)
# envoie AT
ser.write(b'AT+CMGS=?\r\n')
time.sleep(2)
# lecture retour
while ser.inWaiting()>0:
   res = ser.readline()
   print (res)
ser.close()

Oui il répond OK
J’ai essayé avec un autre opérateur SFR c’est pareil

at
OK
AT+CMEE=1
OK
AT+CMGF=1
OK
AT+CNMI=2,1,0,0,0
OK
AT+CMGS="+336xxxxxxxxxx"

essai
+CMS ERROR: 2172

AT+CMGS?
OK

sur un site chinois j’ai trouvé une signification pour le code +CMS 2172

 可能原因1:信号弱,会导致报这个错误
解决方法  :请尝试将设备放到窗边,或者先用手机寻找信号好的位置,再将设备放到那里。

bon ok pas drôle traduit ça donne :

Raison possible 1 : Le signal est faible, ce qui entraînera le signalement de cette erreur. 
Solution : essayez de placer l'appareil près de la fenêtre ou utilisez le téléphone portable pour trouver un bon emplacement de signal, puis placez l'appareil là-bas.

il y aussi une autre explication au code mais même en français pour moi c’est du chinois :

Raison possible 2 : équipement 2G + carte Unicom, car la station de base Unicom 2G est fermée et incapable de communiquer avec l'opérateur.

Solution : 1. Remplacez-la par une carte mobile. 2. Mise à niveau vers un téléphone mobile industriel 4G (modem SMS). 

Donc le problème semble venir d’un mauvais accès au réseau . si tu testes ton système au plus près d’une antenne tu devrais être fixé…

Pour avoir une meilleur réception ce type d’antenne pourrait convenir ?
https://www.okdo.com/fr/wp-content/uploads/sites/4/2019/03/7043427-DATA.pdf

désolé j"en sais rien ! de plus, rien ne dis qu’une antenne plus performante suffira !
d’ou l’idée de faire fonctionner le système près d’une antenne et s’assurer ainsi qu’il est opérationnel
l’antenne actuelle pourrait ne pas fonctionner, l’alimentation du système insuffisante … (manque d’ampérage de l’alim)

J’ai repris mes investigations sur ce problème

Apparemment, le module SIM800C utilise seulement le réseau 2G.
J’ai trouvé la signification de la led

  • clignotement toute les secondes => pas de réseau ou carte SIM
  • clignotement toute les 3 secondes => ok

Chez moi toute les secondes
Après recherche, le pylône qui nous dessert ne transmet pas en 2G
3G ou 4G seulement
J’ ai pensé utilisé un module SIM7600

SIM7600

Qu’en pensez vous ?