Ciao a tutti ho acquistato ieri due nuove shield per arduino, la nuova ethernet e quella gsm/gprs.
Ho dei problemi con la prima:
praticamente non funziona quando faccio if(client.connect(server, 80)) come se non riuscisse a comunicare con il server.
vedi sketch sotto riportato ed allegato<
Se provo a stampare sulla seriale il risultato di questa funzione infatti mi stampa 0(false: connessione fallita) e non 1(true: connessione stabilita).
Vi allego lo sketch.
Ho usato un sensore di temperatura TMP102 per chi volesse saperlo, grazie a tutti, devo riuscire a capire come funziona la connessione ad un server.
p.s avete notato che la nuova ethernet shield se implementata su arduino uno ha gli ultimi due piedini dei pin analogici e digitali che escono?
#include <Wire.h>
#include <SPI.h>
#include <Ethernet.h>
EthernetClient client;
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x0B, 0xA0 };
//byte ip[] = { 192,168,1,80 };
//byte server[] = { 173,194,35,152 };
IPAddress server(173,194,35,152); // google
int tmp102Address = 0x48;
void setup(){
// Ethernet.begin(mac, ip);
Serial.begin(9600);
Serial.println("Inizializzata la seriale!");
Serial.println("Inizializzo I2C:");
Wire.begin();
Serial.println("Inizializzo Ethernet:");
if (Ethernet.begin(mac) == 0){
delay(2000);
Serial.println("Fallita la configurazione Ethernet usando DHCP");
}
Serial.print("Il mio IP e': ");
Serial.println(Ethernet.localIP());
Serial.println("Inizio connessione:");
if(client.connect(server, 80)){
Serial.print("Connesso.");
client.println("GET /search?q=arduino HTTP/1.0");
client.println();
}
else {
// Se non si connette al server
Serial.println("connection failed");
}
}
void loop(){
Serial.println("Inizia il loop. . .");
delay(1000);
if (connessione==1 && client.available()){
Serial.println("Connessione del client. . .");
float celsius = getTemperature();
Serial.print("Temperatura: ");
Serial.print(celsius);
Serial.println(" C");
} else
{
Serial.println("Connessione del client fallita!");
}
delay(2000);
}
//////// FUNZIONE TEMPERATURA TMP102
float getTemperature(){
Wire.requestFrom(tmp102Address,2);
byte MSB = Wire.read();
byte LSB = Wire.read();
//it's a 12bit int, using two's compliment for negative
int TemperatureSum = ((MSB << 8) | LSB) >> 4;
float celsius = TemperatureSum*0.0625;
return celsius;
}
GRAZIE A TUTTI! ![]()
temperatura_tmp102_function.ino (1.65 KB)