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 :

Faire communiquer 10+ arduino : I²C ? SPI ?


Sujet :

Arduino

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    .
    Inscrit en
    Mars 2017
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2017
    Messages : 59
    Points : 39
    Points
    39
    Par défaut Faire communiquer 10+ arduino : I²C ? SPI ?
    Bonjour à tous,

    Mon projet consiste à fabriquer une mallette, contenant plusieurs mini-jeux à résoudre. Chaque mini-jeu contient un certains nombre de composants (boutons, affichages, etc..). La mallette contiendrait une dizaine de ces mini-jeux, sous forme de modules séparés...

    Comme j'ai pas l'impression d'être très clair, je vais détailler: Imaginez une mallette (vous savez, celle avec les liasses de billets dans les films). Cette mallette est divisée en 10 zones rectangulaires. Chaque zone accueille un module, permettant de jouer à un mini-jeu.

    Le tout doit être contrôlé par une unique arduino, qui gère difficulté des niveaux, temps limité, etc..

    Il est évident que je n'aurais jamais assez de ports sur un seul arduino. J'ai donc pensé utiliser un arduino par module, qui contrôlerait le déroulement du mini-jeu, et renverrais des informations quant au succès ou à l’échec du joueur. Un arduino "central" permettrait de traiter toutes ces infos et contrôler l'ensemble de la partie.

    Comment donc faire dialoguer ensemble tous ces arduino ? (ou du moins, comment les faire tous communiqués avec le "central")

    J'ai pensé à utilisé le bus I²C, mais je ne suis pas sur que ça conviennent. En effet, le module "mini-jeu" doit prévenir le "central" dès que le mini-jeu est fini (succès ou echec). Hors dans un fonctionnement Maître-esclave, l'esclave ne peut prendre la parole sans que le maître ne lui ait demandé. Et je trouve ça assez dégueu de demander en permanence "hé les gars, il a fini votre mini-jeu ?"
    De plus, j'ignore si le I²C fonctionne correctement avec autant d’esclaves. J'ai aussi vu qu'il pouvait y avoir plusieurs maitres ? Je comprends pas bien comment..

    Le bus CAN est aussi intéressant mais nécessite une carte specifique pour chaque module.. c'est pas idéal..

    Enfin, j'aimerais utiliser une communication avec peu de fils, le but étant de garder le plus de ports pour les composants à piloter, et si possible, d'utiliser les micro-contrôleurs les plus petits possibles (réduction des coûts). Dans l'idéal, le boitier serait modulable, avec la possibilité de rajouter ou d'enlever des modules. Ils viendraient alors se "clipser" sur la malette, et se connecter via RJ11 ou autre connecteur petit et pratique.


    MErci d'avance et n'hésitez pas à demander des détails si besoin.



    EDIT : Je me suis aussi renseigné sur le SPI. C'est vraiment pas une option (manque d'aquittement, multiplication des fils, et surtout fonctionnement maitre-esclave strict.

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Bonjour,

    ton projet me fait penser au système Makeblock : http://learn.makeblock.com/en/electronics/ qui propose divers modules que l'on peut relier entre eux avec des câbles RJ45. Vérifie quand même avec la doc sur la façon dont les modules communiquent entre eux.


    Si tu restes sur les Arduino je regarderai les systèmes bluetooth pour Arduino. Tu peux également créer un mini réseau Ethernet entre tes Arduino. Il existe des versions Ethernet de UNO et Leonardo. Un de tes Arduino sera un serveur et les autres des clients. Dans le cas de l'Ethernet, l'avantage, à mon avis, est que tu peux déconnecter tes modules ou les interchanger, et créer de nouveaux modules sans problème. Le gros problème par contre, est que dans ce cas ton système complet ne pourra pas fonctionner sur batterie

    Après il faudrait connaître dans le détail le projet, pour savoir si l'utilisation de l'Arduino est une bonne idée.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    .
    Inscrit en
    Mars 2017
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2017
    Messages : 59
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par Auteur Voir le message
    Bonjour,
    Bonjour, merci de prendre le temps de me répondre

    ton projet me fait penser au système Makeblock : http://learn.makeblock.com/en/electronics/ qui propose divers modules que l'on peut relier entre eux avec des câbles RJ45. Vérifie quand même avec la doc sur la façon dont les modules communiquent entre eux.
    Je connaissait pas du tout mais j'ai l'impression que, bien qu'étant simple a utiliser avec les composants officiels, je vais plus m’embêter qu'autre chose à adapter les composants dont j'aurais besoin.

    Si tu restes sur les Arduino je regarderai les systèmes bluetooth pour Arduino.
    Je préfererais rester sur du filaire, surtout que du bluetooth entre 10 arduino, j'ai peut que ça foire plus qu'autre chose. Au delà de ça, le filaire est plus fiable.

    Tu peux également créer un mini réseau Ethernet entre tes Arduino. Il existe des versions Ethernet de UNO et Leonardo. Un de tes Arduino sera un serveur et les autres des clients. Dans le cas de l'Ethernet, l'avantage, à mon avis, est que tu peux déconnecter tes modules ou les interchanger, et créer de nouveaux modules sans problème. Le gros problème par contre, est que dans ce cas ton système complet ne pourra pas fonctionner sur batterie
    J'y ais pensé, mais l’Ethernet nécessite un réseau en étoile, et donc un switch, non ? et je prefererais pouvoir utiliser une batterie.

    C'est pourquoi le bus I²C me semblait une bonne idée. La aussi, on peut deconnecter et interchanger les modules (suffit de les identifier par leur adresse, ou même mieux, leur demander un identifiant au démarrage).La seule chose qui me dérange vraiment, c'est l'impossibilité pour les esclaves de s'adresser au maitre. Et j'imagine mal le maitre demander en permanence le statut des esclaves

    Après il faudrait connaître dans le détail le projet, pour savoir si l'utilisation de l'Arduino est une bonne idée.
    Alors pour être exact, je cherche à reproduire le jeu Keep Talking And Nobody Explodes, mais en vrai, en physique. Si vous ne connaissez pas, je vous invite a regarder un gameplay sur youtube pour comprendre le fonctionnement.


  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    .La seule chose qui me dérange vraiment, c'est l'impossibilité pour les esclaves de s'adresser au maitre.
    j'ai du mal à croire que le protocole i2c soit unidirectionnel (de maître à esclave) Si tu prends l'exemple de capteurs i2c, la communication fonctionne dans les deux sens : le maître (l'Arduino) interroge l'esclave (le capteur) et le capteur répond.
    Ou alors je n'ai pas bien compris ce que tu voulais dire...


    J'ai trouvé ceci :
    Bibliothèque Wire
    Master Writer/Slave Receiver
    Master Reader/Slave Sender
    i2c_scanner (recherche des adresses des Arduino)

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    .
    Inscrit en
    Mars 2017
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2017
    Messages : 59
    Points : 39
    Points
    39
    Par défaut
    Bah, d'après ce que j'ai compris, l'esclave ne peu s'adresser au maitre que si celui-ci lui pose une question. Dans mon cas, il faudrait donc que le maitre demande en permanence à l'esclave "Quel est l'avancement de ton mini-jeu", pour que l'esclave puisse notifier le maitre dès que le mini-jeu à été terminé.

    Merci pour tes liens, je vais y jeter un oeil

  6. #6
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Citation Envoyé par r4ph0u Voir le message
    Dans mon cas, il faudrait donc que le maitre demande en permanence à l'esclave "Quel est l'avancement de ton mini-jeu", pour que l'esclave puisse notifier le maitre dès que le mini-jeu à été terminé.
    pas en permanence. D'après ce que j'ai vu ces mallettes sont composés de 6 modules. Tu peux les interroger les uns après les autres 1 fois toutes les 6 secondes par exemple.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    .
    Inscrit en
    Mars 2017
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2017
    Messages : 59
    Points : 39
    Points
    39
    Par défaut
    Alors en fait il peut y avoir jusqu'à 6 modules par face. En pratique, moi je les mettrais plutôt à l'intérieur de la mallette, 6 dans chaque moitié.
    Comme c'est un jeu de rapidité, je voudrais avoir l'info dès qu'un module est fini, sans avoir jusqu'à 6 secondes de latences.



    Toutefois, après de plus ample recherches, il s'avère que le bus I²C gère très bien le multi-maitre, mes arduino secondaires pourraient donc s'adresser "de leur plein grès" à l'arduino central.

    Pour plus d'infos, si certains en ont besoin : http://tge.cmaisonneuve.qc.ca/barbau...lti_maitre.doc

  8. #8
    Membre habitué
    Homme Profil pro
    007
    Inscrit en
    Octobre 2014
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : 007

    Informations forums :
    Inscription : Octobre 2014
    Messages : 119
    Points : 188
    Points
    188
    Par défaut
    salut

    Ce que tu cherches à faire existe déjà en diy, notamment en airsoft/paintball sous les
    appellations "prop bomb" ou "fake bomb" ou encore "bombe factice" en fr, et ce qui
    se rapproche le plus de ton besoin, ce sont les versions puzzle ou mini-puzzle. Bien sûr, le
    tout sur base d'arduino.

    En faisant une recherche sur le net, tu devrais trouver de belles vidéos.

    Tu peux aussi faire un tour sur la chaine youtube de fred r-soft que je trouve intéressante
    pour certaines idées d'ornements de valises et de scénarios.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    .
    Inscrit en
    Mars 2017
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2017
    Messages : 59
    Points : 39
    Points
    39
    Par défaut
    J'en avais effectivement déjà vu pour l'airsoft, c'est d'ailleurs un peu ce qui m'a donné l'idée, mais je n'avais vu que des modes très simples, avec les scénarios classiques de capture du drapeau, démolition, etc..

  10. #10
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Citation Envoyé par r4ph0u Voir le message
    Comme c'est un jeu de rapidité, je voudrais avoir l'info dès qu'un module est fini, sans avoir jusqu'à 6 secondes de latences.
    Bah tu peux augmenter la fréquence
    1 requête toutes les 200ms. J'ignore le débit de l'i2c.

  11. #11
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Franchement, I2C avec un maitre qui interroge toutes les secondes ses esclaves, ça me semble une solution viable

  12. #12
    Membre émérite
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 012
    Points : 2 341
    Points
    2 341
    Par défaut
    Bonjour r4ph0u
    Citation Envoyé par r4ph0u Voir le message
    Bonjour à tous,
    J'ai pensé à utilisé le bus I²C, mais je ne suis pas sur que ça conviennent. En effet, le module "mini-jeu" doit prévenir le "central" dès que le mini-jeu est fini (succès ou echec). Hors dans un fonctionnement Maître-esclave, l'esclave ne peut prendre la parole sans que le maître ne lui ait demandé. Et je trouve ça assez dégueu de demander en permanence "hé les gars, il a fini votre mini-jeu ?"
    De plus, j'ignore si le I²C fonctionne correctement avec autant d’esclaves. J'ai aussi vu qu'il pouvait y avoir plusieurs maitres ? Je comprends pas bien comment..

    Enfin, j'aimerais utiliser une communication avec peu de fils, le but étant de garder le plus de ports pour les composants à piloter, et si possible, d'utiliser les micro-contrôleurs les plus petits possibles (réduction des coûts). Dans l'idéal, le boitier serait modulable, avec la possibilité de rajouter ou d'enlever des modules. Ils viendraient alors se "clipser" sur la malette, et se connecter via RJ11 ou autre connecteur petit et pratique.
    Je pense aussi que l'i2C est une excellente solution pour ça. C'est le job du maître que de demander, en permanence, ce que les esclaves on à dire, il n'a que ça à faire.
    Je ne crois pas qu'il puisse avoir plusieurs maîtres (je ne crois pas) et je ne vois pas l'intérêt.
    J'ai récemment fait une maquette de démonstration avec 12 Arduino, mélangés Nano, Uno et Pro Mini comme esclaves et un Mega comme Master, sans problème, l'alimentation des modules slaves était assurée par le bus i2C.

    Si tu le désires, je tiens, à ta disposition, les programmes nécessaires.

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/11/2005, 21h24
  2. faire communiquer 2 fenetres...
    Par linux dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/08/2005, 09h51
  3. comment faire communiquer deux form MDI?
    Par eponette dans le forum Langage
    Réponses: 3
    Dernier message: 17/08/2005, 12h20
  4. [Securité] Faire communiquer 2 serveurs entre eux
    Par Wookai dans le forum Hébergement
    Réponses: 2
    Dernier message: 10/08/2005, 00h13
  5. [Technologie][Stratégie] Faire communiquer deux applis
    Par KitsuneSama dans le forum Général Java
    Réponses: 13
    Dernier message: 21/06/2004, 17h25

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