Advertisement
tbatista

esp html imhugo arduino

Apr 6th, 2016
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.27 KB | None | 0 0
  1. [code]
  2. // Esp arduino webserver
  3. #include <SoftwareSerial.h>
  4. #include "RTClib.h"
  5. #include <Wire.h>
  6.  
  7. //rtc
  8. RTC_DS1307 rtc;
  9. char hora[30];
  10.  
  11.  
  12. //rele
  13.  
  14. #define DEBUG false        // Se "true" o codigo printa a resposta do modulo a cada operacao
  15. #define rele1_pino 5       // Pino conectado ao rele 1
  16. #define rele2_pino 6
  17. #define rele3_pino 7
  18. #define rele4_pino 8
  19.  
  20. ////########## MUDE AQUI PARA OS PARAMETROS DA SUA REDE WIFI #################
  21. //String meu_IP = "192.168.0.142"; // Escolha um IP compativel com sua rede local
  22. //String minha_SSID = "xxxxxxx";// SSID da sua rede wifi
  23. //String minha_senha ="xxxxx"; // senha da sua rede wifi
  24. ////##########################################################################
  25.  
  26. SoftwareSerial Debug(10, 11); // Cria serial em 10 e 11 para debug. Permite leitura das respostas do modulo
  27.  
  28. bool rele1 = false;        // Estado do rele. true/ligado ou false/desligado
  29. bool rele2 = false;
  30. bool rele3 = false;
  31. bool rele4 = false;
  32.  
  33.  
  34. void setup()
  35. {
  36.   pinMode(rele1_pino, OUTPUT);      // Define pino como saida
  37.   pinMode(rele2_pino, OUTPUT);
  38.   pinMode(rele3_pino, OUTPUT);
  39.   pinMode(rele4_pino, OUTPUT);
  40.  
  41.   Debug.begin(115200);
  42.   Serial.begin(115200); // your esp's baud rate might be different
  43.  
  44.   //rtc
  45.   if (! rtc.begin()) {
  46.     Serial.println("Couldn't find RTC");
  47.     while (1);
  48.   }
  49.  
  50.   if ( rtc.isrunning()) {
  51.     Serial.println("RTC is NOT running!");
  52.     rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  53.   }
  54.   ///
  55.   sendData("AT+RST\r\n", 3000, DEBUG); // reseta o modulo
  56.   sendData("AT+CWMODE=1\r\n", 1000, DEBUG); // configura o modulo como station
  57.   sendData("AT+CWJAP=\"" + minha_SSID + "\",\"" + minha_senha + "\"\r\n", 10000, DEBUG); // loga na rede wifi
  58.   sendData("AT+CIPSTA=\"" + meu_IP + "\"\r\n", 1000, DEBUG); // Define um endereco de IP para o modulo
  59.  
  60.   sendData("AT+CIFSR\r\n", 2000, DEBUG); // Informa endereco de IP
  61.   sendData("AT+CIPMUX=1\r\n", 1000, DEBUG); // Configura para aceitar mais de uma conexão por vez.
  62.   sendData("AT+CIPSERVER=1,80\r\n", 1000, DEBUG); // Habilita servidor na porta 80. O modulo passa a responder nessa porta
  63.  
  64. }
  65.  
  66. void loop()
  67. {
  68.   //
  69.   DateTime now = rtc.now();
  70.    sprintf( hora, "%02d:%02d:%02d", now.hour(), now.minute(), now.second() ); // converte char hora em string 01:01:01
  71.    
  72.   //
  73.  
  74.   if (Serial.available()) // Se o ESP8266 estiver mandando caracteres para a AutomationBoard
  75.   {
  76.     if (Serial.find("+IPD,")) // Se encontrou "+IPD," o proximo caracter sera o ID da conexao
  77.     {
  78.       delay(1000);
  79.       int connectionId = Serial.read() - 48; // subtrai 48 porque a funcao read() retorna um caracter ASCII, subtraindo 48 teremos um int correspondente (primeiro decimal comeca em 48)
  80.       int muda_rele = 0; // Variavel que define qual rele sera alterado, de acordo com o link que o usuario clicou
  81.       if (Serial.find("rele")) {
  82.         muda_rele = Serial.read() - 48;
  83.       }
  84.       if (muda_rele == 1) {
  85.         digitalWrite(rele1_pino, !rele1);  // Se usuario clicou no 1o link, muda estado do rele1
  86.         rele1 = !rele1;
  87.       }
  88.       if (muda_rele == 2) {
  89.         digitalWrite(rele2_pino, !rele2);  // Se usuario clicou no 2o link, muda estado do rele2
  90.         rele2 = !rele2;
  91.       }
  92.       if (muda_rele == 3) {
  93.         digitalWrite(rele3_pino, !rele3);  // Se usuario clicou no 3o link, muda estado do rele3
  94.         rele3 = !rele3;
  95.       }
  96.       if (muda_rele == 4) {
  97.         digitalWrite(rele4_pino, !rele4);  // Se usuario clicou no 4o link, muda estado do rele4
  98.         rele4 = !rele4;
  99.       }
  100.  
  101.   String webpage = "";
  102.       webpage += "<html><head></head><body><center>"; //
  103.       webpage += "<img src='http://goo.gl/IoorRu' width='250' />";
  104.       // webpage += "<br>ESP8266 - Web Server<br />";
  105.       // webpage += "<h3>";
  106.       // webpage += String(hora);// imprime a string hora na pagina
  107.       // webpage += "</h3>";
  108.  
  109.       webpage += "<a href=\"http://";
  110.       webpage += meu_IP;
  111.       webpage += "/rele1\"><h3>Rele 1 ";
  112.     if (rele1) {
  113.         webpage += "ligado</h3></a>";
  114.       } else {
  115.         webpage += "desligado</h3></a>";
  116.       }
  117.       webpage += "<a href=\"http://";
  118.       webpage += meu_IP;
  119.       webpage += "/rele2\"><h3>Rele 2 ";
  120.       if (rele2) {
  121.         webpage += "ligado</h3></a>";
  122.       } else {
  123.         webpage += "desligado</h3></a>";
  124.       }
  125.       webpage += "<a href=\"http://";
  126.       webpage += meu_IP;
  127.       webpage += "/rele3\"><h3>Rele 3 ";
  128.       if (rele3) {
  129.         webpage += "ligado</h3></a>";
  130.       } else {
  131.         webpage += "desligado</h3></a>";
  132.       }
  133.       webpage += "<a href=\"http://";
  134.       webpage += meu_IP;
  135.       webpage += "/rele4\"><h3>Rele 4 ";
  136.       if (rele4) {
  137.         webpage += "ligado</h3></a>";
  138.       } else {
  139.         webpage += "desligado</h3></a>";
  140.       }
  141.       webpage += "</center></body></html>";
  142.  
  143.  
  144.  
  145.       String cipSend = "AT+CIPSEND=";  // Variavel com o comando para enviar dados para o dispositivo que se comunica com o modulo
  146.       cipSend += connectionId;         // ID da conexao
  147.       cipSend += ",";                  // separacao
  148.       cipSend += webpage.length();     // tamanho do pacote de dados a ser enviado
  149.       cipSend += "\r\n";               // fim do comando
  150.  
  151.       sendData(cipSend, 1000, DEBUG);  // envia comando para o modulo
  152.       sendData(webpage, 3000, DEBUG);  // envia a pagina para responder ao acesso de algum dispositivo (ex: usuario)
  153.  
  154.       String closeCommand = "AT+CIPCLOSE=";   // Variavel com o comando para fechar a conexao
  155.       closeCommand += connectionId;           // ID da conexao
  156.       closeCommand += "\r\n";                 // fim do comando
  157.  
  158.       sendData(closeCommand, 1000, DEBUG);    // Envia comando para fechar a conexao
  159.     }
  160.   }
  161. }
  162.  
  163.  
  164. String sendData(String command, const int timeout, boolean debug)
  165. {
  166.   String response = "";  // variavel que armazena a resposta do modulo
  167.  
  168.   Serial.print(command); // envia o comando para o modulo
  169.  
  170.   long int tempo = millis();
  171.  
  172.   while ( (tempo + timeout) > millis())
  173.   {
  174.     while (Serial.available() > 0)
  175.     {
  176.       char c = Serial.read(); // le e armazena os caracteres da resposta do modulo
  177.       response += c;
  178.     }
  179.   }
  180.  
  181.   if (debug)    // Se debug estiver habilitado, imprime mensagens de resposta do modulo
  182.   {
  183.     Debug.print(response);
  184.   }
  185.  
  186.   return response;
  187. }
  188.  
  189. [/code]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement