Go Down

Topic: arduino e web (Read 430 times) previous topic - next topic

nicola1993

ciao,
ho un problema io voglio collegare il mio arduino a internet in modo tale
da poter passare dai dati a uno script php che risiede su un server altervista,
il mio problema sta nel fatto che non si connette al server.
P.S. vi ricordo che sono alle prime armi

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

#define RXBUFFERLENGTH          4

WeatherShield1 weatherShield;
float fTemperature = 0.0f;

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0xFE, 0x72};
byte ip[] = {192, 168, 0, 200};
byte server [] = { 176, 9, 63, 23 }; //176.9.63.23
byte gateway [] = { 192, 168, 1, 1 } ;
byte subnet [] = { 255, 255, 255, 0 } ;

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

void loop() {
  /* This is the buffer for the answers */
  unsigned char ucBuffer[RXBUFFERLENGTH];
 
  /* Check for the weather shield connection */
  if (weatherShield.sendCommand(CMD_ECHO_PAR, 100, ucBuffer)) {}
 
  /* Start reading temperature */
  unsigned short shTemperature = 0;
  if (weatherShield.sendCommand(CMD_GETTEMP_C_AVG, 0, ucBuffer))
    fTemperature = weatherShield.decodeFloatValue(ucBuffer);
  if (weatherShield.sendCommand(CMD_GETTEMP_C_RAW, 0, ucBuffer))
    shTemperature = weatherShield.decodeShortValue(ucBuffer);
 
  Serial.print ( " Connecting..." ) ;
  EthernetClient client ;
  if ( client.connect(server, 21) )
  {
    Serial.println ( " Connected. " ) ;
    Serial.println ( fTemperature ) ; // Le seguenti istruzion inviano il dato allo script PHP:
    client.print ( "GET http://ncmeteo.altervista.org/arduino/inserimento.php?fTemperature=" ) ;
    client.print ( fTemperature ) ;
    client.println (" HTTP/1.1" ) ;
    client.println ( "Host: http://ncmeteo.altervista.org" ) ;
    client.println () ;
    Serial.println ( "disconnecting." ) ;
    client.stop();
    }
  // if the server's disconnected, stop the client:
  else
  {
    Serial.println();
    Serial.println ( "disconnecting..." ) ;
    client.stop();
    while ( client.status() != 0 ){}
    delay ( 5 ) ;
  }
  delay(5000);
}

grazie

BrainBooster

ciao benvenuto :)
http://arduino.cc/forum/index.php/topic,91560.0.html

pitusso

Ciao

Quote
if ( client.connect(server, 21) )


Io penso che altervista non stia in ascolto sulla porta 21, soprattutto per una get ...


nicola1993

ciao, scusate
innanzitutto sto usando un arduino uno, con ethernet shield ufficiale
e la weather shield per rilevare temperatura, pressione e umidità.
il mio problema sta proprio nel fatto di non riuscire a connettermi al
server di altervista

BrainBooster

ciao, se cerchi nel forum troverai sicuramente vari topic dove il problema è stato affrontato e risolto.

pitusso

Quote
il mio problema sta proprio nel fatto di non riuscire a connettermi al
server di altervista


hai letto la mia risposta?
Ti stai connettendo ad altervista alla porta 21.
http (e php insieme a lui) viaggiano solitamente sulla porta 80

Dopo c'è da dire che, passato quel problema, se ne pone un'altro, ovvero la struttura della GET.

Come suggerisce Brain, nel forum trovi parecchi post al riguardo (l'argomento è gettonato, ultimamente).

Per esempio in quest post :
http://arduino.cc/forum/index.php/topic,90575.msg680326.html#msg680326
c'è proprio uno sketch che fa la stessa cosa (su altro sito, ovviamente)





PaoloP

#6
Mar 08, 2012, 08:03 pm Last Edit: Mar 08, 2012, 11:07 pm by PaoloP Reason: 1

byte ip[] = {192, 168, 0, 200};
byte server [] = { 176, 9, 63, 23 }; //176.9.63.23
byte gateway [] = { 192, 168, 1, 1 } ;
byte subnet [] = { 255, 255, 255, 0 } ;


L'IP e il Gateway si trovano su sottoreti diverse e la maschera non permette di vedere il Gateway.
O cambi la maschera con 255,255,0,0 oppure cambi l'ip 192,168,1,200.

pitusso

Quote
IP e il Gateway


apperò, non me ne ero neppure accorto.
Certo che di "errori da distrazione" ce ne son parecchi, eh ?!  :smiley-mr-green:

Go Up