Bóson Treinamentos em Ciência e Tecnologia

Como usar um Shield Ethernet no Arduino

Usando um shield ethernet com Arduino para acessar uma rede

Usando um Shield Ethernet no Arduino

Uma das formas mais importantes de comunicação disponíveis com o Arduino é o padrão Ethernet. Trata-se de um protocolo de comunicação em redes que permite que dispositivos variados, como PCs, smartphones, roteadores, arduinos, etc., se comuniquem por meio do envio e recebimento de pacotes (frames / quadros, para ser mais exato), que são fluxos de dados organizados.

Cada dispositivo em uma rede possui seu próprio endereço IP, que é um endereço numérico que permite identificar cada dispositivo e dessa forma, se comunicarem entre si usando diferentes protocolos (padrões de software).

Shield Ethernet

No Arduino é bastante simples realizar essa comunicação via padrão Ethernet, com o uso de um Shield Ethernet e sua biblioteca correspondente. A imagem a seguir mostra um shield ethernet típico:

O Shield Ethernet na plataforma Arduino utiliza o chip WIZnet W5100 Ethernet, que fornece a pilha de rede TCP/IP, habilitando o dispositivo a se comunicar através de uma rede comum, tanto local quanto via Internet.

Esse shield possui um conector para cabo de rede RJ45, e sua taxa de transferência máxima é de 100 Mbps, podendo operar também em 10 Mbps (10/100).

Além disso, ele traz um slot para cartão microSD, que permite ler e armazenar dados no próprio shield (obviamente inserindo um cartão SD e executando a biblioteca SD).

Um shield ethernet realiza, basicamente, o papel que uma placa de rede executa em um computador comum. Antes de mostrarmos como funciona e como configurar esse shield, vamos discutir alguns termos relacionados a redes de computadores, que serão importantes no entendimento do processo de comunicação do Arduino.

Conceitos básicos de Redes

Shield Ethernet encaixado no Arduino

A Biblioteca Ethernet

A biblioteca Ethernet, necessária para que seja possível utilizar o shield correspondente, é distribuída juntamente com o IDE do Arduino e permite a comunicação do Arduino com uma rede.

A tabela a seguir fornece uma descrição simplificada de algumas das funções mais comuns da biblioteca Ethernet, pertencentes às classes Ethernet, EthernetClient, EthernetServer e EthernetUDP:

Função Descrição da Função
Ethernet.begin(mac)
Ethernet.begin(mac, ip)
Ethernet.begin(mac, ip, gateway)
Ethernet.begin(mac, ip, gateway,subnet)
Função para inicialização da biblioteca, usando MAC, e opcionalmente IP e/ou gateway e máscara de sub-rede.
Server(port)
Permite criar um servidor que irá escutar em uma porta de comunicações específica.
Server.begin()
Função para inicializar o servidor, de modo a escutar as mensagens que chegam
Server.write()
Permite enviar dados para os dispositivos clientes conectados
Server.available()
Retorna um cliente, caso ele possua dados prontos para envio
Server.print()
Imprime dados para todos os clientes disponíveis. Esses dados são impressos na forma de uma sequência de dígitos ASCII. Por exemplo, o número 753 é retornado como os caracteres “7”, “5” e “3”.
Server.println()
Idem à função Server.print(), porém mudando de linha no final da mensagem
Client(ip. porta)
Permite criar um cliente que poderá se conectar ao endereço IP e à porta passadas à função.
Client.connect()
Inicia a conexão com o cliente
Client.connected()
Verifica se o cliente está ou não conectado ao servidor
Client.write()
Permite gravar dados no servidor
Client.print()
Imprime dados para o servidor. Esses dados são impressos na forma de uma sequência de dígitos ASCII. Por exemplo, o número 753 é retornado como os caracteres “7”, “5” e “3”.
Client.println()

Idem Client.print(), porém mudando de linha no final da mensagem

Client.available()

Retorna o número de bytes que estão disponíveis para serem lidos, enviados a partir do servidor.

Client.read()

Lê o próximo byte recebido do servidor

Client.flush()

Limpa todos os bytes escritos para o cliente, porém ainda não lidos

Client.stop()

Desconecta o cliente do servidor.

EthernetUDP.begin(port)

Inicializa o objeto UDP, especificando a porta a ser utilizada

EthernetUDP.read(packetBuffer,
MaxSize)

Lê os pacotes UDP de um buffer

EthernetUDP.write(mensagem)

Envia uma mensagem UDP para a conexão remota

EthernetUDP.beginPacket(ip. port)

Executado antes de enviar uma mensagem, para especificar o endereço IP e a porta de destino

EthernetUDP.endPacket()

Função invocada após o envio da mensagem, para terminar a transmissão

EthernetUDP.parsePacket()

Verifica se existe mensagem para ser lida

Ethernet.available()

Retorna a quantidade de dados que foi recebida e também a que está disponível para ser lida na sequência.

Nas próximas partes desse tutorial, vamos mostrar como utilizar o shield Ethernet e as bibliotecas listadas acima para criar diversas aplicações de rede com o Arduino, como por exemplo um servidor Web e um cliente de rede local.

Próximo: Projeto – Criando um Servidor Web com Arduino e um Shield Ethernet

 

Sair da versão mobile