IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Comment faire communiquer entre eux plusieurs Arduino sur de longues distances? (environ 50m)


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité de passage
    Homme Profil pro
    Autre
    Inscrit en
    Septembre 2025
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Septembre 2025
    Messages : 6
    Par défaut Comment faire communiquer entre eux plusieurs Arduino sur de longues distances? (environ 50m)
    Bonjour,

    j'habite une vieille maison avec plusieurs petites dépendances. J'ai été victime de cambriolages ces derniers mois, ce qui m'a décidé à protéger mon domicile. J'ai mis en place une alarme avec différents capteurs (détecteur de porte, etc.) et sirènes.

    Les solutions du commerce ne me convenant pas pour plusieurs raisons, j'ai dû réaliser moi-même ce système d'alarme avec un raspberry. Il ne protège pour l'instant que ma maison. Maintenant, je voudrais aussi protéger les dépendances qui sont à côté: c'est le problème technique que je veux résoudre. Pardon si le message est long, mais je pense que c'est nécessaire pour bien expliquer la situation.

    Je précise que je suis débutant en électronique.

    Idée générale

    Pour faciliter la mise en oeuvre et la maintenance, mon idée est de mettre un arduino dans chaque bâtiment à protéger de manière à avoir un système modulaire. Chaque arduino devra gérer les capteurs de son bâtiment et être capable de déclencher la sirène de son bâtiment en cas de besoin. Ces arduino devront aussi être capables de communiquer avec un appareil principal (soit le raspberry, soit un autre arduino, peu importe). L'allumage/extinction de l'alarme se fera à partir de cet appareil principal.

    La communication sans fil est à proscrire (murs trop épais). J'envisage de réaliser des liaisons filaire à partir de câbles réseau (avantages: 8 fils disponibles, blindage, facilité de sertissage, prises normalisées pratiques). Attention, je ne parle pas d'un réseau ethernet, mais simplement d'utiliser du câble réseau comme fil de connexion. Longueur des liaisons à prévoir: de l'ordre de 50m.

    Problème à résoudre: choix d'un mode de transmission de données

    Après quelques recherches, je vois qu'il existe de nombreuses manières de faire communiquer plusieurs arduino entre eux:
    • liaison série UART. Avec le protocole RS-232 (nécessite un shield dédié sur l'arduino) il semble qu'on puisse atteindre des distances jusqu'à 60m. Mais le protocole ne semble pas très pratique pour relier plus de 2 appareils entre eux (j'ai besoin de 3 appareils en tout à relier à l'appareil principal)
    • liaison I2C: protocole qui semble très pratique, mais il semble qu'on puisse au mieux atteindre 30m avec un module LTC4311 -> insuffisant pour moi
    • liaison SPI: distance trop courte (1m max?) -> insuffisant pour moi
    • liaison CAN: très grandes longueurs possibles, mais ce protocole semble plus difficile à implémenter


    Cette liste n'est pas exhaustive et est limitée par mes faibles compétences en électronique. N'hésitez pas à m'en suggérer d'autres qui pourraient faire ce que je veux. Mes critères sont:
    • possibilité de relier des appareils à une distance de 50m ou plus
    • possibilité de relier jusqu'à 3 appareils "satellites" à un appareil principal
    • facilité d'implémentation
    • nécessite au plus 8 fils


    Également, vu les distances en jeu, je me demande s'il ne faudra pas prévoir une alimentation pour chaque appareil. Cela peut entrer en conflit avec certains types de liaison qui nécessitent de mettre l'alimentation et la masse en série.

    Si vous avez des remarques, d'autres suggestions ou même si vous avez dû résoudre des problèmes similaires, n'hésitez pas!

    Merci d'avance pour vos retours.

    Annexe: quelques mots à propos du système que j'ai déjà réalisé, en lien avec la question plus haut

    Le système que j'ai fait (qui ne protège que mon domicile pour l'instant) est basé sur un raspberry. J'utilise le GPIO. Les capteurs sont très simples (interrupteurs de porte, interrupteur marche/arrêt, etc.) de type ouvert/fermé. Ils sont interrogés tous les 0,1 sec via un pull-in. La sirène (12V) est déclenchée avec un relais compatible GPIO. À noter que j'ai utilisé du câble réseau pour tout relier (capteurs, relais) et que j'ai donc des pull-in et un relais qui sont situés à environ 15m du GPIO! Ca fonctionne très bien comme ça depuis plusieurs semaines. Mais je ne pense pas que ça puisse fonctionner sur des distances de 50m. Sans compter que ça multiplierait le nombre de pins sollicités sur le GPIO si je gérais tous les capteurs/relais de manière centralisée. C'est ce qui motive mon idée de mettre des arduino "satellites" en bout de ligne, avec leur propre alim.

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 250
    Billets dans le blog
    48
    Par défaut
    Bonjour,

    J'ai peu d'expérience sur de longues distances, mais une liaison série RS485 pour la couche physique, et du Modbus pour le protocole me semble très bien pour une communication maître (Raspberry pi) et quelques esclaves (Arduino). Tu trouveras assez facilement des librairies et des modules rs485 pour les deux.
    Et 50m c'est très raisonnable pour ce genre de bus de terrain, c'est quasiment du niveau industriel.

  3. #3
    Invité de passage
    Homme Profil pro
    Autre
    Inscrit en
    Septembre 2025
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Septembre 2025
    Messages : 6
    Par défaut
    Effectivement je viens de lire quelques notices techniques et RS485 semble parfaitement adapté à mon usage. Merci beaucoup!

    Pour ce qui est du protocole je ne suis pas encore décidé. C'est le dilemme: lire et assimiler des dizaines de pages de doc pour comprendre un protocole existant ou implémenter le sien (faisable ici car le système sera très simple). Mais je peux toujours décider ça plus tard.

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 250
    Billets dans le blog
    48
    Par défaut
    Si tu passes par une librairie (comme MinimalModbus en Python sur Rapsberry Pi), c'est la librairie qui gère le protocole pour toi. Un peu de configuration et tu programmes le Pi pour demander à lire ou écrire tel registre sur tel esclave, c'est la librairie qui prépare la trame et gère l'envoi selon le protocole. Il y a aussi des librairies sur Arduino (voir https://docs.arduino.cc/libraries/modbusrtu/).

    Comme l'a suggéré umfred, tu peux aussi écrire sur la liaison série à coup de "print" sur la liaison avec des trames de ton cru. C'est plus simple mais forcément moins robuste, pas standard et il faut gérer des choses manuellement (timing, erreur de transmission, évolutivité...). C'est aussi très faisable en prototypage avec quelques esclaves. A voir... c'est aussi un bon moyen de tester la communication avant de passer à quelque chose de plus standard et plus robuste.

  5. #5
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 254
    Par défaut
    Je pense que tu as oublié un type de liaison dans ta liste, celui qui est sans doute le plus simple à mettre en œuvre dans ton cas, c'est simplement le réseau Ethernet, puisque tu parle de tirer des câbles Ethernet justement.

    Propage ton réseau dans tes dépendances, il pourra en plus te servir à bien d'autres choses en plus de l'alarme.

    Et oui, il te faudra une alimentation de chaque coté, car tout alimenter depuis ton point central peut avoir des limites.
    Par contre, il te faudra, partout, sur chaque élément, des alimentations secourues car les voleurs, généralement la première chose qu'ils font quand ils visitent un logement protégé, ils font disjoncter le compteur. Une prise avec à l'intérieur une petite résistance entre la terre et chacune des autres bornes, c'est rapide et y a pas beaucoup de compteurs qui y résistent.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  6. #6
    Invité de passage
    Homme Profil pro
    Autre
    Inscrit en
    Septembre 2025
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Septembre 2025
    Messages : 6
    Par défaut
    Oui, c'est vrai qu'il y a la solution d'étendre ethernet partout. Dans ce cas il faut que je prévoie un switch en plus, voire plusieurs. Et peut-être que dans ces conditions le plus simple serait de mettre des raspberry avec GPIO pour commander mes capteurs/relais plutôt que des arduino. À voir en termes de coût, mais je retiens l'idée!

    En ce qui concerne l'alimentation de secours, déjà le simple fait de recevoir une notification push sur le téléphone en cas de détection serait bien (c'est ce que fait mon raspberry actuel). Pendant le dernier cambriolage, ma femme était toute seule à la maison. Elle ne les a pas vus ni entendus fracturer un local à côté de la maison...

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 578
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 578
    Par défaut
    En "UART", tu peux définir toi même ton protocole par exemple Début|AdresseEmetteur|AdresseRecepteur|longueur|Commande|Paramètres|Checksum
    Et le faire passer par du RS485
    Et il te faut forcément une alimentation à chaque carte, vu les distances
    Après pour les différents protocoles, il y quasi assurénent des librairies existantes pour faciliter la vie (si il y a un module/shield, il y a quasi toujours sa librairie associée, ou une libraire existante)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 17
    Dernier message: 23/11/2020, 15h41
  2. Réponses: 2
    Dernier message: 09/03/2020, 14h05
  3. Réponses: 2
    Dernier message: 08/12/2015, 13h23
  4. Comment faire dialoguer entre eux deux scripts ?
    Par dva2tlse dans le forum Shell et commandes POSIX
    Réponses: 4
    Dernier message: 19/05/2013, 23h10
  5. Réponses: 14
    Dernier message: 13/11/2007, 19h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo