Go Down

Topic: domotique arduino : 8 relais + 3 DS18B20 + email + téléinfo + NTP + delesteur (Read 18907 times) previous topic - next topic

bluemax2001

Bjr,

Je reviens sur un ancien projet avec un changement de matos.
Là, je suis passé sous Mega 2560 avec W5100.
J'ai trouvé un super sketch pour commander depuis le web (même sur smarthphone) 8 relais, vérifier les entrées analogiques et digit.
Il y a aussi une lecture de la T°C par résistance ctn.

Mon but, c'est dans un premier temps de remplacer la lecture du ctn par une lecture par DS18B20. J'ai essayé mais il me compile bien mon "nouveau" sktech (transformé) il l'upload aussi mais après impossible de me connecter. J'ai du oublier une ligne ou il me manque un reset dans le loop ?

Précision : avant mon changement, il se connectait parfaitement. J'ai un peu galéré pour arriver enfin à compiler en 022 sans erreur (visible pour le logiciel).


 Dans un second temps (une fois 1ere solution trouvé), je vais essayer de changer les cases des interrogations analo. par une lecture de la télé info.

Merci pour tout aide.

Artouste


J'ai essayé plusieurs modèles mais il y a tjrs des erreurs.

Je crois que je vais rester comme cela ou revoir par la ctn !!!

Pas d'idée ?

bonjour
Vous avez testé le DS18B20 seul ?
essayez ce code là :
http://cjoint.com/11dc/ALnswoEZK7Z_DS18B20.pde
Vous n'avez pas oublié la R de 4.7K  entre +5V et DQ ?
j'ai regardé rapidement votre sketch et je ne vois pas bien où se fait la demande de T° au 18B20.
vous pouvez mettre en ligne le sketch non modifié , celui qui fonctionne avec la CTN ?

ça doit renvoyer quelque chose comme ça sur le serial :
**** Detection du capteur ****
1 capteur 1-wire present avec code adresse 64 bits : 28 09 53 66 00 00 00 CA
Type du capteur present : Capteur temperature DS18B20.
Verification du code CRC de l'adresse 64 bits de ce capteur : VALIDE !
----- fin de la recherche du capteur ----

**** Acquisition d'une mesure de la temperature ****

---- lecture de la RAM du capteur ----
Octet 0 (Resultat poids faible)=1000110
Octet 1 (Resultat poids fort)=1
Octet 2 (Alarme haute)=1001011
Octet 3 (Alarme basse)=1000110
Octet 4 (Registre de configuration)=1111111
Octet 5 (Reserve)=11111111
Octet 6 (Reserve)=1010
Octet 7 (Reserve)=10000
Octet 8 (code CRC mesure)=10000101

---- test de controle de validite des donnees recues ----
Verification du code CRC de ce resultat : VALIDE !

---- calcul de la temperature ----
Mesure brute =326
Mesure Finale =20.37 Degres Celsius.





bluemax2001

#2
Dec 13, 2011, 07:47 pm Last Edit: Jan 18, 2013, 04:00 pm by bluemax2001 Reason: 1
Super, merci.

J'ai bien mis la r4k7 entre S et +5.

Je vais essayer ton sketch sur mon uno sur port série donc, rapidement. Mais est ce possible de l'utiliser sans le port série après adaptation vers le "mien" ?



stantor arduino web mega v11. Ce projet est incroyable et super intéressant à mon avis. En plus l'auteur a un super contact. Merci à lui au passage.

Artouste


Cela fonctionne :
code adresse : 28 93 03 B2 02 00 00 61
T°C : 22.62

bon c'est déjà une bonne nouvelle  :smiley-mr-green:
J'ai récupéré ce qui concerne "arduino" sur le site (gros travail  )
je regarderais ça demain pour voir où et comment substituer un DS18B20 à la CTN

Artouste


;)

PS : on peut rester sur la pin 10

bonjour
ci joint une injection de code 1Wire "à la hussarde"   :smiley-mr-green: (j'ai essayé de commenté proprement )
faite sur la base d'un uno , je n'ai pas de mega
pin 1W = digitale 4 (la 10 est utilisée par le module ETH)
attention j'ai changé l'adresse IP et le port
chez moi ça roule
http://cjoint.com/11dc/ALolnCACZqi_webuno1w.pde

Artouste


  Merci pour ton aide et ton travail.
Je vais essayer de le mettre sur le mega ou d'abord le tester comme cela puis l'inclure sur celui du mega.

Si j'ai bien vu, tu as ajouter les lignes 215 à 226 et 467 à 501.

je suis pressé de le tester dés que je rentre ... ;)

teste d'abord sur ton uno+ETH
Je ne regarde pas la numérotation mais ça doit être ça
declarations et traitement proprement dit du DS18B20
je n'ai pas touché à la section CTN et calcul (intéressant d'ailleurs)
Je remplace juste la valeur calculée pour la CTN par celle du DS18B20 juste avant affichage.
c'est pas beau, mais c'est fonctionnel au moins pour test  8)

Artouste


Mince, chez moi cela indique tjrs 0.00 aussi bien sur le mega que sur le uno (code serveur uno)

J'ai essayé de changer la ds18b20 ... pareil

J'ai regardé le code mais cela semblait bon.

Je vais regarder de nouveau ce soir.

PS : j'ai utilisé le même ds18B20 que ci dessus.

par acquis de conscience j'ai revérifié
chez moi pas de probleme

photos et hardcopy

1er cas
ds18B20 seul connecté
T° ambiante



2eme cas
DS18B20 tenu entre pouce et index
+5V sur A0 +3.3V sur A1 GND sur A2




Artouste

#7
Dec 15, 2011, 10:25 am Last Edit: Dec 15, 2011, 10:30 am by Artouste Reason: 1

Je viens d'essayer d'inclure ton code dans le sketch du mega (en pièce jointe).

Il me demande le code puis il affiche tout jusqu'à la lecture de la T°C où là il cherche, cherche,... et plante si on fait un rafraichir par ex.
Dans le doute d'une mauvaise manip, je l'ai mis en pièce jointe.

 J'ai pensé qu'il pouvait y avoir un problème sur ma librairy onwire. Où as tu pris la tienne pour avoir la même ?

 Ensuite, mets tu une l'adresse de ta DS18B20 ? (j'ai essayé sans succès)

 Tu utilises la version 022 du log arduino ?

 Sinon, pour bien vérifier mais avec les photos cela semble identique :
Signal sur S signal Pin10 de l'arduino (4 pour toi)
+5v sur V avec la résistance 4k7 qui va vers le signal
gnd vers G

    Je suis un peu bille si je n'y arrive pas  =(





bonjour
déjà a tu testé sur uno+eth ?
j'utilise la lib standard fournie
je suis en 022

je n'ai pas de mega, mais je pense peut être que ta pin 10 est conflictuelle , essaie avec une (d'autres) pin digitale
(voir peut être aussi si il n'y a pas un pullup parasite d'activé sur pin10)
l'affectation se fait là :
const int broche_OneWire=pinD04; //declaration constante de broche

l'adresse du ds18B20 est résolue par l'instruction :
capteur.search(adresse);


Artouste


J'avais déjà mis pinD04 dans le sketch mais je n'avais pas enregistré sous le log arduino.
Donc, j'ai changé ma librairy en prenant la 2.1 et le port (j'avais aussi mis N sous pull up du 10) et là : Super boulot et merci pour ton aide  :)

Penses tu qu'il serait possible aussi de changer le délais juste pour améliorer le temps de réaction bien que cela ne soit pas trop gênant ?


PS : je vais essayer maintenant de récupérer une ligne de ma télé info (consommation instantanée) pour l'inclure dans ce sketch. Là, cela sera plus dur car pour m'aider il faudra le "shield" qui va vers le compteur edf ou tout faire à l'aveugle !!!


Bon et bien voilà !
pour le délai , il est du au temps de conversion du ds18B20 sous 12 bits, le datasheet préconise au moins 750 ms
tu peu essayer de gagner un peu en passant
delay(1000);     // au moins 750 ms
à
delay(750);     // au moins 750 ms
et voir si il n'y a pas d'aberration de renvoyée,  800 est un bon compromis

et pour le PS "à chaque jour suffit sa peine"  :)

Artouste


Tu as raison pour le PS, en plus avec les vacances  :) et bonnes fêtes.

  J'avais demandé à celui qui a fait le codage principal si je pouvais mettre et transformer son travail. Il a accepté avec enthousiasme (il me semble) pour son projet.

Il m'a donné une idée que malheureusement je ne sais pas faire. C'est de mettre un compteur à 500 par ex pour que la recherche de la T°C ne soit pas faite à chaque cycle.
Est ce que cela te parle ? une idée ... 

Bonjour
Je n'ai pas regardé la structure du programme, pour aller au plus court et  à la hussarde j'ai collé la verrue juste derrière la mesure ctn.
l'acquisition ds18B20 est donc faite à chaque fois que le calcul CTN est effectué.
Je regarderais plus tard si c'est simple de mettre un compteur de passage avant de faire cette acquisition.

bluemax2001

Stantor (le créateur du premier code) m'a envoyé son aide pour inclure la téléinfo. Je ne peux pas le tester avant quelques jours donc autant attendre pour le poster. Sauf si quelqu'un le peut le tester de suite ...
merci pour son aide.
  Par contre, on ne mettra que la conso instantanée en W (PAPP) pour l'instant.

  Est il possible d'inclure une condition pour par exemple mettre une couleur verte sur la T°C si supérieur à 5°C et rouge si inférieur ?

Voilà, pour le tableau Digit, j'ai mis la lecture du port correspondant aux lettres On/Off juste pour être certain d'être bien sur On ou Off. La lecture de la téléinfo me permet de vérifier aussi le bon fonctionnement tout en ne dépassant pas la puissance dispo du compteur EDF.en lisant le PAPP et en arrêtant une zone par ex.

Je dispose d'un delesteur, mais on pourrait imaginer de ne pas dépasser une puissance

bluemax2001

#12
Dec 25, 2011, 11:47 am Last Edit: Dec 25, 2011, 08:26 pm by bluemax2001 Reason: 1



Une fois le test réalisé (pour la téléinfo car là c'est des valeurs par défaut.
Le reste fonctionne soit lecture digit et analog, on/off sur 8 relais et une T°C sur DS18B20).  
Il me faudra revoir l'esthétique ...
Notamment :
- T°C, dans le titre, il me marque un A entre les deux (c'est quoi le bon code de T°C) ?
- Les touches de sélection on/off plus "jolie"
- j'ai un code pour un serveur ntp. Si quelqu'un pouvait m'aider à l'intégrer ? Cela serait sympa de le mettre juste sous le titre .
- mettre une couleur verte à +5°C et rouge en dessous
- autre ???

des idées me seraient utile ... thanks

Oliv4945

Essaie ° pour le °, liste des codes

Pour le téléinfo, est-ce que tu reçois des caractères sur la liaison série ? Essaie un printf juste après
Code: [Select]

// get incoming byte:
    inByte = Serial1.read();
   
    Serial.print( inByte );

Artouste


Merci, entre temps j'avais trouvé : http://www.w3schools.com/tags/ref_entities.asp

Je vais essayer de rajouter la ligne. Le plus difficile c'est d'aller le tester directement sur le compteur edf ext ...

Je me demandais si il ne serait pas mieux de mettre la ligne de téléinfo avant la lecture de la t°C. Comme il y a cette temporisation pour permettre la lecture de la DS18B20, n'y a t il pas là une perte de la trame edf ?

bonjour
je ne connais pas la teleinfo
mais j'ai cru comprendre qu'il s'agit de "pissage" continu = le "compteur" envoie en continu de la data sans se préoccuper si c'est lu ou pas ? 
Si c'est bien le cas, alors que ce soit fait avant acq T° (18B20)  ou après n'est pas là important, il suffit simplement d'attendre de lire une trame complète et intègre.

Un peu comme dans le décodage de trame GPS (sentences NMEA) , si tu prend la trame en cours d'emission = toutes les data non acquises , alors tu attend la prochaine trame complète et intègre pour faire ensuite "avec"

Go Up