Interface I2C Et Arduino

Table des matières:

Interface I2C Et Arduino
Interface I2C Et Arduino

Vidéo: Interface I2C Et Arduino

Vidéo: Interface I2C Et Arduino
Vidéo: Подключение нескольких устройств по шине i2c 2024, Novembre
Anonim

Dans cet article, nous verrons ce qu'est une interface I2C (ay-tu-si, i-two-tse), quelles sont ses fonctionnalités et comment l'utiliser.

Interface I2c
Interface I2c

Il est nécessaire

  • -Arduino;
  • - potentiomètre numérique AD5171;
  • - Diode électro-luminescente;
  • - résistance 220 ohms;
  • - 2 résistances pour 4,7 kOhm;
  • - les fils de connexion.

Instructions

Étape 1

Le protocole de communication série IIC (également appelé I2C - Inter-Integrated Circuits) utilise deux lignes de communication bidirectionnelles pour transférer des données, appelées bus SDA (Serial Data) et SCL (Serial Clock). Il y a aussi deux lignes électriques. Les bus SDA et SCL sont tirés vers le bus d'alimentation via des résistances.

Il y a au moins un maître dans le réseau qui initie la transmission de données et génère des signaux de synchronisation. Le réseau dispose également d'esclaves qui transmettent des données à la demande du maître. Chaque appareil esclave a une adresse unique à laquelle le maître l'adresse. L'adresse de l'appareil est indiquée dans le passeport (fiche technique). Jusqu'à 127 appareils peuvent être connectés à un bus I2C, dont plusieurs maîtres. Les appareils peuvent être connectés au bus pendant le fonctionnement, c'est-à-dire il prend en charge le branchement à chaud.

Schéma de connexion I2C
Schéma de connexion I2C

Étape 2

Arduino utilise deux ports pour travailler sur l'interface I2C. Par exemple, dans Arduino UNO et Arduino Nano, le port analogique A4 correspond à SDA, le port analogique A5 correspond à SCL.

Pour les autres modèles de carte:

Arduino Pro et Pro Mini - A4 (SDA), A5 (SCL)

Arduino Mega - 20 (SDA), 21 (SCL)

Arduino Leonardo - 2 (SDA), 3 (SCL)

Arduino Due - 20 (SDA), 21 (SCL), SDA1, SCL1

Mappage des broches Arduino sur les bus SDA et SCL
Mappage des broches Arduino sur les bus SDA et SCL

Étape 3

Pour faciliter l'échange de données avec les appareils via le bus I2C, une bibliothèque standard "Wire" a été écrite pour l'Arduino. Il a les fonctions suivantes:

begin (adresse) - initialisation de la bibliothèque et connexion au bus I2C; si aucune adresse n'est spécifiée, alors l'appareil connecté est considéré comme le maître; L'adressage 7 bits est utilisé;

requestFrom () - utilisé par le maître pour demander un certain nombre d'octets à l'esclave;

beginTransmission (adresse) - le début du transfert de données vers l'appareil esclave à une adresse spécifique;

endTransmission () - fin de la transmission de données à l'esclave;

write() - écriture de données depuis l'esclave en réponse à une requête;

available () - renvoie le nombre d'octets d'informations disponibles pour la réception de l'esclave;

read () - lit un octet transféré de l'esclave au maître ou du maître à l'esclave;

onReceive () - indique la fonction à appeler lorsque l'esclave reçoit une transmission du maître;

onRequest () - Indique une fonction à appeler lorsque le maître reçoit une transmission de l'esclave.

Étape 4

Voyons comment travailler avec le bus I2C en utilisant Arduino.

Tout d'abord, nous allons assembler le circuit, comme indiqué sur la figure. Nous contrôlerons la luminosité de la LED à l'aide du potentiomètre numérique à 64 positions AD5171, qui se connecte au bus I2C. L'adresse à laquelle on fera référence au potentiomètre est 0x2c (44 en décimal).

Circuit de contrôle LED utilisant un potentiomètre numérique et Arduino
Circuit de contrôle LED utilisant un potentiomètre numérique et Arduino

Étape 5

Ouvrons maintenant une esquisse à partir des exemples de la bibliothèque "Wire":

Fichier -> Échantillons -> Fil -> digital_potentiometer. Chargeons-le dans la mémoire Arduino. Allumons-le.

Vous voyez, la luminosité de la LED augmente cycliquement, puis s'éteint soudainement. Dans ce cas, nous contrôlons le potentiomètre à l'aide de l'Arduino via le bus I2C.

Conseillé: