sábado, 28 de dezembro de 2013

Arduino e a Internet (ou seria Ethernet?)

Pessoal,

Está uma bagunça esse assunto de "ligar o Arduino na Internet", né?

Vamos começar com um glossário para ajudar:


  • Internet - Rede mundial de computadores
  • Ethernet - Rede local de computadores
  • Roteador - Gerenciador de rotas entre as redes locais e a internet
  • Arduino - Ah... bom... deixa prá lá. *
  • Cabo Cross (Over) - conhecido também por "par-trançado" - Cabo usado para ligar um computador n'outro sem o uso de um gerenciador de rotas (roteador)
  • Cabo de Rede (Normal) - também é trançado, mas não tem o "par-trançado" ou "par-invertido" (este último, sendo o termo mais correto). Usado para ligar o computador direto no roteador. Também liga do roteador no modem.
  • Modem - Dispositivo (normalmente fornecido pela operadora de sinal, NET, Telefônica etc.) que transforma o sinal (de uma forma que não importa) e traduz para o roteador. Por isso ligamos o modem em uma porta especial do roteador.
  • Operadora - Ou "Provedora", ou ainda "Fornecedora" de sinal "de Internet", conforme costumamos dizer, é a prestadora de serviços que nos cobra todo mês uma conta enorme por uma internet de má qualidade, e quando cai, ficamos horas no "atendimento" escutando musiquinhas e atendentes dizendo coisas do tipo: "Vou estar fazendo, senhor", "Vou estar verificando, senhor"...
  • Access Point - Um nome chique para um roteador com funções especiais de repetição de sinal.
(*) Precisa de um post só sobre esse item do glossário.

Agora a parte complicada

Bom, qualquer placa ou módulo Ethernet que adicionarmos ao Arduino vai fornecer exatamente isso, ou seja, conexão com a rede local de computadores. Normalmente aquela rede que tem IP's 192.168.0.1, sendo esse o IP do roteador. (As vezes é 192.168.1.1).

Atualmente temos os seguintes placas/módulos para Arduino


Wiznet Ethernet Shield W5100



Microchip ENC28J60

W5100 vs. ENC28J60


Atualmente existe um problema de ruptura no mercado. Os próprios vendedores e importadores não estão sabendo direito que pedir aos seus fornecedores. Os clientes estão confusos. Não sabem ao certo se devem partir para uma plataforma Wiznet W5100, mas se "original", ou se é compatível com Arduino MEGA... Ao mesmo tempo que confiança podemos ter em um módulo ENC28J60, que custa 30 ou 40 reais?

A resposta não é fácil. Um longo caminho precisa ser trilhado. Para quem está começando é fácil, basta ligar um Ethernet Shield W5100 em um Arduino UNO e ser feliz! 

Mas e quem amadureceu uma ideia e quer colocar em prática? Se o projeto final for um Ethernet Shield e um Arduino UNO, dentro de uma caixinha, tudo bem, não perca tempo lendo este tópico. 

Eu acho que não é por aí, um projeto profissional precisa de uma placa centralizadora (conhecido por centralina) e módulos de integração. 

O Ethernet Shield W5100 não abre espaço para integrações. Seu circuito externo é muito complicado! Fica difícil tirar o chip W5100 do Ethernet Shield e utilizar em nossos projetos.

Ele tem uma interface SPI de 4Mhz que é um parto de fazer funcionar em processadores que rodam a 16Mhz e 20Mhz, como é o caso do Arduino UNO e MEGA, respectivamente.

Por isso algumas pessoas tem problemas na instalação desse modelo de Ethernet Shield no Arduino MEGA. O clock precisa ser dividido por 5 e não por 4 como é no Arduino UNO. Não sei direito como isso pode acontecer, mas parece que acontece. Versão antiga de IDE? Incompatibilidade entre REV2 e REV3, sei lá! Pode ser um monte de coisas. Ainda estou investigando. Vou chegar no fundo dessa história! 

Bom, resumindo, descobri que projetos concorrentes ao Protuino Breakout (projeto antigo e engavetado, que foi copiado pelo concorrente). Segue foto do Protuino Breakout para vocês entenderem do que estou falando:

Protuino Breakout (2010)

Estes projetos clone do Protuino estão utilizando o W5200 e não mais o W5100! Fui atrás para descobrir porque!??

Descobri então que o W5200 precisa de menos componentes externos, por essa razão, pôde ser reduzido a um módulo pequeno:

Módulo W5200

Além disso o chip do W5200 é fisicamente menor que o chip do W5100, e a SPI vai até 80Mhz!

Bom, para fechar esse assunto, investigando mais a fundo descobri que existe também um W5300 da Wiznet:

Wiznet W5300

Mas fiquei com uma pulga atrás da orelha! Alguma coisa não está certa! O preço desses módulos da Wiznet! Cadê a filosofia do código aberto? Da plataforma aberta!? Eles estão fechando cada vez mais a caixa-preta e cobrando mais caro por produtos incompletos, é isso mesmo? Esses módulos custam de R$150,00 a R$200,00! Por esse preço eu posso comprar um Raspberry Pi e usar a interface de Ethernet dele! Um absurdo de caro!

Pelo menos a Microchip está sendo mais decente e está vendendo seus chips a um preço bem acessível e em formatos que são vantajosos para o desenvolvedor de plataformas open source, como a versão DIP:

ENC28J60 versão DIP
(ótimo para protótipos e montagens na protoboard!)

W5100 A Venda No Mercado


Não importa se for "original" ou "chinês"! Os chineses atualmente estão especialistas em copiar circuitos externos!

Todos eles estão defasados! Desatualizados! Os vendedores não estão bem informados dessas mudanças; e os clientes que precisam exigir o modelo novo, seja ele o W5200 ou W5300, seja ele qual for, pois pelo preço que custam, tem que ser o mais atualizado possível!

Mas e o ENC28J60, qual o problema dele? Bom, o problema é que não existe biblioteca oficial do Arduino para ele. Só bibliotecas suportadas pela comunidade.

Já o W5100 da Wiznet é uma caixa fechada, só com a biblioteca aberta, integrada na IDE do Arduino. Ou seja, quando você baixa o programa do Arduino, a biblioteca já vem junto e é instalada junto com o Arduino.

No ENC28J60, precisamos primeiro achar uma biblioteca, e decidir por ela, pois existem algumas. Eu mesmo já fiz umas 3 versões diferentes.

W5100 vs. ENC28J60 - Conclusão


Na minha opinião, nenhum dos dois está bom, pois o W5100 não funciona no Arduino Supervisório e nem no Protuino. Vamos esperar pelo W5200.

Quanto ao ENC28J60, ele também tem uma série de revisões e atualmente está na versão 6. As bibliotecas disponíveis que continuam sendo atualizadas são:

Minhas:
https://github.com/renatoaloi/Enc28CoreLib (atualizada recentemente)

Terceiros:

É isso pessoal, estamos na vanguarda, mas ainda na espera desse amanhecer que se desenha no horizonte! Muitas variáveis estão rodando no caldeirão!

Uma boa passagem de ano para todos e que 2014 seja o ano de integração e lembrem-se: estou aqui para incomodar! Não vou deixar barato em 2014!

Abraços,
Renato

7 comentários:

  1. Obrigadoo mais uma vez Renato pela dedicação e informações valiosas. O conhecimento q você passou em 2013 foi de grande importancia pra mim. Ainda tenho muito o que aprender e vou continuar antenado em suas novidades. Desejo um 2014 prospero pra você e sua familia. Que Toda sorte de bençãos seja derramada sobre vocês. Ass Marcio Ferrari Martins

    ResponderExcluir
  2. olá Renato começei com o arduino usando o protuino passei para para uma pci e acoplei um w5100 e funcionou OK e tambem fiz testes com o enc28J60 no começo foi descobrir os pinos porque Chines não gosta de manual. muito obrigado pelao seus tutoriais feliz ano novo para voce e sua familia abraços

    ResponderExcluir
  3. Tenho Notado Realmente o Aparecimento de Shields W5200, como Esta: http://www.elecrow.com/arduino-compatiable-c-109/shield-c-109_110/w5200-ethernet-shield-p-367.html

    Inclusive Alguns no Brasil Estão Distribuindo com o W5200, Mas, o Preço Continua Salgado.

    Muito Bom o Artigo. Será de Utilidade Para Muitos.

    Abraços.

    ResponderExcluir
  4. Falta, ainda, conteúdo detalhado e bem estruturado do shield ethernet. Vejo um monte de gente interessada em comunicar o arduino com a internet. Mas são poucos (quase nenhum na verdade) que dominam o código e o descrevem com clareza linha a linha. Seria muito interessante mais vídeos sobre o assunto e com foco nas linhas de programação, e como enviar dados do arduino para uma página externa.

    ResponderExcluir
  5. Acredito que o fato de os desenvolvedores do Arduino não criarem um biblioteca oficial para ENC28J60 seja porque simplesmente é fabricado pela Microchip, e como a Microchip é concorrente da Atmel....

    ResponderExcluir
  6. Renato , Parabéns pelo post!!!!

    Então estou desenvolvendo um projeto usando em PIC18F97J60 , sei que foge da realidade do arduino , mas para quem vai fazer uma aplicação na area de internet e ethernet é um bom negocio , pois a familia 18fxxj60 tem um barramento ethernet porém nao é tao simples como arduino mas a microchip disponibiliza algumas bibliotecas , em relaçao ao custo é quase a mesma coisa (caso voce tenha um gravador para essa familia , porém existe inumeros valores de gravadores). Outro que pode ser um reves para alguns projeto é que você precisa desenvolver uma pci , mas com isso voce pode reduzir muito o custo do projeto.
    Ainda nao finalizei o meu projeto (TCC) mas acredito gastar :

    1x 18F97J60 R$22,00(IMPORTADO) , É NÃO TAO FACIL ENCONTRAR NO BRASIL MAS ENCONTREI POR $32,00

    1X 25LC512 MEMORIA EEPROM R$5,00 , MAS PODEM USAR A MEMORIA FLASH DO MICRO

    1X PCI R$75,50

    1X CONECTOR HR911105 R$3,00

    MAIS OS COMPONENTES COMO REGULADORES , RESISTORES , CAPACITORES ... ETC ACREDITO QUE NO MAXIMO R$20,00

    + 1 GRAVADOR PARA PIC DESSA FAMILIA

    MAS ESSE CUSTO PODEM SER REDUZIDO COM UMA PRODUÇÃO CONSIDERAVEL.

    BOM ESPERO TER AJUDADO
    QUALQUER COISA --> montteiro_10@hotmail.com


    Mais um vez OBRIGADO PELO POST RENATO , ME AJUDOU EM ALGUMAS DUVIDAS


    ResponderExcluir