[conseil] Système d'alarme avec 4 mega 2560

Bien le bonjour à toutes et tous,

Je me lance dans mon projet d'alarme perso réparti sur 4 mega 2560

Maître :
2 claviers matrice 16 touches
2 lecteurs rfid
2 écrans LCD 2004
2 relais switch avec 2 sirènes 12v
1 module GSM pour envoyer des SMS
10 interrupteur sécurité pour l'ouverture des boîtiers

Esclave 1 :
4 contacts reed
3 détecteurs PIR
3 détecteurs bris de glace
10 LEDS RGB pour afficher le statut des différents sensors
7 interrupteurs sécurité

Esclave 2 :
3 contacts reed
1 détecteur PIR
1 détecteur bris de glace
5 LED RGB
2 interrupteurs sécurité
Esclave 3 :
4 contacts reed
1 détecteur PIR
1 détecteur bris de glace
6 leds RGB
2 interrupteurs sécurité

ma question est la suivante, quel est le meilleur moyen de faire communiquer le maître et les esclaves ? sachant que je n'ai pas de contrainte de câblage étant donné que je démarre de zéro...
et quel est le type de commandes pour la programmation des communications maître-esclaves ?

Je débute en programmation arduino, pour l'instant j'ai programmé un arduino uno avec 2 relais switchs, 4 détecteurs de mouvements et 1 capteur de luminosité pour allumer des rampes LED sous chaque marche, et un autre arduino uno avec un capteur ds18b20 pour allumer un ventilo sur une alim stabilisée lorsqu'elle dépasse les 30°.

Je sais que c'est un gros projet pour mes faibles connaissances actuelles, mais je suis passionné, et je veux avancer...

Grand merci d'avance pour vos réponses :smiley: :smiley: :smiley:

beau projet
je présume qu'il y a une certaine distance entre les différents méga donc une bonne solution serait d'utiliser des modules RS485 (liaison 2 fils)

Merci :wink:
oui, la distance va du rez de chaussée au 2ème étage...
Je sais qu'il y a plusieurs possibilités de communication, il y a le I2C, mais pour l'instant je n'ai vu que la possibilité de 2 arduinos...
Il y a l'ethernet, mais là, j'ai peur d'avoir du mal avec les protocoles de communication
Je vais voir pour le RS485 alors car il est vrai que les données transmises sont de très petits volumes

Comment dois-je indiquer dans les codes qui est la maître, esclave 1, 2, et 3 ?

Merci encore

Aegnor1975

une bonne solution serait d'utiliser des modules RS485

+1

  • l'i2c est préférable pour les petites distances ou pour des environnements faiblement parasités
  • ethernet nécessite un câblage conséquent
  • wifi, ou autres radio, nécessite une batterie

si tu câbles 4 conducteurs d'un module vers l'autre, tu pourras acheminer ta rs485 et ton alim (+V et gnd), si tu changes d'avis tu pourras avec les mêmes fils faire de l'i2c ou du CAN ... ou de la wifi sans pile en utilisant que les fils d'alim

si tu câbles en ethernet tu pourras tout faire, y compris l'utiliser pour faire du rs485, par exemple, provisoirement à la place de l'éthernet

en attendant ton matériel, tu peux t'exercer avec tes unos et rs485 en utilisant software serial et en implantant un protocole

tu peux créer ton propre protocole ou utiliser quelque chose qui surement existe déjà, voire qui fait l'objet d'une librairie

Merci Trimarco :slight_smile:

N'est-il pas possible d'utiliser les ports Tx et Rx de la méga ?
Surtout qu'il y a une possibilité de pouvoir mettre les 3 esclaves sur les pins 0, 1, 16, 17, et 18
Il est vrai que cela demande 3 fils entre les cartes avec le GND, mais comme je fais tout mon cablage en 4 paires.
Mais je ne sais pas du tout si c'est faisable, ni comment assigner maître, esclave 1, 2, et 3

ça m'évite du matériel complémentaire et des risques de pannes non ?

Merci d'avance,

Aegnor1975

Bonjour
Je suis nouveau dans le monde arduino aussi
je me fais ma propre box domotique avec plusieur arduino uno, nano et mega ( env 15 )
je pilote:

  • mes volets roulant coco (chacon) directement avec les codes des boitier en RF 433.
  • un autre volet avec un arduino et 2 relais et module RF 433
  • Plusieur Lumiere avec module coco (chacon rf433)
  • arduino nano avec relai pour lumiere

j ai plusieur sonde de temperature et bientot piloter aquairum et chauffage

le tout piloter avec un agenda google pour la prog des volets et lumieres ( arduino uno avec shield reseau)

J ai etablie a protocole de com pour pouvoir echanger entre les arduino (7 int pour passer toutes les info que je veux
1 debut toujours a 255
1 Numero de l arduino qui envoie
1 Numero pour quel arduino
1 Type de donnee ( Lumiere, volet, temperature....)
1 Data1
1 Data2
1 Fin toujours a 255

en gros mon projet qui avance a grand pas

non directement en UART c'est pas fiable sur des longues distances, c'est pour cela qu'il faut ajouter un module RS485 (moins de 2€) qui rend la liaison série beaucoup plus solide

oui, tu peux peux faire encore plus lourd que la 3ème solution que j'avais posté ici : communication inter arduino en rs485 - Français - Arduino Forum

Pour ma part, pour un projet d'alarme un peu analogue mais plus simple, j'ai procédé ainsi :

  • alimentation par batterie de voiture 12V, rechargée 1 heure par jour par un chargeur de batterie.
  • au coeur du système : un automate zélio 12V.
  • environ 15 contacts de fenetres/portes en série.
  • 2 contacts de porte sur mes portes sectionnelle de garage.
  • 1 module 4 relais piloté par télécommande 4 boutons pour enclenchement et arrêt de l'alarme depuis l'extérieur.
  • de simples led rouge pour signifier alarme armée.
  • ces simples led rouges clignotent quand je veux enclencher l'alarme et qu'une fenêtre est ouverte.
  • des sirènes extérieures 12V
  • des sirènes intérieures piezzo 12V
  • de la simulation de présence par allumage de lumière de certaines pièces.

Je suis en train de lui greffer un arduino + un module GSM TC35i pour :

  • être informé d'une intrusion par SMS.
  • pouvoir couper la sirène par SMS.
  • pouvoir enclencher ou arrêter l'alarme par SMS.

Découvrant petit à petit la programmation sur arduino, je suis bien content d'être parti d'un automate pour mon projet (je suis débutant en automate aussi).
Les fonctions grafcet, de temporisations, de bascules, ... nécessaires à mon projet étant déjà développées par zélio, je pense m'être évité une sacrée prise de tête pour programmer tout cela.

Une petite visu pour info de mon programme automate :

(je suis en capacité maxi mémoire avec ce projet sur mon zélio)

Ton projet va être, je pense, bien complexe en programmation.

Donc, de mon point de vue, je te conseille d'utiliser un automate pour ce projet.
Et d'utiliser l'arduino pour des parties que l'automate ne saurait pas très bien faire (comme les SMS ou les afficheurs). Il ne saurait surtout pas très bien le faire à faible coût, car les modules GSM pour automate sont très chers.

Bonsoir,
Et grand merci à tous pour vos réponses, et surtout beaucoup de courage pour vos projets !

@DomoYo08 :
Mon but est d'améliorer le système après en y greffant de la domotique, passer par mon raspberry PI2 en serveur Web pour pouvoir tout commander à distance (activation/désactivation de l'alarme, allumer des lampes en alternance pour la présence, commander mes stores à l'aide de moteurs,...) mais je vais d'abord essayer de dépatouiller la première partie, qui à mon avis va déjà me prendre pas mal de temps :smiley:

@Rjnc38 :
ce n'était pas vraiment pour le coût (je viens de commander un lot de 20 MAX485 pour un peu plus de 10€ comme ça j'ai de la réserve !) Mais je vais bien utiliser le RS485.

@Jerome42800 :
Je préfère rester sur les Mega2560, car chaque carte aura son propre code de gestion des différents périphériques, le maître va gérerclavier, sirènes,... suivant les alertes qu'il recevra des autres cartes (exemple, reed switch porte d'entrée sur esclave 1, et reed switch fenêtre cuisine sur esclave 2, suivant le code reçu, porte d'entrée = tempo de 30 secondes avant déclenchement de l'alarme, par contre, fenêtre est en déclenchement direct,... donc, je prépare tous les codes dans le maître, avec une action prévue en cas de réception du code, ce qui me permet de me passer d'automate, par contre, le code du maître va être chaud !)

@Trimarco232 :
Je vais utiliser la solution 3 en effet, c'est du lourd, mais c'est ce qui me semble de plus à même de tenir le coup, car si je comprends bien le schéma, le maître n'a pas besoin d'attendre d'interroger les esclaves, mais il peut simplement recevoir le code de n'importe quel esclave en permanence, c'est bien ça ? (un RS485 général entre celui du maître et ceux des esclaves, et pareil en réception ? si c'est pas ça, en tant que gros neuneu débutant c'est que j'y ai rien pigé lol)

Encore un tout grand merci à tous pour vos conseils et votre aide !

Aegnor1975

Je vais suivre ce projet avec attention :wink: !

Aegnor1975:
Je vais utiliser la solution 3 en effet, c'est du lourd, mais c'est ce qui me semble de plus à même de tenir le coup, car si je comprends bien le schéma, le maître n'a pas besoin d'attendre d'interroger les esclaves, mais il peut simplement recevoir le code de n'importe quel esclave en permanence, c'est bien ça ? (un RS485 général entre celui du maître et ceux des esclaves, et pareil en réception ? si c'est pas ça, en tant que gros neuneu débutant c'est que j'y ai rien pigé lol)

non c'est pas tout a fait ça, en réception le maitre a une liaison dédiée pour chaque esclave, c'est fait pour des dialogues intenses avec liaisons prioritaires
je pense personnellement que c'est un peu trop pour le peu de dialogue a passer entre les arduinos, la solution 2 devrait suffir et n'utilise que 2 paires (il te reste 2 autres paires pour le reste)

Je trouve en tout cas ton projet bien sympathique : n'hésite pas à venir nous donner des nouvelles.

rjnc38:
non c'est pas tout a fait ça, en réception le maitre a une liaison dédiée pour chaque esclave, c'est fait pour des dialogues intenses avec liaisons prioritaires
je pense personnellement que c'est un peu trop pour le peu de dialogue a passer entre les arduinos, la solution 2 devrait suffir et n'utilise que 2 paires (il te reste 2 autres paires pour le reste)

En effet, le but n'est pas d'avoir des communications intenses et même si l'alarme se mets en route sur plusieurs capteurs en même temps, ce ne sera qu'un code à 6 chiffres qui sera envoyé vers le maître (02 pour le numéro de la carte 01 pour le groupe, et 01 pour le capteur dans le groupe) de manière à simplifier et alléger au maximum la communication.

Je vais donc en effet passer par la solution 2, je pensais que la 3 permettait du full duplex permanent, il me suffira de mettre en requête au maître d'interroger les esclaves toutes les secondes

Grand merci à tous pour vos conseils !

Je reviendrai dans ce topic pour décrire l'avancement...

Aegnor1975