Go Down

Topic: Suivi consommation eau et élec sur Serveur Arduino et enregistrement SD Card (Read 512 times) previous topic - next topic

ptitnitro62000

Ce projet s'articule sur 3 microcontrôleurs différents...
1 Arduino nano pour décoder les trames provenant du compteur EDF
1 Attiny 45, qui compte les impulsions envoyé par le capteur Itron cyble installé sur le compteur d'eau
1 Arduino Mega 2560 + shield Ethernet SD, pour le Serveur WEB et enregistrement.
Il y a également une horloge Tiny RTC et une Eeprom 24LC64
L'ensemble communique via un Bus I2C.

L'architecture Bus I2C:


Le montage:


Pourquoi 3 microcontrôleurs ?
1) Parce que les impulsion délivre par le capteur Itron cyble, je les capture via une Interruption matériel.
2) La longueur d'une trame EDF dure 1,6s ....
3) je voulais une page web qui s'anime en temps réel (rafraichi  en Ajax tout les 3 secondes)

La page principale:

----------------------------------------------------------------------------------------------------------

L'enregistrement sur carte SD se fait toute les minutes dans différents fichiers .csv aux formats suivants:

Pour l'électricité : Date heure, index HP index HC , intensité et puissance instantanée.
Exemple:            17/01/2016,09:51,53042868,44240620,18,4110

Pour l'eau :  Date heure, index
Exemple:  17/01/2016,09:51,572.34

(j'ai repris le même principe utilisé pour le Shield Téléinfo vendu sur le site cartelectronic.fr, comme cela on peut lire les fichiers csv avec leur logiciel "Consult Téléinfo" qui est plutôt bien foutu )

Le logiciel Consult Téléinfo:


Le rapatriement des fichiers .csv ce fait via une page web, donc pas besoin de retirer la carte sd...
La page pour la sélection du fichier csv:


Le contenu du fichier csv:

----------------------------------------------------------------------------------------------------------
Pour le suivi rapide au quotidien des consommations, j'ai intégré une EEPROM (24LC64) soit 8Ko.

les pages de cette EEPROM ont une taille de 32 octets ,

L'enregistrement sur page (de 32 octets) EEPROM est sur le format suivant:
4 octets Date/HeureCode
4 octets Index HP
4 octets index HP
4 octets Index Compteur Eau
16 octets Réservation futur (exemple: production photovoltaïque, température intérieur , température extérieur, compteur gaz .....)

Cela donne la possibilité de faire 256 enregistrement.
o si on fait toutes les minutes, 256 minutes : 4 H15 min (comme je l'ai déjà réalise)

o si on fait toutes les heures, 256 heures :  10 J 16H

La courbe EDF sur une durée de 4 H15 min:  


La courbe Eau sur une durée de 4 H15 min:


L'enregistrement sur L'EEPROM se fait en boucle; c'est grâce au  "Date/HeureCode" que l'on sait où démarre les courbes, de même si il y a panne de courant, on reprend pas à l'adresse 0x00 , mais le programme va rechercher  la "Date/HeureCode" la plus élevé et reprendre à la page suivante.
----------------------------------------------------------------------------------------------------------


Rédaction en cours....
Arduino uno R3 , Arduino Mega 2560, Arduino Nano V3, Shield Ethernet + Micro SD, Tiny RTC (ds1307+24c32) , stater kit de base et plein d'autres trucs sympa ;-)

ptitnitro62000

Dans le fichier ZIP:

-le code de l'Arduino nano pour décoder les trames provenant du compteur EDF (ver:1)
-le code de l'Attiny pour les impulsions provenant du capteur sur le compteur d'eau "Itron cyble" (ver:1)
-le code de l'Arduino Mega qui gère  l'ensemble (ver:26)
  
Arduino uno R3 , Arduino Mega 2560, Arduino Nano V3, Shield Ethernet + Micro SD, Tiny RTC (ds1307+24c32) , stater kit de base et plein d'autres trucs sympa ;-)

Pascal17740

tres beau boulot
mais bon de mon coté je ne suis pas encore arrive a ce niveau

Pascal17740

pourquoi une frequence si eleve de lecture de trame tele info ?
tu parle d'extraction de donnees csv depuis ta page web tu procede comment ?
merci.

ptitnitro62000

Quote
pourquoi une fréquence si élevé de lecture de trame tele info ?
Parce que je voulais une page web qui s'anime en temps réel avec une actualisation  de toutes les info tous les 2 secondes si et uniquement si on est sur cette page.  Si pas de client sur cette page, alors l'arduino mega interroge tous les 10 secondes.

Quote
tu parle d'extraction de donnees csv depuis ta page web tu procede comment ?
Après avoir fait une sélection type et date du fichier désire via un formulaire, Je fais simplement une lecture du fichier, je balance son contenu sur une page web.
Arduino uno R3 , Arduino Mega 2560, Arduino Nano V3, Shield Ethernet + Micro SD, Tiny RTC (ds1307+24c32) , stater kit de base et plein d'autres trucs sympa ;-)

Pascal17740

moi ce que je cherche a faire  c'est de telecharger depuis la page web les fichiers csv afin de les enregistre sur pc et pouvoir les exploités sur consulte
aurais tu une idee pour modifier ma page web la stocker sur la sd

Pascal17740

je voudrais aussi creer des zones de saisies pour rentrer des consignes haute et basse de temperatures sur ma page web

ptitnitro62000

Houla, tu en veux beaucoup pascal !!!

Depuis une autre page, telecharger directement les fichiers csv directement je sais pas faire mais afficher leurs contenus sur pas web, après tu sélectionne tout copier  et tu colle tout dans un fichier avec notepad.
Regarde ces 3 fonctions là dans le code "Mega-v26.ino":

HtmlHeaderBody3(client);
parseThangs3(HTTP_req);
HtmlReadCSV(client);

Idem pour tes  consignes haute/basse de température , une nouvelle page. "Reglages"

Mais il faudra stocker ta page principal sur carte SD sinon tu risque d'avoir un problème de mémoire dynamique.

J'ai fais le transfert de ma page index sur la carte SD.

Avant tranfert:
Le croquis utilise 67 468 octets (26%) de l'espace de stockage de programmes.
Les variables globales utilisent 6579 octets (80%) de mémoire dynamique.

Après tranfert:
Le croquis utilise 62 260 octets (24%) de l'espace de stockage de programmes.
Les variables globales utilisent 3 935 octets (48%) de mémoire dynamique.

Je respire de nouveau, mais je découvre encore des anomalies dans le fonctionnement.
Arduino uno R3 , Arduino Mega 2560, Arduino Nano V3, Shield Ethernet + Micro SD, Tiny RTC (ds1307+24c32) , stater kit de base et plein d'autres trucs sympa ;-)

Pascal17740

tu as repris du code fourni avec la carte de cartelec  mais je pense que tu aurais du utilser un peu plus les traitement des index tel quel  en faisant conso_actuel=index11-index1  avec les heures de bascule hp/ hc
j ai relu ton code et la j ai du mal  LOL


ptitnitro62000

Dans le fichier ZIP:

-le code de l'Arduino nano pour décoder les trames provenant du compteur EDF (ver:2)
-le code de l'Attiny pour les impulsions provenant du capteur sur le compteur d'eau "Itron cyble" (ver:1)
-le code de l'Arduino Mega qui gère  l'ensemble (ver:31)
-la page index.htm









Arduino uno R3 , Arduino Mega 2560, Arduino Nano V3, Shield Ethernet + Micro SD, Tiny RTC (ds1307+24c32) , stater kit de base et plein d'autres trucs sympa ;-)

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy