Física Para Sistemas Embarcados – Turma MA3B
Experimento I2C
Nomes: Antonio Mello Babo RA00275072
Lucas Benicio Lima RA00275010
Stefano Martins Ferreira Giordano RA00277890
Introdução:
O protocolo I2C descreve o funcionamento do barramento de comunicação serial que
utiliza dois fios, foi inventado pela Phillips, com o funcionamento de 100kHz. Este
protocolo atualmente ainda é muito utilizado devido ao seu baixo custo e simplicidade. A
sua comunicação é síncrona e enviada de acordo com um sinal de clock, por isso os dois
fios, sendo um responsável por transmitir o sinal de clock e um para a transmissão de
dados, onde a comunicação é enviada bit a bit (Um bit por vez).
Objetivo:
Entender como a comunicação I2C funciona, neste caso em dois Arduinos UNO.
Metodologia:
Este experimento consiste em observar a partir da serial port como é feito um exemplo de
conexão bit a bit entre dois Arduinos. Sendo que teremos um Arduino emissor de dado)
e um usado para receber e exibir os dados(Servo). Para este experimento precisamos de :
- 2 Arduinos
- 3 Jumpers
Imagem 1 – Circuito I2C montado com 2 Arduinos
O circuito consiste em ligar os dois cabos requeridos pelo I2C nas entradas analógicas,
(neste caso nas duas A4 e A5) e conectados ambos Arduinos no mesmo aterramento, ou
seja, no mesmo GND.
O código do Arduino transmissor inclui um begin da biblioteca Wire, onde ele inicia a
comunicação pelo endereço 8, depois envia sinal de 5 bytes da string e mais o valor de x
em um byte, para a transmissão de dados e há um incremento no valor de x, esperando
assim mais 500ms para continuar enviando dados.
O código do Arduino servo começa também com a conexão no endereço 8, após isto
registra o evento de recebimento dos dados e inicia a comunicação na porta serial 9600
para dispor os dados na tela.
A função de receber evento verifica as conexões disponíveis(string), faz as leituras das
mesmas e depois printa a variável, isto ocorre pelo fato de uma string ser uma cadeia de
caracteres, é preciso criar um loop para mostrarmos na tela o texto “x is ”. Depois é feita
a leitura do valor de x, e a mesma é printada no terminal em conjunto cm uma quebra de
linha.
Imagem 2 – Como o monitor Serial fica após a execução do circuito
Obs: devido ao tamanho da armazenagem da variável, o x consegue chegar até o valor de
255 e depois ocorre o overflow, o tamanho da variável é de 1 byte (8 bits) sendo assim o
valor máximo é de 2^8 – 1.
Conclusão:
Com estes experimentos foi possível enxergar de maneira mais palpável de como uma
comunicação I2C funciona entre componentes eletrônicos, sendo possível observar a
fundo como é possível realizar uma comunicação bit a bit com um Arduino e a biblioteca
wire.
Referência:
https://www.tinkercad.com/things/7X52fyEszq9-i2c