Pages: 1 [2] 3 4 ... 6   Go Down
Author Topic: domotique arduino : 8 relais + 3 DS18B20 + email + téléinfo + NTP + delesteur  (Read 14467 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Faraday Member
**
Karma: 19
Posts: 4229
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je viens de tester la bonne réception sous serial de la trame de téléinfo sur un 2560. Tout fonctionne normalement.

 Puis j'ai essayé mon code complet avec DS18B20 et téléinfo mais pas de lecture de trame. J'ai refait le test sans la lecture de la T°C mais pareil.

PS : le sketch utilisé est celui mis en ligne le 28.12 (le dernier).

 Ne faudrait il pas lui laisser un délais pour la collecte de l'info ou pas assez de mem. pour le Mega ?
bonsoir
je n'arrive pas à voir où dans le code une trame teleinfo complète est acquise et validée ?
vous pouvez mettre le code simple de lecture sous serial ?
Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4229
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Vous pensez quoi de celui ci joint en test ?

 des suggestions  smiley-neutral
Bonjour
à ce stade il faut faire un point d’étape !
je ne peux pas t'aider sur la teleinfo, je n'en dispose pas, je ne peux pas non plus tester avec un méga 2560 pour la même raison .
mais :
A tu avec le sketch test déjà vérifié que l'arduino 2560 recevait bien et recopiait ce qui sort en continu de la teleinfo vers le serial monitor?
en plus clair :
1200 teleinfo ----> mega ----> 115200 serial monitor ?
l'entrée de teleinfo est cablée où (quel pin) sur la mega ?
Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4229
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

D'après le premier test, l'ensemble semble fonctionner comme il le faut grâce au codeur d'origine : stantor : merci.

 Je le mettrai en ligne à la fin du test sur quelques jours, sur un nouveau post, de préférence pour tout expliquer en détail.

 Je vais voir aussi si je peux y placer un lcd 44780 que je placerai sur le boitier avec si possible l'heure, le t°C et la conso inst. Ainsi, je pourrai voir de suite si tout fonctionne.

 merci à ceux qui m'ont aidé et ceux qui ont suivi ce post. Enfin, si tout se passe bien  smiley


bon, alors ça avance bien !  smiley-mr-green
pour mettre un lcd 44780 sans trop consommer de pins sur l'arduino, la solution à base de 74 595 est intéressante
voir ce topic
http://arduino.cc/forum/index.php/topic,84892.0.html
Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4229
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

C'est intéressant son montage.
  Par contre, sur un Mega il y a de la place donc je pense même le faire fonctionner en 8bits pour "gagner" en "vitesse".

  Il me faut rajouter des pins sur le 5v et gnd de mon shield téléinfo pour récupérer cela pour le DS18B20.

 Je vais essayer aussi avec un optocoupleur :
http://www.touteladomotique.com/forum/viewtopic.php?f=30&t=1513&sid=5a743681467e39325a35fda277855755&start=576

 Par contre, je ne sais pas si c'est possible d'afficher sur le lcd  l'heure en temps réel depuis un serveur ntp ?

pour le lcd travailler en mode 4 bits (majorités des montages) est bien suffisant

pour le ntp avec un shield ethernet voir ça
http://arduino.cc/en/Tutorial/UdpNtpClient
mais AMHA ce n'est pas interessant de l'utiliser en temps réel tout le temps  smiley-mr-green
l’idéal est soit d'avoir une rtc sur l'arduino (ds1307 ou autre RTC)  et de faire une synchro par ntp toutes les X heures (pour ton appli 4 fois/24h c'est déjà luxe.
ou solution plus... cheap : determiner le temps de boucle pour en déduire une "pseudo" seconde et faire une synchro NTP un peu plus souvent.
Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4229
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Est il possible de pouvoir se servir dans un même sketch aussi bien d'un W5100 que d'un ENC28J60 (pas en même temps) pour être un peu plus multi compatible ?
A mon avis, et même en supposant qu'il n'y ai pas déjà de probleme de compatibilité de pinout, c'est surement une usine à gaz qui vierar vite au  "nid à embrouilles"  smiley-mr-green
Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4229
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


  Encore une idée avant de finir à 100% : pourrait on declencher un allumage ou une extinction à des moments donnés  smiley-roll-sweat
tout est possible
table d’événements en autonome sur l'arduino, avec RTC embarquée ?
table d’événements distante, avec interrogation "périodique" ?



Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

Je cherche la valeur HEX de ° (pour l'afficheur 44780).
 J'ai déjà essayé DF, FD, B0 et 0B et quelques autres sans succès  smiley-cry
-> http://arduino.cc/forum/index.php/topic,87531.0.html smiley-wink
« Last Edit: January 17, 2012, 04:20:30 pm by skywodd » Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4229
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

cela n'interesse personne  smiley-cry
si si bluemax
mais
refais une synthese de ton projet
ce qui est fait
ce qui te reste à faire

parce que avec ce genre de réponses :


Quote
projet : Petit ajout de temps pour les touches relais
...
 J'en ai créé un qui fonctionne
ce n'est pas simple de savoir (surtout pour ceux qui se brancherait sur le topic) si tu a un besoin où si tu a résolu ton besoin.

les forum sont par définition asynchrone  smiley-cool

Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4229
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, je vais refaire un post si le modo me donne son accord (il peut même effacer celui ci si il ne veut pas de doublon)  smiley-wink

PS : C'est une fonction Timer que je voudrais intégrer

bonjour
AMHA pas la peine de refaire un autre post
simplement une reponse où tu fais un point d'etape et où expose
ce que tu veux
ce que tu a déjà fait
ce qu'il te reste à faire

pour un timer clock embarqué, sans hésiter je me tournerais vers une horloge emabarquée , le DS1307 est le plus repandu et le plus facile
à integrer.

Skywodd à fait récemment un tuto sur son blog
http://skyduino.wordpress.com/2012/01/07/tutoriel-arduino-horloge-rtc-ds1307-librairie-liquidcrystal/

 et Jean-françois un topic sur la mise à l'heure d'un ds1307 par synchro "internet"
http://arduino.cc/forum/index.php/topic,77849.0.html


Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 174
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je ferai donc un nouveau post lorsque j'aurais complétement fini même si cela devient rébarbatif de lire + de 4 pages.

 Donc j'ai (nous) fini :
- gestion de 8 relais (on/off) ou fil pilote
- lecture de T°C d'un DS18B20
- lecture de la téléinfo du compteur EDF
- affichage de l'heure avec mise à l'heure sur serveur NTP
- affichage sur LCD HD44780 2*16 (attente de mes 4*20) de :
   * date + heure
   * T°C + conso edf instantanée (PAPP)
- lecture des digits de l'arduino (je m'en sers pour vérifier l'état de mes "boutons")
- mis en remarque :
   * lecture des ana. + lecture résistance ctn + consigne de puissance

 Le tout peut être accessible sur un smartphone.

Souhaite rajouter :
- un timer sur 3 touches. Je ne sais pas encore comment le présenter soit :
   * par des valeurs déjà défini (on / off / 15mn / 1 h / 2h)
   * en prenant en compte l'heure de début et de fin.
  et ce que l'arduino peut faire (si il existe des exemples comme : http://declanbright.awardspace.info/arduino-home-automation-heating-lighting.htm )

- peut-être rajouter un DS18B20 pour une valeur extérieure.
  Le DS18B20 peut travailler de 9 bits à 12bits. Qu'elles sont les différences ? la vitesse déjà est supérieure mais dans la valeur de T°C ?

- j'attends une idée auquel je n'ai pas pensé pour finir.

merci à ceux qui lisent et surtout à ceux qui répondent

 

« Last Edit: January 23, 2012, 10:27:21 am by bluemax2001 » Logged

0
Offline Offline
God Member
*****
Karma: 0
Posts: 798
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yep!

Quote
en prenant en compte l'heure de début et de fin.

Une piste, c'est cette méthode que j'utilise avec python, la donnée 'horloge' est récuperée probablement sous le format epoch (unix), c'est à dire en secondes depuis la date x. Elle contient donc 9 chiffres (les secondes), un point, puis les millisecondes. Ex : 1290012005.985

http://fr.wikipedia.org/wiki/Epoch

La librairie Time travaille avec ce format, l'horloge dépendra du serveur et réclamera peut-être un ajustement (GMT+1, etc.).
Donc, côté arduino, c'est plus ou moins implanté dans le sketch.
Code:
pctime = (10 * pctime) + (int(TRAME[1][i]) - '0') ;

&& dans Time.cpp :

Code:
// seconds from 1970 till 1 jan 00:00:00 of the given year
  seconds= tm.Year*(SECS_PER_DAY * 365);

Il suffira de comparer tes dates à now() smiley-wink
Code:
time_t timeAbsence, timeVacances;
...
if (timeVacances <= now())

Côté script php ou java, il suffirait de récuperer l'horloge actuelle, d'y ajouter des heures ou des minutes (en secondes off-course), ou, un système de calendrier qui enverrait les 9 premiers chiffres à l'arduino directement.

http://php.net/manual/en/function.strtotime.php

Un exemple en python, j'envoie la date et heure de retour des vacances :
Code:
# valeur retournée par le calendrier :
# value = "PyQt4.QtCore.QDateTime(2011, 9, 11, 12, 15)" MEMO : time.mktime(tuple de 9 chiffres)
...
# traitement pour récup les chiffres.
...
# remplissage du tableau :
self.messageParam("vac", "%s" %(str(time.mktime((int(liste[0]), int(liste[1]), int(liste[2]), int(liste[3]), int(liste[4]), 0, 0, 0, 0)))[0:10]))

Python : librairie Time, time.mktime --> convertir en epoch

Quote
Le DS18B20 peut travailler de 9 bits à 12bits.

Cela ne change pas grand chose à la précision du capteur, par contre, le pas des °C en +/- est d'autant plus précis que le nombre de bits augmente. Cela semble contradictoire mais en fait tout dépend en fait de la réactivité que tu désires. A 12bits, le pas est d'environ 0.046 °C, je n'ai plus les valeurs pour les autres résolutions (vf datasheet), mais tu peux avoir un pas de 0.1°C par exemple pour 10bits. Le système semblera moins réactif à 10bits.

@+

Zoroastre.

PS : Je n'ai pas suivi le fil de cette discution, donc je suppose que tu utilises la librairies Time et le php côté serveur.
« Last Edit: January 21, 2012, 09:06:37 am by zoroastre » Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

0
Offline Offline
God Member
*****
Karma: 0
Posts: 798
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yep!

Quote
Pour le DS18B20, sous 12bits il faut mettre maxi 750ms contre 98ms

Tout dépend si tu apprehendes ta sonde via le 1-wire uniquement ou avec la librairie DallasTemperature.
Dans le premier cas, tu devras tenir compte du delais, dans le second, il est déjà inclus dans la librairie.

DallasTemperature.cpp :
Code:
switch (conversionDelay)
  {
    case TEMP_9_BIT:
      delay(94);
      break;
    case TEMP_10_BIT:
      delay(188);
      break;
    case TEMP_11_BIT:
      delay(375);
      break;
    case TEMP_12_BIT:
    default:
      delay(750);
      break;
  }

EDIT1 : Si tu prévois d'utiliser la librairie Dallas, une petite astuce consiste à détecter les erreurs de lecture.

Code:
if (temperature1 != DEVICE_DISCONNECTED) // DEVICE_DISCONNECTED = -127 (dixit DallasTemperature.h)
J'ai été temoin 1 seule fois d'une erreur de lecture. Ma DS18B20 est quand même à 5 mètres de l'arduino smiley-wink

@+

Zoroastre.
« Last Edit: January 21, 2012, 09:24:25 am by zoroastre » Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

0
Offline Offline
God Member
*****
Karma: 0
Posts: 798
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yep!

Mon afficheur est basé sur un Epson S1D13700 320x240.

Côté code, j'ai crée une classe pour génerer mes objets (textes, boutons, menus, etc) :

Code:
IHM_temp1.text = update_temp1(); IHM_temp1.draw();

Je mets à jour la température avec update_temp1 :

Code:
char* update_temp1() {
  char ibuff1[6] = { '\0' };
  static char obuff1[20] = { '\0' };                                       // static = conserver en memoire, non detruite a la fin de la fonction.
  dtostrf(temperature1,5,2,ibuff1);
  snprintf(obuff1, 20, "T: %s", ibuff1);
  return obuff1;
}

Je ne sais pas si çà peut t'aider.

EDIT1 :
Quote
- char * dtostrf(double val, signed char width, unsigned char prec, char * s) // convert double to string.
- int sprintf(char * str, const char * format, ...)                           // write formatted data to string.

EDIT2 :
Quote
moi il me marque 0°C puis à -1°C il marque -1920.13
Comment as-tu déclaré ta variable, char, int, float, long ???

@+

Zoroastre.
« Last Edit: January 21, 2012, 11:51:06 am by zoroastre » Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

0
Offline Offline
God Member
*****
Karma: 0
Posts: 798
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yep!

Cool  smiley-cool

Il était où le problème ???

@+

Zoroastre.
Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4229
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pour mettre une seconde sonde de t°C DS18B20, quelqu'un a un sketch avec au moins deux qui fonctionne ? (autre pin ou en 1-wire)


bonjour
sur le même pinout (le 1W est fait pour ça) 2 solutions pour les  ID :
- soit une phase découverte des ID 1W présentes au début du sketch ID0,ID1,ID2...IDx
- soit  ID déjà connues prealablement et injection en dur

ensuite c'est un simple cyclage  ID1.2.3....IDx en respectant les timings dus à la résolution choisie
 
Logged

Pages: 1 [2] 3 4 ... 6   Go Up
Jump to: