Este artigo aborda:
O que é a comunicação i2c em Arduino
I2c (Circuito inter-integrado) é um protocolo popular para conectar microcontroladores a periféricos, como sensores e displays. Arduino Uno, uma placa de microcontrolador amplamente usada, pode ser configurada para se comunicar com outros dispositivos usando o protocolo de comunicação I2C.
Alguns destaques principais da comunicação I2C incluem:
Capacidade multi-mestre e multi-escravo: I2C suporta vários dispositivos mestre e vários dispositivos de escravos em um único barramento, permitindo comunicação entre vários dispositivos ao mesmo tempo.
Contagem baixa de pinos: I2C usa apenas duas linhas, SDA e SCL, para comunicação, que reduz o número de conexões necessárias e simplifica a fiação.
Dispositivos endereçáveis: Cada dispositivo I2C no barramento tem um endereço exclusivo, permitindo fácil identificação e comunicação com dispositivos específicos.
Alta velocidade: I2C é capaz de altas taxas de dados de até 3.4 Mbps, tornando-o adequado para aplicativos de transferência de dados de alta velocidade.
Economia de energia: I2C permite a comunicação de baixa potência entre os dispositivos, permitindo que os dispositivos sejam colocados em modos de baixa energia quando não se comunicando e acorde a pedido.
I2C pinos em Arduino
Na comunicação I2C, duas linhas são utilizadas:
O mestre Arduino controla a linha do relógio I2C e inicia a comunicação com os periféricos, enquanto os dispositivos escravos respondem aos pedidos do mestre.
Na tabela abaixo, você encontrará as pinôs da interface i2C em várias placas do Arduino:
Quadro | I2C pinos |
---|---|
Arduino Nano | SDA-A4 | SCL-A5 |
Arduino Mega | SDA-A4 | SCL-A5 e SDA-20 | SCL-21 |
Arduino Leonardo | SDA-A4 | SCL-A5 |
Arduino Uno | SDA-A4 | SCL-A5 |
Arduino Micro | SDA-02 | SCL-03* |
*Os pinos i2c podem variar dependendo de qual versão da placa você está usando gentilmente, consulte a respectiva folha de dados para obter mais detalhes.
O que é I2C Wire Library
A biblioteca de arame i2C está pré -instalada em um IDE que cria comunicação entre dispositivos i2c. A biblioteca contém funções para configurar e comunicar no barramento i2c, incluindo funções para inicializar o barramento como um dispositivo mestre ou escravo, enviar e receber dados e controlar a velocidade do relógio.
A biblioteca facilita a comunicação com os dispositivos I2C, abstraindo os detalhes de baixo nível do protocolo I2C e fornecendo funções simples e de alto nível que podem ser usadas em esboços de Arduino. Por exemplo, o começar() A função é usada para inicializar o barramento i2c como um dispositivo mestre ou escravo
A biblioteca também suporta o uso de vários ônibus I2C, permitindo comunicação com vários dispositivos ao mesmo tempo. Se você está lidando com vários sensores ou exibições para um projeto, isso é útil.
Conectando dois Arduino Board usando I2C como mestre e escravo
Para estabelecer a comunicação I2C entre duas placas Arduino UNO, os pinos SDA e SCL de ambos os conselhos devem ser conectados e compartilhar um terreno comum. A comunicação pode ser alcançada usando a biblioteca de fios embutidos em Arduino, que contém funções para configurar e comunicar no barramento i2c.
Esquemático
Abaixo, a imagem mostra duas placas do Arduino UNO conectadas na configuração do mestre-escravo:
Código mestre
Carregue abaixo o código para Master Arduino Board:
#include /*biblioteca de arame para comunicação i2c* /
int x = 0; /*Inicialize uma variável para armazenar um número*/
Void Setup ()
/*Inicie o barramento i2C como mestre*/
Arame.começar();
Void Loop ()
/*O endereço do barramento I2C é definido como 9 para dispositivo de escravos*/
Arame.BEGN TRANSMISSÃO (9);
Arame.escreva (x); /*envia x*/
Arame.ENDTRANSMISSÃO (); /*Pare de transmitir*/
x ++; /*Incremento x*/
if (x> 5) x = 0; /*Redefinir x assim que obtém 6*/
atraso (1000);
O código iniciado por inclui a biblioteca mestre i2c. É inicializada uma variável que armazenará os valores inteiros que começam de 0 a 5. O endereço I2C para o dispositivo escravo é definido como 9. Usando a função da biblioteca de arames
Na placa mestre, o começar() A função inicializará o barramento i2C como um dispositivo mestre
Depois que as placas estão configuradas, elas podem se comunicar sobre o barramento i2c. O mestre Arduino solicita dados do Slave Arduino Board e o escravo podem responder com os dados solicitados.
Código de escravos
Faça upload abaixo do código para o Slave Arduino Board, no qual o LED está conectado:
#incluir
int led = 13; /*Pino LED para saída*/
int x = 0; /*variável para receber valor do mestre arduino*/
Void Setup ()
pinmode (LED, saída); /*PIN LED SET como saída*/
Arame.começar (9); /*I2C Dispositivo escravo lerá os dados do Master no endereço#9*/
Arame.OnReceive (Receb TheEvent); /*Anexe uma função para acionar quando algo é recebido*/
Void ReceberEvent (int bytes)
x = fio.ler(); /*Leia um personagem do mestre i2C*/
Void Loop ()
/*Se o valor recebido for 0 piscar liderado por 200 ms*/
if (x == 0)
DigitalWrite (LED, alto);
Atraso (200);
DigitalWrite (LED, Low);
Atraso (200);
/*Se o valor recebido for 3 piscar liderado por 400 ms*/
if (x == 3)
DigitalWrite (LED, alto);
atraso (400);
DigitalWrite (LED, Low);
atraso (400);
Código iniciado incluindo biblioteca de arame e, em seguida, definimos o LED incorporado no pino 13 do escravo Arduino como saída. Em seguida, uma variável x está definido que receberá dados do mestre Arduino. Usando esse valor inteiro, piscaremos liderados em um personagem em particular assim que for recebido.
Em laço(), O personagem recebido é então traduzido para uma velocidade diferente de LED piscando, dependendo do personagem recebido. Se a condição for usada quando o caractere recebido do dispositivo mestre for 0, o LED piscará com 200ms e se o caractere recebido for 3 LED, piscará com atraso de 400ms.
Em caso de qualquer outro personagem, o LED permanecerá desligado.
Saída
Na saída, podemos ver o LED conectado com escravo arduino pisca toda vez que o mestre envia um personagem 0 ou 3.
Conclusão
A comunicação I2C permite que vários dispositivos se comuniquem usando um barramento comum. As placas Arduino podem ser configuradas para se comunicar usando o I2C conectando os pinos SDA e SCL e configurando as placas como mestre e escravo usando a biblioteca de arame em Arduino. Usar a comunicação de múltiplos dispositivos de I2C em um projeto é, portanto, mais fácil e mais eficiente.