Pages: [1] 2   Go Down
Author Topic: Arduino Mega2560 : domotique et alarme  (Read 4623 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 94
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir,
J'étudie la mise en oeuvre d'un système alarme/domotique sur base Arduino.

Au départ, je pensais piloter l'ensemble de la maison via 1 Arduino Mega2560 et un bus I2C (capteurs DS1820, electrovannes, etc...). Du fait des risques d'instabilité (longueur du bus I2C) je pars maintenant sur :
- une carte Mega2560 par pièce (gestion capteurs et relais de la pièce).
- l'ensemble des Mega2560 connectées entre elles.
- une des cartes Mega2560 connectée à mon PC.
- paramétrage et monitoring via le PC, plus tard peut-être un clavier + LCD dans chaque pièce

Choix du réseau.
1) Ethernet
http://www.watterott.com/en/Arduino-Ethernet-Shield
33 € pour cet Arduino Ethernet-Shield
Carte compatible Mega2560
Utilisation de la librairie standard Ethernet

2)RS485
http://www.dfrobot.com/index.php?route=product/product&path=35_39&product_id=264
15€ environ
ou
http://www.futurlec.com/Mini_RS422.shtml
4€ pour cette mini board
Utilisation de la librairie standard serial

=> Est-il vrai que le bus RS485 se pilote via la librairie serial ?
=> Si oui, peut-on adresser chaque carte facilement ?
=> Quel est l'avantage de l'Ethernet vs RS485 en utilisation locale ?

Interface avec le PC
=> Via qu'elle interface puis-je connecter Arduino à mon PC ?
=> Quel langage utiliser pour créer un écran de visu / paramétrage sympa ?

Interruptions
Pour la partie alarme, j'ai tendance à vouloir traiter l'intrusion par interruption.
=> Est-ce possible avec le langage Arduino ?

D'avance merci pour vos retours.

PS : Bien sûr, toutes vos remarques et retours d'expériences sont les bienvenues !
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 94
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Up !...
Logged

Pays de la betise
Offline Offline
Sr. Member
****
Karma: 4
Posts: 419
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
=> Est-il vrai que le bus RS485 se pilote via la librairie serial ?

à priori oui. Un exemple: http://gdallaire.net/blog/?p=39

Quote
=> Si oui, peut-on adresser chaque carte facilement ?

j'imagine que oui ?

Quote
=> Quel est l'avantage de l'Ethernet vs RS485 en utilisation locale ?

mon avis:

RS485: c'est pas cher, les données à échanger ne doivent pas être importante, il y a qu'1 maitre et des esclaves (pour que 2 esclaves communique entre eux, c'est le maitre qui joue les intermédiaires), le bus oblige à faire passer un réseau en "série".

Ethernet: c'est plus cher, c'est plus flexible, plus ouvert, plus évolutif (cf. xPL/xAP pour la domotique), ça nécessite un routeur au delà de 2 devices sur le réseau (qui du coup sera en étoile), chaque arduino peut embarquer son propre webserver pour la config par exemple.

Pour ma part, j'ai fait le choix du réseau Ethernet. Pour 15€, tu peux trouver des shields ethernet à base de ENC28J60.

Quote
=> Via qu'elle interface puis-je connecter Arduino à mon PC ?
USB pour le programmer.

Quote
=> Quel langage utiliser pour créer un écran de visu / paramétrage sympa ?
ça dépend ce que tu veux faire en fait. Tu peux utiliser des pages web via un serveur php ou directement embarqué dans l'arduino, ou bien un logiciel plus orienté domotique (domogik par ex)...

Quote
Pour la partie alarme, j'ai tendance à vouloir traiter l'intrusion par interruption.
=> Est-ce possible avec le langage Arduino ?
oui, tout est possible avec arduino. Mais quel est l'intérêt ? tu n'as que quelques interruptions matériels disponibles.

Gromain
Logged

"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..."

projet domotique xPLDuino
IRC: freenode #xplduino

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 94
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

RS485 avec lib serial
OK. Il reste que je ne vois pas bien comment on définit l'ID de chaque carte, et comment on n'adresse que la carte correspondant à l'ID... Je vais continuer à chercher.

Ethernet vs RS485
Effectivement, au-delà de 2 cartes, il faut un hub ou un switch (pas un routeur). Aïe, je crains que mes gaines encastrées correspondent à une topologie série, donc RS485 obligatoire... Je revérifie, d'autant que j'ai déjà du câble torsadé 3 paires de passé ... Le coût serait plus élevé en Ethernet ici cause shield V2 obligatoire (seul Arduino Mega2560 compatible) mais je suis prêt à investir, y compris dans xPL.

Dialogue Arduino <> PC
Je parle hors programmation, pour le dialogue continu PC <> carte. Ne vaut-il pas mieux une une liaison RS232 (ou RS485) pour être bien "séparé" de la partie programmation via USB ? (Pas bien clair pour moi en fait).

Langage pour programmer l'interface.
Je veux pouvoir disposer de plusieurs formaulaires pour afficher :
- Statuts capteurs et électrovannes
- Températures et courbes (24h, 1 semaine...)
- Les plages de consigne
etc...
Je pourrais le faire en VB, mais je suppose qu'il y a ... mieux (nb : je suis débutant/intermédiaire en prog).

Gestion par interruption
Je me suis mal exprimé. Je voulais parler de l'interruption RTI qui permet de lancer une routine à intervalle régulier. C'est de cette manière que ma carte à 68HB912 scrutait le statut des entrées (domotique et alarme).

PS : super sympa ce forum  smiley-wink
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 94
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Vérification faite, je suis forcé d'oublier le mode Ethernet à cause d'un câblage série.

Si tu dis qu'en RS485 il faut 1 maitre et n esclaves, je ne vois pas comment implémenter ma fonction "alarme". En effet, en cas d'intrusion sur l'entrée d'une carte esclave, comment cette dernière pourra-t-elle remonter l'info vers la carte maitre ? Et si je demande à la carte maitre d'interroger régulièrement toutes les cartes esclave, je vais saturer le réseau.

Comment faire  :o
Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Avec l'Ethernet tu peux imposer le n[ch730]IP de chaque carte, il me semble que ça se trouve dans le setup.
« Last Edit: October 21, 2010, 03:36:35 pm by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Pays de la betise
Offline Offline
Sr. Member
****
Karma: 4
Posts: 419
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
RS485 avec lib serial
OK. Il reste que je ne vois pas bien comment on définit l'ID de chaque carte, et comment on n'adresse que la carte correspondant à l'ID... Je vais continuer à chercher.
pour moi, le maitre envoi d'abord une commande avec l'adresse de l'esclave qu'il veut joindre. Chaque esclave reçoit cette commande en même temps et se tait si l'adresse contenu dans la commande n'est pas la sienne. L'esclave concerné envoi un message de réponse.

Quote
Dialogue Arduino <> PC
Je parle hors programmation, pour le dialogue continu PC <> carte. Ne vaut-il pas mieux une une liaison RS232 (ou RS485) pour être bien "séparé" de la partie programmation via USB ? (Pas bien clair pour moi en fait).
c'est à toi de voir. Mais je ne pense pas que ce soit utile. Par l'USB il te faudra neutraliser le reset automatique. Par un liaison série, il faudra utiliser un adaptateur de niveau (MAX232)


Quote
Langage pour programmer l'interface.
Je veux pouvoir disposer de plusieurs formaulaires pour afficher :
- Statuts capteurs et électrovannes
- Températures et courbes (24h, 1 semaine...)
- Les plages de consigne
etc...
Je pourrais le faire en VB, mais je suppose qu'il y a ... mieux (nb : je suis débutant/intermédiaire en prog).
Hormis si tu veux tout faire toi-même (hardware/software) pour avoir un système domotique "kafifi", je te conseille vivement de t'intéresser au peu de standard de la domotique. Au début je pensais faire tout à ma sauce, puis je me suis vite rendu compte que je faisais un système complétement fermé, que j'aurai été seul à pouvoir maintenir, et encore...
Je m'oriente désormais vers une solution bcp plus ouverte. Je développe le hardware et software de l'arduino, que je fais communiquer avec un PC en xPL. Dans ce PC, j'y met des outils dédié domotique pour faire de l'archivage, créer des courbes, créer des pages d'interface...  smiley-wink

Quote
Et si je demande à la carte maitre d'interroger régulièrement toutes les cartes esclave, je vais saturer le réseau.
Je ne pense pas que tu vas saturer le bus si le maitre envoie juste une commande sur un ou deux octets pour savoir si l'esclave a quelque chose à dire.

Quote
Comment faire
y aller à l'économie en déterminant un protocole de communication économe en octet. Pour la première version de mon projet domotique, j'utilise des messages d'une dizaine d'octet, chaque octet ayant sa signification, un peu comme sur le modéle du projet Domocan à base de PIC et de CAN. C'est très efficace.
Le bus idéal pour ça est le bus CAN, car plus de maitre ni d'esclave, chaque message est reçu par tous et c'est à chacun de faire le tri. Mais au niveau arduino, il n'y a rien eu vraiment de fait avec du CAN.

Quote
Gestion par interruption
Je me suis mal exprimé. Je voulais parler de l'interruption RTI qui permet de lancer une routine à intervalle régulier..
ok, c'est tout à fait possible.

Quote
ma carte à 68HB912 scrutait le statut des entrées (domotique et alarme).
tu as quoi actuellement comme installation ?

Gromain
Logged

"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..."

projet domotique xPLDuino
IRC: freenode #xplduino

Pays de la betise
Offline Offline
Sr. Member
****
Karma: 4
Posts: 419
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Avec l'Ethernet tu peux imposer le n[ch730]IP de chaque carteil me semble que ça se trouve dans le setup.
oui, c'est dans le setup. Mais rien n'empêche de redéfinir l'IP à la volée, ou d'utiliser la lib DHCP.
Logged

"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..."

projet domotique xPLDuino
IRC: freenode #xplduino

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 76
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

A priori, il est tout a fait possible d'avoir plusieurs maitres sur un reseau RS485. le bus EIB en est un exemple.
MAIS, tu devra implementer toi-meme toute la gestion de collision de paquet, le réenvoi en cas de non reception... etc
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 94
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@moustic,
Je me sens incapable d'implémenter un protocole. Trop lourd...

@Jean-François,
Merci mais impossible d'utiliser la solution Ethernet,à cause du câblage série...

@Gromain,
En ligne avec le principe que seule la "bonne carte" répondra. Je cherche ou fixer cette adresse "ID"...


Je pensais faire discuter PC <> Arduino via un convertisseur RS232 <> RS485 isolé, mais j'ai un problème : comment faire pour interroger ma carte maitre RS485 via le PC puisque ce dernier doit être esclave ? Un esclave ne peut pas initier de conversation.. Or à partir de mon PC, je souhaite prendre la main pour paramétrer les cartes (températures de consigne etc..)

>Hormis si tu veux tout faire toi-même (hardware/software) pour avoir un système domotique "kafifi", je te conseille vivement de
Bien sûr ! Je ne fais que si je ne trouve pas à mon gout. Exemple : je n'aime pas le look de Domogik, on dirait un jouet ...

>Je m'oriente désormais vers une solution bcp plus ouverte. Je développe le hardware et software de l'arduino, que je fais communiquer avec un PC en xPL. Dans ce PC, j'y met des outils dédié domotique pour faire de l'archivage, créer des courbes, créer des pages d'interface...  Wink
+1 c'est exactement ce que je cherche. As-tu d'autres softs à communiquer ?

Dommage pour le CAN..

>tu as quoi actuellement comme installation ?
L'ancêtre de l'Arduino ;-) Une carte à base de 68HC912 Motorola développée avec un copain il y a 15 ans ...
Le pcb embarque tout ce dont nous avions besoin : RS485, connecteurs avec E/S, connecteur pour clavier, LCD... Quelques libs : LCD, RS485, KEYPAD,...
Mon soft intègre alarme + domotique mais je n'ai pas utilisé le RS485. Projet en stand-by par manque de temps en fait. Et à 2 users, impossible d'avoir la force de frappe d'une communauté entière !
Je cherche aujourd'hui une carte "vivante" avec un bon support hard et soft, des échanges, etc... Arduino est parfait !


PS : quelqu'un peut me dire ou le "quote" sur ce forum ? Je ne trouve que le "reply"...
Logged

Pays de la betise
Offline Offline
Sr. Member
****
Karma: 4
Posts: 419
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Je cherche ou fixer cette adresse "ID"...
cet ID doit être unique, donc tu peu le stocker une fois pour toute dans l'eprom de chaque arduino et ton soft ira lire cet ID au démarrage. Ou bien tu peux faire un codage "hard" avec des switchs d'adressage sur 2 ou 3 entrées.

Quote

Je pensais faire discuter PC <> Arduino via un convertisseur RS232 <> RS485 isolé, mais j'ai un problème : comment faire pour interroger ma carte maitre RS485 via le PC puisque ce dernier doit être esclave ? Un esclave ne peut pas initier de conversation.. Or à partir de mon PC, je souhaite prendre la main pour paramétrer les cartes (températures de consigne etc..)
Ta carte maitre sera dédié à ça. Elle fera passerelle entre ton PC et toutes les autres cartes. Donc si tu veux modifier un paramètre, ton PC demande au maitre, qui transmettra le message au bon esclave. Ton maitre peux même être interfacé en Ethernet avec ton PC. Et il peut y avoir plusieurs maitres en réseau avec leurs propres esclaves raccordés.

Quote
Exemple : je n'aime pas le look de Domogik, on dirait un jouet ...
j'imagine que son look sera paramétrable à terme. Ceci dit, l'aspect "jouet" peux rassurer certain final user (madame par ex.)

Quote
Je cherche aujourd'hui une carte "vivante" avec un bon support hard et soft, des échanges, etc... Arduino est parfait !
oui, je le pense aussi.

As-tu pensé au OneWire comme bus dans ta maison ? je sais qu'il y en a qui n'utilises que ça.

le quote est à droite de l'icone # lorsque tu réponds à un message.

Gromain

Logged

"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..."

projet domotique xPLDuino
IRC: freenode #xplduino

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 94
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci pour le quote  smiley-wink

Quote
..., donc tu peu le stocker une fois pour toute dans l'eprom de chaque arduino et ton soft ira lire cet ID au démarrage. Ou bien tu peux faire un codage "hard" avec des switchs d'adressage sur 2 ou 3 entrées.
Bonne idée le codage hard ou eeprom, cela simplifie les upgrades des différentes cartes du réseau (soft unique). Reste à trouver COMMENT le code va chercher ce fameux ID unique. Je continue à chercher...

Quote
Quote
Je pensais faire discuter PC <> Arduino via un convertisseur RS232 <> RS485 isolé, mais j'ai un problème : comment faire pour interroger ma carte maitre RS485 via le PC puisque ce dernier doit être esclave ? Un esclave ne peut pas initier de conversation.. Or à partir de mon PC, je souhaite prendre la main pour paramétrer les cartes (températures de consigne etc..)
Ta carte maitre sera dédié à ça. Elle fera passerelle entre ton PC et toutes les autres cartes. Donc si tu veux modifier un paramètre, ton PC demande au maitre, qui transmettra le message au bon esclave. Ton maitre peux même être interfacé en Ethernet avec ton PC. Et il peut y avoir plusieurs maitres en réseau avec leurs propres esclaves raccordés.
Bonne idée que d'interfacer maitre et PC via Ethernet => je prends. En revanche, l'idée d'avoir plusieurs maitres avec leur propre esclaves, trop lourd... Je commence à avoir les idées un peu plus claires sur comment gérer le RS485...

Quote
Quote
Exemple : je n'aime pas le look de Domogik, on dirait un jouet ...
j'imagine que son look sera paramétrable à terme. Ceci dit, l'aspect "jouet" peux rassurer certain final user (madame par ex.)
Eh bien je vais attendre alors  smiley-wink

PS : as-tu un site web sur lequel on peut prendre connaissance de ton installation ?
Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Reste à trouver COMMENT le code va chercher ce fameux ID unique. Je continue à chercher...

Ici :

http://www.arduino.cc/en/Reference/EEPROM
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 94
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci Jean-François,
Je cherche en fait le code de la partie RS485.
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 94
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

PS : concernant le bus OneWire, j'y ai pensé, mais vu le nombre de périphériques et la taille de la maison, je crains des soucis de stabilité. Donc je préfère une dizaine d'Arduino reliés en RS485, avec pour chacune la gestion locale des périphériques de la pièce : DS1820, électrovanne chauffage, etc...
Logged

Pages: [1] 2   Go Up
Jump to: