Bonjour à tous
Je suis en train de développer un thermomètre GSM en utilisant un vieux gsm SIEMENS A60.
Voici les composants utilisés pour ce montage :
- un Arduino LEONARDO
- un GSM SIEMENS A60 en mode PDU pour la gestion des SMS
- un capteur dallas DS18B20 pour la température
et voici le fonctionnement :
- utilisation d'un capteur dallas DS18B20 pour reveler la température.
- envoi automatique d'un sms d'alerte (sur un numéro prédéfini) lorsque la température descend sous un seuil défini
- réception de SMS pour activer l'envoi immédiat de la température actuelle. On peut aussi imaginer d'utiliser cette fonctionnalité pour activer ou désactiver des relais.
Le relevé de température ainsi que le message d'alerte (les envois de sms au format PDU) fonctionnent correctement.
Par contre je n'arrive pas à lire les SMS recus par mon LEONARDO.
Lorsque je branche mon GSM sur mon PC en passant par une interface RS232 j'ai bien un message sur mon hyperterminal qui s'affiche lorsqu'un SMS arrive.
Voici le message :
+CMTI: "ME",1
À partir de là j'envoi un AT+CMGR=1 et je peux lire le message sur mon hyperterminal
Pour effacer le SMS je lance un AT+CMGD=1
Maintenant si je connecte mon GSM sur le LEONARDO je n'arrive pas, je pense, à écouter le port série logiciel sur lequel est connecté le GSM, donc je n'arrive pas à interpréter le message recu.
Pour faire mes essais j'ai juste créé un petit sketch de réception de SMS.
Lorsqu'un SMS arrive le LEONARDO doit éteindre la led intégrée au LEONARDO.
Et c'est la que je bloque.
Le GSM recoit bien le SMS mais la led ne s'éteint pas.
Je tiens à préciser que j'utilise la librairie SoftwareSerial pour créer un deuxième port série sur lequel est branché le GSM.
Le port intégré au LEONARDO est utilisé pour faire le debogage
En gros c'est la fonction loop que ne marche pas
Voici le code que j'utilise :
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
int led = 13;
void setup() {
pinMode(led, OUTPUT);
mySerial.begin(9600);
mySerial.println("AT+CMGF=0"); //METTRE LE GSM EN MODE PDU POUR LES SMS
delay(1500);
mySerial.println("AT+CPMS=\"ME\",\"ME\",\"ME\""); //UTILISATION DE LA MEMOIRE DU GSM POUR LES SMS
delay(1500);
mySerial.println("AT+CNMI=1,1"); //LE GSM INFORME DE L'ARRIVEE D'UN SMS EN STIPULANT LA MEMOIRE UTILISEE (ME) ET L'EMPLACEMENT DANS LA MEMOIRE
delay(1500);
digitalWrite( led, HIGH ); //ON ALLUME LA LED
delay(1500);
}
void loop() {
if (mySerial.available()>0) { //SI QUELQUE CHOSE ARRIVE
digitalWrite( led, LOW ); //ON ETEINT LA LED
}
}
Merci beaucoup pour votre aide
Cédric