Aidez nous ! Projet - Gestion domotique

zoroastre:

osaka:
Ca me fait pensé qu'il faudrait testé ma solution sans la gestion du crc voir si ça en vaut la peine ?

Je m'attendais à ce que le crc soit plus lourd en fait. J'avais regardé les differents algo de contrôle et certain me semblait fort alambiqué. Il faut effectivement voir ce qu'il apporte réellement.

Je m'attendais également à une certaine lourdeur, jusqu'a ce que je tombe lors d'une de mes explorations sur le crc16.h de la lib avr.

static __inline__ uint16_t
_crc16_update(uint16_t __crc, uint8_t __data)
{
	uint8_t __tmp;
	uint16_t __ret;

	__asm__ __volatile__ (
		"eor %A0,%2" "\n\t"
		"mov %1,%A0" "\n\t"
		"swap %1" "\n\t"
		"eor %1,%A0" "\n\t"
		"mov __tmp_reg__,%1" "\n\t"
		"lsr %1" "\n\t"
		"lsr %1" "\n\t"
		"eor %1,__tmp_reg__" "\n\t"
		"mov __tmp_reg__,%1" "\n\t"
		"lsr %1" "\n\t"
		"eor %1,__tmp_reg__" "\n\t"
		"andi %1,0x07" "\n\t"
		"mov __tmp_reg__,%A0" "\n\t"
		"mov %A0,%B0" "\n\t"
		"lsr %1" "\n\t"
		"ror __tmp_reg__" "\n\t"
		"ror %1" "\n\t"
		"mov %B0,__tmp_reg__" "\n\t"
		"eor %A0,%1" "\n\t"
		"lsr __tmp_reg__" "\n\t"
		"ror %1" "\n\t"
		"eor %B0,__tmp_reg__" "\n\t"
		"eor %A0,%1"
		: "=r" (__ret), "=d" (__tmp)
		: "r" (__data), "0" (__crc)
		: "r0"
	);
	return __ret;
}

Ca m'étonne d'ailleurs que ce code ne soit pas plus utilisé, pour le 1wire par exemple ... alors que ...

_crc_ibutton_update(uint8_t __crc, uint8_t __data)

zoroastre:
Pour le proto, la mise en place des composants ne sera pas trop compliqué, j'ai surtout des problèmes d'esthétique en fait, je travaille sur une seule couche (compo dips uniquement) et j'essaie d'eviter autant que possible les straps.
Je suis déjà à mon second shema, le premier sur un seul plan, le second sur deux (principe du shield).

Pour le module I/O (8/8) je partais sur le principe du 2 couche (shield mais avec mini qui vient ce "broché" par dessus) vu ça taille (30X17) , sinon pour les autre où le mini ne serait pas adapté ça sera comme toi simple couche et dip ,pas question de uno, mega, ... ou la place est loin d'être optimisé à l'utilisation qu'on en ferais (je suppose que c'est également ton but, d'ailleurs il y a des chance que je te copie :grin:) .

zoroastre:
Je travaille depuis peu avec les registres, cette méthode me parle plus en fait, je suis technicien de maintenance et l'automatisme est mon dada. J'ai par contre tout à apprendre du c++, mais je voyage depuis quelques années d'un language à un autre au grés de mes besoins.

En effet la logique semble plus intuitive pour quelqu'un ayant l'habitude de l'automatisme, l'electropneumatique, hydrau, etc, industrielle.
Mes premières études (secondaire = college/lycees) étaient dans l'électromécanique (tout du moin avant que je me fasse mettre à la porte de l'école :.), puis la construction mécanique et métallique et mon meilleur amis qui étais avec moi au cours est technicien de maintenance maintenant (kraft be).
Finalement je regrette d'avoir choisie la voie de l'informatique (dev) ...
Enfin cette voie je l'ai pas vraiment choisie , c'est suite à une reconversion (graduat= bac+3) après une accident de tuture qui ma foutu les bras en l'air.
Maintenant j'hésite à faire une "petite" formation d'automaticien ou électromécanicien pour quitté le monde des fauteuils de bureau qui ne veulent pas de moi de toute façons. :grin:
Pour l'instant je me réfugie sur les µc et la domo des fourmis.

Levaillant:
vous êtes de grands malades!

C'est pas le début de la fin, c'est la fin du commencement (vers la follie). :grin:

Je suis également vos échanges que je trouve très intéressants, mais pour le moment mes préoccupations sont bien plus basiques.

J’espère seulement être en mesure de suivre et contribuer à vos échanges un de ces jours (même lointain).

L’idée d’utiliser plusieurs processeurs pour diverses tâches, peut-être très intéressante, et peut apporter un niveau de sécurité supplémentaire, car un processeur peut de temps en temps surveiller l’autre et réagir en cas de dysfonctionnement.

Yop bribri,

Brisebee:
J’espère seulement être en mesure de suivre et contribuer à vos échanges un de ces jours (même lointain).

Be tu contribues déjà pas mal, rien qu'avec ton doc très détaillés sur ton cahier des charges et schématisation que j'ai relus plusieurs fois (dans mon fauteuil au coin du feu avec un cigare et un vieux whisky XD) car je le trouve intéressant.
Il y a des chose que je ne connais pas,schémas, etc.
:wink:

J'ai câblé au propre et testé la plus grande partie de la carte unité de gestion UC.
Elle comporte :

  • La carte Arduino Mega 2560
  • La carte Ethenet Shield W5100
  • La petite carte RTC-DS 1307
  • Un afficheur LCD 4x16 caractères
  • La connectique pour raccorder la carte d’interfaçage et les interfaces des unités de gestion (chauffage et arrosage)
  • Un watchdog (pas encore câblé au propre)

Tous les tests de fonctionnement du matériel sont OK.

J’ai rajouté un watchdog matériel qui se déclenche et remet à zéro la carte Arduino Mega 2560 au bout d’une seconde environ, s’il n’est pas lui-même remis à zéro par le programme.

Je ne sais pas si c’est bien utile, je n’ai pas encore regardé de près le watchdog interne du microcontrôleur (qui doit avoir la même fonction) mais je me suis dit que ce sera une sécurité supplémentaire (et comme j’ai de la place sur la carte et que cela met en œuvre des composants standards que j’avais en stock !)

Que pensez-vous de cette option ?

Je vous joins le schéma de ma carte unité de gestion UC.

J’ai baptisé mon système DOMOWEB 2012

J’attends vos critiques.

Unité de gestion carte UC.pdf (59.8 KB)

Yep!

First, tu es sur de ne pas avoir besoin de pwm, parce que là tu les a tous mangé XD
L'afficheur peut être piloté avec un shift register ??? (tu ne gagnerais pas grand chose, c'est une question pour la forme)

Le 4060 est bienvenu, en effet le watchdog interne se contente de faire uniquement un reset software, il reprend au setup() si il ne reçoit pas le signal life à temps.
Un watchdog hardware te permettra un reboot complet de la carte en cas de défaillance, c'est une bien meilleur option et tout le monde apportera son crédit à cette solution :wink:

(En aparté, Il faut juste faire gaffe à certain péripherique qui ont une option reset propre, mon afficheur tactile par exemple freeze si je lance un reset de l'arduino, un second reset et tout est ok...il faut être prudent avec le timing de certain peripherique.)

EDIT 1 : J'envisage également un watchdog hardware à base de 555.
Je ne connais pas trop le 4060, alors avantages/inconvénients, gestion arduino ???

@+

Zoroastre.

zoroastre:

zoroastre:
tu es sur de ne pas avoir besoin de pwm, parce que là tu les a tous mangé

Non à priori je n'en ai pas besoin => j'en ai gardé une (la 9).

De toute manière j'ai fait mon câblage en wrapping, je pourrais donc modifier si je suis coincé.

Je vais avoir besoin de pas mal d'entrées sorties digitales, car j'ai décidé de reboucler les sorties (signaux directement prélévé sur les actionneurs et adaptés donc 230 VAC en 5 VDC et 24 VAC en 5 VDC) pour pouvoir contrôler l'état des actionneurs même en mode manuel.

zoroastre:
Un watchdog hardware te permettra un reboot complet de la carte en cas de défaillance, c'est une bien meilleur option et tout le monde apportera son crédit à cette solution :wink:

Cela conforte mon idée, je vais donc le câbler au propre.

Merci
@+

Yep!

Je vais avoir besoin de pas mal d'entrées sorties digitales

Si tu as besoin de pas mal de sorties digitales, les registres à décalage sont interessants, le 74HC595 (le plus documenté) ou les TPIC595 (TPIC6B595, etc) sont des chip série vers parallèle/série.
Uniquement 3 sorties arduino sont nécesaires pour piloter ces composants (8 sorties) par communication SPI, tu peux, qui plus est, chainer les chip les uns derrière les autres jusqu'à "je ne sais plus combien :grin: ".

Tu réduis ainsi ton nombre de sortie digital tout en gagnant en nombre d'entré :wink:

Le 74HC595 tolère max 70mA, (1x25 + 7x35 mA) par sortie.
Le TPIC6B596 tolère max 0.5A/50v, 150 mA par sortie (au nombre de 8). Une option interessante pour piloter de nombreux relais par exemple.
Le TPIC6595 tolère max 1.5A/45v, 250 mA par sortie.

Pour réduire le nombre d'entrée, je n'ai pas de solution qui me vienne en tête à par les ADC, CD4021...dans ce cas là, il faut être à l'ecoute des données entrantes, ce peut être interessant dans certain type de montage/programme...

@+

Zoroastre.

Merci zoroastre pour ces infos.

J'ai prévu de mettre en oeuvre la configuration décrite dans le fichier joint : (je n'arrive pas à mettre des images directement dans le post)

Ainsi j'étends le nombre d'E/S avec des PCF 8574 (I2C I/O expander) ce qui me permet de me "rapprocher", en simplifiant le câblage des liaisons avec mes unités de commande :

  • l'unité de commande arrosage ( 10 E, 10 S) se trouve à environ 50cm de mon unité de gestion;
  • l'unité de commande chauffage 5 zones ( 5 E, 5 S) se trouve à environ 1m de mon unité de gestion.

J'ai lu par ci, par là, que le bus I2C permettait de créer sans problème des liaisons jusqu'à quelques mètres.

Je vais câbler cela dans les prochains jours et faire des essais en ce sens.

Je vous tiendrai au courant.

Si vous avez des expériences et/ou des infos sur le sujet n'hésitez pas à m'en faire part pour que je puisse en tenir compte.

Principe unité de gestion.bmp (727 KB)

Yop Bribri,
C'est une véritable machine de guerre que tu nous fais là. :grin:
Sur l'utilité du watchdog pour moi il est surtout justifié dans le cas de code à risque et surtout au niveau des boucles que je sécurise via délais maximum d’exécution par exemple, mais au temps que possible j'évite d'en avoir dans mon code (j'utilise le fait que loop soit déjà bouclé en permanence).
Tiens sur le fait que Bribri n'utilise pas le pwm me fait pensé qu'on peux désactivé pas mal de fonctionnalité de l'avr, faudrait que je reregarde (Power Management and Sleep Modes) une fois à ça vu que pour mon module I/O par exemple il y a pas mal de chose dont je n'ai pas besoin, pwm, timer, i2c, ...

Bonjour,

Bravo pour ton projet, cela m’intéresse, je commence à me documenter pour faire à peu près la même chose, dans un premier temps surtout pour gérer mes chauffages électrique.
Je débute, je vais peut-être poser des questions bête...

As-tu finis et testé ton module 6 ordres ? Il fonctionne bien ? Il te revient à combien ? il tient dans l'emplacement cassette du chauffage ?

Sinon, pour un simple module 2 ordres (qui permettrait déjà le Normal / Confort), As-tu réfléchi/testé la solution de prendre un interrupteur commercial RF 220v/433mhz, comme décrit dans le projet

(Il n'y a pas de fils pilote entre mes différents chauffages, il me faudra un module par chauffage)

Yep!

J'ai lu par ci, par là, que le bus I2C permettait de créer sans problème des liaisons jusqu'à quelques mètres.

A la base, l'i2c est prévu pour quelques dizaines de centimètre.
Il est effectivement possible d'aller au delà en utilisant des répetiteurs, mais faut pas espérer aller au delà de 3 mètres.
Déjà, 1 mètre je trouve que cela fait beaucoup !!!

Il faut voir si ton 8574 fera un tampon correcte.

@+

Zoroastre.

cedric2:
Bravo pour ton projet, cela m’intéresse,

Merci, n'hésite pas à poser des questions. Nous sommes plusieurs sur ce forum à travailler dans le même esprit, sur des projets similaires.

cedric2:
As-tu finis et testé ton module 6 ordres ? Il fonctionne bien ? Il te revient à combien ? il tient dans l'emplacement cassette du chauffage ?

Non je n'ai pas testé ce module, je n'ai pas encore décidé si je vaiment mettre en oeuvre les 6 ordres.
Je crois que Skuzmitoo l'a simulé et peut-être même testé en vrai, tu trouveras des infos à ce sujet dans ce sujet vers les pages 9 ou 10, pour ce qui concerne le coût il suffit de voir sur un site comme sélectronic, conrad ou autre mais cela ne va pas chercher bien loin, le plus cher et aussi le plus encombrant sera le transfo.

cedric2:
As-tu réfléchi/testé la solution de prendre un interrupteur commercial RF 220v/433mhz

Non, je n'utilise pas de liason RF, mais il me semble que d'autres ont publié à ce sujet.

zoroastre:
A la base, l'i2c est prévu pour quelques dizaines de centimètre.
Il est effectivement possible d'aller au delà en utilisant des répetiteurs, mais faut pas espérer aller au delà de 3 mètres.
Déjà, 1 mètre je trouve que cela fait beaucoup !!!

Merci pour ton avis.
Je vais faire des essais (peut-être ce weeck-end), en augmentant la longueur de la liaison et en tentant de simuler un milieu relativement perturbé.

@+

osaka:
C'est une véritable machine de guerre que tu nous fais là.

Je vais essayer de faire un sorte que le système soit le plus fiable possible, même si ce ne sera pas le plus économique => je ne compte pas en faire des séries : je vais en faire 2 un qui sera fonctionnel et un second pour faire des essais et qui servira pour dépannage en cas de panne.

Je joins un autre schéma de principe des laisons entre les différentes unités : gestion / interface / commande

(je n'ai toujours pas trouvé comment insérer directement une image dans le message)

@+

Yop yop,

Brisebee:
(je n'ai toujours pas trouvé comment insérer directement une image dans le message)

2 ème icone à partir de la gauche au dessus des smileys : [img ] url [/img ] (sans l'espace avant ']' )

osaka:
2 ème icone à partir de la gauche au dessus des smileys : [img ] url [/img ] (sans l'espace avant ']' )

Merci pour ta réponse

Ce qui signifie qu'il faut avant de poster, déposer l'image sur un autre site. Je pensai qu'il était possible de la déposer sur le forum (comme pour une pièce jointe).

Connais-tu un site simple et pratique pour déposer les images, sans être noyé de spam et messages publicitaires ?

Brisebee:

osaka:
2 ème icone à partir de la gauche au dessus des smileys : [img ] url [/img ] (sans l'espace avant ']' )

Merci pour ta réponse

Ce qui signifie qu'il faut avant de poster, déposer l'image sur un autre site. Je pensai qu'il était possible de la déposer sur le forum (comme pour une pièce jointe).

Connais-tu un site simple et pratique pour déposer les images, sans être noyé de spam et messages publicitaires ?

Vi il te faut héberger tes images, moi ici j'utilise le petit espace que me fournit mon provider avec mon abonnement adsl (normalement ils fournissent tous un petit espace ?).
Sinon il y a http://imageshack.us/ .

:wink:

Merci osaka

Bon je vais voir, c'est peut-être aussi simple de les mettre en pièce jointe.

Je vais arrêter de polluer ce forum avec cette question.

@+

Brisebee:
Non je n'ai pas testé ce module, je n'ai pas encore décidé si je vaiment mettre en oeuvre les 6 ordres.
Je crois que Skuzmitoo l'a simulé et peut-être même testé en vrai, tu trouveras des infos à ce sujet dans ce sujet vers les pages 9 ou 10, pour ce qui concerne le coût il suffit de voir sur un site comme sélectronic, conrad ou autre mais cela ne va pas chercher bien loin, le plus cher et aussi le plus encombrant sera le transfo.

Merci pour les infos, je posais la question du cout si tu avais déjà fait le truc en plusieurs exemplaire. Comme il m'en fait 14, cela peut vite chiffrer... C'est pour cela que je regarde les module de télécommande de prise RF (20 euros les 4) qui vont surement être moins chère, et plus fiable (je ne veux pas "jouer" avec le 220)
Je continue mes recherches et je vous tiendrais au courant.

L'idée de prendre un système RF existant, est certainement intéressante, surtout pour éviter de tirer des câbles. Il reste à voir la faisabilité en terme de portée des liaisons RF, très probablement que tes radiateurs sont dans des pièces différentes, il faut alors voir comment placer l’Arduino qui va commander les différents canaux des télécommandes. Peut-être en position centrale ?
Ce sera effectivement avec grand intérêt que je suivrai tes essais.
@+