I2C

Bonjour,

Je me permets de faire un petit topic car j'ai plusieurs questions pour une future réalisation d'un projet d'une table pyrotechnique avec un arduino et des modules I2C.

Sur ce tuto :

La personne câble son module sur A4 et A5.

1)- Je ne vois pas la déclaration des pins du LCD dans le code. Pourquoi??

2)- Sur quels ports peut-on mettre un module I2C? Y a t il un nombre max ?

3)- J'ai cherché sur eBay une platine avec des boutons poussoirs en I2C, afin de pouvoir avoir un max de boutons avec le moins de fils possible ( j'ai un arduino nano), en trouvez-vous? Si oui ou, le faites vous vous-même ?

Merci à vous, c'est une ébauche de projet mais qui verra le jour. Pour le moment je veux faire quelque chose d'assez simple mais par la suite ce sera deux tables (une émission et l'autre réception) qui communiqueront en HF, donc level sup. mais pour le moment déjà si vous pouviez me débloquer la-dessus ce serait fort aimable :slight_smile:

PS : Par la suite, je me commanderai une UNO car il y a beaucoup plus de possibilités avec, j'en suis bien conscient.

Merci beaucoup et bonne soirée,

Au plaisir de vous lire,

Manu,

le module est câblé sur A4 et A5 car ce sont les broches dédiées à l'i2c sur l'atmega328 qui équipe les cartes uno, nano et dérivées

l'i2c ne fonctionne que sur ces deux broches, en revanche plusieurs périphériques i2c peuvent êtres connectés en //, chacun disposant d'une adresse individuelle pour communiquer.
Comme c'est très bien détaillé sur l'article wikipedia :

Le nombre maximal d'équipements est limité par le nombre d'adresses disponibles, 7 bits d'adressage et un bit R/W (lecture ou écriture), soit 128 périphériques, (...)

pour ce qui est d'avoir une platine à boutons en i2c, il faut utiliser un composant de type "port expander" sur lequel raccorder des boutons comme si c'était fait directement sur les broches de l'arduino. Par exemple un MCP23017 que tu peux aussi trouver sous forme de module "tout prêt"

On ne peut plus aller sortir le chien et laisser une réponse en attente sans que quelqu’un réponde entre temps :grin:

Cela va faire un peu double usage mais pas complètement et vu que presque tout était écrit je poste quand même.

j’ai un arduino nano,

Par la suite, je me commanderai une UNO car il y a beaucoup plus de possibilités avec

C’est exactement la même chose : même microcontroleur.
Si une carte est supérieure à l’autre c’est la nano qui a deux entrées purement analogique supplémentaires.
Tu dois confondre Uno et Mega.

La personne câble son module sur A4 et A5.

1)- Je ne vois pas la déclaration des pins du LCD dans le code. Pourquoi??

C’est vrai mais cela ne se lit pas comme cela : la personne utilise SCL et SDA de l’I2C , qui sur le microcontroleur de la nano sont physiquement sur A4 et A5 (ou A5 et A4 je ne me rappelle plus qui est qui).
C’est l’appel à la bibliothèque Wire qui fait basculer ces deux accès en mode I2C
C’est une chose courante sur les microcontroleurs: le nombre de pins du boîtier est limité aussi une pin physique peut avoir plusieurs fonctions.

Attention SDA et SDA sont commun avec A4 et A5 uniquement avec un microcontroleur Atmega328p de la Uno/nano/mini-pro.
Si tu utilises une Mega ce sera d’autres pins que A4 et A5.

Pour la déclaration des pins du LCD comme c’est de l’I2C ce doit être fait dans la bibliothèque.
Sur que si tu passe à la Mega faudra voir.
Le monde Arduino n’est pas le monde professionnel avec ses normes, ses accords de coopération et de secondes sources amicales et coordonnées mais il a le mérite d’exister et il faut faire avec.

2)- Sur quels ports peut-on mettre un module I2C? Y a t il un nombre max ?

Sur les pins qui peuvent être SCL et SDA, cela dépend du microcontroleur utilisé.
Il n’y a pas à proprement parler de nombre max mais il y a des limitations :

  1. du point de vue protocole il faut des adresses disponibles

  2. l’I2C, et c’est très important, n’est pas faite pour des grandes longueurs,
    L’I2C est prévue pour des connexions sur une même plaque de circuit imprimé, soit quelques cm ou une à deux dizaines de cm

On fait plus mais à chaque fois c’est un cas particulier.
Ce qui, électriquement parlant, limite le nombre de modules c’est la capacité parasite des entrées de chaque module connecté.

Ce qu’il faut bien voir c’est que l’I2C utilise un schéma électrique à drains ouverts : c’est génial car il est très facile de connecter des circuits sur le bus.
Le prix a payer pour cette simplicité est qu il faut terminer le circuit électrique en ajoutant une résistance extérieure sur SCL et SDA.
Une seule résistance suffit, s’il y en a sur chaque modules comme c’est souvent le cas elles se retrouvent toute en parallèle.
Un module avec 4,7k comme on voit souvent cela fait 1 mA sous 5V dans le transistor activé.
Avec 10 modules connectés sur le bus le courant passera à 10 mA ce qui sera acceptable.
Mais 100 modules sur le bus feront 100 mA ==> il faudra dessouder des résistances.

Comme toujours : impossible de donner des règles générales, il n’y a que des cas particuliers.

3)- J’ai cherché sur eBay une platine avec des boutons poussoirs en I2C, afin de pouvoir avoir un max de boutons avec le moins de fils possible ( j’ai un arduino nano), en trouvez-vous? Si oui ou, le faites vous vous-même ?

Il existe des expenseur I2C ou des multiplexeur numériques non I2C.
En expenseur I2C il existe le “vénérable PCF 8575” mais ce n’est pas un vrai bidirectionnel ce qui veux dire que dans le sens où tu l’utilises (sens charge vers micro) il faudra gérer les interruptions ==> une usine à gaz.
Il existe des produits plus modernes dont tu peux définir le sens c’est à dire qu’ils sont de vrai bidirectionnel.
Je pense au MCP23017 qui est 16 bits, donc 16 boutons. Il existe aussi en 8bits avec une autre référence.

Réserves d’usage :

pour une future réalisation d’un projet d’une table pyrotechnique

Bien évidement toutes nos réponses et renseignements sont proposés “honnêtement” mais ne sauraient être des vérités engageant notre responsabilité.
C’est toi seul le responsable.

68tjs:
On ne peut plus aller sortir le chien et laisser une réponse en attente sans que quelqu'un réponde entre temps :grin:

Fais un petit robot pour sortir le chien à ta place... 8)

Le chien choisi un maître de chair et d'os, il ne choisira pas un bout de ferraille.
Attention : je n'ai pas parlé d'os comestibles :grin: .