J'ai essayé avec une ip fixe comme tu me l'as conseillé mais tjrs le même problème .....
c'est etrange que cela fonctionne chez tout le monde sauf chez moi :~
Comme ça a l'air de fonctionner sur ton pc mais pas sur ton arduino, essaie de brancher l'arduino sur le câble réseau Du pc, à la place du pc, avec l'adresse ip utilisée par le pc...
MErci à tous les deux
j'ai mis l'adresse ip du PC sur l'arduino meme probleme.
J'alimente l'arduino avec une alim secteur donc ce n'est pas cela non plus ... =(
Y a t'il autre chose branché en SPI sur l'arduino ? J'ai eu le cas avec un horloge ds3234 mal branchée, elle provoquait des erreurs sur l'ethernet et la carte SD...
PITP2:
non la carte ethernet est la seule branchée sur l'arduino
C'est louche cette histoire ... l'ethernet shield est peu être défectueuse ?
Ma toute première ethernet shied avait des "ponts de soudures" (des billes de soudure pour être précis) non voulu qui foutaient la merde.
Regarde de plus prés ta carte (surtout au niveau du chipset Wiznet) peut être que tu as le même probléme ?
Truc bête à regarder : ta shield répond t'elle quand on la ping ?
cbrandt:
la panne matérielle comme le suggère skywodd est effectivement une possibilité…
pas d'autres idées malheureusement…
Sinon tu as pu tester si ta carte répond au ping ?
Si non le défaut hardware et plus que probable vu que le ping est géré en hardware par le chipset wiznet.
J'ai réussi à le faire fonctionner avec ce code que j'ai pris directement depuis le soft arduino alors qu'avant j'avais fait un copier coller depuis le site arduino ..
j'ai juste changé l'IP du serveur google
Merci à tous pour votre aide
/*
Web client
This sketch connects to a website (http://www.google.com)
using an Arduino Wiznet Ethernet shield.
Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
created 18 Dec 2009
modified 9 Apr 2012
by David A. Mellis
*/
#include <SPI.h>
#include <Ethernet.h>
// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(173,194,34,34); // Google
// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
// start the Ethernet connection:
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// no point in carrying on, so do nothing forevermore:
for(;;)
;
}
// give the Ethernet shield a second to initialize:
delay(1000);
Serial.println("connecting...");
// if you get a connection, report back via serial:
if (client.connect(server, 80)) {
Serial.println("connected");
// Make a HTTP request:
client.println("GET /search?q=arduino HTTP/1.0");
client.println();
}
else {
// kf you didn't get a connection to the server:
Serial.println("connection failed");
}
}
void loop()
{
// if there are incoming bytes available
// from the server, read them and print them:
if (client.available()) {
char c = client.read();
Serial.print(c);
}
// if the server's disconnected, stop the client:
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
// do nothing forevermore:
for(;;)
;
}
}
par contre je n'arrive pas à le faire depuis l'arduino avec ce code
int annee=year();
int jour=day();
int mois = month();
int heure= hour();
int minut= minute();
int sec= second();
char date[15];
sprintf(date,"%04d%02d%02d%02d%02d%02d",annee,mois,jour,heure,minut,sec); // %d pour un int
// if there's a successful connection:
if (client.connect(srvphp, 80)) {
// Serial.println("connected srvphp");
// Make a HTTP request:
client.println("GET /solaire/txp2.php?nom_inst=Dupont&date_prod=");
client.print(date);
// Serial.print(date);
// Serial.print(jour);
// Serial.print(heure);
// Serial.print(minut);
// Serial.print(sec);
client.print("&prod=6741&commentaires=arduino");
client.println(" HTTP/1.0");
}
alors qu'avec celui ci cela fonctionne bien ..
if (client.connect(server, 80)) {
Serial.println("connected");
// Make a HTTP request:
client.print("GET /solaire/txp2.php?nom_inst=Dupont&date_prod=20121212121212&prod=6741&commentaires=");
client.print(test);
client.println(" HTTP/1.0");
client.println();
j'ai pourtant contrôlé avec un Serial.print que la date envoyée soit la bonne et c'est le bon format ..
Donc si je comprend bien le code avec la requète en dur marche bien mais pas le code avec la requète construite.
je te suggère de construire toute ta ligne de requète dans un tableau de char avec sprintf et de faire à la fois un client.println et un Serial.println pour vérifier que tout est bon.
Il doit y avoir un truc qui cloche dans la construction de la ligne de requète.
Peut être même dans la date.
Par exemple si une des variables à une valeur erronée (par exemple le mois qui vaut -1 ou 150) alors -malgré le %02d- sprintf va écrire plus de caractères ce qui va faire déborder ta variable char data[15].
Donc une petite verif serait le bienvenue.
Par ailleurs, même si cela ne me semble pas utile dans ce cas pour l'instant, intéresse toi à l'occasion à l'outils Wireshark qui permet de capturer et traiter les paquets IP entre ton PC et l'Arduino.