Table des matières:

Présentation d'I2C avec les modules Zio et Qwiic : 6 étapes
Présentation d'I2C avec les modules Zio et Qwiic : 6 étapes

Vidéo: Présentation d'I2C avec les modules Zio et Qwiic : 6 étapes

Vidéo: Présentation d'I2C avec les modules Zio et Qwiic : 6 étapes
Vidéo: Расстояние до гистограммы с помощью лазерного датчика VL53L0X на ЖК-дисплее для Arduino 2024, Novembre
Anonim
Présentation d'I2C avec les modules Zio et Qwiic
Présentation d'I2C avec les modules Zio et Qwiic

Robin Sharma a déclaré: « De petites améliorations quotidiennes au fil du temps conduisent à des résultats étonnants ». Vous pensez peut-être « Aw, un autre article I2C ? ». Eh bien, il existe certainement des milliers d'informations concernant l'I2C. Mais restez à l'écoute, ce n'est pas juste un autre article I2C. Le système Qwiic Connect et les cartes de dérivation périphériques Zio sont définitivement des changeurs de jeu I²C !

introduction

Si vous construisez des projets électroniques et faites des choses géniales, vous vous êtes peut-être rendu compte qu'à mesure que vos projets grandissent, votre maquette commence à ressembler à une fosse aux serpents (un peu désordonnée, non ?).

De plus, si vous avez plusieurs projets en cours, vous passez beaucoup de temps à passer d'un projet à l'autre.

Nous sommes des fabricants, nous comprenons donc la lutte. Notre contribution la plus récente à la communauté OHS est un système de prototypage modulaire appelé ZIO, adoptant le système de connexion Qwiic. Qwiic est un moyen très pratique de communiquer une carte de circuit programmable aux capteurs, actionneurs et cartes de dérivation via I²C.

Étape 1: Qu'est-ce que I²C et pourquoi nous l'aimons

Qu'est-ce que I²C et pourquoi nous l'aimons
Qu'est-ce que I²C et pourquoi nous l'aimons

I²C est le bus multi-maître le plus largement utilisé, ce qui signifie que plusieurs puces peuvent être connectées au même bus. Il est utilisé dans de nombreuses applications entre un maître et un esclave ou plusieurs périphériques maître et esclave. Des microcontrôleurs aux smartphones en passant par les applications industrielles, en particulier pour les appareils vidéo tels que les écrans d'ordinateur. Il peut être facilement mis en œuvre dans de nombreuses conceptions électroniques (et récemment encore plus facilement avec le connecteur Qwiic).

Si nous devions décrire I²C en deux mots, nous utiliserions probablement la simplicité et la flexibilité.

L'un des plus grands avantages de l'I²C par rapport aux autres protocoles de communication est qu'il s'agit d'une interface à deux fils, ce qui signifie qu'il n'a besoin que de deux fils de signal, SDA (Serial Data Line) et SCL (Serial Clock Line). Ce n'est peut-être pas le protocole le plus rapide, mais il est bien connu pour être très flexible, permettant une flexibilité dans la tension du bus.

Une autre caractéristique importante qui rend ce bus attrayant est la communion entre le maître et l'esclave. Plusieurs appareils peuvent être connectés au même bus et il n'est pas nécessaire de modifier le câblage entre les appareils car chaque appareil a une adresse unique (le maître sélectionne l'appareil pour communiquer).

Étape 2: Regardons de plus près

Regardons de plus près
Regardons de plus près
Regardons de plus près
Regardons de plus près
Regardons de plus près
Regardons de plus près
Regardons de plus près
Regardons de plus près

Alors, comment fonctionne I²C ? Plus tôt, nous avons mentionné que l'une des caractéristiques les plus importantes est la tolérance de tension, cela est possible car I²C utilise un collecteur ouvert (également appelé drain ouvert) pour les lignes de communication SDA et SCL.

SCL est le signal d'horloge, synchronise le transfert de données entre les appareils sur le bus I²C et il est généré par le maître. Tandis que SDA transporte les données à envoyer ou à recevoir des capteurs ou autres appareils connectés au bus.

La sortie du signal est reliée à la masse, ce qui signifie que chaque appareil est imposé comme bas. Pour récupérer le signal au niveau haut, les deux lignes sont connectées à une tension d'alimentation positive via une résistance de rappel à terminer.

Avec les modules ZIO, nous avons ce qu'il vous faut, toutes nos cartes de dérivation intègrent la résistance de traction nécessaire.

I²C suit un protocole de message afin de communiquer le maître avec les appareils esclaves. Les deux lignes (SCL et SDA) sont communes à tous les esclaves I²C, tous les esclaves du bus écoutent le message.

Le protocole de message suit le format indiqué dans l'image ci-jointe:

Cela peut sembler compliqué à première vue, mais nous avons une bonne nouvelle. Lorsque vous utilisez Arduino IDE, il existe la bibliothèque Wire.h, pour simplifier toute la configuration du protocole de message I²C.

La condition de démarrage est générée lorsque la ligne de données (SDA) tombe au niveau bas tandis que la ligne d'horloge (SCL) reste au niveau haut. Lors de la configuration d'un projet sur l'interface Arduino, nous n'avons pas vraiment besoin de nous soucier de générer la condition de démarrage, il sera lancé avec une fonction spécifique (Wire.beginTransmission(slaveAddress)).

De plus, cette fonction initie également la transmission avec l'adresse esclave spécifique. Pour choisir l'esclave pour communiquer sur le bus partagé, le maître passe l'adresse à l'esclave pour communiquer. Une fois l'adresse définie pour communiquer avec l'esclave correspondant, le message suit avec un bit de lecture ou d'écriture, selon le mode sélectionné.

Le salve donne une réponse avec un accusé de réception (ACK ou NACK), et d'autres dispositifs esclaves sur le bus actualisent le reste des données jusqu'à ce que le message soit terminé et que le bus soit libre. Suite à l'ACK, une séquence d'un registre d'adressage interne des esclaves poursuit la transmission.

Lorsque les données sont envoyées, le message de transfert se termine par une condition d'arrêt. Pour terminer la transmission, la ligne de données passe à l'état haut et la ligne d'horloge reste à l'état haut.

Étape 3: I²C et ZIO

I²C et ZIO
I²C et ZIO

Nous avons compris que je ferais mieux de tracer toutes les informations ci-dessus dans une conversation entre un maître (alias Zuino, notre micro) et des esclaves (alias ZIO Breakout Boards).

Dans cet exemple de base, nous utilisons le capteur de distance ZIO TOF et l'écran ZIO OLED. Le TOF donne les informations de distance tandis que le ZIO Oled affiche les données. Les composants et appareils utilisés:

  • ZUINO M UNO - le Maître
  • Écran OLED ZIO - Esclave_01
  • Capteur de distance ZIO TOF - Esclave_02
  • Câble Qwiic - Connexion facile pour les appareils I²C

Voici à quel point il est facile de connecter les cartes les unes aux autres à l'aide de Qwiic, aucune maquette n'est nécessaire, aucun câble supplémentaire n'est nécessaire ou des broches ZUINO. La ligne série Clock and Data du ZUINO est automatiquement connectée au capteur de distance et à l'OLED à l'aide du connecteur Qwiic. Les deux autres câbles sont le 3V3 et le GND.

Tout d'abord, examinons les informations nécessaires, pour communiquer le maître avec les esclaves, nous aurions besoin de connaître les adresses uniques.

Appareil: capteur de distance ZIO

  • Numéro de pièce: RFD77402
  • Adresse I2C: 0x4C
  • Lien vers la fiche technique

Appareil: écran OLED ZIO

  • Numéro de pièce: SSD1306
  • Adresse: 0x3C
  • Lien vers la fiche technique

Pour trouver l'adresse unique des appareils esclaves, ouvrez la fiche technique fournie. Pour le capteur de distance, l'adresse est fournie à la section Interface du module. Chaque capteur ou composant a une fiche technique différente avec des informations différentes fournies. Parfois, il peut être difficile de le trouver sur une feuille de données de 30 pages (indice: ouvrez l'outil de recherche sur la visionneuse PDF et tapez « adresse » ou « ID de périphérique » pour une recherche rapide).

Maintenant que l'adresse unique de chaque appareil est connue, pour lire/écrire des données, l'adresse du registre interne doit être identifiée (également à partir de la fiche technique). En consultant la fiche technique du capteur de distance ZIO, l'adresse pour obtenir la distance correspond à 0x7FF.

Dans ce cas particulier, nous n'avons vraiment pas besoin de ces informations pour utiliser le capteur comme la bibliothèque le fait déjà.

Prochaine étape, la main sur le code. ZUINO M UNO est compatible avec Arduino IDE, ce qui rend la configuration beaucoup plus facile. Les bibliothèques nécessaires pour ce projet sont les suivantes:

  • Fil.h
  • Adafruit_GFX.h
  • Adafruit_SSD1306.h
  • SparkFun_RFD77402_Arduino_Library.h

Wire.h est une bibliothèque arduino, les deux bibliothèques Adafruit sont utilisées pour l'OLED et la dernière est utilisée pour le capteur de distance. Consultez ce didacticiel sur la façon de lier les bibliothèques *.zip à l'IDE Arduino.

En regardant le code, il faut d'abord déclarer les bibliothèques ainsi que l'adresse de l'OLED.

Dans la configuration () la transmission commence et le texte est affiché pour la fonctionnalité du capteur de distance.

La boucle() prend des mesures sur la distance et l'OLED l'imprime.

Vérifiez l'exemple de code source sur le lien github.

L'utilisation des deux tableaux de répartition est assez facile dans tous les sens. Côté matériel, le connecteur Qwiic rend la configuration matérielle plus rapide et beaucoup moins salissante que d'avoir une planche à pain et des câbles de raccordement. Et pour le firmware, l'utilisation des bibliothèques correspondantes pour la communication I2C, le capteur et l'affichage rend le code beaucoup plus simple.

Étape 4: Quelle est la longueur maximale du câble ?

La longueur maximale dépend des résistances de rappel utilisées pour SDA et SCL et de la capacité du câble. Les résistances déterminent également la vitesse du bus, plus la vitesse du bus est faible, plus la limite de câble est longue. La capacité du câble limite le nombre d'appareils sur le bus, ainsi que la longueur du câble. Les applications typiques limitent la longueur du fil à 2,5-3,5 m (9-12 pi) mais il existe des variations selon le câble utilisé. Pour référence, la longueur maximale sur les applications I2C utilisant des câbles à paires torsadées blindées 22 AWG est d'environ 1 m (3 pi) à 100 kbauds, 10 m (30 pi) à 10 kbauds.

Il existe certains sites comme mogami ou WolframAlpha qui permettent d'estimer la longueur du câble.

Étape 5: Comment connecter plusieurs appareils sur le même bus ?

Comment connecter plusieurs appareils sur le même bus ?
Comment connecter plusieurs appareils sur le même bus ?
Comment connecter plusieurs appareils sur le même bus ?
Comment connecter plusieurs appareils sur le même bus ?

I2C est un bus série, où tous les appareils sont connectés à un bus partagé. Avec le connecteur Qwiic, les différentes cartes de dérivation peuvent être connectées les unes après les autres à l'aide du connecteur Qwiic. Chaque carte possède au moins 2 connecteurs Qwiic.

Nous avons créé différentes cartes pour résoudre certaines des limitations Qwiic et I2C. La carte adaptateur Zio Qwiic est utilisée pour se connecter via des appareils Qwiic sans connecteur Qwiic, en utilisant un câble d'en-tête mâle Qwiic vers breadboard. Cette astuce simple crée des possibilités illimitées.

Pour connecter différents appareils sur un réseau de bus ou d'arborescence, nous avons créé le Zio Qwiic Hub.

Enfin, le Zio Qwiic MUX permet la connexion de deux appareils ou plus utilisant la même adresse.

Étape 6: Qu'est-ce que la terminaison I2C ?

I2C doit se terminer, la ligne est donc libre d'ajouter d'autres appareils. Cela peut être un peu déroutant, car le terme de terminaison est couramment utilisé pour décrire les résistances de rappel du bus (pour fournir un état par défaut, dans ce cas pour fournir du courant au circuit). Pour les cartes Zuino, la valeur de la résistance est de 4,7 kΩ.

Si la terminaison est omise, il n'y aura aucune communication sur le bus - le maître ne pourra pas générer la condition de démarrage, donc le message ne sera pas transmis aux esclaves.

Pour plus d'informations et les fonctionnalités de Zio, consultez les derniers produits Zio. Le but de cet article est d'expliquer les bases de la communication I²C et son fonctionnement avec les connecteurs Zio et Qwiic. Restez connectés pour plus de nouvelles.

Conseillé: