Arduino, Internet das Coisas e Computação vestível |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Você está em »
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
9.2. Servidor Web para uma estação Metereológica
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/*
Programa: Servidor Web para uma estação Metereológica com sensor DHT11
Autor: André Luis Marques da Silveira
Data: 22/09/2019
*/
#include "Wire.h" // Biblioteca para enviar e receber dados TWI/I2C
#include "Adafruit_GFX.h" // Biblioteca para processamento gráfico
#include "Adafruit_SSD1306.h" // Biblioteca do controlador SSD1306
#include "ESP8266WiFi.h"
#include <DHT.h>
#define DHTPIN D5
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
Adafruit_SSD1306 display(128, 64); // Cria objeto display
const char* ssid = "NOME DO SERVIDOR";
const char* password = "SENHA DO SERVIDOR";
int porta = 80;
// --- Caso ocorra problemas com a porta 80, utilize 8082 ou 8089 ---- //
// --- A chamada, por exemplo fica: http://192.168.0.15:8082 ---- //
WiFiServer server(porta);
void setup() {
// --- Inicializa Sensor DHT11 ---- //
dht.begin(); // Inicializa biblioteca WIRE
Wire.begin(); // Inicializa biblioteca sensor DHT11
pinMode(DHTPIN, INPUT); // Define pino do Sensor DHT11
// ---- Inicializa tela Oled ---- //
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Inicializa a tela com endereço I2C "0x3C"
display.setTextColor(WHITE); // Define cor do texto
display.setRotation(0); // Configura orientação
display.setTextWrap(false);
display.setTextSize(1); // Define tamanho da fonte do texto
display.dim(0); // Define brilho (0 é máximo)
display.clearDisplay(); // Limpa a tela
display.drawRect(0,0,128,15,WHITE); // Posição (x0,y0,x1,y1)
display.setCursor(4,4); // Posição do cursor na tela
display.print("Rede:"); // Escreve texto no display
display.println(ssid); // Escreve no da Rede Wifi
display.display(); // Mostra texto no display
// ---- Inicializa serial ---- //
Serial.begin(9600);
Serial.print("Conectando a rede Wifi ");
Serial.println(ssid); // Escreve nome da Rede Wifi na Serial
// --- Conecta Rede Wifi ---- //
int a = 0;
WiFi.begin(ssid, password); // Passa parâmetros para fazer conexão com a Rede sem fio
while (WiFi.status() != WL_CONNECTED) { // Testa status da conexão
a = a + 1;
if (a < 60) {
Serial.print(".");
} else {
Serial.println(".");
a = 0;
}
delay(100);
}
Serial.println("Conectado a rede");
Serial.println("");
Serial.println("Servidor iniciado");
// ---- Inicia Servidor Web para receber dados em "WiFiServer server(porta)" ---- //
server.begin();
// ---- Escreve na serial o IP recebido da rede sem fio (AUTOMÁTICO) ---- //
Serial.print("IP para se conectar ao NodeMCU: ");
Serial.print("http://");
Serial.println(WiFi.localIP());
// ---- Escreve na tela Oled o IP recebido da rede sem fio (AUTOMÁTICO) ---- //
display.setCursor(0,25);
display.print("IP:");
display.print(WiFi.localIP());
display.print(":");
display.println(porta);
display.display();
}
void loop() {
WiFiClient client = server.available(); // Verifica se algum cliente está conectado ao servidor
if (!client) { // Cliente não conectado, reexecuta processo
delay(10);
return;
}
// --- lê sensor DHT11 - temperatura e umidade --- //
float h = dht.readHumidity(); // Temperatura em Celsius
float t = dht.readTemperature(); // Temperatura em Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
Serial.println("Novo cliente se conectou!");
Serial.print(" Temperatura: ");
Serial.print(t);
Serial.print(" Umidade: ");
Serial.println(h);
display.fillRect(0,40,128,64,BLACK); // fillRect(x,y,width,height,color)
display.setCursor(11,42); // Posição do cursor na tela
display.print("Temperatura:"); // Escreve texto no display
display.setCursor(85,42); // Posição do cursor na tela
display.print(t); // Escreve texto no display
display.setCursor(24,52); // Posição do cursor na tela
display.print("Umidade:"); // Escreve texto no display
display.setCursor(76,52); // Posição do cursor na tela
display.print(h); // Escreve texto no display
display.display(); // Mostra texto no display
// ---- Enquanto cliente estiver conectado aguarda 1 milisegundo ---- //
while(!client.available()){
delay(1);
}
String request = client.readStringUntil('\r'); // Faz leitura da primeira linha da requisição Web
Serial.println(request); // Escreve requisição na Serial
client.flush(); // Aguarda até todos dados serem enviados ao cliente
// ---- Monta protocolo de comunicação HTTP e conteúdo HTML para cliente ---- //
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<HEAD>");
client.println("<TITLE>Leitura da temperatura</TITLE>");
client.println("<META http-equiv=Content-Type content='text/html; charset=iso-8859-1'>");
client.println("<META HTTP-EQUIV='refresh' CONTENT='5'>");
client.println("</HEAD>");
client.println("<body>");
client.println("<h1><center>Bom-dia!</center></h1>");
client.println("<h2><center>Data e Hora</center></h2>");
client.println("<p><center id='datetime'></center></p>");
client.println("<script>");
client.print("var dt = new Date();");
client.print("document.getElementById('datetime').innerHTML = (('0'+dt.getDate()).slice(-2))+'/'+");
client.print("(('0'+(dt.getMonth()+1)).slice(-2))+'/'+(dt.getFullYear())+' - ");
client.print("'+(('0'+dt.getHours()).slice(-2))+':'+(('0'+dt.getMinutes()).slice(-2));");
client.println("</script>");
client.println("<h2><center>Temperatura</center></h2>");
client.println("<p><center>");
client.println(t);
client.println("Celsius</center></p>");
client.println("<p><center>");
client.println(f);
client.println("Fahrenheit </center></p>");
client.println("<h2><center>Umidade</center></h2>");
client.println("<p><center>");
client.println(h);
client.println("</center></p>");
client.println("</body>");
client.println("</html>");
Serial.println("Cliente desconectado ");
Serial.println("");
delay(20);
}
|
|
[Voltar] |
[Avançar] |