Nouvelles:

Le Forum est maintenant chiffré (préambule https). Bien sûr, des liens externes insérés dans les sujets vont demeurer inchangés. Mais la composition des pages du Forum est désormais sécurisée. Si des problèmes d'affichage surviennent, veillez à vider votre cache pour ce site.

Menu principal

Piloter 10 mini-afficheur OLED en I2C avec un seul arduino

Démarré par Multiman78, Mai 03, 2017, 11:39:19 AM

« précédent - suivant »

Multiman78

Bonjour,


J'espère que cela n'a pas été évoqué ailleurs dans le forum, je n'ai pas trouvé.  ::)


Les afficheurs OLED que l'on peut trouver sur bangood en I2C permettent en général de sélectionner une adresse parmi 2 en soudant/dessoudant un shunt au dos.


Je trouve cela peu et je pense qu'un arduino peut en gérer bien plus.


Mon idée est de faire un tableau de contrôle avec plusieurs afficheurs 0,91" (pas 0.96" mais c'est pareil). Peut-être 6, mais cela pourrait être plus ou moins. Je ne me vois pas mettre un arduino (même mini) pour 2 écrans.


Il y a peut-être un solution en utilisant la broche E du circuit I2C ? mais elle n'est, de base, pas accessible sur ces modules.


Cette vidéo pourrait être étendue à  la création d'un réseau I2C en imaginant mettre 10,20,30 capteurs, actionneurs, afficheurs I2C sur un même réseau piloté par un seul arduino ou micro-contrôleur.


J'avais fait quelque chose de ressemblant à  base de PIC16f84A , il y a plus de 15 ans, mais j'avais du gérer tout le protocole I2C. Fixant moi-même des adresses de circuits... Cela a fonctionné mais je n'ai pas pu réaliser tout ce que j'avais en tête.


Voilà  une proposition de vidéo  :)

Électro-Bidouilleur

Merci de la suggestion. J'sais pas si ce serait du bon matériel pour une vidéo. Faut aussi que j'y vois un intérêt personnel dans le sujet. J'ai un aveu à  vous faire: Je n'aime pas le protocole I2C! Et je ne suis pas le seul... Il en faudra plus pour me convaincre.

Quelques pistes de réflexion:
Si le signal Enable n'est pas disponible, la solution consiste à  n'envoyer l'horloge SCL qu'à  l'affichage concerné. C'est donc dire qu'un décodeur d'adresse du genre 74138 pourrait suffire à  répondre au besoin. C'est plus facile de traiter l'horloge puisqu'elle est uni-directionnelle. Il est possible que le SDA doivent être passé en tampon s'il y a trop d'affichages sur le bus. C'est un autre défi car ce signal est bi-directionnel. Il faudra alors que le micro-contrôleur change la direction du tampon lorsqu'il reçoit de l'info...

Multiman78

Bonjour et navré de répondre tard car je ne reçois aucun message de notification lorsqu'une réponse est postée.. J'ai pourtant coché la case dans mon profil. Peut-être qu'un modo pourrais me dire cela qu'il faut faire.


Pour ce que je veux faire, c'est à  dire mettre plusieurs afficheur OLED en I2C sur un seul arduino, le vendeur français de mon écran m'a conseillé ce produit http://www.ebay.fr/itm/401276820622 qui est un multiplexeur I2C pour 8 périphériques. J'ai commandé et vais testé.


J'aime bien l'I2C pour avoir écrit en assembleur pour réaliser "la discussion I2C" depuis un PIC16F.
Cette carte peu chère peut répondre à  mon besoin.
Le protocole SPI je ne connais pas bien ses avantages. Je trouverai bien une vidéo sur le sujet.


Merci de m'avoir répondu.

Électro-Bidouilleur

Oui, bien sûr, un mux va bien fonctionner aussi. Je n'osais pas en proposer car c'est assez spécialisé, mais s'il en existe un sur une plaquette comme ça, c'est excellent!

Pour ce qui est des notifications par courriel, j'ai vérifié et vous êtes bien inscrit aux notifications. Il est possible que vous soyez parmis ceux qui ont une adresse courriel que mon fournisseur d'hébergement web n'aime pas. Vous n'êtes pas seul! Il n'aime pas non plus yahoo.ca. Je ne reçois pas de notifications non plus, même si je suis l'admin. Malgré la plainte, ils n'ont rien pu faire... Désolé pour l'irritant.

Multiman78

Bonjour,
Je serai étonné que cela vienne d'un problème de serveur d'email, car mon email est sur un hébergement mutualisé personnel. Mon email est donc monprenom@monnom.fr

clement

Bonjour à  tous,

Premier post sur ce forum, j'apprécie les vidéos pour leur aspect pédagogique qui correspond à  mon besoin (propos imagé, humour...)

En lisant ce message de Bertrand, j'aurais voulu en savoir un peu plus sur sa motivation.
Citation de: Électro-Bidouilleur le Mai 03, 2017, 12:05:45 PM
J'ai un aveu à  vous faire: Je n'aime pas le protocole I2C! Et je ne suis pas le seul... Il en faudra plus pour me convaincre.

J'utilise principalement les protocoles SPI et I²C (mais aussi serie) et jusque maintenant je ne leur ai trouvé aucun défaut: librairie disponible, simplicité de cablage. Aussi beaucoup de composant fonctionne avec ces protocoles (capteur de pression, accéleromètre...) Aussi le monde de l'automobile semble avoir adopté ces protocoles à  plus ou moins grande échelle, BOSCH, NXP, HONEYWELL fournissent bon nombre de capteur pour les véhicules "d'aujourd'hui", une partie significatif de leur catalogue utilise ces protocoles.

Du coup, ne connaissant que les côtés positif de ces protocoles j'aimerais en connaitre les côtés négatifs (sans doute mon manque d'expérience est la cause de mon ignorance).
Pourriez-vous "argumenter" votre remarque ?

Bien cordialement,
Clément

Électro-Bidouilleur

Bonjour Clément. Bienvenue sur le Forum!

Le SPI est plus simple à  opérer (et surtout à  déverminer) car il n'y a pas de ligne de données bi-directionnelle. Il y a liberté complète de la fréquence de l'horloge. Les transactions sont simples (en autant que l'on se tienne en semi-duplex, ce qui est le cas dans la majorité des cas). Un débutant aura peu de difficulté à  interpréter la datasheet, et à  lancer ou lire les bits avec de simples entrées/sorties.

Les transactions I2C sont beaucoup plus élaborées (le handshaking est plutôt pénible). Il y a aussi les adresses à  gérer, ce qui est parfois limitant (conflits, incompatibilité et insuffisance des adresses de puces entre elles). Le I2C force parfois des débits fixes (exemple 100KHz ou 400KHz), ce qui rend la communication plus difficile à  implémenter avec un simple micro-contrôleur. La nature bi-directionnelle de la ligne SDA la rend difficile à  regénérer pour les liens plus long. Il faut s'équiper d'une puce I2C spécialisée pour faire cela (un commutateur analogique ne fait pas toujours l'affaire).

Toutes ces raisons font que c'est plus difficile pour le bidouilleur moyen de créer une connexion I2C de toutes pièces avec un simple micro-contrôleur. Si celui-ci n'a pas de bloc-port I2C intégré, vous aurez du travail! Et le déverminage peut être cauchemardesque, car il devient difficile de voir quel puce envoie quels bits, etant donné la nature "open-drain" des lignes.

La simplicité des 2 fils du I2C a un prix....

Ceci dit, je suis à  préparer une série de vidéos sur les communications série. Le I2C y sera, n'ayez crainte! Loin de moi l'idée de dénigrer le I2C. Il faut faire avec, tout simplement. Je n'ai fait que vous expliquer mes préférences.

clement

Merci pour cette réponse.

Je porterai attention aux vidéos future sur le sujet, je suis curieux de connaitre les "alternatives" à  l'I²C et au SPI. Aussi les longueurs de liens sont un point qui m'intéresse; du I²C avec 3m de fil entre l'émetteur et le récepteur... ça fonctionne ? et en SPI ? le port Série aussi à  une limite de longueur ? ces longueurs ne sont-elles pas dépendante de la fréquence du bus (100KHz/400KHz en I²C, 9600bauds/4800bauds... en série) ?

Nul besoin de répondre à  ces questions ici, j'attendrais la vidéo pour connaitre tous les tenants et les aboutissants ;-)

Bien cordialement,
Clément

Électro-Bidouilleur

Je ne suis pas certain que j'irai autant dans ces détails, de comparer les longueurs maximales de l'une ou l'autre des solutions. Mais I2C (et même SPI) ne sont pas des implémentations physiques faites pour de longues distances, de par leur nature (fil unique plutôt qu'en paire différentielle, driver LVCMOS bien ordinaire). Sur des plus grandes distance ça "pourrait" marcher avec une terminaison série, et sur des liens de 50 ohms de bonne qualité. Mais la capacité sur la ligne va ralentir les fronts montants (essentiellement une résistance pull up). Faudra donc ralentir de beaucoup la vitesse. Les fronts sont plus limitant que la vitesse en tant que telle.

J'ai réussis à  faire marcher une sonde de température SHT10 (lien s'apparentant à  du I2C) sur 15m de câble CAT5, mais je crois avoir ajouté des composants passifs aux deux extrémités, pour corriger la forme de l'onde. J'avais aussi soigneusement choisi quels signaux seraient en paire avec la masse. C'est pas du standard de faire cela...

Multiman78

Pour ma part, mais tout le protocole piloté entre 2 pic16f84a, de l'I2C sur 15m avec une vitesse pas trop élevée (je ne me souviens plus combien).
Mais je ne sais plus si je connaissais le SPI. J'avais aimé dans le I2C, cabler toute ma maison et affecter à  chaque "périphérique" une adresse.
Mais je ne suis pas allez plus loin, j'ai changé de maison.... ???