Offline
Full Member
Karma: 0
Posts: 163
|
 |
« on: June 04, 2011, 03:37:05 am » |
Bonjours à tous, Bon j'ai enfin fait l'acquisition d'un ethernet Shield et je dois dire que je trip totalement ! Pouvant lier le web à l'arduino c'est pour moi quelque chose d'incroyable. J'ai réussi a faire un site web ou le fond de couleur change quand le capteur de son détecte du bruit et tout ceci est accessible depuis n'importe dans le monde En tout cas je suis la pour une question bien précise. J'ai réussi à prendre le contrôle de DEL en ayant l'arduino en webserver, j'accède à la page qui est générée par le microcontroller. Malheureusement je trouve que nous sommes pas mal limité niveau programmation (visuelle, dynamique etc.). Donc mon but est d'être en WebClient. En étant dans ce mode je suis capable d'envoyer des informations et même les stocker dans une base de donnée, qui sont ensuite réutiliser par une autre page web. Mais par contre je n'arrive pas du tout à lire le contenu d'une page avec l'arduino en webclient et donc encore moins récupérer des informations. J'ai fait différente tentative avec le client.available(); mais il me retourne tout le temps 0. Je pense que je n'Ai pas encore vraiment comment celui-ci fonctionne et qu'est-ce qu'il lie sur la page? Si certains ont quelques explications, elles seront la bienvenue Merci d'avance
|
|
|
|
« Last Edit: June 04, 2011, 03:40:57 am by chesnel »
|
Logged
|
|
|
|
|
Offline
Sr. Member
Karma: 0
Posts: 405
|
 |
« Reply #1 on: June 04, 2011, 04:50:24 am » |
Salut Voilà un sujet interessant ,que je voulais également abordé ,car je possède une ethernet shield (V 1.1 HanRun HR911102A ) et pas encore eu le temps de voir comment ça marche  en espérant que tu ais des réponses . cordialement William
|
|
|
|
|
Logged
|
The truth is elsewhere !!
|
|
|
|
Forum Moderator
Geneva
Offline
Faraday Member
Karma: 22
Posts: 2894
Yoplait... le pt'it suisse
|
 |
« Reply #2 on: June 04, 2011, 05:04:44 am » |
Essaye ça : #include <Ethernet.h> #include <PString.h>
// Enter a MAC address and IP address for your controller below. // The IP address will be dependent on your local network: byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; byte ip[] = { 192,168,0,177 }; byte server[] = { 217,107,214,2 }; // jfsgeneva.com
// 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): Client client(server, 80); String stringOne = ""; long echec=0;
void setup() { // start the Ethernet connection: Ethernet.begin(mac, ip); // start the serial library: Serial.begin(9600); // give the Ethernet shield a second to initialize: delay(1000); // Serial.println("connecting...");
// if you get a connection, report back via serial:
}
void loop(){
Serial.println("connecting..."); if (client.connect()) {
Serial.println("connected"); // Make a HTTP request: client.print("GET http://tapage.com");
client.println(" HTTP/1.1"); client.print("Host: tapage.com\n"); client.print("Referer: http://tapage.com\n\n"); client.println(); delay(200); } else if (!client.connected()){ // if you didn't get a connection to the server: Serial.println("connection failed"); }
// if there are incoming bytes available // from the server, read them and print them: if (client.available()!=0) { int b=client.available(); for (int a=0; a < b+1000;a++){ char c = client.read(); // Serial.print(c); String stringOne += c;
} Serial.println(String stringOne);
Serial.flush();
}
// if the server's disconnected, stop the client: if (!client.connected()) { Serial.println(); Serial.println("disconnecting."); Serial.println(); Serial.println(); client.flush(); Serial.flush(); client.stop();
// do nothing forevermore: // for(;;) // ; } delay(2000); }
|
|
|
|
|
Logged
|
MacBook intel core 2 duo os X snow Leopard 10.6 eMac PPc G4 os X Leopard 10.5 powerbook G4 os X Leopard 10.5 imac PPC G3 os X Panther 10.3.9 Arduino Diecimila Arduino Mega Arduino Standalone Arduino 1307.04 
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 163
|
 |
« Reply #3 on: June 04, 2011, 09:13:17 am » |
yeah merci Jean-François, j'ai trouvé mon erreur ! En plus je suis vraiment idiot car vous en parliez dans un de tes anciens posts http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1282763701/2Mon oublie et de mettre un delay pour que ce qui faisait que la lecture de l'information ne ce faisait pas (trop immediat) Donc maintenant sur ma page j'ai ceci <?=chr(255)?> et quand je change la valeur, l'intensité de ma led change avec  Il ne me reste plus qu'à trouvé comment récupérer plusieurs valeur et je m'attaquerai à l'Interface du site internet en utilisant du JSON pour avoir un interface ou il n'est pas nécessaire de recharger la page  Merci encore !
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 163
|
 |
« Reply #4 on: June 04, 2011, 09:31:43 am » |
bon ça marche super ! je peux allumer éteindre une led à distance en webclient.
Par contre des suggestions pour pouvoir récupérer plus qu'une seul valeur ?
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Geneva
Offline
Faraday Member
Karma: 22
Posts: 2894
Yoplait... le pt'it suisse
|
 |
« Reply #5 on: June 04, 2011, 09:42:36 am » |
Tu as quoi dans test.php ?
|
|
|
|
|
Logged
|
MacBook intel core 2 duo os X snow Leopard 10.6 eMac PPc G4 os X Leopard 10.5 powerbook G4 os X Leopard 10.5 imac PPC G3 os X Panther 10.3.9 Arduino Diecimila Arduino Mega Arduino Standalone Arduino 1307.04 
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 163
|
 |
« Reply #6 on: June 04, 2011, 10:12:31 am » |
juste ceci : <?php
include "connect/connect.php";
$requete_projet = "SELECT * FROM t_led WHERE led_id = 1"; $sql_projet = mysql_query($requete_projet, $link) or die(mysql_error());
while ($pro = mysql_fetch_array($sql_projet)){ $led_etat = $pro["led_etat"]; }
echo chr($led_etat);
?>
ça me permet que l'arduino interroge la page et récupère la valeur de la led mais ça reste juste une information
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Geneva
Offline
Faraday Member
Karma: 22
Posts: 2894
Yoplait... le pt'it suisse
|
 |
« Reply #7 on: June 04, 2011, 10:27:46 am » |
Tu passes par une requêtes SQL.... en fait pour aussi peu d'info tu as avantage à passer par un fichier .txt que tu modifies par PHP et qui contient l'état de tes leds, tu gagneras du temps dans les requêtes.
Autrement si tu persiste avec une BDD, tu peux simplement appeler tes variables $led1, $led2etc, et afficher leurs états, sachant que celles qui ne sont pas sortie de tra requêtes SQL sont à "0", et tu fait un echo de toutes tes variables et toujours dans le même ordre.
Ainsi coté Arduino tu récupère les états toujours dans le mêms ordre.
|
|
|
|
|
Logged
|
MacBook intel core 2 duo os X snow Leopard 10.6 eMac PPc G4 os X Leopard 10.5 powerbook G4 os X Leopard 10.5 imac PPC G3 os X Panther 10.3.9 Arduino Diecimila Arduino Mega Arduino Standalone Arduino 1307.04 
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 163
|
 |
« Reply #8 on: June 04, 2011, 10:35:11 am » |
l'idée du fichier txt c'est intéressant. J'ai fait mes essais directement avec une base de donnée car ça me permettais de déjà pouvoir maitriser l'insertion de donnée. Pratique pour mesurer la température et faire un graphe ensuite par exemple. En faite ou je ne sais pas trop comment faire c'est du coté du code arduino Pour le moment ça ressemble à ceci (client.available()!=0) { char c = client.read(); // Serial.print(c); analogWrite(9,c); } else{ Serial.println(client.available()); }
quelle serait la méthode pour récupérer deux valeurs à la suite ? Merci encore de ton aide précieuse
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Geneva
Offline
Faraday Member
Karma: 22
Posts: 2894
Yoplait... le pt'it suisse
|
 |
