Show Posts
Pages: [1] 2
1  Products / Arduino GSM Shield / Re: GSM shield calls every hour on: February 20, 2014, 07:11:16 pm
Thank you for replying me davidgoth.
I will consider it, I’m still trying to make it work.
2  Products / Arduino GSM Shield / Re: GSM shield calls every hour on: February 14, 2014, 05:52:11 pm
Hi guys,

I'm here again.
I get the same problem after I tried with a new different PIR sensor (HC-SR501): the GSM Shield calls me every hour!!!
I don't know what else to do smiley-sad
3  Products / Arduino GSM Shield / Re: GSM shield calls every hour on: February 08, 2014, 05:07:18 am
The problem seem to be the PIR sensor, so I'm gonna change it and try again.
4  Products / Arduino GSM Shield / GSM shield calls every hour on: February 07, 2014, 11:07:03 am
Hi,

I'm working with an Arduino GSM Shield, an Arduino Uno R3 and a PIR sensor.
What I want is that Arduino calls me every time the PIR sensor fire a motion event.
I leave the GSM Modem always turned on, and what's going on is that the GSM Shield automatically calls me every hour (minute more or less) but it shouldn't!! No motion detections are fired in those cases.
I don't know why it's gonna happen. I haven't set timeouts.  smiley-eek

Here is the sketch:

Code:
#include <GSM.h>

GSM gsmAccess;
GSMVoiceCall vcs;
String remoteNumber="my-number";
char charBuffer[20];
int digitalPir = 4; // Pir connected to digital pin 4
int statePir = HIGH; // we start assuming no motion detected

void setup()
{
  pinMode(digitalPir, INPUT);
  remoteNumber.toCharArray(charBuffer, 20);
  Serial.begin(9600);
  Serial.println("\n- Starting Setup -\n");
 
  // connection state
  boolean notConnected = true;
 
  // start GSM Shield
  while(notConnected) {
    if(gsmAccess.begin()==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }
  Serial.println("Setup completed!");
  Serial.println("waiting for 10s...");
  delay(10000);
}

void loop()
{
  statePir = digitalRead(digitalPir);
  Serial.println(statePir);

  if (statePir == LOW) {
    if (vcs.voiceCall(charBuffer)) {
      Serial.println("Call Established.");
      while(vcs.getvoiceCallStatus()==TALKING);
      vcs.hangCall();
      Serial.println("Call finished.");
      delay(1000);
    }

    Serial.println("Waiting for 30s...");
    delay(30000);
  }
}

Any tips, please?
5  International / Generale / Re: [Gsm Shied] strano, pago anche per un semplice squillo on: January 29, 2014, 12:17:06 pm
Ragazzi il mistero è stato risolto!  smiley-lol

Era un errore mio di programmazione sullo sketch. In effetti @pitusso ricontrollando meglio, eseguendo lo sketch di esempio MakeVoiceCall lo squillo non veniva addebitato. Ad ogni modo mi sembra strano che sia riuscito (nel mio caso sbagliando...) ad addebitare uno squillo. Comunque, venendo al dunque, queste sono le righe 'malevoli':

Quote
if (!statePir) {
    if (vcs.voiceCall(charBuffer)) {
      delay(1000);
    }
    // hang up an established call
    vcs.hangCall();

che ho corretto in questo modo:

Quote
if (!statePir) {
    if (vcs.voiceCall(charBuffer)) {
      Serial.println("Call Established. Enter line to end");
      while(vcs.getvoiceCallStatus()==TALKING);
      vcs.hangCall();
      Serial.println("Call finished.");
      delay(1000);
    }

in questo modo ho verificato che non viene più addebitato lo squillo.
6  International / Generale / Re: [Gsm Shied] strano, pago anche per un semplice squillo on: January 28, 2014, 03:16:40 pm
Pensavo anch'io, ma oltre che con Tim ho provato anche con un'altra Sim con PosteMobile e addebita anche così il costo dello squillo. E poi più faccio lungo lo squillo e più pago. Proprio strano!

Ecco lo sketch che sto usando:

Code:
#include <GSM.h>
 
GSM gsmAccess; // initialize the library instance
GSMVoiceCall vcs;
String remoteNumber="my-phone-number";
char charBuffer[20];
int digitalPir = 4; // PIR connected to digital pin 4
int statePir = 1; // variable to store the Pir state
 
void setup()
{
  pinMode(digitalPir, INPUT);
  remoteNumber.toCharArray(charBuffer, 20);
  Serial.begin(9600);
  Serial.println("\n- Starting Setup -\n");
 
  // connection state
  boolean notConnected = true;
 
  // start GSM Shield
  while(notConnected) {
    if(gsmAccess.begin()==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }
  Serial.println("GSM initialized!");
  Serial.println("waiting for 10s...");
  delay(10000);
}
 
void loop()
{
  statePir = digitalRead(digitalPir);
  Serial.println(statePir);
 
  if (!statePir) {
    if (vcs.voiceCall(charBuffer)) {
      delay(1000);
    }
 
    // hang up an established call
    vcs.hangCall();
 
    Serial.println("Waiting for 30s...");
    delay(30000);
  }
}
7  International / Generale / [Risolto - Gsm Shied] strano, pago anche per un semplice squillo on: January 28, 2014, 09:05:50 am
Salve,

dopo diversi giorni di prove utilizzando l'Arduino Gsm Shield insieme all'Arduino Uno R3, ho scoperto che sto pagando anche le chiamate effettuate in cui il ricevente ha chiuso la chiamata senza rispondere, cioè ho pagato anche un semplice squillo partito dal Gsm Shield. Questo comportamento l'ho riscontrato anche utilizzando lo sketch di esempio MakeVoiceCall.

Qualcuno di voi ne sa qualcosa a riguardo o magari sa come evitare di dover pagare anche un semplice squillo?
8  International / Software / Re: verificare aggiornamento firmware on: February 03, 2013, 12:48:58 pm
Mi dà 1.0.0

suppongo che l'aggiornamento non sia riuscito...

9  International / Software / verificare aggiornamento firmware on: February 03, 2013, 12:00:14 pm
Salve,

sto provando ad aggiornare il firmware del wifi-shield e credo di esserci riuscito, ma non so come verificarlo. Sapete dirmi un modo per poter verificare qual è la versione corrente del firmware?
10  International / Software / Re: [Wifi Shield] blocco su WiFiWebServer + WiFiWebClient on: November 12, 2012, 03:26:01 pm
buonasera..non sono esperto con wifi shield,ma ricordo che una settimana fa è stato pubblicato questo https://github.com/arduino/wifishield/issues/12..non entro nel merito dato che non so..

Grazie non lo sapevo, sembra che ho proprio quel problema, quindi niente client+server per il momento  su Wifi Shield smiley-cry
11  International / Software / [Wifi Shield] blocco su WiFiWebServer + WiFiWebClient on: November 12, 2012, 09:38:19 am
Cercherò di essere breve perchè lo sketch è già abbastanza lungo  smiley-surprise

Lo sketch è un WiFiWebServer che mostra su una pagina web il valore di una fotoresistenza, e inoltre ci sono 2 collegamenti ipertestuali "Accendi" e "Spegni" per accendere/spegnere, a comando, un led.

Fin qui tutto funziona bene.

Oltre a questo nello sketch ho inserito del codice (funzionamento simile a WiFiWebClient) che mi permette di inviare tramite GET un valore ad una pagina php che mi salva questo dato in un database. E anche questo funziona, cioè il dato viene effettivamente memorizzato nel db. Solo che quando eseguo il GET, lo sketch smette di aggiornarmi la pagina web (di cui sopra) che magari nel frattempo sto visualizzando. Non riesco proprio a capire cosa sbaglio.

Segue lo sketch:
Code:
#include <SPI.h>
#include <WiFi.h>

char ssid[] = "miaWifi";  //  your network SSID (name)
char pass[] = "miaPass";  // your network password
const int ledPin = 8;  // pin collegato al led
const int analogPin = 0;  //pin collegato alla fotoresistenza
String statoLed;
int sensorValue; // valore letto dalla fotoresistenza
String readString;
IPAddress serverPhp(192,168,0,112);

int status = WL_IDLE_STATUS;

//creo un server (su Arduino) che risponde al browser (client)
WiFiServer server(80);
//creo clientPhp (client) per inviare dati a serverPhp (server)
WiFiClient clientPhp;

void setup() {
  pinMode(ledPin, OUTPUT);
  
  //Initialize serial and wait for port to open:
  Serial.begin(9600);
  
  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    // don't continue:
    while(true);
  }
  
  // attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) {
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    status = WiFi.begin(ssid, pass);
    // wait 10 seconds for connection:
    delay(10000);
  }
  server.begin();
  
  // you're connected now, so print out the status:
  printWifiStatus();
}


void loop() {  
  // ----> listen for incoming clients <----
  WiFiClient client = server.available();
  if (client) {
    delay(1);
    Serial.println("##########");
    Serial.println("new client");
    Serial.println("##########");
    
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        //Arduino è in ascolto di ciò che viene dal browser
        char c = client.read();
        readString.concat(c);
        //Serial.write(c);
        
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          Serial.print(readString);
          
 //se sul browser clicco su "Spegni" spengo il led
          if(readString.indexOf("Led=0") > 0){
            digitalWrite(ledPin, LOW);
            Serial.println("----> Led spento! <----");
          }
          
 //se sul browser clicco su "Accendi" accendo il led
          if(readString.indexOf("Led=1") > 0){
            digitalWrite(ledPin, HIGH);
            Serial.println("----> Led acceso! <----");
          }
          
 //aggiorno lo stato del led per scriverlo sul browser
          if(digitalRead(ledPin) == LOW){
            statoLed = "Spento";
          } else {statoLed = "Acceso";}
          
          // se il valore della fotoresistenza supera il valore 800
 // allora invio qualcosa a serverPhp
 sensorValue = analogRead(analogPin);
          if(sensorValue > 800){
            Serial.println("##### ");
            Serial.print(sensorValue);
            Serial.println(" #####");
            
              //inizio invio dati
              // invio un GET a serverPhp
              if (clientPhp.connect(serverPhp, 80)){
                Serial.println("connected to server php");
                clientPhp.println("GET /myget.php?Led=9 HTTP/1.1");
                clientPhp.println("Host:www.google.com");
                clientPhp.println("Connection: close");
                clientPhp.println();
                clientPhp.stop();
                Serial.println("disconnected from server php");
              } // fine invio dati
          }
          
          // invio al browser uno standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connnection: close");
          client.println();

 //inizio codice html da visualizzare nel browser
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println("<head>");
          client.println("<title><h2>mio titolo</h2></title>");
          // add a meta refresh tag, so the browser pulls again every 5 seconds:
          client.println("<meta http-equiv=\"refresh\" content=\"5\">");
          client.println("</head>");
          client.println("<body>");
          client.println("<p>");
          client.println("Valore del sensore: ");
          client.print(sensorValue);
          client.println("</p>");
          client.println("<p>");
          client.println("Stato del led: ");
          client.print(statoLed);
          client.println("</p>");
          client.println("<h3><a href='Led=1'>Accendi</a>");
          client.print(" | <a href='Led=0'>Spegni</a></h3>");
          client.println("</body>");
          client.println("</html>");
          break;
        }

        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }    
      }
    }
    
    // give the web browser time to receive the data
    delay(1);
      // close the connection:
      readString="";
      client.stop();
      delay(1);
      Serial.println("##################");
      Serial.println("client disonnected");
      Serial.println("##################");
      Serial.println("\n");
  }
}

void printWifiStatus() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
}

Questo è cioò che vedo dal monitor seriale:
Code:
Attempting to connect to SSID: miaRete
SSID: miaRete
IP Address: 192.168.0.100
signal strength (RSSI):-58 dBm
##########
new client
##########
GET / HTTP/1.1
User-Agent: Opera/9.80 (Macintosh; Intel Mac OS X 10.7.5) Presto/2.12.388 Version/12.10
Host: 192.168.0.100
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: it,en;q=0.9,en-US;q=0.8,ja;q=0.7,fr;q=0.6,de;q=0.5,es;q=0.4,pt;q=0.3,pt-PT;q=0.2,nl;q=0.1
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
DNT: 1

##################
client disonnected
##################

.....

##########
new client
##########
GET / HTTP/1.1
User-Agent: Opera/9.80 (Macintosh; Intel Mac OS X 10.7.5) Presto/2.12.388 Version/12.10
Host: 192.168.0.100
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: it,en;q=0.9,en-US;q=0.8,ja;q=0.7,fr;q=0.6,de;q=0.5,es;q=0.4,pt;q=0.3,pt-PT;q=0.2,nl;q=0.1
Accept-Encoding: gzip, deflate
Referer: http://192.168.0.100/
Ca##########
913
##################
client disonnected
##################

dove 913 è il valore della fotoresistenza che ha superato la soglia fissata (800) e inizia il Get...poi si blocca!

In particolare, se elimino questo blocco di codice:
Code:
//inizio invio dati
// invio un GET a serverPhp
if (clientPhp.connect(serverPhp, 80)){
                Serial.println("connected to server php");
                clientPhp.println("GET /myget.php?Led=9 HTTP/1.1");
                clientPhp.println("Host:www.google.com");
                clientPhp.println("Connection: close");
                clientPhp.println();
                clientPhp.stop();
                Serial.println("disconnected from server php");
              }

tutto funziona bene, ovviamente non c'è nessuno invio di dati, ma il resto funziona.

Mi rendo conto della lunghezza post  smiley-red ...confido in qualche Santo armato di una pazienza fuori dal comune!  smiley-roll-blue

p.s.
ah dimenticavo, ho già letto questo post http://arduino.cc/forum/index.php?topic=67730.0
12  International / Software / Re: [Wifi Shield] questo led non mi ubbidisce... on: November 10, 2012, 12:00:47 pm
@mdpgit
Sei un grande! Era proprio quello il problema, è bastato usare il pin 8 anzichè il 7 e tutto funziona come deve!
Eppure c'ero già passato nel link che mi hai postato, ma evidentemente troppo di fretta  smiley-sweat

Grazie a tutti x l'aiuto, a buon rendere!  smiley-wink
13  International / Software / Re: [Wifi Shield] questo led non mi ubbidisce... on: November 10, 2012, 08:20:06 am
Non so più che pesci pigliare  smiley-cry

Avevo letto in effetti qualcosa a riguardo di alcni pin... e ora sto usando il pin 7 ma non funziona ancora a dovere.
Adesso quando copro (faccio ombra) la fotoresistenza il led passa da spento ad acceso, ma poi si blocca tutto. La pagina web non viene più aggiornata ed il led rimane acceso anche se dovrebbe spegnersi perchè gli faccio luce.

Ri-pubblico il codice che allo stato attuale è il seguente:

Code:
#include <SPI.h>
#include <WiFi.h>


char ssid[] = "....";  //  your network SSID (name)
char pass[] = "....";   // your network password
int keyIndex = 0;  // your network key Index number (needed only for WEP)
int sensorValue;
const int analogPin = 0;
const int ledPin = 7;
const int threshold = 600;

int status = WL_IDLE_STATUS;

WiFiServer server(80);

void setup() {
  pinMode(ledPin, OUTPUT);
  //Initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
 
  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    // don't continue:
    while(true);
  }
 
  // attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) {
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:   
    status = WiFi.begin(ssid, pass);

    // wait 10 seconds for connection:
    delay(10000);
  }
  server.begin();
  // you're connected now, so print out the status:
  printWifiStatus();
}


void loop() {
  sensorValue = analogRead(analogPin);
  if(sensorValue >= threshold){
  digitalWrite(ledPin, HIGH);
  }
  if(sensorValue < threshold){
    digitalWrite(ledPin, LOW);
  }
 
  // listen for incoming clients
  WiFiClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
               
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connnection: close");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          // add a meta refresh tag, so the browser pulls again every 5 seconds:
          client.println("<meta http-equiv=\"refresh\" content=\"5\">");
         
          client.println("<p>Valore del sensore: ");
          client.print(sensorValue);
          client.print("</p>");
         
          client.println("</body></html>");
          break;
        }
       
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
       
      }
    }
    // give the web browser time to receive the data
    delay(1);
      // close the connection:
      client.stop();
      Serial.println("client disonnected");
  }
}


void printWifiStatus() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
}

14  International / Software / Re: [Wifi Shield] questo led non mi ubbidisce... on: November 10, 2012, 06:07:25 am
L'ingresso A0 è collegato ad un piedino della fotoresistenza e ottengo un valore (tra 0 e 1023) che mi viene visualizzato sula pagina web.

Aggiungo i collegamenti...
15  International / Software / Re: [Wifi Shield] questo led non mi ubbidisce... on: November 10, 2012, 05:50:29 am
Ciao e grazie per aver risposto!  smiley

Ho messo queste righe di codice

Code:
  sensorValue = analogRead(analogPin);
  if(sensorValue > threshold){
  digitalWrite(ledPin, HIGH);
  } else digitalWrite(ledPin, LOW);

subito dopo loop() ma non va nemmeno ora. In effetti avevo già fatto questo tentativo ma adesso il led si accende e spegne velocemente...ad ogni loop sembra, perchè non fa nemmeno in tempo ad accendersi pienamente. Insomma questo if() proprio non se lo fila smiley-sad
Pages: [1] 2