CENTRAL DE ATENDIMENTO
De segunda à sexta das 8:00 às 17:30
(11) 3522-7626 / vendas@robocore.net
Retornar
ao topo

Comunicação entre Arduinos: I2C - Parte 2



Esse tutorial é a segunda parte do Tutorial Comunicação entre Arduinos: I2C - Parte 1. Se você ainda não viu, recomendamos que veja a Parte 1 do tutorial antes prosseguir.
Nessa segunda parte do tutorial a placa Slave estará conectada ao botão e, ao pressionar este botão, o estado do led conectado à placa Master será alterado. A placa Master trabalhará como o receptor e a placa slave como o emissor.

Para isso precisaremos de: Confira na imagem ao lado como realizar as conexões de cada BlackBoard.

Agora que você já montou todo o circuito, é necessário programar cada placa com seu código. Neste momento, é importante que você verifique se está gravando a BlackBoard correta, por isso recomendamos que conecte e programe uma placa por vez. Desta forma você não irá se confundir com as portas COM.

Código para a BlackBoard Master (conectada ao LED):

Código para a BlackBoard Slave (conectada ao botão):

Agora basta alimentar ambas as placas que tudo deve funcionar perfeitamente. Aperte o botão da BlackBoard Slave e o LED conectado a placa Master deve acender. Se você apertar novamente o mesmo deve apagar. Agora você já sabe como enviar ou fazer requisições de mensagens utilizando o protocolo de comunicação I2C.


Para fazer comentários é necessário estar logado. Efetuar login.

Você ainda nao é cadastrado? Cadastre-se agora!


fcarlosrodrigues
date Enviado: 2019-07-04 11:29:58
Olá,
Também estou buscando conectar vários (10 a 15) arduinos entre si, pensei de usar o protocolo i2c, (porém seria necessário endereçar os escravos para solicitação de leitura e para distinguir as leituras dos sensores), teria um exmplo desse tipo de comunicação ?
Muito obrigado!
 Abraço!

Giovanni5
date Enviado: 2019-07-04 11:54:59
fcarlosrodrigues
Infelizmente não temos ainda um exemplo pronto para uma comunicação I2C com mais escravos. Entretanto, esse tutorial é um ótimo exemplo para entender como realizar requisições e enviar informações entre mestre e escravos através deste protocolo.

vitinho
date Enviado: 2019-04-05 12:36:34
Olá, consigo utilizar o protocolo I2C para que 4 SLAVES realizem a leitura de sensores analógicos diversos e as enviem para o MASTER? Irei precisar desenvolver isso para o meu TCC ...

Giovanni5
date Enviado: 2019-04-05 16:10:23
vitinho
É possível realizar essa comunicação, porém seria necessário endereçar os escravos para solicitação de leitura e para distinguir as leituras dos sensores. Deste modo cada condição de leitura terá uma reação diferente sem a necessidade de mais mestres.

vitinho
date Enviado: 2019-05-01 11:10:03
vitinho
obg pela ajuda!! tenho mais uma pergunta rsrs ja realizei a programação do sistema e estão se comunicando, porem percebi que os valores lidos pelo master estão entre um intervalo de 0  a 255, enquanto os escravos realizam a leitura normalmente, creio que seja uma limitação do protocolo I2c.

Giovanni5
date Enviado: 2019-05-02 12:00:56
vitinho
O protocolo I2C possui diversas limitações, porém pode ser que essa diferença na leitura entre escravos e mestre seja causada  apenas um problema de código. Caso realmente não seja um problema de código, é necessário estudar qual limitação do protocolo está causando este distúrbio, para, se possível, encontrar uma solução.

vitinho
date Enviado: 2019-05-06 19:52:45
vitinho
Você têm algum exemplo de como enviar dois dados de um arduino para o outro via o protocolo i2C.

Giovanni5
date Enviado: 2019-05-07 09:49:57
vitinho
Infelizmente não temos nenhum tutorial pronto sobre como enviar mais de um dado entre placas da plataforma Arduino. Porém, se você já consegui enviar um dado de uma placa para outra, enviar mais de um dado, deve ser apenas uma questão de implementação do código.

rubensx
date Enviado: 2017-09-06 22:21:51
Amigos, qual a distância de cabo que o i2C pode transferir informações sem perda? Na hipótese de ter dois arduinos um com um sensor e outro com um display e os dados sendo comunicados entre eles, poderiam ficar 2 metros longe um do outro? em testes apenas o sensor 2 metros longe (sensor i2c) a impedância do cabo parece interferir... Será que existe um amplificador de sinal i2c? obrigado

Francois
date Enviado: 2017-09-08 13:54:07
rubensx
Depende da configuração. Por ser um sinal digital, a distância de transmissão é maior do que um sinal analógico. Porém, a impedância influencia no sinal de transmissão e pode tornar a mensagem incompreensível. Verifique as conexões, se o GND das duas placas estão conectados, senão você pode tentar usar um cabo blindado, resistores de pull-up (2k2, 4k7) e/ou um amplificador/buffer I2C.

tobisd
date Enviado: 2017-06-28 09:45:44
para que serve o sck(Serial Clock)?
nao poderia haver apenas o SDA(Serial Data)?

MarceloFarias
date Enviado: 2017-06-28 10:18:47
tobisd
O SCK é um clock responsável por garantir o sincronismo da comunicação. A cada pulso os dispositivos sabem que uma unidade de informação foi transferida, assim podem identificar o início e o fim de cada bit na comunicação. 

tobisd
date Enviado: 2017-06-18 19:31:24
Para que serve o clock sck, não poderia simplesmente ser enviado
O dado?


MarceloFarias
date Enviado: 2017-06-19 15:11:09
tobisd
Não entendi sua pergunta.