Arduino, Internet das Coisas e Computação vestível

Você está em » Home : Projetos diversos :: 10. Rede Ethernet

[Voltar]

[Avançar]

10.1. Acendendo LEDS com Shield Ethernet


Acendendo LEDS com Shield Ethernet

O projeto utiliza um sensor usa Shield Ethernet, resistores 100 ohms e placa Arduino Uno R3 para controlar Leds.

// Projeto Acendendo LEDS com Shield Ethernet 
// Autor: André Silveira
// Data: 15/02/2018

#include <SPI.h>             						// Biblioteca utilizada para comunicação entre o computador e o Arduino
#include <Ethernet.h>  	     					// Biblioteca utilizada para comunicação entre Shield Ethernet e o Arduino 

byte mac[] = {0xDE,0xAD,0xBE,0xEF,0xFE,0xED};  	// Endereço físico da placa de rede (MAC ADDRESS) 
byte ip[]  = {192,168,15,104};                 			// Define o endereço IP => http://192.168.15.104
EthernetServer server(80);                     			// Porta aberta para comunicação Internet e Arduino      
String readString;

int Pin1 = 3;  //  LED branco.
int Pin2 = 4;  //  LED azul.
int Pin3 = 5;  //  LED vermelho.
int Pin4 = 6;  //  LED verde.
int Pin5 = 7;  //  LED amarelo.   
    
void setup(){
    pinMode(Pin1, OUTPUT);  					// Define o Pino1 como saída.
    pinMode(Pin2, OUTPUT);  					// Define o Pino2 como saída.
    pinMode(Pin3, OUTPUT);  					// Define o Pino3 como saída.
    pinMode(Pin4, OUTPUT);  					// Define o Pino4 como saída.
    pinMode(Pin5, OUTPUT);  					// Define o Pino5 como saída.
    digitalWrite(Pin1, LOW);  					// Apaga Lampada do Pino1.
    digitalWrite(Pin2, LOW);  					// Apaga Lampada do Pino2.
    digitalWrite(Pin3, LOW);  					// Apaga Lampada do Pino3.
    digitalWrite(Pin4, LOW);  					// Apaga Lampada do Pino4.
    digitalWrite(Pin5, LOW);  					// Apaga Lampada do Pino5.  
    Ethernet.begin(mac, ip);  					// Chama o MAC e o endereço IP da placa Ethernet.
    server.begin();   					        	// Inicia o servidor que esta inserido junto a placa Ethernet.
}

void loop(){

    EthernetClient client = server.available();

    if (client) {

     	while (client.connected()) {

            if (client.available()) {

	// ---- Faz a leitura caracter por caracter da HTTP request  ---- //

                char c = client.read(); 
                if (readString.length() < 100) {
                    readString += c; 
                } 
                
                if (c == '\n') {

    // ---- A partir daqui começa os códigos html ----  //

                  client.println("HTTP/1.1 200 OK");
                  client.println("Content-Type: text/html");
                  client.println();  
                  client.println("<HTML>"); 
                  client.println("<HEAD>");
                  client.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />");  
                  client.println("<title>Acendendo LEDs</title>");
                  client.println("</HEAD>");
                  client.println(); 
                  client.println("<style>");
                  client.println("* {font-family: Verdana, Geneva, sans-serif;  font-size: 12px;  text-align: left; }");
                  client.println("#caixa {background-color: #E6E6F0; margin: 80px; height: 250px;");
                  client.println("width: 400px; border: 2px solid #000;}");
                  client.println("#titulo{background-color: #0066FF; margin: 0px; width: 390px;");
                  client.println("font-weight: bold; padding: 5px; text-align: center; vertical-align: middle;");
                  client.println("border-bottom: #000000 2px solid; color: #FFF;}");
                  client.println("ul {margin: 20px 0px 0px 70px; // TOP RIGHT BOTTOM LEFT}");
                  client.println("li {line-height: 28px;}");
                  client.println("</style>");
                  client.println("<BODY>");
                  client.println("<div id=\"caixa\">");
                  client.println("<div id=\"titulo\">Automação residencial: controlando LED</div>");
                  client.println("<ul>");
                  client.println("<li><b>LED Branco: </b><a href=\"/branco/on\">Ligar</a> - <a href=\"/branco/of\">Apagar</a></li>");
                  client.println("<li><b>LED Azul: </b><a href=\"/azul/on\">Ligar</a> - <a href=\"/azul/of\">Apagar</a></li>"); 
                  client.println("<li><b>LED Vermelho: </b><a href=\"/vermelho/on\">Ligar</a> - <a href=\"/vermelho/of\">Apagar</a></li>"); 
                  client.println("<li><b>LED Verde: </b><a href=\"/verde/on\">Ligar</a> - <a href=\"/verde/of\">Apagar</a></li>"); 
                  client.println("<li><b>LED Amarelo: </b><a href=\"/amarelo/on\">Ligar</a> <a href=\"/amarelo/of\">Apagar</a> </li>");
                  client.println("<li><b>LED TODOS: </b><a href=\"/leds/on\">Ligar</a> - <a href=\"/leds/of\">Apagar</a</li>");
                  client.println("</ul>");
                  client.println("</div>");
                  client.println("</BODY>");
                  client.println("</HTML>");
                  delay(1);
                  client.stop();
  
                  if (readString.indexOf("branco/on") > 0)   {
                     digitalWrite(Pin1, HIGH); 
                  } 
                  if (readString.indexOf("branco/of") > 0)   {
                     digitalWrite(Pin1, LOW);  
                  } 
                  if (readString.indexOf("azul/on") > 0)   {
                     digitalWrite(Pin2, HIGH); 
                  } 
                  if (readString.indexOf("azul/of") > 0)   {
                     digitalWrite(Pin2, LOW);  
                  }
                  if (readString.indexOf("vermelho/on") > 0)   {
                     digitalWrite(Pin3, HIGH); 
                  } 
                  if (readString.indexOf("vermelho/of") > 0)   {
                     digitalWrite(Pin3, LOW);  
                  }
                  if (readString.indexOf("verde/on") > 0)   {
                     digitalWrite(Pin4, HIGH); 
                  } 
                  if (readString.indexOf("verde/of") > 0)   {
                     digitalWrite(Pin4, LOW);  
                  }
                  if (readString.indexOf("amarelo/on") > 0)   {
                     digitalWrite(Pin5, HIGH); 
                  } 
                  if (readString.indexOf("amarelo/of") > 0)   {
                     digitalWrite(Pin5, LOW);  
                  }
                  if (readString.indexOf("leds/on") > 0)   {
                      digitalWrite(Pin1, HIGH);  
                      digitalWrite(Pin2, HIGH);  
                      digitalWrite(Pin3, HIGH); 
                      digitalWrite(Pin4, HIGH);  
                      digitalWrite(Pin5, HIGH);  
                  } 
                  if (readString.indexOf("leds/of") > 0)   {
                      digitalWrite(Pin1, LOW);  
                      digitalWrite(Pin2, LOW);  
                      digitalWrite(Pin3, LOW);  
                      digitalWrite(Pin4, LOW);  
                      digitalWrite(Pin5, LOW);  
                  } 
                  readString=""; 
                }
             }
          }
       }
    }

 

O que é um Servidor?

A internet compreende a união de redes de computadores em nível mundial que conversam entre si através de um conjunto próprio de protocolos de comunicação. Um Servidor é um computador responsável por fornecer e receber dados dos diversos clientes, atuando como centralizador de informação. Em síntese, é um software dentro de um computador centralizador, conectado a uma Rede Local ou da Internet,  que pode receber dados de clientes bem como fornecê-los.

O Servidor/Cliente é baseado em um sistema de recebimento, processamento e resposta. O Servidor recebe, processa e responde a requisições feitas por um Cliente através de algum protocolo de comunicação.


O que é um Protocolo de Transferência de Hipertexto?

Protocolo que intermedia a relação entre os computadores que atuam como Servidores de hospedagem sites e os navegadores que utilizamos em nossos computadores ou celulares (Clientes). Neste tipo de relação, utiliza-se para estabelecer a comunicação, o procotolo o HTTP (Hypertext Transfer Protocol), que é responsável pelo tratamento dos pedidos e respostas entre Cliente e Servidor na World Wide Web ou em uma Rede Local. Nesse contexto, chamamos os servidores de Servidores Web.


O que é
Linguagem de Marcação de Hipertexto?

As informações que o Servidor Web envia para seu navegador a partir de uma requisição HTTP feita pelo mesmo, pode ocorrer em alguns determinados formatos que precisarão ser interpretados. Um desses formatos é o HTML (HyperText Markup Language), que por sua vez, é uma linguagem utilizada na construção de páginas na Web.

O que é TCP/IP?

  • TCP (Transmission Control Protocol): responsável pelo suporte a rede global Internet, verificando se os dados são enviados na sequência correta e sem erros via rede.
  • IP (Internet Protocol): responsável pela comunicação entre os hosts de uma rede (computador ou máquina conectado a uma rede, que conta com número de IP e nome definidos), administrando o transporte de uma mensagem do host de origem até o host de destino.

Como liberar acesso externo ao arduino?

O programa "Acendendo LEDS com Shield Ethernet" criou um Servidor através da tecnologia Ethernet (arquitetura de interconexão para redes locais) e de um protocolo de rede (TCP/IP). O protocolo controla a forma pela qual os computadores e dispositivos na rede interna podem se comunicar. Ele atribuiu o endereço IP 192.168.15.104 e Porta 80 para acesso ao Arduino na Rede Local. Para acesso externo ao programa, é necessário liberar o acesso no Modem/roteador. O procedimento compreende a criação de um redirecionador de portas.

Abaixo, apresenta-se 2 exemplos de configuração de modem para liberar porta de comunicação para o público externo.

Para que o programa "Acendendo LEDS com Shield Ethernet" funcione, libere o "Endereço IP" e "Porta" declarados.


1) Configurando Modem para liberar Porta do Modem Dlink


2) Configurando Modem para liberar Porta do Modem da VIVO

 

[Voltar]

[Avançar]