Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Carrega a biblioteca wifi
- #include <WiFi.h>
- // Credenciais da rede
- const char* ssid = "hands";
- const char* senha = "unijuiesp32";
- // Instância do servidor com a respectiva porta
- WiFiServer servidor(80);
- // Variavel para a requisição HTTP
- String cabecalho;
- // Variavel de controle para os estados dos pinos
- String estadopino26 = "desligado";
- // Variaveis com os pinos GPIO
- const int pino26 = 26;
- void setup() {
- Serial.begin(115200);
- // Inicializa as variaveis de saida
- pinMode(pino26, OUTPUT);
- // Define as saidas em estado baixo
- digitalWrite(pino26, LOW);
- // Conecta a wifi nas credenciais informadas acima
- Serial.print("Conectando em ");
- Serial.println(ssid);
- WiFi.begin(ssid, senha);
- while (WiFi.status() != WL_CONNECTED) {
- delay(500);
- Serial.print(".");
- }
- // Exibe o endereço de IP atribuido e inicia o web server
- Serial.println("");
- Serial.println("WiFi Conectado.");
- Serial.println("Endereço IP: ");
- Serial.println(WiFi.localIP());
- servidor.begin();
- }
- void loop(){
- WiFiClient client =servidor.available(); // Aguardando os clientes
- if (client) { // Se um novo cliente se conecta
- Serial.println("Novo cliente. ");
- String linhaAtual = ""; // String que armazena os dados dos clientes
- while (client.connected()) { // Enquanto o cliente está conectado
- if (client.available()) { // Se houver dados do cleinte para ler
- char c = client.read(); // Leia os dados
- Serial.write(c); // Exibe o dado lido no monitor serial
- cabecalho += c;
- if (c == '\n') {
- // se tiver uma linha em branco, então os dados foram recebidos. Logo vamos responder a solicitação.
- if (linhaAtual.length() == 0) {
- // Um cabeçalho HTTP sempre inicia com uma resposta (ex: HTTP/1.1 200 OK)
- // e entao é enviado uma resposta
- client.println("HTTP/1.1 200 OK");
- client.println("Content-type:text/html");
- client.println("Connection: close");
- client.println();
- // Ativa e desativa os GPIO
- if (cabecalho.indexOf("GET /26/on") >= 0) {
- Serial.println("GPIO 26 ligado");
- estadopino26 = "ligado";
- digitalWrite(pino26, HIGH);
- } else if (cabecalho.indexOf("GET /26/off") >= 0) {
- Serial.println("GPIO 26 desligado");
- estadopino26 = "desligado";
- digitalWrite(pino26, LOW);
- }
- // Página HTML
- client.println("<!DOCTYPE html><html>");
- client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
- client.println("<link rel=\"icon\" href=\"data:,\">");
- // Estilo CSS dos botoes de liga e desliga
- client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
- client.println(".button { background-color: #4CAF50; border: none; color: white; padding: 16px 40px;");
- client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
- client.println(".button2 {background-color: #555555;}</style></head>");
- // Cabeçalho da página
- client.println("<body><h1>ESP32 Web Server</h1>");
- // Estado atual dos botões on/off para a GPIO 26
- client.println("<p>GPIO 26 - Estado " + estadopino26 + "</p>");
- // Se o pino 26 estiver desligado, exibimos o botao para ligar
- if (estadopino26=="desligado") {
- client.println("<p><a href=\"/26/on\"><button class=\"button\">Ligar</button></a></p>");
- } else {
- client.println("<p><a href=\"/26/off\"><button class=\"button button2\">Desligar</button></a></p>");
- }
- client.println("</body></html>");
- // A resposta HTTP termina com uma linha em branco
- client.println();
- // Saimos do loop
- break;
- } else { // Se temos uma nova linha, limpamos a variavel
- linhaAtual = "";
- }
- } else if (c != '\r') { // se voce tem alguma coisa diferente de um aracter de retorno
- linhaAtual += c; // adicione ao final da linha atual
- }
- }
- }
- // Limpamos a variavel
- cabecalho = "";
- // Fechamos a conexao
- client.stop();
- Serial.println("Cliente desconectado. ");
- Serial.println("");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement