ciao
applicazione terminata, scopo accendere e spegnere una utenza elettrica con la chiamata da cell, applicazione banale lo so, sotto lo sketch migliorabile sviluppato con arduino 101
stefano
/*
SparkFun Cellular Shield - Pass-Through Sample Sketch
SparkFun Electronics
Written by Ryan Owens
CC by v3.0
3/8/10
max current 330 mA when 'ringing'
versione 25ago2012 stefano
*/
int led13=13; //led per accensione
int led12=12; //led per spegnimento
int i; //contatore
//#include <NewSoftSerial.h> //Include the NewSoftSerial library to send serial commands to the cellular module.
#include <SoftwareSerial.h> //per la comuncazione con il modem
#include <string.h> //per le stringhe
char incoming_char=0;//Will hold the incoming character from the Serial Port.
String stringOne,substringa;
SoftwareSerial cell(3,2); //Create a 'fake' serial port. cell(RX,TX)
void setup()
{
pinMode(led13,OUTPUT);
digitalWrite(led13,LOW);
pinMode(led12,OUTPUT);
digitalWrite(led12,LOW);
incoming_char=0; //inizializza
stringOne=""; //inizializza
substringa=""; //inizializza
i=0; //inizializza
Serial.begin(9600); //Initialize serial ports for communication.
cell.begin(9600); //Initialize serial ports for communication.
delay(500); //pausa
cell.print("AT+CLIP=1 \r\n");
delay(1000); //pausa
while(cell.available()>0)
{
delay(50); //pausa
incoming_char=cell.read();
// Serial.print(incoming_char); //stampa di controllo
}
delay(5000);
}
void loop()
{
while(cell.available()>0) //while a character is coming from the terminal to the Arduino
{
delay(50); //pausa
incoming_char=cell.read();
stringOne+=String(incoming_char);
stringOne.trim();
//Serial.println(stringOne); //stampa di controllo
substringa=stringOne.substring(11,24);
}
//Serial.println(substringa); //stampa di controllo
if(substringa=="+39**********") //inserire numero di telefono
{
switch(i)
{
case 0: //per accensione utenza
cell.println("ATH"); //per interruzione chiamata
delay(100); //pausa
i++;
digitalWrite(led13,HIGH); //preme pulsante avviamento
delay(500); //pausa
digitalWrite(led13,LOW); //rilascia pulsante avviamento
delay(500); //pausa
while(cell.available()>0)
{
delay(50); //pausa
cell.read();
// Serial.print(incoming_char); //stampa di controllo
}
incoming_char=0; //svuota
stringOne=""; //svuota
substringa=""; //svuota
break;
case 1: //per spegnimento utenza
cell.println("ATH"); //per interruzione chiamata
delay(100); //pausa
i--;
digitalWrite(led12,HIGH); //preme pulsante arresto
delay(500); //pausa
digitalWrite(led12,LOW); //rilascia pulsante arresto
delay(100); //pausa
while(cell.available()>0)
{
delay(50); //pausa
cell.read();
//Serial.print(incoming_char); //stampa di controllo
}
incoming_char=0; //svuota
stringOne=""; //svuota
substringa=""; //svuota
break;
}
}
//If a character is coming from the the Arduino to the terminal
if(Serial.available()>0)
{
incoming_char=Serial.read(); //Get the character coming from the terminal
cell.print(incoming_char); //Send the character to the cellular module.
}
}