Ethernet shield afficher une image

Bonjour,
Je fais à appel à vous car je dois réaliser un projet en informatique pour le bac, j'ai choisit d'utiliser une carte programmable tel que Arduino et réaliser un serveur web qui permet de superviser une éolienne.
J'arrive à me connecter en local et en publique, à afficher une page html mais impossible d'afficher les images de la pages html... :~ Je suis sur que c'est possible mais comment ? :stuck_out_tongue:

Merci d'avance pour m'aider à trouver une solution. :slight_smile:

titou34:
Bonjour,
Je fais à appel à vous car je dois réaliser un projet en informatique pour le bac, j'ai choisit d'utiliser une carte programmable tel que Arduino et réaliser un serveur web qui permet de superviser une éolienne.
J'arrive à me connecter en local et en publique, à afficher une page html mais impossible d'afficher les images de la pages html... :~ Je suis sur que c'est possible mais comment ? :stuck_out_tongue:

Merci d'avance pour m'aider à trouver une solution. :slight_smile:

bonjour
tu utilise quelle base pour le serveur web ?
si c'est TinyWebServer, il faut ajouter des types mimes dans le fichier TinyWebServer.cpp

comme ça dans la section :

FLASH_STRING(mime_types,
  "HTM*text/html|"
  "TXT*text/plain|"
  "CSS*text/css|"
  "XML*text/xml|"
  "JS*text/javascript|"

  "GIF*image/gif|"
  "JPG*image/jpeg|"
  "PNG*image/png|"
  "ICO*image/vnd.microsoft.icon|"
  "SVG*image/svg+xml|"
  "MP3*audio/mpeg|"
  "WAV*audio/x-wav|"
  "AVI*video/msvideo|"
  "MID*audio/x-midi|"

Oui j'ai essayé d'utiliser TinyWebServer, mais même la démo n'affiche pas d'image...
Je veux bien que l'on m'explique comment ça fonctionne :slight_smile: ou bien si il y a un autre système.

Merci d'avance :wink:

titou34:
Oui j'ai essayé d'utiliser TinyWebServer, mais même la démo n'affiche pas d'image...
Je veux bien que l'on m'explique comment ça fonctionne :slight_smile: ou bien si il y a un autre système.

Merci d'avance :wink:

recupere le zip
remplace ta version avec celle ci
charge l'exemple fileupload
tu mets sur une carte sd les fichiers contenus dans le dossier html de l'exemple file upload
la carte sd sur le shield ethernet
en appelant l'adresse IP depuis un navigateur , l'image s'affichera (exemple 192.168.1.157 ou 192.168.1.157/index.htm)

zip ici

C'est exactement ce que j'ai fait et lorsque je charge le programme sur la carte il me dit qu'il y a une erreur au niveau de la bibliotheque "TyniWebServer", en gros il me suffirai d'installer cette librairie, mais je ne sais pas comment il faut faire, j'ai cherché sur notre ami "google" mais il n'y a pas beaucoup d'information à ce propos. :~

Merci d'avance :slight_smile: (en espérant ne pas trop vous embêter avec mes questions de débutant) :disappointed_relieved:

Bonjour moi j'affiche une image sur ma page web comme ceci , Je suis avec la librairie Webduino et je l'affiche à partir d'une carte SD avec l'arduino .
Si ca peut t'aider :

void loadImage(WebServer &server, char* image){      // Charge l'image
  server.printP(http200Ok);
  server.println();
  server.printP(httpContentJPG);
  server.println();
  server.println();
  Fimage = SD.open(image, FILE_READ);
  int c;                                
  while ((c = Fimage.read()) >= 0) {      // lis toute les données , on stock dans int c ,car read retourne un int .
    server.print((char)c);
  }
  Fimage.close();
}

void image(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)
{
  loadImage(server , "toto.jpg");  
}

titou34:
C'est exactement ce que j'ai fait et lorsque je charge le programme sur la carte il me dit qu'il y a une erreur au niveau de la bibliotheque "TyniWebServer", en gros il me suffirai d'installer cette librairie, mais je ne sais pas comment il faut faire, j'ai cherché sur notre ami "google" mais il n'y a pas beaucoup d'information à ce propos. :~

Merci d'avance :slight_smile: (en espérant ne pas trop vous embêter avec mes questions de débutant) :disappointed_relieved:

dans le dossier d'installation arduino, il y a un sous dossier nommé libraries
tu créé un sous-sous dossier nommé TinyWebServer
tu copie le contenu du zip dans ce nouveau dossier.

tu relance l'ide et tu va dans fichier ---> exemples ----> TinyWebserver ----->FileUpload

Ok, je prends note de ces solutions, je testerai ça la semaine prochaine car les cartes se trouvent au lycée.
En tout cas le programmes ne comporte plus aucunes erreurs !! :slight_smile:

Bon j'ai fait ce que tu m'as dit, placé le TinyWebServer dans le dossier librairie, relancé le l'IDE puis charger le programme sur l'Arduino et là les problèmes arrivent puisque il me dit qu'il y a de nombreuses erreurs dans le programmes. J'ai aussi essayé le programme de Roxas77 mais pas trop concluant non plus, faut que j'essaye encore plus, faire des essais, etc...

titou34:
Bon j'ai fait ce que tu m'as dit, placé le TinyWebServer dans le dossier librairie, relancé le l'IDE puis charger le programme sur l'Arduino et là les problèmes arrivent puisque il me dit qu'il y a de nombreuses erreurs dans le programmes. J'ai aussi essayé le programme de Roxas77 mais pas trop concluant non plus, faut que j'essaye encore plus, faire des essais, etc...

bonjour
si tu veux de l'aide, poste ici le rapport de compilation (la zone où apparaissent les erreurs)

Voilà ce que j'obtient comme erreur :

FileUpload.ino:11:19: error: Flash.h: No such file or directory
FileUpload.ino: In function 'void send_file_name(TinyWebServer&, const char*)':
FileUpload:58: error: no match for 'operator<<' in 'web_server << (const __FlashStringHelper*)({...})'
FileUpload:66: error: no match for 'operator<<' in 'Serial << (const __FlashStringHelper*)({...})'
FileUpload:70: error: no match for 'operator<<' in 'web_server << (const __FlashStringHelper*)({...})'
FileUpload.ino: In function 'void file_uploader_handler(TinyWebServer&, TinyWebPutHandler::PutAction, char*, int)':
FileUpload:102: error: no match for 'operator<<' in 'Serial << (const __FlashStringHelper*)({...})'
FileUpload:118: error: no match for 'operator<<' in 'Serial << (const __FlashStringHelper*)({...})'
FileUpload.ino: In function 'void setup()':
FileUpload:127: error: no match for 'operator<<' in 'Serial << (const __FlashStringHelper*)({...})'
FileUpload:145: error: no match for 'operator<<' in 'Serial << (const __FlashStringHelper*)({...})'
FileUpload:148: error: no match for 'operator<<' in 'Serial << (const __FlashStringHelper*)({...})'
FileUpload:153: error: no match for 'operator<<' in 'Serial << (const __FlashStringHelper*)({...})'
FileUpload:157: error: no match for 'operator<<' in 'Serial << (const __FlashStringHelper*)({...})'
FileUpload:167: error: no match for 'operator<<' in 'Serial << (const __FlashStringHelper*)({...})'
FileUpload:171: error: no match for 'operator<<' in 'Serial << (const __FlashStringHelper*)({...})'
FileUpload:174: error: no match for 'operator<<' in 'Serial << (const __FlashStringHelper*)({...})'

Merci d'avance ! :slight_smile:

titou34:
Voilà ce que j'obtient comme erreur :

FileUpload.ino:11:19: error: Flash.h: No such file or directory

Merci d'avance ! :slight_smile:

il manque la librarie flash
meme manip que que pour les autres libraries
la prendre ici
http://cjoint.com/13av/CDdqbreGdIm.htm

C'est bon ça marche enfin, merci !!
Mais j'ai une autre question, est il possible de faire un serveur php avec arduino ? Si c'est possible j'ouvrirai un autre fil. :slight_smile:

Merci

titou34:
C'est bon ça marche enfin, merci !!
Mais j'ai une autre question, est il possible de faire un serveur php avec arduino ? Si c'est possible j'ouvrirai un autre fil. :slight_smile:

Merci

bonjour
tant mieux si ça a fini par tomber en marche :grin:
A mons sens il est illusoire de vouloir embarquer "un moteur php" sur l'arduino, ce n'est pas prevu pour cela
il faut rester dans du simple, ne pas oublier que le debit ethernet avec utilisation de la SD est faible, je l'avais mesurer (je ne sais plus où) , maos il me semble de memoire que ça tournait < 100Ko/s

titou34:
Mais j'ai une autre question, est il possible de faire un serveur php avec arduino ?

Réponse simple : NON

PHP est un langage interprété destinait à tourner sur des serveurs dédié avec de la RAM, du CPU et surtout un OS linux/windows.
Ici tu fait de l'embarqué donc tu traites tes données directement en C++ (c'est un peu comme faire du CGI-BIN sur un serveur web classique).