Advertisement
mateusdiel

HandsOn

May 22nd, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.74 KB | None | 0 0
  1. // Carrega a biblioteca wifi
  2. #include <WiFi.h>
  3.  
  4. // Credenciais da rede
  5. const char* ssid = "hands";
  6. const char* senha = "unijuiesp32";
  7.  
  8. // Instância do servidor com a respectiva porta
  9. WiFiServer servidor(80);
  10.  
  11. // Variavel para a requisição HTTP
  12. String cabecalho;
  13.  
  14. // Variavel de controle para os estados dos pinos
  15. String estadopino26 = "desligado";
  16.  
  17. // Variaveis com os pinos GPIO
  18. const int pino26 = 26;
  19.  
  20. void setup() {
  21.   Serial.begin(115200);
  22.   // Inicializa as variaveis de saida
  23.   pinMode(pino26, OUTPUT);
  24.   // Define as saidas em estado baixo
  25.   digitalWrite(pino26, LOW);
  26.  
  27.   // Conecta a wifi nas credenciais informadas acima
  28.   Serial.print("Conectando em ");
  29.   Serial.println(ssid);
  30.   WiFi.begin(ssid, senha);
  31.   while (WiFi.status() != WL_CONNECTED) {
  32.     delay(500);
  33.     Serial.print(".");
  34.   }
  35.   // Exibe o endereço de IP atribuido e inicia o web server
  36.   Serial.println("");
  37.   Serial.println("WiFi Conectado.");
  38.   Serial.println("Endereço IP: ");
  39.   Serial.println(WiFi.localIP());
  40.   servidor.begin();
  41. }
  42.  
  43. void loop(){
  44.   WiFiClient client =servidor.available();   // Aguardando os clientes
  45.  
  46.   if (client) {                             // Se um novo cliente se conecta
  47.     Serial.println("Novo cliente. ");      
  48.     String linhaAtual = "";                // String que armazena os dados dos clientes
  49.     while (client.connected()) {            // Enquanto o cliente está conectado
  50.       if (client.available()) {             // Se houver dados do cleinte para ler
  51.         char c = client.read();             // Leia os dados
  52.         Serial.write(c);                    // Exibe o dado lido no monitor serial
  53.         cabecalho += c;
  54.         if (c == '\n') {                    
  55.           // se tiver uma linha em branco, então os dados foram recebidos. Logo vamos responder a solicitação.
  56.           if (linhaAtual.length() == 0) {
  57.             // Um cabeçalho HTTP sempre inicia com uma resposta (ex: HTTP/1.1 200 OK)
  58.             // e entao é enviado uma resposta
  59.             client.println("HTTP/1.1 200 OK");
  60.             client.println("Content-type:text/html");
  61.             client.println("Connection: close");
  62.             client.println();
  63.            
  64.             // Ativa e desativa os GPIO
  65.             if (cabecalho.indexOf("GET /26/on") >= 0) {
  66.               Serial.println("GPIO 26 ligado");
  67.               estadopino26 = "ligado";
  68.               digitalWrite(pino26, HIGH);
  69.             } else if (cabecalho.indexOf("GET /26/off") >= 0) {
  70.               Serial.println("GPIO 26 desligado");
  71.               estadopino26 = "desligado";
  72.               digitalWrite(pino26, LOW);
  73.             }
  74.            
  75.             // Página HTML
  76.             client.println("<!DOCTYPE html><html>");
  77.             client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
  78.             client.println("<link rel=\"icon\" href=\"data:,\">");
  79.            
  80.             // Estilo CSS dos botoes de liga e desliga
  81.             client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
  82.             client.println(".button { background-color: #4CAF50; border: none; color: white; padding: 16px 40px;");
  83.             client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
  84.             client.println(".button2 {background-color: #555555;}</style></head>");
  85.            
  86.             // Cabeçalho da página
  87.             client.println("<body><h1>ESP32 Web Server</h1>");
  88.            
  89.             // Estado atual dos botões on/off para a GPIO 26  
  90.             client.println("<p>GPIO 26 - Estado " + estadopino26 + "</p>");
  91.            
  92.             // Se o pino 26 estiver desligado, exibimos o botao para ligar
  93.             if (estadopino26=="desligado") {
  94.               client.println("<p><a href=\"/26/on\"><button class=\"button\">Ligar</button></a></p>");
  95.             } else {
  96.               client.println("<p><a href=\"/26/off\"><button class=\"button button2\">Desligar</button></a></p>");
  97.             }                    
  98.             client.println("</body></html>");
  99.                        
  100.             // A resposta HTTP termina com uma linha em branco
  101.             client.println();
  102.             // Saimos do loop
  103.             break;
  104.           } else { // Se temos uma nova linha, limpamos a variavel
  105.             linhaAtual = "";
  106.           }
  107.         } else if (c != '\r') {  // se voce tem alguma coisa diferente de um aracter de retorno
  108.           linhaAtual += c;      // adicione ao final da linha atual
  109.         }
  110.       }
  111.     }
  112.     // Limpamos a variavel
  113.     cabecalho = "";
  114.     // Fechamos a conexao
  115.     client.stop();
  116.     Serial.println("Cliente desconectado. ");
  117.     Serial.println("");
  118.   }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement