Neste tutorial será apresentado como controlar dois Leds conectados ao Arduino, via rede ethernet local, usando Web Socket.
Obs.: Este exemplo pode ser utilizado para qualquer projeto que você queira desenvolver com Arduino, e os códigos estão disponíveis para download aqui.
Requisitos
-
Uma placa Arduino (neste exemplo foi utilizado o Arduino Mega 2560);
-
Um módulo de rede ethernet ENC28J60;
-
Biblioteca UIPEthernet.h para o módulo de rede;
-
Instalar servidor XAMPP e IDE do Arduino;
-
Cabo USB;
-
Cabo Rede;
-
Infraestrutura de rede local.
Conexões
LEDS X Arduino:
|
LED Verde |
ARDUINO |
LED Vermelho |
ARDUINO |
|
GND |
GND |
GND |
GND |
|
VCC |
Pino digital 11 |
VCC |
Pino digital 12 |
Módulo X Arduino:
-
Módulo
Arduino
INT
Pino digital 2
SO
Pino digital 50
SCK
Pino digital 52
RESET
RESET
GND
GND
VCC
3.3V
CS
Pino digital 53
SI
Pino digital 51
Conexões Prontas:
| ![]() |
Procedimentos
Passo 1: Instalação do Servidor WEB
Para que os serviços web funcionem, ou seja, as requisições enviadas através da Interface web (index.html) para o socket (arduino.php) e do socket para o Arduino, será necessário instalar os servidores que fornecem esses serviços, ou seja, Apache e PHP. Para facilitar essa instalação, sugiro o XAMPP que se trata de uma ferramenta que une esses serviços em apenas uma instalação.
-
Faça o download do XAMPP aqui e instale-o;
-
Após a instalação, clique na opção Start da coluna Action na linha do serviço Apache;
-
Após inicializar o serviço Apache, o XAMPP pode ser minimizado.
Passo 2: Entendendo os Códigos
-
controleLed.ino – Esse arquivo contém o código que deverá ser gravado no Arduino, e possui comentários referentes às funções utilizadas;
-
Insira o endereço IP de acordo com a faixa utilizada em sua rede e, é claro, um endereço que esteja disponível.
-
arduino.php – Esse arquivo contém a criação do web socket e possui comentários referentes às funções utilizadas.
-
index.html – Esse arquivo contém a estrutura da interface web.
Passo 3: Enviando os códigos para o servidor web e gravando código no Arduino
Tendo os códigos criados, será necessário envia-los para o servidor, ou seja, os mesmos precisam existir no servidor para que os serviços web façam a integração entre a interface web e o Arduino.
-
Crie uma pasta e copie os arquivos index.html e arduino.php para dentro dessa pasta. Dê o nome que preferir para pasta, nesse caso, a nomeei como socket. Junto com os arquivos dos códigos para download, há uma pasta chamada js, copie-a também para dentro da pasta que você criou, pois, a mesma possui a biblioteca do CSS que estamos utilizando para alinhar os botões no arquivo index.html;
-
Copie a pasta, maximize o XAMPP e clique no botão Explore na coluna de botões localizada à direita da tela do mesmo;
-
A pasta htdocs abrirá automaticamente, com isso, cole a pasta que você criou para dentro dela;
-
Conecte o Arduino ao seu computador através do cabo USB, conecte o cabo de rede no módulo de rede e no seu modem ou roteador;
-
Abra o arquivo controleLed.ino, e execute a gravação do código para o Arduino;
-
Aguarde a gravação concluir.
Passo 4: Testando a aplicação
Se os procedimentos foram realizados e concluíram sem erros, a aplicação está pronta para ser testada.
-
Abra o seu navegador e na barra de endereços digite:
-
O navegador deverá abrir a página conforme a imagem abaixo. Se isso acontecer o projeto foi implementado com sucesso, PARABÉNS!










