06-03-2021, 13:09
Saludos.
En esta ocasión vamos a crear una alarma de nivel de agua. Una página web creada al efecto nos informará si el agua no ha llegado al nivel o, si por el contrario, si que ha llegado.
Para ello necesitamos 2 tipos de código, el de la página web (con php) y el del Nodemcu, al cual le cargaremos el programa con la Arduino ID.
Materiales utilizados:
Código página web:
La página lo que realiza es conectar cada 5 segundos con la dirección ip del Nodemcu y leer las lecturas del sensor, en nuestro caso le hemos dado un límite de 200, si no llega a ese límite nos dará una información, si llega o lo sobrepasa nos dará otra.
Si no llega a la lectura límite:
Si llega a la lectura límite:
Código Nodemcu:
Explicación del código:
Bueno, ya está, espero que le sirva a alguien.
Saludos.
En esta ocasión vamos a crear una alarma de nivel de agua. Una página web creada al efecto nos informará si el agua no ha llegado al nivel o, si por el contrario, si que ha llegado.
Para ello necesitamos 2 tipos de código, el de la página web (con php) y el del Nodemcu, al cual le cargaremos el programa con la Arduino ID.
Materiales utilizados:
- Una placa Nodemcu (yo he utilizado la V2).
- Un módulo sensor de agua para Arduino.
- 3 cables Dupont.
Conexiones:
- Pin S del sensor de líquidos al pin A0 del Nodemcu.
- Pin + del sensor de líquidos al pin 3.3V del Nodemcu.
- Pin - del sensor de líquidos al pin GND del Nodemcu.
Código página web:
Código PHP:
<?php
// this refreshes current page after 5 seconds.
header( "refresh:5;" );
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Sensor agua</title>
<style>
.normal
{
background: green;
color: yellow;
border-radius: 1em;
padding: 1em;
position: absolute;
top: 50%;
left: 50%;
margin-right: -50%;
transform: translate(-50%, -50%);
text-align:center
}
.anormal
{
background: red;
color: yellow;
border-radius: 1em;
padding: 1em;
position: absolute;
top: 50%;
left: 50%;
margin-right: -50%;
transform: translate(-50%, -50%);
text-align:center
}
</style>
</head>
<body>
<?
$url = 'http://192.168.1.222';
$content = file_get_contents($url);
$doc = new DOMDocument();
$doc->loadHtml($content);
$contenido = explode("\n", trim($doc->getElementById('nivel')->nodeValue))[0];
if ($contenido < 200)
{
echo"<div class='normal'>";
echo"En estos momentos no ocurre nada.<br/>TODO CORRECTO";
echo"</div>";
}
else
{
echo"<div class='anormal'>";
echo"ATENCION.... ATENCION.... ALARMA..... ALARMA<br/>La cosa no va bien";
echo"</div>";
}
?>
</body>
</html>
La página lo que realiza es conectar cada 5 segundos con la dirección ip del Nodemcu y leer las lecturas del sensor, en nuestro caso le hemos dado un límite de 200, si no llega a ese límite nos dará una información, si llega o lo sobrepasa nos dará otra.
Si no llega a la lectura límite:
Si llega a la lectura límite:
Código Nodemcu:
Código:
#include <ESP8266WiFi.h>
const char* ssid = "Tu_ssid";
const char* password = "Tu_contraseña";
IPAddress ip(192,168,1,222);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
const int analogInPin = A0;
int sensorValue = 0;
WiFiServer server(80);
void setup() {
WiFi.begin(ssid, password);
WiFi.config(ip, gateway, subnet);
server.begin();
}
void loop() {
WiFiClient client = server.available();
if (!client) {
return;
}
while(!client.available()){
delay(1);
}
String request = client.readStringUntil('\r');
client.flush();
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.print("<body>");
client.print("<div id='nivel'>");
client.print(analogRead(analogInPin));
client.print("</div>");
client.println("</body>");
client.println("</html>");
delay(1);
}
Explicación del código:
- Cargamos las librerías necesarias.
- Le damos los parámetros de nuestra red wifi y le asignamos una dirección ip, en este caso la 192.168.1.222
- Asignamos el pin de lectura del sensor.
- Iniciamos el sensor y la comunicación wifi.
- Creamos una página web que contiene la lectura del sensor de líquidos.
Bueno, ya está, espero que le sirva a alguien.
Saludos.