Acesse o Arduino pela Internet – parte III – final

 

Nesta terceira e última parte, vamos configurar o roteador para encaminhar toda requisição que chega da Internet para o endereço IP interno. Não é uma tarefa difícil mas exige um pouco de atenção para fazê-lo.

No exemplo a seguir, usei o roteador da Linksys. Existe um excelente site que mostra como configurar o encaminhamento/redirecionamento de portas para uma centena de fabricantes/modelos: http://portforward.com/.

Configurando o Roteador

  • Selecione um IP livre na sua rede, abra a console administrativa do seu roteador e associe a porta 81 com o endereço IP.
roteador Linksys
roteador Linksys

Teste Externo

Caso você não saiba o IP válido para Internet que foi atribuído pela sua operadora, entre muitas opções temos este site http://www.speedtest.net/, que testa a velocidade da sua conexão e informa o IP público.

No meu caso, o IP público é 189.33.173.216. Aí é só abrir o navegador e digitar o IP e a porta, no caso 81 (não esqueça os : entre o IP e a porta).

acesso externo
acesso externo

Simples, não?! De maneira superficial, ao digitar um endereço válido de internet a requisição do serviço http chega até a sua casa, o roteador “vê” que o pedido é para a porta 81 e encaminha para o IP configurado. Mas…

Configurando um Nome Internet

Nós assinantes residenciais, não temos um IP público fixo. Isto quer dizer que o IP obtido anteriormente pode mudar de tempos em tempos. O inconveniente é termos que ficar informando os amigos que o IP mudou. Não é uma solução elegante e profissional, concordam? A proposta agora é ter um nome e não somente um número IP válido na Internet e acessar a nossa placa como qualquer outro site.

Ainda existe um serviço gratuito oferecido pelo No-IP (http://www.no-ip.com), que permite cadastrar até três nomes e associá-los a IPs públicos/portas. É necessário fazer um cadastro e opcionalmente fazer o download de um software que será executado no seu computador. Na minha opinião vale a pena instalar. pois automaticamente este programa de tempos em tempos atualiza a sua conta no No-IP com o IP da sua operadora. caso contrário vamos ter o mesmo inconveniente comentado no parágrafo anterior.

  • Acesse o site e faça o cadastro, informando um nome de usuário e senha. No final da tela, marque a opção para escolher um nome mais tarde (Create my hostname later).
cadastro no No-IP
cadastro no No-IP
continuação tela cadastro
continuação tela cadastro
  • Na tela principal, selecione Add a Host.
tela principal
tela principal
  • Escolha um nome, qualquer um. Preencha o campo Hostname com este nome. A este nome (combo a direita), selecione um sufixo. No meu caso dei o nome de homeduino com o sufixo no-ip.org.
  • Marque a opção Port 80 Redirect e preencha os campos IP Address e Port com o seu IP público e 81.
  • Clique no botão Update Host (final da tela)
adicionando um nome (host)
adicionando um nome (host)
adicionando um nome (host) - continuação
adicionando um nome (host) – continuação
  • Quando necessário, acesse Manage Hosts para alterar a configuração atual ou até mesmo adicionar um novo (limite de 3).

modificar nomes cadastrados

modificar nomes cadastrados

É isto. Agora é só abrir o navegador e digitar http://nome_escolhido.sufixo e ver o seu Arduino + Ethernet Shield funcionando.

Em um próximo artigo, apresentaremos uma aplicação com sensores de temperatura e luminosidade e outros atuadores.

Aguardem!

 

19 respostas para “Acesse o Arduino pela Internet – parte III – final”

  1. Olá Robson.
    Me deparei com um problema ao tentar acessar informações do meu arduino pela internet. Meu provedor de internet apenas me fornece IPV6 público. Não posso fazer direcionamento de portas. Você sabe como poderia implementar este IPv6 no shield arduino?

    1. Olá Sobreira,

      interessante…logo, logo, teremos que repensar os projetos com estas placas Ethernet…

      encontrei estes artigos que talvez lhe ajude:

      https://blog.adafruit.com/2012/09/17/ask-an-educator-how-can-i-get-my-arduino-to-use-ipv6/
      http://www.arduinobr.com/arduino/arduino_shield/colocando-o-arduino-na-rede-com-o-enc28j60-ethernet-shield/

      do primeiro artigo destaco um trecho (tradução livre): “O shield Ethernet oficial do time Arduino é baseada no chip WIZnet 5100, que implementa a pilha de protocolos IPv4. Como consequência, o Arduino Ethernet Shield não pode ser utilizado para implementar uma pilha IPv6.

      É necessário utilizar um shield com um hardware que permite a gestão das funções da camada IP e Ethernet. Shields baseados no chip Microchip ENC28J60 são adequados para a implementação de um IPv6 ou pilha dupla IPv4 / IPv6.”

  2. Boa noite, gostei da explicação, só que nao consigo fazer funcionar, por exemplo defini a o ip do arduino 192.168.10.101 e porta 8090.
    é isso que defino nessa parte da configuracao

    “Marque a opção Port 80 Redirect e preencha os campos IP Address e Port com o seu IP público e 81. ”

    e no roteador, nao defino nada, estou usando um repetidor, e só acesso por ele.
    Obrigado

    1. Olá André,

      acredito que sim pois a comunicação destes shields são por SPI (Serial Peripheral Interface). Teria que alterar a biblioteca ethernet e não faço a menor ideia de como 🙁 e sinceramente não sei se o esforço compensa. Talvez seja uma aplicação para um Raspberry Pi ou a placa Arduino Yun (difícil de encontrar no Brasil).

      Encontrei um artigo bem completo sobre SPI, vale a visita: http://www.embarcados.com.br/spi-parte-1/

      abs

  3. ola! PARABÉNS pelos seus posts! Acompanhei a parte 1 e a parte 2 e deu tudo certo até la! porém agora complicou aqui.. eu fiz tudo isso que voce ensinou aqui na parte final, porém quando tento acessar pelo ip publico, aparece este erro:
    [Fiddler] The connection to ‘179.210.198.37’ failed.
    Error: ConnectionRefused (0x274d).
    System.Net.Sockets.SocketException Nenhuma conexão pôde ser feita porque a máquina de destino as recusou ativamente 179.210.198.37:8383
    tentei depois pelo o tutorial pelo no-ip, e segue o mesmo erro
    sendo que quando acesso pela intranet, nao ocorre problema algum!
    ja mudei da porta 81 pra 8080 8181 etc.. e nao adianta…
    por favor me ajude!
    obrigado pela atenção!

      1. Boa tarde.Robson.Ja tenho camaras de seguranças operando remotamente aqui em casa.porem nao estou conseguindo acesso remoto no arduino.poderias me dar uma força.acesso na rede local funciona normal(acendo e apago leds).se for o caso te mando o codigo para voce avaliar e ver onde eu errei.desde já muito obrigado.

  4. cannot allocate an object of abstract type ‘Client’

    ta dando isso ao compilar… ate mesmo os proprios exemplos estou usando a lib 1.1 do ENC28j60

    seria grato se pudesse me ajudar

    arduino versao 1.0.6

  5. Muito bom o tutorial, parabéns! Estou desenvolvendo um projeto de automação residencial e este artigo me ajudou muito. Só tenho uma duvida (não sei muito sobre redes): com o meu arduino conectado no roteador não consegui acessa-a pagina de um pc na mesma rede, apenas de externas. Tem como conseguir isto?

    1. Olá Dimas,

      vc. poderia dar mais detalhes?

    2. Qual o shield ethernet vc. está usando?
    3. No sketch, vc. colocou um IP válido para sua rede? Por exemplo: se o seu ambiente operacional é o Windows, vá em Iniciar, na caixa de pesquisa digite CMD e quando estiver no prompt do sistema, digite IPCONFIG e procure por uma linha “Endereço IPV4”. Anote o valor.
    4. Escreva para suporte@robtronics.com.br com as respostas acima e vamos ver se conseguimos ajudá-lo.

      []s

  6. Olá
    Fiz um projeto de automação residencial utilizando Arduino UNO Rv3+ Ethernet Shield ENC26j60 + Modulo Rele + Sensor LDR + App Inventor aplicativo para Android, caso se interessem pelo Assunto posso trocar conhecimentos com vocês.
    kleubson.maia@gmail.com

  7. Olá, gostei muito do tutorial. Porém, gostaria de fazer um correção: quando colocamos o endereço de IP + port (conforme foi ensinado), o IP não atualiza automaticamente. É necessário selecionar a opção “DNS host (A)”.
    Para acessar a port, basta colocar após o domínio escolhido “:” e o número da port escolhido (“exemplo.no-ip.org:8081”)
    Tive problema com isso e resolvi dessa forma.
    Abraço

Deixe um comentário