Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SoftwareSerial.h>
- #define DEBUG true
- //Cria o objeto para usar a biblioteca Sotfware Serial
- //RX do arduino é o pino 2
- //TX do arduino é o pino 3
- //O TX do esp8266 deve ser ligado no pino 2 do arduino
- //O RX do esp8266 deve ser ligado no pino 3 do arduino
- SoftwareSerial esp8266(2,3);
- int valor=800;
- String valorSensorSTR="";
- //Variaveis usada para ler o valor do sensor em tempo real.
- int valorSensor = 0;
- String valorLDRSTR ="";
- void setup()
- {
- //um pequeno delay no arduino
- //para evitar que envie comandos antes do esp8266 dar o start
- delay(500);
- //Seta ambas seriais para a velocidade de 9600
- Serial.begin(9600);
- //(em alguns casos a velocidade do seu esp8266 pode estar diferente desta)
- esp8266.begin(9600);
- //Envia o comandos AT
- // reseta o modulo
- sendData("AT+RST\r\n",2000,DEBUG);
- // configure as access point e estação (ambos)
- sendData("AT+CWMODE=3\r\n",1000,DEBUG);
- //conecta ao roteador com a senha
- //(esta configuração deve ser feita, pois o seu roteador tem nome diferente do meu e senha)
- sendData("AT+CWJAP=\"Linnker\",\"costa0712\"r\n",10000,DEBUG);
- //Retorna o IP ao qual está conectado e o IP de Station
- sendData("AT+CIFSR\r\n",1000,DEBUG);
- //Habilita multiplas conexões
- sendData("AT+CIPMUX=1\r\n",1000,DEBUG);
- //Habilita ao servidor a porta 80
- sendData("AT+CIPSERVER=1,80\r\n",1000,DEBUG);
- }
- void loop()
- {
- //Limpa as variaveis para receber os dados (temperatura e iluminosidade)
- valorSensorSTR ="";
- valorLDRSTR ="";
- //verifica se o esp8266 esta enviando mensagem e esta disponivel
- if(esp8266.available())
- {
- if(esp8266.find("+IPD,"))
- {
- //Converte o valor de temperatura em String para exibir na pagina web
- valorSensorSTR+=String(valor);
- Serial.println("Arduino Temperatura : "+valorSensorSTR); //display string value
- // subtrai 48, por que o metodo read() retorna os valores ASCII, o primeiro numero decimal começa em 48
- int connectionId = esp8266.read()-48;
- //Inicia a montagem da pagina web
- //criando a variavel webpage e armazenando os dados nela
- String webpage = "<head><meta http-equiv=""refresh"" content=""5""></head>";
- webpage+="<h1>Ola Mundo</h1><h2> Esp8266</h2></br><h3>Temperatura : ";
- //Envia o valor lido do sensor de temperatura
- webpage+= valorSensorSTR + " </h3>";
- //cria uma variavel para enviar o comando até
- //que enviará as informações para o modulo esp8266
- String cipSend = "AT+CIPSEND=";
- cipSend += connectionId;
- cipSend += ",";
- cipSend +=webpage.length();
- cipSend +="\r\n";
- //Envia os comandos para o modulo
- sendData(cipSend,1000,DEBUG);
- sendData(webpage,1000,DEBUG);
- //Encerra os comandos
- String closeCommand = "AT+CIPCLOSE=";
- closeCommand+=connectionId;
- closeCommand+="\r\n";
- //Envia os comandos de encerramento
- sendData(closeCommand,2000,DEBUG);
- delay(5000);
- }
- }
- }
- //Metodo que envia os comandos para o esp8266
- String sendData(String command, const int timeout, boolean debug)
- {
- //variavel de resposta do esp8266
- String response = "";
- // send a leitura dos caracteres para o esp8266
- esp8266.println(command);
- long int time = millis();
- while( (time+timeout) > millis())
- {
- while(esp8266.available())
- {
- //Concatena caracter por caractere recebido do modulo esp8266
- char c = esp8266.read();
- response+=c;
- }
- }
- //debug de resposta do esp8266
- if(debug)
- {
- //Imprime o que o esp8266 enviou para o arduino
- Serial.println("Arduino : " + response);
- }
- return response;
- }
- //Metodo que converte float em string
- long getDecimal(float val)
- {
- //converte o float para inteiro
- int intPart = int(val);
- //multiplica por 100
- //precisão de 2 casas decimais
- long decPart = 100*(val-intPart);
- //Se o valor for maior que 0 retorna
- if(decPart>0)
- //retorna a variavel decPart
- return(decPart);
- //caso contrario retorna o valor 0
- else if(decPart=0)
- return(00);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement