Adaptation du Sketch écrit pour la carte TC35 :
/*
*****************************************
SMS receiver and light on or off a LED
****************************************
This sketch, for the Arduino GSM shield, waits for a SMS message
from a specific phone number then light on or off or send the LED
Status.
Circuit:
* GSM shield attached to and Arduino
* SIM card that can receive SMS messages
* Led plug in pin 13
*/
//-- include the GSM library
#include <GSM.h>
//-- PIN Number for the SIM and Your Phone Number
#define PINNUMBER ""
#define MYPHONE "+33xxxxxxxxx"
//-- initialize the library instances
GSM gsmAccess;
GSM_SMS sms;
//-- Array to hold the number a SMS is retreived from
char cSenderNumber[20],charBuf[20],c;
String sNumber="", sMsg, sMessage="", sSmsNumber="";
int dp=0,dpLed=0;
//-- Led PIN
int led = 12;
//-- SetUp
void setup()
{//-- initialize the digital pin as an output.
pinMode(led, OUTPUT);
//-- initialize serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.println("SMS Messages Receiver");
// connection state
boolean notConnected = true;
// Start GSM connection
while(notConnected)
{if(gsmAccess.begin(PINNUMBER)==GSM_READY)
notConnected = false;
else
{Serial.println("Not connected");
delay(1000);
}
}
Serial.println("GSM initialized");
Serial.println("Waiting for messages");
}
//-- Sketch
void loop()
{//--If there are any SMSs available()
if (sms.available())
{Serial.println("Message received from:");
//-- Get remote number
sms.remoteNumber(cSenderNumber, 20);
sNumber=cSenderNumber;
Serial.println(sNumber);
//-- Read message bytes and print message
while(c=sms.read())
{sMsg=sMsg+c;}
Serial.println(sMsg);
dp=0;
//-- If it's Your Phone Calling
if(sNumber.equals(MYPHONE))
{ sSmsNumber=MYPHONE;
sMsg.toUpperCase();
if (sMsg=="ON")
dp=1;
if (sMsg=="OFF")
dp=2;
if (sMsg=="?")
dp=3;
switch (dp) {
case 1 :
{digitalWrite( led, HIGH);
dpLed=1;
break;}
case 2 :
{digitalWrite( led, LOW);
dpLed=0;
break;}
case 3 :
{if (dpLed==1)
sMessage="La LED est ON";
else
sMessage="La LED est OFF";
SendSms();
break;
}
case 0 :
{sMessage="Erreur, tapez ON, OFF ou ?, merci !";
SendSms();
break;}
}
}
else
{//-- Sender UnKnown
sMessage="Message '"+sMsg+"' du "+sNumber;
sSmsNumber=MYPHONE;
SendSms();
delay(1000);
sSmsNumber=sNumber;
sMessage="Je ne vous connais pas !";
SendSms();
}
Serial.println("\nEND OF MESSAGE");
sMsg="";
sNumber="";
//-- Delete message from modem memory
sms.flush();
Serial.println("MESSAGE DELETED");
}
delay(1000);
}
//-- Sending message function
void SendSms()
{sSmsNumber.toCharArray(charBuf, 20);
// send the message
sms.beginSMS(charBuf);
sms.print(sMessage);
sms.endSMS();
}
Votre commentaire