J’ai testé la carte SIM dans un téléphone avec la suppression du code PIN
Commande AT+CPIN? => ok
Tout est ok jusqu’à cette commande:
phone.write(b’AT+CMGS="+336xxxxxxxxx"\r\n’)
La commande AT+COPS? n’apporte pas de réponse
Quel émulateur peut on utilisé pour lancer les commandes AT en direct du PI ?
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 (?) )
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 ?
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à 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…)
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.
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()