Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SoftwareSerial.h>
- #include <OneWire.h>
- #include <DallasTemperature.h>
- #include <Wire.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);
- //Define o Pino do sensor ds18b20
- #define ONE_WIRE_BUS 7
- //Cria o objeito para a biblioteca do sensor ds18b20
- OneWire oneWire(ONE_WIRE_BUS);
- //ria o objeito para a biblioteca do sensor Dallas
- DallasTemperature sensors(&oneWire);
- //Variaveis de controle de iluminosidade e temperatura
- double leituraSensor=0;
- String valorSensorSTR="";
- //Pino analógico em que o sensor está conectado o LDR.
- int sensor = 0;
- //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=\"SEUROTEADOR\",\"SUASENHA\"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 ="";
- //inicia a leitura do sensor de temperatura
- sensors.requestTemperatures();
- //grava na variavel leitura sensor
- leituraSensor =sensors.getTempCByIndex(0);
- //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(int(leituraSensor))+ "."+String(getDecimal(leituraSensor)); //combining both whole and decimal part in string with a fullstop between them
- Serial.println("Arduino Temperatura : "+valorSensorSTR); //display string value
- //Lendo o valor do sensor LDR.
- int valorSensor = analogRead(sensor);
- //Convere o valor e string para exibir na pagina web
- valorLDRSTR = String(valorSensor);
- // 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;
- webpage+=" </br> Iluminosidade : ";
- //Envia o valor lido do sensor de ldr
- webpage+=valorLDRSTR + " </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