Envoyer les données d'un capteur sur un réseau

Bonjour à tous!

Alors voilà je vous expose mon projet : Dans le cadre de mon stage de fin d'année pour valider mon DUT Mesures Physiques, qui se déroule à l'IUT de Bordeaux 1 dans le département Génie Civil, je dois implanter un capteur de pression différentiel à leur réseau de chauffage pour calculer des pertes de pressions. J'ai donc trouvé mon capteur, et j'ai décidé d'utiliser une carte Arduino Uno pour acquérir les données du capteur. Mes tuteurs veulent maintenant que via un shield Ethernet, j'envoie les données sur le réseau informatique du bâtiment. Donc pour cela je branche un câble ethernet entre l'arduino et une prise ethernet quelconque située dans le bâtiment. Le but final étant de pouvoir accéder aux données qui auront été stockées au préalable via n'importe quel ordinateur connecté au réseau.

Mon problème est celui-ci : n'ayant pas trop de connaissances dans le domaine des réseau ethernet/internet, je ne vois pas comment stocker les données envoyées sur le réseau. Ayant cherché depuis 1 ou 2 jours, j'ai trouvé quelques tutoriels m'expliquant comment afficher les données sur un site ayant comme adresse l'adresse IP configurée par moi- même dans le programme de l'arduino ( http://jlectronique.org/ETSH_LAN.htm ). Si quelqu'un pouvait m'éclairer un petit peu ou en tout cas me mettre sur la voie, je pense que je ne suis pas loin et que ca ne doit vraiment pas être très compliqué, seulement je n'ai pas eu de formations dans ce domaine et ce n'est pas quelque chose d'inné chez moi ;) Si vous avez besoin de précisions, n'hésitez pas, et surtout n'hésitez pas à me reprendre sur certains termes que j'utilise car c'est fort probable que j'emploie des mots inadéquats!

Merci d'avance pour les éventuelles réponses, bonne journée à tous =)

Ta demande est vague : envoyer vers le réseau, ça ne veut rien dire. Que veux-tu faire avec ce réseau ?

Ok je vais essayer de préciser.

La carte arduino va capter des infos, ces infos, au lieu de les récupérer sur un Pc avec le moniteur Série, je voudrais pouvoir y accéder via un fichier consultable sur n'importe quel ordinateur connecté au réseau internet de l'IUT

Salut, effectivement tu n'es pas loin, mais tu à fait que le plus simple, l'acquisition de donné.

Pour le reste, deux solutions, soit tu prend un ordinateur sur le réseau avec un programme ( serveur ) qui récupère les données en UDP ou TCP et les enregistre et les remet à disposition sur une page web (local) avec un petit serveur apache. Plutôt robuste mais compliqué ( bien que pour quelqu'un qui gère vraiment en une journée c'est fait hein ^^ ).

Sinon tu prend un Arduino Ethernet avec carte SD, il fera l'acquisition de données, il stock dans la carte SD toutes ces valeurs et le arduino fera également office de serveur web en proposant ces données dans une page web ( la par contre moins robuste et surtout deux point délicat: ta page web ne pourra pas être très sophistiqué, la mémoire du arduino est réduite et donc peut de place pour un gros CSS ou autre et deuxième point, je crois qu'il est compliqué d'utilisé SD et Ethernet à la fois, du moins j'avais réussi donc tu devrais pouvoir le faire)

voila, choisi la solution que tu veux et on t'aidera à la mettre en place.

Skizo.

Merci beaucoup pour cette réponse skizo!

Je pense opter pour la 2eme solution car la 1ere me semble un peu compliqué pour mon niveau, et aussi car je n'ai pas besoin d'enormement de mémoire j'imagine, sachant que par exemple je vais faire une campagne de mesure durant 5h avec 1 mesure toutes les 5 minutes par exemple, je pense pas que ca soit très gourmand en mémoire je me trompe?

Encore merci pour cette réponse très claire et précise qui répond parfaitement à mes attentes!

Mais derien, alors, effectivement tu n'auras pas besoin de beaucoup de mémoire puis avec une carte SD tu pourra facilement stocker tout sa, par contre il faudra pas demander une page web de haute voltige hein par ce que la sa sera sans image juste avec un peut de CSS :grin:

Bon du coup, TODO liste:

  • acheter la carte arudino ethernet : http://www.lextronic.fr/P4649-platine-ethernet-shield-pour-arduino-rev-3.html Sans pub bien sur il est dispo partout ^^

  • Regarder création et écriture dans un fichier sur carte SD ( simple mais faire attention au truc vicieux des nom de fichier qui ne doivent pas excéder 12 caractère il me semble ou un truc du style ^^ )

  • Regarder serveur web sur arduino, assez simple et beaucoup d'exemple trouvable sur ce forum

  • une fois que tu arrivera à afficher une page web ( même si c'est pas la tienne ) ce pencher sur ce que tu veux y trouver dedans: différente page, une sélection de la date de début et de fin de relever etc, crée ta page et donc ces fameuses commandes ( une commande = un form method GET pour laisser aparaitre le résultat dans l'URL)

  • faire le mécanisme de lecture de tes commandes pour afficher ce que tu veux en fonction de ces commandes

Et basta cozi ! :grin:

Allez Good luck :D

Skizo.

Mastaahh: Merci beaucoup pour cette réponse skizo!

Je pense opter pour la 2eme solution car la 1ere me semble un peu compliqué pour mon niveau, et aussi car je n'ai pas besoin d'enormement de mémoire j'imagine, sachant que par exemple je vais faire une campagne de mesure durant 5h avec 1 mesure toutes les 5 minutes par exemple, je pense pas que ca soit très gourmand en mémoire je me trompe?

Encore merci pour cette réponse très claire et précise qui répond parfaitement à mes attentes!

bonjour dans ton cas Simple, efficace, facile à adpater, ethernet et carte sd voir la lib tinywebserver (exemples fileupload et webserversd) https://github.com/ovidiucp/TinyWebServer

par contre il faudra pas demander une page web de haute voltige hein par ce que la sa sera sans image juste avec un peut de CSS

On me demande pas de page " design" t'en fais pas^^on me demande juste de pouvoir avoir accès aux données ;) Les présenter sous forme de tableau par exemple serait réalisable?

TODO liste : - Carte arduino thernet déja en ma possession

-Tout le reste à plancher, je m'y met donc de ce pas! Je n'ai toujours pas mon capteur mais je vais mettre un potentiometre à la place en attendant, mon capteur fonctionne a peu près de la même manière, donc ca devrait suffire pour "tester" ^^

Bref j'ai du boulot quoi ;) Merci encore pour toutes les infos! je reviens vers vous si j'ai des questions et je vous tiens au courant de l'avancement du projet :)

Quant à ta réponse Artouste, je vais aussi fouiller dans ce lien que tu m'as envoyé parce que ca a l'air interessant, les infos sont pas évidente à attraper sur son tuto mais avec quelques heures de lecture ca devrait le faire :)

Merci à tous, et bonne journée!

Désolé du double post, mais j'ai du nouveau xD

Je viens d'aller voir mon tuteur tout fier pour lui exposer la solution, et la, c'est le drame... Non j'exagère, mais plusieurs points lui sont direct venus à l'esprit! Tout d'abord, quel type de carte SD peut-on mettre sur l'arduino? plutot de l'ordre du 128Mo ou alors est-ce qu'on a le droit de foutre du 16 giga? Parce que genre en fait, ils veulent plusieurs type de campagne de mesure, certaines vont être pendant 15 jours genre 1 point toutes les 10 moinutes ( ce qui ferait 2160 points), des fois 1 points toutes les minutes pendant 2 jours ( ce qui ferait 172800 points) enfin bref prenons large, on va dire 500000 points au max j'imagine, du coup je sais pas si la solution de la carte SD fera l'affaire :s

Après l'autre truc aussi, c'est qu'ils veulent pouvoir régler cette période d'echantillonnage sans avoir à changer le programme dans l'arduino, mais plutot de selectionner la période qu'ils souhaitent une fois les données traités... Entre autre, il faudrait que avec arduino j'ai toujours la même période d'échantillonnage, on va dire 1 point toutes les minutes, et que après je puisse séléctionner celles que je veux... Mais du coup je suis completement perdu et un peu desespéré car je sais pas si ce qu'ils me demandent releve vraiment de mon niveau de petit "presque BAC +2" surtout que j'ai pas fait un DUT info mais Mesures Physiques quoi^^

Enfin bref si vous avez des idées, je prend! Merci d'avance!

Mastaahh: Désolé du double post, mais j'ai du nouveau xD

Je viens d'aller voir mon tuteur tout fier pour lui exposer la solution, et la, c'est le drame... Non j'exagère, mais plusieurs points lui sont direct venus à l'esprit! Tout d'abord, quel type de carte SD peut-on mettre sur l'arduino? plutot de l'ordre du 128Mo ou alors est-ce qu'on a le droit de foutre du 16 giga? Parce que genre en fait, ils veulent plusieurs type de campagne de mesure, certaines vont être pendant 15 jours genre 1 point toutes les 10 moinutes ( ce qui ferait 2160 points), des fois 1 points toutes les minutes pendant 2 jours ( ce qui ferait 172800 points) enfin bref prenons large, on va dire 500000 points au max j'imagine, du coup je sais pas si la solution de la carte SD fera l'affaire :s ... Enfin bref si vous avez des idées, je prend! Merci d'avance!

La sd que j'ai sous la main pour reverifier tinywebserver avant de le proposer est une 4GO SDHC formatée en FAT32 et les solutions de log data avec sont plus que courantes. la seule vraie contrainte temporelle serait celle de l'ecriture sur la SD , mais dans la mesure où la F° d'acquisition max est au pire de l'ordre de la seconde, il reste de la "grosse" marge :grin:

Tu peux aussi proposer à ton tuteur de venir discuter ici de ça avec toi :grin: il sera aussi bienvenu que toi tu l'a été 8) ceux qui repondent regulierement ne sont pas tous des "ados boutonneux" et pour beaucoup ont un gros background professionnel 8)

Je ne sais pas si c'est la meilleure solution, je pense que mon tuteur sait comment faire, cependant, comme c'est un stage éducatif, il veut que je mette en oeuvre les moyens nécessaire à la réalisation de ce projet sans qu'il me fasse le travail. Entre autre, il veut me faire acquérir la compétence de savoir demander au bon endroit, aux bonnes personnes, les infos dont j'ai besoin. Et non qu'on me les serve sur un plateau! C'est pour ca que j'ai essayé de me documenter du mieux que j'ai pu avant de venir ici^^ Donc pour toi, la mémoire ne va pas être un problème? c'est déja un bon point!

Et vu la qualité de vos réponses, j'imagine bien que vous n'êtes pas des ados boutonneux ;) Oui merci beaucoup pour cet acceuil chaleureux!

Mastaahh: Je ne sais pas si c'est la meilleure solution, je pense que mon tuteur sait comment faire, cependant, comme c'est un stage éducatif, il veut que je mette en oeuvre les moyens nécessaire à la réalisation de ce projet sans qu'il me fasse le travail. Entre autre, il veut me faire acquérir la compétence de savoir demander au bon endroit, aux bonnes personnes, les infos dont j'ai besoin. Et non qu'on me les serve sur un plateau! C'est pour ca que j'ai essayé de me documenter du mieux que j'ai pu avant de venir ici^^ Donc pour toi, la mémoire ne va pas être un problème? c'est déja un bon point!

Et vu la qualité de vos réponses, j'imagine bien que vous n'êtes pas des ados boutonneux ;) Oui merci beaucoup pour cet acceuil chaleureux!

Alors c'est pas un mauvais tuteur :grin: Pour ce qui concerne les logs sur SD , ce ne sera pas un probleme , compte tenue de tes besoins/contraintes. Neanmoins je detecte un "manque" dans la methodologie de ce "log" il n'est pas horodaté , et en general dans les logs "le stamping" c'est le nerf de la guerre 8) C'est voulu ? , pas (encore) pensé ? :grin:

Je vais passer pour un débile, mais peux tu être plus clair? je n’ai pas vraiment compris a partir du manque de methodologie^^
Désolé hein

Mastaahh: Je vais passer pour un débile, mais peux tu être plus clair? je n'ai pas vraiment compris a partir du manque de methodologie^^ Désolé hein

non ! 8)

pour faire simple : acquerir des datas (la ta pression differentielle) c'est bien mais si tu ne sais pas resituer dans le temps , ces acquistions ça ne sert generalement pas à grand chose pour exploiter ensuite les logs.

dans ton cas (et dans les cas derivés) ce qui important c'est de situer/verifier/corréler dans le temps c'est le Delta P°

une ligne de log restituée en general (et en gros) c'est : -Id du capteur,date et heure de l'acquisition,valeur acquise

OK je pense avoir compris!

Donc, le manque de methodologie que tu soulignait viendrait de quoi? Parce que oui biensur, ce que tu indique dans la ligne de log, c'est exactement ce qu'il me faut ( l'ID du capteur étant pour l'instant pas utile vu que je n'en ai qu'un!)

J'ai besoin pour chaque valeur, de sa date et de son heure, avec un espassement entre chaque valeur de 1 minute, donc mon Delta serait de 1 minute! Ca se configure dans le programme ca de toute facon non?

Bon Artouste ta bien aidé, mais ne t'en fait pas la carte SD fera l'affaire, pour le faite de changer l’échantillonnage etc sa sera aussi faisable sans trop de connaissance, pour ce qui est de l'eurodatage, sa sera moins simple, il te faudra surement un module pour obtenir l'heure ( module de ce style la : https://www.sparkfun.com/products/99 ) , pour pouvoir stocker ta valeur avec l'heure du relevé.

Pour le reste sa devrai être facile d’exploiter ces données, même de pouvoir à distance ( page web ) changer la fréquence d’échantillonnage et lancer arrêter une campagne de relevé.

Projet plus que réalisable même à ton niveau, combien de temps tu a pour tous sa?

Skizo.

Mastaahh: OK je pense avoir compris!

  • Donc, le manque de methodologie que tu soulignait viendrait de quoi? Parce que oui biensur, ce que tu indique dans la ligne de log, c'est exactement ce qu'il me faut ( l'ID du capteur étant pour l'instant pas utile vu que je n'en ai qu'un!)

J'ai besoin pour chaque valeur, de sa date et de son heure, avec un espassement entre chaque valeur de 1 minute, donc mon Delta serait de 1 minute! Ca se configure dans le programme ca de toute facon non?

  • de l'absence de prise en compte initial de l'horodatage Si tu veux un horodatage fiable il te faut une RTC Real Time Clock(ou faire du NTP, mais ça risque d'etre tres lourd à gerer avec un petit arduino) l'arduino de base n'emporte pas de RTC, tu dispose juste d'un compteur de temps soumis à la precision de la base de temps ce compteur est remis à zero à chaque reset de l'arduino, ce n'est pas un moyen fiable d'horodater du log. il te faut donc aussi implanter cette fonctionnalité dans ton projet. le composant/module le plus courant utilisé sur arduino est le DS1307 (RTC en I²C)

il y a de l'écho ici, hein Artouste :grin:

Merci pour tous ces conseils et de me rassurer c’est gentil!

Ok donc c’est intégré pour l’horodatage! Juste, j’ai que de vagues notions en I2C, le composant que vous me conseillez est compliqué à utiliser? (j’ai déjà essayé d’effectuer un projet avec un capteur de pression fonctionnant en I2C et ca à bien foiré^^)

Ah c’est cool si l’échantillonnage et l’exploitation des données peuvent se faire à partir de la page web, ca arrangerait bien des choses!!

Mon stage s’arrete le 20 Juin, et je reçois mon capteur le 17 juin normalement, Donc en attendant d’avoir le capteur je ferais des tests avec un générateur de signaux qui se comportera comme le capteur ( tension variant linéairement entre 0-10V)!
Je vous ai mis en pièce jointe le schéma du montage que je compte utiliser ( oui c’est pas beau désolé ^^)

Enfin voilà merci encore du coup de main!!

Les références de l’alim, et des régulateurs:
régulateur 15 V : http://fr.farnell.com/stmicroelectronics/l7815abv/regulateur-15v-7815-to-220-3/dp/1087092?Ntt=1087092
régulateur 08V : http://fr.farnell.com/stmicroelectronics/l7808cv/regulateur-8-0v/dp/9756108?Ntt=9756108
Alim 24V : http://fr.farnell.com/powerpax/sw4309/alimentation-ac-dc-24v-500ma-euro/dp/1971792?Ntt=1971792

Je ne pense pas que la doc du capteur vous interesse, il se compote comme n’importe quel capteur fonctionnant en 0-10V!

Capteur eau.png

Mastaahh: ... Je ne pense pas que la doc du capteur vous interesse, il se compote comme n'importe quel capteur fonctionnant en 0-10V!

justement si Tu a intégré qu'un arduino seul ne peut pas acquerir un signal 0/10V ? :grin: