Go Down

Topic: accendere e spegnere con cellulare (Read 1 time) previous topic - next topic

stefa24

Aug 25, 2012, 05:02 pm Last Edit: Aug 25, 2012, 05:07 pm by stefa24 Reason: 1
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: [Select]

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

}
https://sites.google.com/site/agritronica/
https://sites.google.com/site/t3chconcrete/
arduino UNO rev 3
ide 105

pablos

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
no comment

stefa24

ciao
con il cellulare chiami un modem gsm lo sketch ricava il numero chiamante e se uguale a quello memorizzato
Code: [Select]

...
if(substringa=="+39**********")  //inserire numero di telefono
...


esegue i comandi che seguono, alla prima interrompe la chiamata
Code: [Select]
cell.println("ATH");  //per interruzione chiamata
e accende l'utenza,
Code: [Select]
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
https://sites.google.com/site/agritronica/
https://sites.google.com/site/t3chconcrete/
arduino UNO rev 3
ide 105

pablos

Quote
il tutto è migliorabile

soprattutto la descrizione perchè ancora ora secondo me è incomprensibile, il software senza hardware sono parole nel deserto  :D
no comment

stefa24

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
https://sites.google.com/site/agritronica/
https://sites.google.com/site/t3chconcrete/
arduino UNO rev 3
ide 105

pablos

#5
Aug 26, 2012, 01:29 am Last Edit: Aug 26, 2012, 01:33 am by pablos Reason: 1
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  :D, lo dico anche per te il post senza queste parti è poco utile a chi potrebbe servire o prenderne spunto.

Ciao
no comment

stefa24

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

https://sites.google.com/site/agritronica/
https://sites.google.com/site/t3chconcrete/
arduino UNO rev 3
ide 105

matti157

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


immagino abbbia usato quello  :smiley-mr-green:

Go Up
 

Quick Reply

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Warning: this topic has not been posted in for at least 120 days.
Unless you're sure you want to reply, please consider starting a new topic.

Note: this post will not display until it's been approved by a moderator.
Name:
Email:

shortcuts: alt+s submit/post or alt+p preview