« Reply #9 on: June 04, 2011, 10:51:57 am » |
Par exemple tu pourrais faire : echo 'A'; echo $led1; echo 'B'; echo $led2;
...etc...etc Et coté Arduino tu récupères ta trame, tu traite la valeur led1 lorsque tu détectes 'A' jusqu'à 'B' et ainsi de suite....
|
|
|
|
|
Logged
|
MacBook intel core 2 duo os X snow Leopard 10.6 eMac PPc G4 os X Leopard 10.5 powerbook G4 os X Leopard 10.5 imac PPC G3 os X Panther 10.3.9 Arduino Diecimila Arduino Mega Arduino Standalone Arduino 1307.04 
|
|
|
|
Forum Moderator
Geneva
Offline
Faraday Member
Karma: 22
Posts: 2894
Yoplait... le pt'it suisse
|
 |
« Reply #10 on: June 04, 2011, 10:53:13 am » |
Ce qui est entre les lettres, tu le mets dans un tableau Led[] et hop !
|
|
|
|
|
Logged
|
MacBook intel core 2 duo os X snow Leopard 10.6 eMac PPc G4 os X Leopard 10.5 powerbook G4 os X Leopard 10.5 imac PPC G3 os X Panther 10.3.9 Arduino Diecimila Arduino Mega Arduino Standalone Arduino 1307.04 
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 163
|
 |
« Reply #11 on: June 04, 2011, 11:01:06 am » |
donc si j'ai bien compris j'utilise les lettre comme repère pour pouvoir me segmenter les différentes valeur ? je vais regarder par la  merci encore
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Geneva
Offline
Faraday Member
Karma: 22
Posts: 2894
Yoplait... le pt'it suisse
|
 |
« Reply #12 on: June 04, 2011, 11:08:14 am » |
C'est une méthode, il doit y en avoir d'autres.
|
|
|
|
|
Logged
|
MacBook intel core 2 duo os X snow Leopard 10.6 eMac PPc G4 os X Leopard 10.5 powerbook G4 os X Leopard 10.5 imac PPC G3 os X Panther 10.3.9 Arduino Diecimila Arduino Mega Arduino Standalone Arduino 1307.04 
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 163
|
 |
« Reply #13 on: June 05, 2011, 05:06:48 pm » |
Bon je ne me suis pas encore attaquer à la gestion de plusieurs informations... J'ai un soucis plutôt désagréable. La connexion clientWeb avec arduino est instable et fonctionne par intermittence, chose qu'il ne faisait pas du tout hier  Voici mon code : #include <SPI.h> #include <Ethernet.h>
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x4A, 0x8A }; byte ip[] = { 192,168,1,69 }; //byte server[] = { 173,194,33,104 }; // Google byte server[] = { 72,55,186,33 }; // w byte subnet[] = { 255, 255, 255, 0 }; //subnet mask of the network byte gateway[] = { 192, 168, 1, 254 }; //your router's IP address
Client client(server, 80);
void setup() { // start the ethernet connection and serial port: Ethernet.begin(mac, ip, gateway, subnet); Serial.begin(9600); client.flush(); client.stop(); // give the ethernet module time to boot up: delay(1000); }
void loop() {
Serial.print("connecting : "); if (client.connect()) { Serial.println("OK"); client.println("GET http://mon_site_web.php"); client.println(); delay(200); if (client.available()!=0) { char c = client.read(); // Serial.print(c); analogWrite(9,c); } else{ Serial.println(client.available()); } client.flush(); client.stop(); } else { Serial.println("KO"); } }
Une petite idée d’où pourrait venir l'erreur ?
|
|
|
|
|
Logged
|
|
|
|
|
|