Arduino, Internet das Coisas e Computação vestível |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Você está em » Home : Projetos diversos :: 9. Redes Wifi ::: 9.2. Servidor Web para uma estação Metereológica
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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] |