Excelente post parabéns.
Dúvida : O servidor apache está local e o Ip de arduino ( 10.1.52.46 ), corresponde a uma faixa válida da sua rede local e do seu servidor, caso quisesse publicar esse código na web, logo esse ip não seria mais válido. Qual seria o procedimento para conseguir me comunicar com o arduino ?
Talvez um recurso de DDNS / NO-IP ?
Obrigado.
Boa noite Ricardo,
segui todos os passos do tutorial.
Fiz o projeto com Arduino Mega ADK, Shield Eternet w5100, Módulo relé 16 canais.
Liguei quatro lâmpadas, com os pinos (7, 9, 11, 13).
Ao carregar o código Arduino, a lâmpada do pino13 dispara a piscar e depois ficam todas as quatro ligadas. Ao executar o botão de cada uma na página index.html (Não acontece nada).
Tanto o código html e o php estão abrindo sem nenhum erro.
Uso o servidor Wampserver, tudo funciona perfeitamente.
O que pode ser, não chega nenhum comando no Arduino.
Os arquivos ainda estao disponiveis para download?!
Boa tarde amigo como eu reproduziria esse exemplo em asp.net mvc?
Olá Marcos, boa tarde!
Desculpe a demora para retorno….
Eu nunca trabalhei com asp.net, seria necessário estudar sobre essa plataforma(microsoft) e depois tentar estruturar com MVC, que acredito não ser complicado.. Você já realizou alguma pesquisa?
Amigo, quando li o anunciado do artigo imaginei que veria uma aplicação cliente / servidor, tendo o PHP como servidor e o Arduino como cliente, mantendo uma conexão sempre ativa através de websockets (ws://), mas não me parece que seja isso que está sendo feito… IMHO, há uma certa diferença entre websockets e sockets.
Olá Italo!
Exato, existem diversos modos de se trabalhar com websocket, e essa aplicação é um modo, porém, nesse caso o servidor é o Apache, como citado anteriormente apenas para conectar os códigos “web”. O Arduino é apenas um terminal esperando receber os comandos da interface, e seria um servidor se o código fosse baseado em RTOS contendo um “serverStart” por exemplo. Com certeza há, e no artigo falamos sobre websocket pois os dados trafegam pela rede e não locais no mesmo projeto. Me mantenho a disposição, grande abraço!
Bom dia Ricardo, tudo tranquilo? Muito bom seu código, criei um servidor apache no meu Desktop com Ubuntu e fiz algumas alterações no código para que funcionasse com o modulo W5100 (alterei para a biblioteca Ethernet.h), também alterei a pagina html para controlar 2 Arduínos que estariam em locais diferentes, basicamente dupliquei os botões em 2 diferentes e criei um segundo arquivo “arduino.php” com os dados do 2º arduino, está funcionando quase que perfeitamente, o único problema é quando eu alterno entre um Arduíno e outro da um delay de 15 segundos mais ou menos para que o comando seja… Leia mais »
Boa tarde Alex!
Desculpe a demora para o retorno, porém, estou em um treinamento nesta semana.
Então, de primeiro momento, o que me vem em mente, é que você possa ter esquecido de inserir no fim dos códigos em php o header(“Location: index.html”);, ou então, pode ser pelo fato que estamos utilizando delay e não um código como funciona um RTOS para escalonar os eventos gerados através da interface web.
Você poderia me mandar seus códigos? Meu e-mail é ricardojr19@hotmail.com
Aguardo seu retorno, grande abraço!
Bom dia Ricardo, estou enviando o código já com algumas atualizações, agora estou tentando implementar a função de webclient para que o arduino envie e receba informações, mas por enquanto sem sucesso.
Abraços.
Boa tarde Alex!
Certo amigo, vou analisar seu código e vamos tentar resolver sim, fica tranquilo.
Conta comigo!
Boa noite Ricardo. Estou com esse mesmo problema. Teve alguma solução?
Amigo bom dia, Consigo também fazer leituras do Arduino para o PHP? Se puder me ajudar ficaria muito feliz pois estou iniciando os testes e não achei nada realcionado. Obrigado
Boa Noite Renato! Tudo Joia?
Então, de que modo você gostaria de utilizar PHP com o Arduino? Em Socket ou gravar um código PHP no Arduino?
Estou criando uma página web que pode ser acessada por outros dispositivos além do computador. Preciso receber valor analógicos de temperatura, vazão e nível na tela feita em php. Consigo enviar comandos para o Arduino, porém não consigo enviar os valores de temperatura, vazão nem o nível para a tela em php.
Bom dia Renato!
Perfeito, entendi, há possibilidade sim, porém, através de um socket.
Se você já está conseguindo fazer com que as informações sejam enviadas pelo Arduino, para ler com o PHP basta criar o socket, e utilizar a função socket_read para receber e armazenar as informações em variáveis.
Algo assim:
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($sock,”192.168.0.100″, 3030);
sensor = socket_read($sock);
echo $sock;
socket_close($sock);
Utilizando o link abaixo, consegui montar o exemplo desse tutorial, acredito que seja útil pra vc também:
https://secure.php.net/manual/pt_BR/book.sockets.php
Qualquer dúvida estou a disposição!
Grande abraço!!
Valeu pela dica Marcelo!
Não esquecer de habilitar o “sockets” no server Apache: cickar em “Config” e selecionar “PHP(php.ini)” procurar pela linha “;extension=php_sockets.dll” e descomentar ela retirando o ‘;’
Olá Guilherme! Que bom que você gostou!
Então amigo, eu criei esse tutorial justamente porque não encontrei exemplos específicos do que gostaria de implementar… Se você deseja utilizar esse modelo de conectividade entre a web e o hardware, te recomendo focar bastante em sockets com PHP, e o resto é teste mesmo… Se precisar de ajudar faça contato, estou a disposição!
Um abraço!
Eu possuo um Shield Eternet w5100. É o mesmo jeito a conexão?
Bom dia Guilherme!
Infelizmente não amigo, a conexão é diferente.
No link abaixo, há um bom exemplo e explica como conectar no MEGA e no UNO.
Não achei o link! =/
Ops, desculpe, faltou o link…kkk
https://www.arduinoecia.com.br/2013/06/ethernet-shield-wiznet-w5100-parte-1.html