seguir - udesc - universidade do estado de santa catarina · como é possivel ver na imagem...

6
23/04/2018 [Hands On] – Arduino UNO + Arduino Mega - Protocolo I2C - i9 - Núcleo Estudantil de Inovação Tecnológica http://www2.joinville.udesc.br/~i9/2016/05/02/hands-arduino-uno-arduino-mega-protocolo-i2c/ 1/6 Legislação Links Acesso Pesquisa… Sobre o i9 Notícias Atividades i9 Fotos Eventos Publicações Contato Capa » Hands On » [Hands On] – Arduino UNO + Arduino Mega – Protocolo I2C [Hands On] – Arduino UNO + Arduino Mega – Protocolo I2C Hallo zuzammen (Olá galera) Hoje vou trazer uma parte da pesquisa que estou fazendo com drone, O Protocolo I2C. O I2C foi criado pela Philips na decada de 80 para possibilitar a utilização de varios componentes a um sistema embarcado, via barramento. Barramento I2C Como é possivel ver na imagem anterior, o protocolo I2C tem dois tipos de elementos, o mestre e o escravo. O mestre é aquele que gera o sinal de clock e inicia uma comunicação com os escravos. Já o escravo é aquele que recebe o clock e responde a requisição do mestre que lhe foi endereçada (BERGER, Felipe. 2014). A transmissão de dados é feita atraves de 2 linhas, o Serial Data (SDA) e o Serial Clock (SCL). O SDA é responsavel de enviar e receber os dados e o SCL para criar um clock que sincroniza os sistemas. SCL e SDA Populares Newsletter do i9 Acessos Mídias sociais Ver Estatísticas 8,755 visualizações [Hands On] – Arduino + LCD + DS3231 Real Time Clock (Relógio) 7,144 visualizações [Hands On] – Arduino + LCD + Leitor RFID 7,093 visualizações Quebra de patentes: a situação do inventor da BINA 4,641 visualizações [Hands On] – Arduino + LCD + Sensor de distância (HC-SR04) 3,744 visualizações Business Model Canvas: já ouviu falar? 3,562 visualizações A Arte de Fazer Perguntas Criativas e Desafiadoras Seguir

Upload: others

Post on 20-Mar-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

23/04/2018 [Hands On] – Arduino UNO + Arduino Mega - Protocolo I2C - i9 - Núcleo Estudantil de Inovação Tecnológica

http://www2.joinville.udesc.br/~i9/2016/05/02/hands-arduino-uno-arduino-mega-protocolo-i2c/ 1/6

Legislação Links Acesso 🔍Pesquisa…

Sobre o i9 Notícias Atividades i9 Fotos Eventos Publicações Contato

Capa » Hands On » [Hands On] – Arduino UNO + Arduino Mega – Protocolo I2C

[Hands On] – Arduino UNO + Arduino Mega – Protocolo I2C

Hallo zuzammen (Olá galera)

Hoje vou trazer uma parte da pesquisa que estou fazendo com drone, O Protocolo I2C.

O I2C foi criado pela Philips na decada de 80 para possibilitar a utilização de varios componentes a umsistema embarcado, via barramento.

Barramento I2C

Como é possivel ver na imagem anterior, o protocolo I2C tem dois tipos de elementos, o mestre e oescravo. O mestre é aquele que gera o sinal de clock e inicia uma comunicação com os escravos. Já o escravo éaquele que recebe o clock e responde a requisição do mestre que lhe foi endereçada (BERGER, Felipe.2014).

A transmissão de dados é feita atraves de 2 linhas, o Serial Data (SDA) e o Serial Clock (SCL). O SDA é responsavel de enviar e receber os dados e o SCL para criar um clock que sincroniza os sistemas.

SCL e SDA

Populares

Newsletter do i9

Acessos

Mídias sociais

Ver Estatísticas

8,755 visualizações[Hands On] – Arduino +LCD + DS3231 Real TimeClock (Relógio)

7,144 visualizações[Hands On] – Arduino +LCD + Leitor RFID

7,093 visualizaçõesQuebra de patentes:a situação doinventor da BINA

4,641 visualizações[Hands On] –Arduino + LCD +Sensor dedistância (HC-SR04)

3,744 visualizaçõesBusiness ModelCanvas: já ouviufalar?

3,562 visualizaçõesA Arte deFazerPerguntasCriativas e Desafiadoras

Seguir

23/04/2018 [Hands On] – Arduino UNO + Arduino Mega - Protocolo I2C - i9 - Núcleo Estudantil de Inovação Tecnológica

http://www2.joinville.udesc.br/~i9/2016/05/02/hands-arduino-uno-arduino-mega-protocolo-i2c/ 2/6

A transmissão acontece quando há uma transição de “1″ para “0″ no SDA e o SCL está em “1″. Depois disso o toda vez que o SCL (Clock) estiver em 1, o SDA estará enviando ou recebendo dados. Paraparar, tem que haver uma transmissão de “0″ para “1″ no SDA e o SCL tem que estar em “1″.

Existem varios dispositivos que usam o protocolo I2C, como o Arduino, Raspberry, EEPROM, o RTC, LCD,Acelerometro.

 

I2C e outros dispositivos

 

Chega de teória e partir prática.Hoje vou trazer um tutorial diferente dos que vi na internet, invés de usar um exemplo já feito, resolvimodificar um pouco fazer invés , de fazer uma ligação entre Arduino UNO com Arduino Mega.

Arduino Mega + Arduino UNO

Vou trazer um tutorial sobre I2C entre Arduino UNO e Arduino Mega, sendo o master o Arduino Megae também adicionei um LCD, que também usa I2C.

Para fazer a conexão entre os dois arduino, iremos fazer a seguinte:

Arduino UNO A4 ———- SDA A5 ———- SCL GND ——- GND

Arduino Mega 20 ———- SDA 21 ———– SCL GND ——- GND

23/04/2018 [Hands On] – Arduino UNO + Arduino Mega - Protocolo I2C - i9 - Núcleo Estudantil de Inovação Tecnológica

http://www2.joinville.udesc.br/~i9/2016/05/02/hands-arduino-uno-arduino-mega-protocolo-i2c/ 3/6

Conexão I2C entre Arduino Mega e Arduino UNO

 

Agora com a conexão entre os dois arduinos, vamos para a programação:

 

Para o Arduino Mega, definido como Master, usa-se o seguinte código:

Para o Arduino UNO, definido como Slave, usa-se o seguinte código:

#include <Wire.h>; // Biblioteca do I2C

byte x = 0;

void setup() {

Wire.begin(); // adiciona o maste do barramento I2C

Serial.begin(9600);

}

void loop() {

Wire.beginTransmission(8); // começa a transmissão de dados para o dispositivo com endereço

Wire.write("x is "); // envia 5 bytes

Wire.write(x); // envia um byte byte

Wire.endTransmission(); // para a transmissão

x++;

delay(500);

////////// Parte para receber os dados do SLAVE //////////

Wire.requestFrom(8, 1); // requisita um dado do dispositivo slave com endereço 8

while (Wire.available()) { // o endereço pode mandar menos que o requisitado

byte c = Wire.read(); // recebe o byte como inteiro

Serial.print("Esta retornando: ");

Serial.println(c);

}

delay(500);

}

23/04/2018 [Hands On] – Arduino UNO + Arduino Mega - Protocolo I2C - i9 - Núcleo Estudantil de Inovação Tecnológica

http://www2.joinville.udesc.br/~i9/2016/05/02/hands-arduino-uno-arduino-mega-protocolo-i2c/ 4/6

Serial Monitor do tutorial

Caso você viu os código e ainda não entendo, vou explica-lo aqui. 

#include <NewPing.h>; //Biblioteca do I2C

#include <Wire.h> //Biblioteca do LCD

/////// Configuração do LCD /////////

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int fadeValue = 122;

int lcd_key = 0;

int adc_key_in = 0;

byte x = 0;

char c;

void setup() {

lcd.begin(16, 2); // inicia o LCD

lcd.setCursor(0,0); // seta a posição no LCD (coluna,linha)

lcd.print("Valor de X: ");

Wire.begin(8); // adiciona o Arduino no I2C com o endereço 8

Wire.onReceive(receiveEvent); // recebe dados do Master

Wire.onRequest(requestEvent); // registra uma função quando o Master solicita do disposi

Serial.begin(9600);

}

void loop() {

LCD(); //Chama a função que escreve os numeros

delay(100);

}

/////// Recebe e trata os dados vindo do master /////////

void receiveEvent(int bytes) {

while (1 < Wire.available()) { // faz o loop até terminar todos os valores do i2C

c = Wire.read(); // recebe os dados como char

Serial.print(c);

}

x = Wire.read(); // recebe o byte como inteiro

Serial.println(x);

if(x == 0){ // para limpar o LCD caso x igual 0

lcd.clear();

lcd.setCursor(0,0);

lcd.print("Valor de X: ");

}

lcd.setCursor(12,0);

lcd.print(x);

}

/////// Envia algo para o master caso seja requisitado /////////

void requestEvent()

{

Wire.write(x); // envia valor de x que é o valor que foi recebido do Master

}

void LCD () // programa tutorial do LCD

{

// Turn off the blinking cursor:

lcd.noBlink();

delay(3000);

// Turn on the blinking cursor:

lcd.blink();

delay(3000);

}

23/04/2018 [Hands On] – Arduino UNO + Arduino Mega - Protocolo I2C - i9 - Núcleo Estudantil de Inovação Tecnológica

http://www2.joinville.udesc.br/~i9/2016/05/02/hands-arduino-uno-arduino-mega-protocolo-i2c/ 5/6

Compartilhe!

Sobre Gabriel Nakata

Artigos Relacionados

[Hands On] Sensores deDistância + EstaçãoMetereológica + LCD +Comunicação I2C (ArduinoMega, UNO e Nano)20/09/2016

[Hands On] EstaçãoMeteorológica: Arduino +DHT11 + Sensor de Chuva19/09/2016

[Hands On] Arduino + DCMotor Driver +Potênciometro10/05/2016

1. Tudo começa no Master. Inicialmente, ele começa uma conexão com o dispositivo de endereço #8 eenvia “x is ” e também um contador.

2. O Slave inicial o I2C que se apresenta como numero 8, depois caso tenha alguma coisa sendo enviadopara ele, o código vai para a funcão “receiveEvent” e recebe os dados do Master e joga no LCD

3. Depois que fez a leitura dos dados enviado do master, ele reenvia o valor do contador denovo  para oMaster

4. O Master verifica se está recebendo algo do endereço 8 e e pega o valor do contador e imprime naSerial.

 

Infelizmente não consegui fazer com que a parte char que foi enviada para o Slave, seja reenviada para oMaster. Caso tenha conseguido, mande um comentario.

Está foi o nosso tutorial sobre I2C, espero que tenha gostado e aproveitado.

Estudante de Engenharia Elétrica da UDESC-CCT. Fascinado por novas tecnologias, emprogramação e jogos.

Deixe uma resposta

O seu endereço de email não será publicado.

Nome

E-Mail

Website

Publicar comentárioPublicar comentário

23/04/2018 [Hands On] – Arduino UNO + Arduino Mega - Protocolo I2C - i9 - Núcleo Estudantil de Inovação Tecnológica

http://www2.joinville.udesc.br/~i9/2016/05/02/hands-arduino-uno-arduino-mega-protocolo-i2c/ 6/6

i9 © 2014 - Todos os direitos reservados.