[conseil] Comment faier communiquer 12 Arduinos et un Rasperry

jpbbricole:
Pas compris!!!

Cordialement
jpbbricole

Je m’adressais à Laucel (j’essayais de deviner son projet d’application)

Si l’environnement n’est pas perturbé et l’alimentation pas un soucis je regarderais la partie radio - c’est simple à mettre en œuvre avec les librairies RF24, sinon du RS485 si plus de quelques dizaines de cm et perturbations électromagnétiques

jpbbricole:
J’apprécie tes théories, mais je trouve que tu compliques une chose qui est, au demeurant, et surtout grâce aux composants (modules) disponibles, assez simple à développer pour le néophyte.

Il y a deux façon de répondre : soit en répondant strictement en donnant une solution toute faite adaptée à un cas particulier, soit en expliquant dans le but de rendre le demandeur autonome afin que dans un cas similaire il n’ait plus besoin de poser de question.

Les deux publics correspondants à ces deux façons de répondre sont présent sur ce forum.
Tu répond au premier, moi je m’adresse au second.

L’avantage de l’explication c’est que le jour où vous aurez un problème Avec une approche « toute bête sur De l’I2C Sans se poser trop de question » et en Priant que ça tombe en marche, c’est que vous aurez des outils pour explorer les problèmes potentiels.

L’inconvénient bien entendu c’est que pour comprendre ce que 68tjs a dit, il faut quand même un minimum de bagage électronique théorique et ça c’est pas donné à tout le monde sur ce forum.

Bref, Il y en a pour tout les goûts et c’est tant mieux

Tant que nous n'aurons pas une idée plus précise du projet, inutile d'aller plus loin.
Le problème de la majorité des demandes est que le fonctionnel n'est pas mis en avant par le demandeur ou la demandeuse ("Je suis bien tentée", "Je suis preneuse").
Les gens s'embarquent souvent dans une solution technique d'entrée de jeu, alors qu'en posant la question de manière fonctionnelle dès le départ, la direction suivie et conseillée par nous serait probablement différente, plus rationnelle, moins sujette à problèmes, et moins complexe.
Je suis le premier à me faire avoir je l'avoue. Je réponds, mais je me dis ensuite "tu as tort, tu ferais mieux de poser des question d'abord".

@+

clairement. Si les éléments sont si proches, on peut se poser la question de savoir si un seul "arduino" ne pourrait pas faire tout le job.

68tjs:
je n’ai pas immédiatement le temps de développer mais dire que l’I2C travaille avec des collecteurs ouverts revient à dire que l’I2C travaille avec des transistors en montage collecteur commun.


Rappel pour le cas où : la période est l’inverse de la fréquence, la période est un temps.

J-M-L:
L’avantage de l’explication c’est que le jour où vous aurez un problème Avec une approche « toute bête sur De l’I2C Sans se poser trop de question » et en Priant que ça tombe en marche, c’est que vous aurez des outils pour explorer les problèmes potentiels.

Si on peut appeler ça une explication, ça tient plutôt de la thèse (montage collecteur commun… 'impédance équivalente vue de la l’émission est équivalente à celle de la résistance effective de collecteur… Le schéma équivalent est celui de la charge d’un circuit RC (voir un peu de doc)… etc. etc., je doute fort que ce genre lithanie technique, dont je doute qu’un grand nombre de membres de ce forum soient capables d’en tirer une substance quelconque, soit d’une aide quelconque a une personne qui se qualifie de “relativement novice”, ça pousserai plutôt à la fuite, a abandonner le projet, le bus i2C en particilier.
Ce genre “d’explications” étaient utiles il y a 20 à 30 ans en arrière, le concept de l’Arduino a été développer pour simplifier et populariser l’usage des microcontrôleurs donc, logiquement un forun consacré à cette “bête” devrai tendre vers le même but!
Mais je vais cesser de râler et me contenter de lire et même de rire de ces “explications”

laucel, pardon pour ce HS

Cordialement
jpbbricole

jpbbricole:
je doute fort que ce genre lithanie technique, dont je doute qu'un grand nombre de membres de ce forum soient capables d'en tirer une substance quelconque, soit d'une aide quelconque a une personne qui se qualifie de "relativement novice"

Vous avez peut-être raté aussi qu'il répondait à la sollicitation de hbachetti qui n'est pas du tout une personne "relativement novice" mais un professionnel.

Comme je l'ai écrit

il faut quand même un minimum de bagage électronique théorique et ça c'est pas donné à tout le monde sur ce forum.

@jpbbbricole
Dis toi bien que le transport des signaux numériques ne relève que de l'électronique analogique.
L'électronique analogique est toujours d'actualité et le sera de plus en plus avec l'effet conjoint de l'augmentation des fréquences de fonctionnement des microcontrôleurs et de la baisse des amplitudes des signaux.
Au cas ou tu ne l'aurais pas remarqué le 5V est quasiment mort, le 3,3V se généralise et le 2,5V ou le 1,8 V vont très vite arriver.

Et si tu ne comprend pas ça tu fais comme l'auteur de l'information cité par Laurel :
Je cite :

Pour I2C, j'ai lu que c'était très sensible aux interférences,

Qui est une très grosse connerie avec des signaux de 5V d'amplitude. Elle n'y est pour rien c'est celui qui a écrit ces idioties qui est (ir)responsable. Quand je vois proposer de prendre du câble blindé qui va encore augmenter la capacité sur la ligne et donc encore plus détériorer les signaux je me dis qu'un peu d'explication sur l'origine des déformations ne peut pas faire de mal et même aider ceux qui veulent faire un effort pour comprendre.

Maintenant si ce que j'écris ne te plait pas tu n'es pas obligé de me lire, je ne serai nullement vexé, mais n'en dégoute pas les autres.

Je suis profondément désolé jpbbricole mais l'électronique et le logiciel relèvent avant tout du monde de la science.
Celui ou celle qui ignore ce qu'est un montage collecteur ouvert et un circuit RC ne peut qu'effleurer ce monde du bout des doigts.

Il est certainement très facile de mener à bien un montage à plusieurs modules transmetteurs radio 2.4GHz et d'arriver à un résultat plus que satisfaisant. Bien que cela mette en jeu beaucoup plus de jonctions, beaucoup plus de complexité apparente, c'est un jeu d'enfant, du LEGO pour les utilisateurs.
Par contre je doute qu'un seul membre de ce forum soit capable de participer à la conception de ces modules chez Nordic Semiconductor par exemple.

Charger un transistor en collecteur ouvert pour le faire travailler correctement à des fréquences élevées est plus ardu, cela se calcule, et une solide connaissance de base est nécessaire.

Pourquoi cette remarque ?
Parce que mettre 12 ARDUINOs en parallèle sur un bus I2C est un montage hors normes, et cela appelle une réponse hors normes qui n'est pas à la portée de chacun. En trente ans d'industrie je n'ai jamais vu ça. Et pourtant des usines à gaz j'en ai vu pas mal, et des plus tordues.

Et ça tu n'y peux rien. Ce n'est pas en traitant de thésards les gens qui ont la connaissance que cela mettra la chose à la portée de tout un chacun. Je sais c'est frustrant, mais c'est comme ça.

Il y a des choses qui ne se simplifient pas.

@+

Bonjour,

.... Si on peut appeler ça une explication, ça tient plutôt de la thèse (montage collecteur commun... 'impédance équivalente vue de la l'émission est équivalente à celle de la résistance effective de collecteur... Le schéma équivalent est celui de la charge d'un circuit RC (voir un peu de doc).... etc. etc., je doute fort que ce genre lithanie technique, dont je doute qu'un grand nombre de membres de ce forum soient capables d'en tirer une substance quelconque, soit d'une aide quelconque a une personne qui se qualifie de "relativement novice", ça pousserai plutôt à la fuite, a abandonner le projet, le bus i2C en particilier.
Ce genre "d'explications" étaient utiles il y a 20 à 30 ans en arrière, le concept de l'Arduino a été développer pour simplifier et populariser l'usage des microcontrôleurs ......

Je ne vois dans les explications de 68tjs rien ici qu'une description précise des problèmes qui peuvent se poser dans une situation telle qu'elle est envisagée ( 12 Arduinos ...)
J'aurais juste préféré "mise ne en commun des collecteurs ouverts" car le terme "collecteur commun" possède sa propre ambiguïté.

Pour moi le concept d'Arduino permet surtout de beaucoup simplifier le développement logiciel pour des applications simples; il reste qu'approcher les limites du domaine de fonctionnement d'une structure matérielle ne peut pas être abordé sans une connaissance fine du comportement des circuits analogiques.

Serge .D

Disons quand même que la majorité des participants ici ne fait pas non plus des systèmes à vocation critiques, qui doivent marcher 24h/24... si ça ne marche pas bien ce n’est généralement pas grave, on reboote ou on démonte et passe à autre chose

Donc JPBricole a raison de dire que non seulement on peut faire des trucs sans savoir tout cela et se faire plaisir, mais je conteste son point que l’information fournie soit inutile - elle a juste un public plus ciblé

Perso je suis (étais) un ingénieur mathématicien/physicien et très « softeux » avec quelques petites compétences acquises en amateur sur la partie hard; mon background me permet de comprendre la théorie et j’apprécie toutes les explications de 68tjs et autres experts de la partie hardware qui enrichissent mon savoir, ouvrent des portes à explorer pour continuer à se challenger les neurones et jouer avec des trucs plus avancés

Comme disait l’autre ce n’est pas qu’ « on arrête de jouer quand on devient vieux » mais c’est qu’ « on devient vieux quand on arrête de jouer »... et j’ai envie de jouer encore un moment :slight_smile:

car le terme "collecteur commun" possède sa propre ambiguïté.

Dans un montage collecteur commun, le collecteur est relié à l'alimentation.
Bernard a certainement voulu dire "collecteur ouvert". Il sait de quoi il parle quand même.

@+

hbachetti:
Dans un montage collecteur commun, le collecteur est relié à l’alimentation.
Bernard a certainement voulu dire “collecteur ouvert”. Il sait de quoi il parle quand même.

@+

C’est exactement ce que je pense.

Serge .D

Bonjour J-M-L

J-M-L:
Donc JPBricole a raison de dire que non seulement on peut faire des trucs sans savoir tout cela et se faire plaisir, mais je conteste son point que l’information fournie soit inutile - elle a juste un public plus ciblé

Entièrement d'accord avec toi, J-M-L, je me suis mal exprimé, l'information n'est pas inutile en soi quoi que plus à sa place dans un forum spécialisé.

Cordialement
jpbbricole

Bonjour à tous,

Je remercie tout le monde pour ces réponses complètes, pleines de richesse et de bienveillance (et préfère laissr de côté les querelles).

Je vais avancer avec ce qui a été dit, et je prendrai avec reconnaissance tous les conseils et informations qui viendront compléter ce post. Pour préciser un peu plus mon message initial, je suis plutôt novice en electronique (mais le développement est mon métier). Donc je reconnais ne pas saisir beaucoup de choses qui ont été dites.

Je n'ai pas l'intention de postuler pour être ingénieur en electronique demain, mais je suis joueuse, très attirée par l'electronique, et je trouve génial tout ce que peut apporter Arduino et Rasperry pour des débutant en electronique qui ont juste envie d'en faire un loisir, comme moi.

ça sent l'escape Room ce projet :slight_smile: - je me trompe ?

Oui, tu te trompes (même si j'aime beaucoup les Escapes), mais cela reste dans le domaine du jeu puisque j'essaye de faire un genre de version electronique du jeux "keep talking and noboby explode". Juste pour m'amuser.

Pour ceux qui se posaient la question du projet plus précisement : j'avais prévu une grande boite (70 cm * 55 cm) qui contient en réalité 16 emplacements avec des jeux. Donc les modules sont en effet proches les uns des autres, et la seule difficulté (en dehors du problème d'alimentation qui va arriver juste après :-/...), c'est la communication. Mais à nouveau, je ne souhaite pas nécessairement que tous les Arduino causent entre eux, mais juste que le Rasperry causent avec chacun (en bilatéral).
D'après ce que j'ai compris de tous les messages, je vais me lancer dans I2C (dès que je trouve un peu de temps). Si j'apprends des choses au passage, surtout en electronique, je prends volontier et en toute modestie. A condition que cela soit à ma portée :wink:

Bonne fin de week-end

OK c'est cool

A mon avis vous n'avez besoin que d'un seul arduino... éventuellement avec un extendeur de ports.. à moins que la complexité des jeux soit super importante... ou que vous voulez que ce soit vraiment modulaire en enfichant différents jeux dans la boîte...

Bonsoir
j'ai lu ce fil en diagonale

D'après ce que j'ai compris de tous les messages, je vais me lancer dans I2C (dès que je trouve un peu de temps).

La réeussite (= le bon fonctionnement) n'est pas garantie.
Si je comprend bien un Raspberry serait le maître I2C avec 12 Arduino esclaves I2C
Les 13 entrées/sorties SDA seraient en parrallèle, idem les 13 lignes SCL
Les capacités s'ajoutent en // et le total ne devrait pas dépasser 400pF pour un bon fonctionnement de l'I2C soit 30pF par E/S câble compris
C'est peu, le câblage devra être soigné.
. (pour aller plus loin : réseau RC, charge d'un condensateur, temps de montée....)

Dans notre univers de bricoleurs quand vient le moment d'assembler entre eux des modules on pense tension , courant........ parfois les capacités et inductances se manifestent et ne sont plus négligeables !!

Se poser aussi les questions
Qui doit pouvoir prendre l'initiative de la commnunication ?
Quelle latence est acceptable ?
Le choix du média dépend de la nature de la communication (type, contenu, délais...)

12 Arduinos ? Quelles fonctionnalités doivent impérativement être 'décentralisées' au point de mettre 12 Arduinos ?

mais dire que l'I2C travaille avec des collecteurs ouverts revient à dire que l'I2C travaille avec des transistors en montage collecteur commun.

Et PAN SUR LE BEC comme ils disent au Canard enchaîné ! :disappointed_relieved:

Bien évident que j'ma gouré et que j'ai écrit une connerie : un montage à collecteur ouvert est en fait un montage en émetteur commun.
Désolé.

Pour connaître la différence entre les deux montages je rappelle que j'ai écrit un tuto :
Le transistor bipolaire ou MosFet simplifiés

Pour connaître la différence entre les deux montages je rappelle que j'ai écrit un tuto

Merci, je vais le lire.

12 Arduinos ? Quelles fonctionnalités doivent impérativement être 'décentralisées' au point de mettre 12 Arduinos ?

  • D'abord les modules sont indépendants et devraient pouvoir être changés simplement. Demain il peut me prendre l'envie de faire un nouveau jeu, d'en changer un pourri ou de rendre l'expérience modulable.
  • Ensuite chaque jeu utilise un nombre de ports non négligeable (au moins 8), mais je ne connais pas assez les extensions d'Arduino, peut-être qu'il existe des choses pour bénéficier de bcp plus de ports...
  • Enfin, les jeux ont quand même un minimum de code et de tâches de transmission ou reception d'information. Je ne vois pas comment tous les coder sans rendre l'ensemble (très) compliqué à gérer.

Mais c'est peut-être que je n'ai pas réalisé la complexité de faire dialoguer toutes ces braves bestioles avec un seul Rasperry...

Finalement, comme aucun module Arduino de mon projet n'a a communiquer pas ses congénères mais seulement avec le rasperrry (dans les 2 sens la comm), la solution proposée à base de transmission radio est peut-être moins pire à réaliser ?

Bonsoir @laucel

Voilà, pour exemple le système de bus i2C que j’ai développé pour mes besoins.

Le systeme de bus i2C se compose du programme MASTER (MM) en général un Arduino Mega et de modules SLAVES (MS), quasiment n’importe quel Arduino.
Le programme du MM est I2CmasterDemo.ino.
Le programme du MS est I2CslaveDemo.ino.

L’essentiel de l’architecture du MS se compose d’un tableau de bytes msDataArray, ce tableau est régulièrement dupliqué dans le MM par polling.
Ce tableau est mis à jour par vos procedures, il y a quelques exemples dans la démo.
Les MS peuvent recevoir des commandes (liste dans cmdFunctionSyntax pas sensibles Maj/Min) depuis le moniteur de l’IDE ou à travers le bus i2C, depuis le MM.
L’adresse peut être changée au moyen d’une de ces commandes i2Cadresse=52 par ex et ce paramètre est sauvé en EEPROM.
Il y a pour l’exemple 1 potentiomètre, un bouton poussoire, une LED (Ces 3 exemples sont repris et affichés au niveau du MM)
J’ai largement commenté le programme (du moins je l’espère), pour plus de détail.

L’essentiel de l’architecture du MM se compose de la duplication des tableaux de données des MS msDataArray, par polling, le MM invite les MS a en tranmettre leur contenu.
Le MM contient la liste des pseudo des MS ainsi que leur adrersse sur le bus.
Il est possible, depuis le MM d’envoyer des commandes au MS avec la syntaxe PSEUDOduMS>Commande=paramètre soit MsA>Valeur32=12785.
Les commandes ne sont pas sensibles Maj/Min.
J’ai aussi largement commenté le programme (du moins je l’espère), pour plus de détail.
Dans ce montage, l’alimentation du bus ainsi que des Arduino qui y habitent, sera assuré depuis le MS au moyen d’un abaisseur de tension 9 ou 12v en 5V.

Dans le courant de la semaine, je ferais une “maquette” avec 12 Arduino, si je reçois quelques uns qu j’ai en attente, ainsi que le schéma du tout. (tout est dans le fichier attaché I2CmasterSlaveDemo.zip)

A @laucel
Après lecture de ton dernier post, j’ai des craintes concernant la vitesse, je te “livre” ce que j’utilises dans mes applications nécessitant un bus i2C, ce que j’utilises assez souvent, il peut convenir ou pas, il est facile de l’adapter pour de nombreuses applications.
A ton service pour toute question, amélioration …

Bonne soirée
Cordialement
jpbbricole

I2CmasterSlaveDemo.zip (6.25 KB)