Go Down

Topic: Problema con Ethernet shield e il MAC su Vodafone station (Read 4903 times) previous topic - next topic

pitusso

ratto93,
la parte di codice che fa la GET l'hai messa nel setuo, il quale viene eseguito solo una volta, all'avvio della board.
Se lo sposti nel loop, verrà eseguito ad ogni ciclo (o ogni qualvotla tu abbia stabilito).

BrainBooster

Ma è il codice che hai scritto che gli dice di fare così :)
Analizza il flusso del codice.
edit:azz mi hanno preceduto

ratto93

L'ho messo li solo per provare... però comunque dovrebbe scorrere le righe
Se corri veloce come un fulmine, ti schianterai come un tuono.

ratto93

fatta la modifica, stesso risultato...
Qualcosa sbaglio di certo.
Code: [Select]
#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {0x90,0xA2,0xDA,0x00,0x74,0x99};
byte ip[] = {192,168,1,2};
byte gateway[] = {192, 168, 1, 1};
byte subnet[] = {255, 255, 255, 0};
byte server[] = { 176, 9, 63, 22};
Client client(server, 80);

char id=4;
int temperatura = 50;

void setup() {
  Ethernet.begin(mac,ip,gateway,subnet);
  Serial.begin(115200);
  delay(1000);
  }

void loop()
{
  riavvio:
  Serial.println("connessione...");
  if (client.connect()) {
    Serial.print("connesso");   
    char c = client.read();
    Serial.print(c);
    for(int i=0;i<15;i++){
    client.print("GET /script/Scrittore.php?id=&");
    client.print(i);
    client.println("&ora=2222&tensione=77777&corrente=222&temperatura=33 HTTP/1.0");   //GET da effettuare
    client.println("Host: ratto93.altervista.org");
    client.println();
    Serial.println(i);
    delay(5000);
                     }
  }
  else {
     Serial.println("connessione fallita");
     goto riavvio;
  }
 
}
Se corri veloce come un fulmine, ti schianterai come un tuono.

pitusso

..se ti guardi l'esempio del Pa(t)chube nell'IDE, trovi un buon punto di riferimento per fare quel che vuoi tu, ovvero l'invio di dati ad intervallo prestabilito.

ratto93

L'ho guardato, ma mi pare incasinato di brutto....  ;)

Quindi metto il mio for e tutti il ciarpame in esso contenuto dentro alla funzione send ?
Se corri veloce come un fulmine, ti schianterai come un tuono.

ratto93

sono arrivato qui :
Code: [Select]
/*
  Pachube sensor client with Strings

This sketch connects an analog sensor to Pachube (http://www.pachube.com)
using a Wiznet Ethernet shield. You can use the Arduino Ethernet shield, or
the Adafruit Ethernet shield, either one will work, as long as it's got
a Wiznet Ethernet module on board.

This example uses the String library, which is part of the Arduino core from
version 0019. 

Circuit:
* Analog sensor attached to analog in 0
* Ethernet shield attached to pins 10, 11, 12, 13

created 15 March 2010
updated 4 Sep 2010
by Tom Igoe

This code is in the public domain.

*/

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {0x90,0xA2,0xDA,0x00,0x74,0x99};
byte ip[] = {192,168,1,2};
byte gateway[] = {192, 168, 1, 1};
byte subnet[] = {255, 255, 255, 0};
byte server[] = { 176, 9, 63, 22};
Client client(server, 80);

long lastConnectionTime = 0;        // last time you connected to the server, in milliseconds
boolean lastConnected = false;      // state of the connection last time through the main loop
const int postingInterval = 10000;  //delay between updates to Pachube.com

void setup() {
  Ethernet.begin(mac,ip,gateway,subnet);
  Serial.begin(115200);
  delay(1000);
  }

void loop() {
  // read the analog sensor:
  int sensorReading = analogRead(A0);

  // if there's incoming data from the net connection.
  // send it out the serial port.  This is for debugging
  // purposes only:
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  // if there's no net connection, but there was one last time
  // through the loop, then stop the client:
  if (!client.connected() && lastConnected) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
  }

  // if you're not connected, and ten seconds have passed since
  // your last connection, then connect again and send data:
  if(!client.connected() && (millis() - lastConnectionTime > postingInterval)) {
    sendData();
  }
  // store the state of the connection for next time through
  // the loop:
  lastConnected = client.connected();
}

// this method makes a HTTP connection to the server:
void sendData() {
  // if there's a successful connection:
  if (client.connect()) {
    Serial.print("connesso");   
    //char c = client.read();
    //Serial.print(c);
    for(int i=0;i<15;i++){
    client.print("GET /script/Scrittore.php?id=&");
    client.print(i);
    client.print("&ora=2222&tensione=");
    client.print(i+1);
    client.print("&corrente=222&temperatura=33 HTTP/1.0");   //GET da effettuare
    client.println("Host: ratto93.altervista.org");
    client.println();
    Serial.println(i);
     
    lastConnectionTime = millis();
  }
}
  else {
    // if you couldn't make a connection:
    Serial.println("connection failed");
  }
}

Sul serial monitor, dice che è connesso e mostra i dati corretti solo che nel db non ci sono poi..
Se corri veloce come un fulmine, ti schianterai come un tuono.

pitusso

uhm, sul serial monitor io vedo solo della pagine 404 (ovvero: pagina non trovata).

Quote
<h1><b>Page not found</b> (error 404)</h1>
<h2>The page <b>http://</b> was not found on this server.</h2>   


il problema sta qui:

Code: [Select]
client.print("&corrente=222&temperatura=33 HTTP/1.0");   //GET da effettuare

ci vuole un println: stai terminando di scrivere la GET e un a capo ci vuole...

ratto93

Funziona !
Scusatemi, ma lavorando con un netbook a volta scappa qualche caratterino... Grazie dell'aiuto, spero di esserci una volta per tutte :) :)
Se corri veloce come un fulmine, ti schianterai come un tuono.

Go Up