Bonsoir
je suis sur un projet d'automatisation par SMS via le shield GSM/GPRS de chez OPEN ELECTRONICS monté sur une carte Arduino

je commande une pompe via un SMS

voici le code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
 
 
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "sms.h"
#include "gsm.h"
#include "string.h"
 
SMSGSM sms;
 
 
boolean started=false;
char smsbuffer[160];
char n_in[20];
char n_ref[20] = "3367xxxxxxx";
char  msg[1];
char pompe_on[160] = "Pompeon";
char pompe_off[160] = "Pompeoff";
 
// fin init
 
void setup() 
{
  pinMode(13, OUTPUT);
 
 
  //Serial connection.
  Serial.begin(9600);
  Serial.println("GSM Shield testing.");
 
  if (gsm.begin(9600))
  {
    Serial.println("\nstatus=READY");
    started=true;  
  }
  else Serial.println("\nstatus=IDLE");
 
  if(started){
    Serial.println("mise en ligne");
 
    Serial.println("AT+CMEE=2");
    gsm.SimpleWriteln("AT+CMEE=2");
    delay(5000);
    gsm.WhileSimpleRead();
 
    Serial.println("AT+CPIN ?");
    gsm.SimpleWriteln("AT+CPIN ?");
    delay(5000);
    gsm.WhileSimpleRead();
 
    Serial.println("AT+CPIN=2434");
    gsm.SimpleWriteln("AT+CPIN=xxxx");
    delay(5000);
    gsm.WhileSimpleRead();
 
 
    Serial.println("AT+CLIP=1");
    gsm.SimpleWriteln("AT+CLIP=1");
    delay(5000);
    gsm.WhileSimpleRead();
 
    Serial.println("AT+CSCA ?");
    gsm.SimpleWriteln("AT+CSCA ?");
    delay(5000);
    gsm.WhileSimpleRead();
 
    Serial.println("AT+CMGF=1");
    gsm.SimpleWriteln("AT+CMGF=1");
    delay(5000);
    gsm.WhileSimpleRead();
 
    Serial.println("INITIALISATION POMPE");
    digitalWrite(13, LOW);
 
  }
};
 
void loop() 
{
 
if(started)
    {
    //Read if there are messages on SIM card and print them.
    Serial.println("lecture sms");
    if(gsm.readSMS(smsbuffer, 160, n_in, 20))
    {
      Serial.println(n_in);
      Serial.println(smsbuffer);
   //  
   // véfication téléphone commande  
   //
      if (memcmp(n_in,n_ref,11)==0)
      {
        Serial.println(n_in);
        Serial.println(smsbuffer);
  //
  // Test message commande de ponpe
  //
 
        if (memcmp(smsbuffer,pompe_on,7)==0) 
        {
          Serial.println("POMPE ON");
          digitalWrite(13, HIGH); 
        }
        if (memcmp(smsbuffer,pompe_off,7)==0) 
        {
          Serial.println("POMPE OFF");
          digitalWrite(13, LOW); 
        }
 
      }
      delay(1000);
    }
  }
 
};
pas de probleme j'envoie le SMS Pompeon la led s'allume et Pompeoff la led s'éteind
j'ajoute une commande de vanne

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
 
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "sms.h"
#include "gsm.h"
#include "string.h"
 
SMSGSM sms;
 
 
boolean started=false;
char smsbuffer[160];
char n_in[20];
char n_ref[20] = "3367xxxxxxxxx";
char  msg[1];
char pompe_on[160] = "Pompeon";
char pompe_off[160] = "Pompeoff";
char vanne_on[160] = "Vanneon";
char vanne_off[160] = "Vanneoff";
 
 
// fin init
 
void setup() 
{
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
 
  //Serial connection.
  Serial.begin(9600);
  Serial.println("GSM Shield testing.");
 
  if (gsm.begin(9600))
  {
    Serial.println("\nstatus=READY");
    started=true;  
  }
  else Serial.println("\nstatus=IDLE");
 
  if(started){
    Serial.println("mise en ligne");
 
    Serial.println("AT+CMEE=2");
    gsm.SimpleWriteln("AT+CMEE=2");
    delay(5000);
    gsm.WhileSimpleRead();
 
    Serial.println("AT+CPIN ?");
    gsm.SimpleWriteln("AT+CPIN ?");
    delay(5000);
    gsm.WhileSimpleRead();
 
    Serial.println("AT+CPIN=2434");
    gsm.SimpleWriteln("AT+CPIN=xxxx");
    delay(5000);
    gsm.WhileSimpleRead();
 
 
    Serial.println("AT+CLIP=1");
    gsm.SimpleWriteln("AT+CLIP=1");
    delay(5000);
    gsm.WhileSimpleRead();
 
    Serial.println("AT+CSCA ?");
    gsm.SimpleWriteln("AT+CSCA ?");
    delay(5000);
    gsm.WhileSimpleRead();
 
    Serial.println("AT+CMGF=1");
    gsm.SimpleWriteln("AT+CMGF=1");
    delay(5000);
    gsm.WhileSimpleRead();
 
    Serial.println("INITIALISATION POMPE");
    digitalWrite(13, LOW);
 
  }
};
 
void loop() 
{
 
if(started)
    {
    //Read if there are messages on SIM card and print them.
    Serial.println("lecture sms");
    if(gsm.readSMS(smsbuffer, 160, n_in, 20))
    {
      Serial.println(n_in);
      Serial.println(smsbuffer);
   //  
   // véfication téléphone commande  
   //
      if (memcmp(n_in,n_ref,11)==0)
      {
        Serial.println(n_in);
        Serial.println(smsbuffer);
  //
  // Test message commande de ponpe
  //
 
        if (memcmp(smsbuffer,pompe_on,7)==0) 
        {
          Serial.println("POMPE ON");
          digitalWrite(13, HIGH); 
        }
        if (memcmp(smsbuffer,pompe_off,7)==0) 
        {
          Serial.println("POMPE OFF");
          digitalWrite(13, LOW); 
        }
 
      if (memcmp(smsbuffer,vanne_on,7)==0) 
        {
          Serial.println("VANNE ON");
          digitalWrite(12, HIGH); 
        }
        if (memcmp(smsbuffer,vanne_off,7)==0) 
        {
          Serial.println("VANNE OFF");
          digitalWrite(12, LOW); 
        }
 
      }
      delay(1000);
    }
  }
 
};

je fais un copier/coller je change les variables et plus rien ne fonctionne

j'ai changé les textes de commande
j'ai changé les Pin de commande

je dois faire une erreur

mais ou ?
je pense que cela doit être une erreur de débutant que je suis.

Merci par avance