Pages: [1]   Go Down
Author Topic: accendere e spegnere con cellulare  (Read 835 times)
0 Members and 1 Guest are viewing this topic.
piacenza
Offline Offline
God Member
*****
Karma: 0
Posts: 589
prima della pazzia c'è la passione
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Code:
/*
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.
 }

}
« Last Edit: August 25, 2012, 10:07:08 am by stefa24 » Logged


Genova
Offline Offline
Faraday Member
**
Karma: 17
Posts: 2747
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

scusa, ma spendi qualche parola di descrizione, non è molto chiaro, arduino è collegato a un telefono su linea urbana? chiami col cell casa e arduino risponde riconocendo un tono DTMF ? bho non capisco cosa fai col cell, un numero a caso ...

ciao
Logged

Meglio imparare dalle cose inutili piuttosto che non imparare niente.   [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]

piacenza
Offline Offline
God Member
*****
Karma: 0
Posts: 589
prima della pazzia c'è la passione
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao
con il cellulare chiami un modem gsm lo sketch ricava il numero chiamante e se uguale a quello memorizzato
Code:
...
if(substringa=="+39**********")  //inserire numero di telefono
...

esegue i comandi che seguono, alla prima interrompe la chiamata
Code:
cell.println("ATH");  //per interruzione chiamata
e accende l'utenza,
Code:
digitalWrite(led13,HIGH);  //preme pulsante avviamento
     delay(500);  //pausa
   digitalWrite(led13,LOW);  //rilascia pulsante avviamento
     delay(500);  //pausa

alla seconda interrompe la chiamata e spegne l'utenza
il tutto è migliorabile

stefano
Logged


Genova
Offline Offline
Faraday Member
**
Karma: 17
Posts: 2747
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
il tutto è migliorabile
soprattutto la descrizione perchè ancora ora secondo me è incomprensibile, il software senza hardware sono parole nel deserto  smiley-grin
Logged

Meglio imparare dalle cose inutili piuttosto che non imparare niente.   [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]

piacenza
Offline Offline
God Member
*****
Karma: 0
Posts: 589
prima della pazzia c'è la passione
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao
mi spiace non voglio fare il prof perchè ne meno di tutti qua dentro, a questo risultato ci sono infatti arrivato dopo molti tentativi, comunque i comandi sono semplici, non ci sono particolari virtuosismi di programmazione

stefano
Logged


Genova
Offline Offline
Faraday Member
**
Karma: 17
Posts: 2747
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, ricapitoliamo
Lasciamo stare la parte software che se l'hai fatta e provata funziona sicuramente, io cerco di capire come è la parte hardware.

Premessa: io installo da un po' di anni moduli GSM già fatti programmabili da terminale con il loro software e microcontrollori, ciscuno di essi ha degli input e degli output che imposto da programma a mio piacimento, non mi sbatto certo a farli con il prezzo ridicolo che hanno, ero curioso di capire quello che avevi fatto.
Sarò duro di comprendonio, hai spiegato il programma e il funzionamento ma non ho idea di quale modulo gsm parli, non conosco gsm con porte seriali dedicate, di quale modulo stai parlando? forse uno shield per arduino? che cosa?

Tu hai postato un programma e basta, per questo ti dico che senza hardware lo sketch è composto da parole al vento, non ci sono link dei componenti che hai usato, dei nomi,  schemi di riferimento, ecco tutto qui  smiley-grin, lo dico anche per te il post senza queste parti è poco utile a chi potrebbe servire o prenderne spunto.

Ciao
« Last Edit: August 25, 2012, 06:33:59 pm by pablos » Logged

Meglio imparare dalle cose inutili piuttosto che non imparare niente.   [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]

piacenza
Offline Offline
God Member
*****
Karma: 0
Posts: 589
prima della pazzia c'è la passione
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao
a me interessa accendere e spegnere una pompa elettrica allego uno schema di massima per fare l'autoritenuta del teleruttore della pompa e il datasheet del modem, serve un max232 per adattare il livello di tensione del modem a quello di arduino

stefano


* autoritenuta.pdf (12.38 KB - downloaded 11 times.)
* wavecom m1206_user_guide.pdf (468.7 KB - downloaded 8 times.)
Logged


Ivrea
Offline Offline
Jr. Member
**
Karma: 0
Posts: 50
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

a inizio sketch c'è questo
Code:
SparkFun Cellular Shield - Pass-Through Sample Sketch
 SparkFun Electronics

immagino abbbia usato quello  smiley-mr-green
Logged

Pages: [1]   Go Up
Jump to: