Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cochabamba – Bolivia
2020
Dedicatoria
INDICE DE TABLAS
Tabla 1 válvula neumática 20
Tabla 2 válvula solenoide 22
Tabla 3 características sensor To-92 23
Tabla 4 Sensor LM35 24
Tabla 5 características sensor DTH22 24
Tabla 6 Características sensor YL-69 25
Tabla 7 características sensor HTU21D 26
Tabla 8 características sensor DHT11 27
Tabla 9 características Atmel 31
Tabla 10 características microchip 32
Tabla 11 tipos de gama 32
Tabla 12 características módulo ESP8266 33
Tabla 13 clases de bluetooth 40
Tabla 14 Estándares de wifi 41
Tabla 15 Tipos de energía renovables 43
Tabla 16 Elección de tuberia 46
Tabla 17 Elección de sensor de humedad de suelo 46
Tabla 18 Elección de sensor de humeda y temperatura ambiente 47
Tabla 19 Elección de bomba de agua 48
Tabla 20 Elección del microcontrolador 54
Tabla 21 Elección de módulo wifi 54
Tabla 22 Elección de los difusores de riego 56
Tabla 23 Requisitos de componentes electrónicos 60
Tabla 24 Componentes mecánicos 60
Tabla 25 Cotización sistema de riego 60
Tabla 26 Mano de obra 61
CAPITULO 1
INTRODUCCIÓN
1.3 OBJETIVOS
1.3.1 Objetivo general
Diseñar y controlar un sistema domótico de riego automático, implementando
energía limpia y renovable, amigable con el medio ambiente, para los jardines
del tecnológico puerto de mejillones.
1.3.2 Objetivos específicos
● Examinar energías renovables para el sistema.
2. MARCO TEÓRICO
Se describirá las características y funcionamiento de los componentes que
integra el sistema de riego automático.
2.1 TIPOS DE SUELO
De acuerdo a la textura del suelo, es decir a cómo luce y cómo se siente, es
posible distinguir los siguientes tipos de suelo:
Fuente: https://jardineriaon.com
2.1.3 Suelo pedregoso: Es un suelo que presenta muchas piedras y por eso se
dificulta el cultivo de plantas. La tierra además es seca y compacta.
Fuente: https://jardineriaon.com
2.1.4 Suelo arenoso:
A diferencia del suelo arcilloso, este suelo es suelto y seco por lo que el agua
se absorbe con rapidez.
Fuente: https://jardineriaon.com
Fuente: https://jardineriaon.com
Fuente: https://molecor.com
Fuente: https://Quimi.net.com
Fuente: https://Quimi.net.com
Fuente: https://Ceacsa.com
2.4 TIPOS DE BOMBA DE AGUA
Se denomina bomba de agua al dispositivo que consigue convertir la energía
mecánica que posibilita su accionar en energía de un fluido incompresible que
ella misma consigue desplazar. Cuando aumenta la energía del fluido (el agua),
además logra incrementar su presión, su altura o su velocidad.
2.4.1 Bomba periférica:
La bomba periférica es conocida por su uso doméstico.
Son eléctricas y su función es elevar el agua a más de 30 metros de altura,
dependiendo del modelo, brindando la presión de agua que necesitas.
Tiene un caudal máximo de 86 litros por minuto.
Figura 9 bomba periférica
Fuente: https://bombashidro.com
2.4.3 Motobomba
Son bombas con un motor a combustión, lo cual les permite funcionar de
manera independiente. Esta bomba lanza caudal y presión al mismo tiempo.
Son ideales para trabajos de riesgo extendido en sectores agrícola, llenado de
tanques, y para suministrar agua a lugares distantes. Es importante que esté
bien equilibrada con el suelo para reducir la perdida de aceite con el
movimiento, ya que de suceder esto, se apagará automáticamente.
Figura 11 motobomba
Fuente: https://bombashidro.com
Fuente: https://Romeindustrial.com
● Viscosidad apropiada
● Variación mínima de viscosidad con la temperatura
● Estabilidad frente al cizallamiento
● Baja compresibilidad
● Buen poder lubricante
● Inerte frente a los materiales de juntas y tubos
● Buena resistencia a la oxidación
● Estabilidad térmica e hidrolítica
● Características anticorrosivas
● Propiedades antiespumantes
● Ausencia de acción nociva
Fuente: https://Valvutex.com
2.3 TIPOS DE SENSOR DE TEMPERATURA
Un sensor de temperatura es un componente electrónico capaz de detectar
magnitudes físicas o químicas a través del sensor térmico transforma la
diferencia de potencial en una señal eléctrica. Ósea transforma los cambios de
temperatura en cambios de señales eléctrica que son procesados por equipo
electrónico.
Corriente 1 mA
Fuente: https://Sawers.com.bo
2.3.2 Sensor de temperatura LM 35
En el LM35 la primera patilla o pin es para la alimentación necesaria para el
sensor, que va de 4 a 30v, luego, en el centro, tenemos la patilla para la salida,
es decir, la que dará una tensión u otra en función de la temperatura. Y la
tercera patilla es de tierra. Su rango de temperaturas está limitado por la
cantidad de voltajes variables que puede tener a su salida, que van desde los -
550mV hasta los 1500mV.
Consumo de corriente 60 μA
Fuente: https://Sawers.com.bo
Voltaje de Operación 3V - 6V DC
Fuente: https://Tdrobotica.com
Fuente: https://Electroncoscaldas.com
Fuente: https://Sawers.com.bo
Una de las ventajas que nos ofrece el DHT11, además de medir la temperatura
y la humedad, es que es digital.
Alimentación de 3,5 V a 5 V
Consumo 2,5 mA
Fuente: https://Electrocrea.com
Características de C:
● Es el lenguaje de programación de propósito general asociado al
sistema operativo UNIX.
● Es un lenguaje de medio nivel. Trata con objetos básicos como
caracteres, números, etc. También con bits y direcciones de memoria.
● Posee una gran portabilidad
● Se utiliza para la programación de sistemas: construcción de intérpretes,
compiladores, editores de texto, etc.
• Uso de punteros.
• Es portátil, tiene un gran número de compiladores en diferentes
plataformas y sistemas operativos.
• Es de uso general.
Fuente: https://Cosasdeingenieria.com
Parámetros Microchip
(16-bit opcode)
Fuente: https://Electrio.com
Dentro de la gran cantidad de usos para este módulo caben destacar los
siguientes:
● Electrodomésticos conectados.
● Automatización del hogar.
● Automatización de la industria.
● Cámaras IP.
● Redes de sensores.
● Wereables.
● IoT (Internet of Things o Internet de las Cosas)
● IIoT (Industrial Internet of Things o Internet de las Cosas para el sector
Industrial)
Fuente: https://Programarfacil.com
Fuente: https://Autosolar.es.com
La placa fotovoltaica está diseñada para soportar las condiciones que se dan al
aire libre y poder formar parte de la "piel" del edificio. Su vida útil se considera
de 25 años.
Fuente: https://autosolar.es.com
Fuente: https://Autosolar.es.com
Fuente: https://Mundoriego.es.com
La parte más importante del difusor es la tobera, que es el lugar por el que se
emite el abanico de agua. Se trata de una pieza sustituible y que determina
tanto el alcance como la forma del abanico.
A los difusores se les puede cambiar la tobera para modificar el área de riego.
Las toberas más habituales pueden tener los siguientes alcances, aunque ten
en cuenta que se pueden reducir un 25% ajustando el tornillo de alcance:
● 2.5m. Corresponden 10 pies.
Fuente: https://Mundoriego.es.com
Fuente: https://domoticasistemas.com
2.8.3 Inalámbrico
Los sistemas domóticos de funcionamiento e instalación inalámbrica son
rápidos y fáciles de disfrutar en muy poco tiempo y casi en cualquier lugar. Este
tipo de sistemas funcionan con ondas de radiofrecuencia. Son sencillos de
instalar y fáciles de controlar.
Figura 32 domótica inalámbrica
Fuente: https://domoticasistemas.com
Ventajas:
Parámetros
Bluetooth Clase 1 Con una potencia de 100 mW y un
alcance 100 metros.
Ventajas:
2.9.3 WIFI
Es una tecnología de telecomunicaciones que permite la interconexión
inalámbrica entre sistemas informáticos y electrónicos, tales como
computadores, consolas de videojuego, televisores, teléfonos celulares, etc.
Esta tecnología les permite a dichos dispositivos conectarse entre sí para
intercambiar datos, o bien conectarse a un punto de acceso de red inalámbrica,
pudiendo tener así conexión a Internet.
En la actualidad Wi-Fi utiliza los estándares 802.11a, 802.11b y 802.11g,
siendo este último compatible con el 802.11b; pero ahora, según las nuevas
investigaciones, podremos ver en una próxima oportunidad la implementación
del estándar 802.11n. El estándar 802.11n está basado en una tecnología que
podría ofrecer velocidades de transmisión de datos de hasta 300 Mbps.
Tabla 14 Estándares de wifi
Estándares Características
Velocidad (teórica)- 2 Mbit/s
Velocidad (práctica) - 1 Mbit/s
Frecuencia - 2,4 Ghz
802.11 Ancho de banda - 22 MHz
Alcance - 330 metros
Año de implementación - 1997
Velocidad (teórica)- 54 Mbit/s
Velocidad (práctica) - 22 Mbit/s
Frecuencia - 5,4 Ghz
802.11a Ancho de banda - 20 MHz
Alcance - 390 metros
Año de implementación - 1999
Velocidad (teórica)- 11 Mbit/s
Velocidad (práctica) - 6 Mbit/s
Frecuencia - 2,4 Ghz
802.11b Ancho de banda - 22 MHz
Alcance - 460 metros
Año de implementación - 1999
Velocidad (teórica)- 54 Mbit/s
Velocidad (práctica) - 22 Mbit/s
Frecuencia - 2,4 Ghz
802.11g Ancho de banda - 20 MHz
Alcance - 460 metros
Año de implementación - 2003
Velocidad (teórica)- 600 Mbit/s
Velocidad (práctica) - 100 Mbit/s
Frecuencia - 2,4 Ghz y 5,4 Ghz
Ancho de banda - 20/40 MHz
Alcance - 820 metros
802.11n Año de implementación - 2009
Disponible en la mayoría de los dispositivos
modernos. Puede configurarse para usar solo 20
MHz de ancho y así prevenir interferencias en
una zona congestionada.
Velocidad (teórica)- 6.93 Gbps
Velocidad (práctica) - 100 Mbit/s
Frecuencia - 5,4 Ghz
Ancho de banda - 80 o hasta 160 MHz
Año de implementación - 2013
802.11ac Nuevo estándar sin interferencia, pero con
menos alcance, aunque hay tecnologías que lo
amplían. Más rendimiento y otras ventajas.
Velocidad (teórica)- 7.13 Gbit/s
Velocidad (práctica) - Hasta 6 Gbit/s
Frecuencia - 60 Ghz
802.11ad Ancho de banda - 2 MHz
Alcance - 300 metros
Año de implementación - 2012
Frecuencia - 0.9 Ghz
Ancho de banda - 2 MHz
Alcance - 1000 metros
Año de implementación - 2016
802.11ah Conocida como Wi-Fi HaLow
CAPITULO 3
Energía Características
Es una energía renovable que se obtiene del viento que puede
convertirse en energía mecánica y a partir de ella
Eólica en electricidad u otras formas útiles de energía para las
actividades humanas
Para una buena elección de una energía renovable, se mencionará las características
que debe tener de acuerdo a las funciones que se necesitan:
⮚ Una energía limpia, sin daño al medio ambiente.
⮚ Energía renovable presente en todas las épocas del año.
⮚ Coste de implementación económica.
Para el proyecto se elegirá de energía renovable el panel solar, cuenta con las
características mencionadas.
Figura 33 Panel solar fotovoltaico
Fuente: https://Autosolar.es.com
PANEL SOLAR
MODULO WIFI
ESP8266
PANTALLA LCD
SENSOR DE
HUMEDAD
DE SUELO
TABLERO DE
Microcontrolador CONTROL y
PROGRAMACION
ATmega328P
SENSOR DE
HUMEDAD Y
TEMPERATURA BOMBA DE
AMBIENTE AGUA
Resistibles a diferentes
tipos de temperatura,
temperaturas elevadas
hasta 110°C, lo que
significa una larga vida, no
Tubos de polietileno se oxidan y son fáciles de
manipular.
Alta durabilidad, en
grandes instalaciones
reduce los costos de
instalación.
Tuberías de aluminio
Fuente: http://Eurotubo.com
Para la elección de material para las tuberías, se mencionará las características que
debe tener:
⮚ Alta durabilidad.
⮚ Facilidad en la manipulación de instalación.
⮚ Precio económico
Por las ventajas y características se usará el ecotubo de polietileno de 16 y 20 mm.
3.3 SENSORES Y ACTUADORES DEL SISTEMA DE RIEGO
Para la elección del sensor de humedad de suelo se elegirá por las siguientes
características:
⮚ Voltaje de funcionamiento de 5V dc
⮚ Rango de humedad de 0 a 100%
⮚ Salida analógica.
Figura 36 Sensor de humedad de suelo YL-69
Fuente: https://Electroncoscaldas.com
3.3.2 Sensor de temperatura y humedad ambiente
⮚ Alimentación de voltaje de 5V dc
⮚ Rango de medición de temperatura ambiente por lo menos de 0 a 80°C
⮚ Rango de humedad del ambiente de 0 a 80%
Se utiliza también el sensor de temperatura y humedad de ambiente DTH22 porque es
un componente más preciso, tiene mayor rango de medición que los otros sensores.
Figura 37 Sensor temperatura y humedad DHT22
Fuente: https://Tdrobotica.com
Void
“F: ” Now.year()
intro_0 Now.month()
Now.day()
Now.hour()
“Riego automático” “H: ” Now.minute()
Now.second()
Void menú_1
Dht.readTemperature() TEM:
Dht.readHuminity() HA:
hs
AnalogRead()
Activar>1
Void
menú_3
Desactivar>2
Activar_ timbre
NO SI
Timbre Timbre
Pulsación==1 HIGH
LOW
1 “*”
1
Void
HS_Prueba
Hs=analogRead(A3)
NO SI
ON Hs>limite_hs OFF
Void acción_21
NO SI
“dato no Pulsación==1,2,3
registrado ” Contador==21 EEPROM.Write
Void acción_22
NO SI
“dato no Pulsación==1,2,3 Tiempo (5,10,15,30 min)
registrado ” Contador==22
2
2
Void acción_23
NO SI
“dato no Pulsación==1,2,3 hora (6,7,8)
registrado ” Contador==23 (17,18,19)
FIN
A continuación, se describe las partes más importantes del código del sistema de
riego:
En la figura 39 se declara el pin de salida del relé que será activado manualmente o
mediante el keypad o por programación horaria. En el código se inicializa RTC.
Para la elección del microcontrolador para el sistema de riego se elegirá por las
siguientes características:
⮚ Número de pines de entradas y salidas.
⮚ Velocidad de frecuencia de operación.
⮚ Memoria flash para la programación.
⮚ Tamaño de datos de RAM.
⮚ Precio de mercado.
Figura 44 Microcontrolador ATmega328P
Fuente:
https://robotics.org.za
Para la elección del módulo de wifi se definirá por las siguientes características:
⮚ Memoria RAM
⮚ Estándar inalámbrico
⮚ Memoria Flash
Para el uso domótico del proyecto se implementará el módulo wifi Esp8266, este
módulo es compatible con la mejor capacidad de TCP / IP, con protocolo IPV4.
Difusores Características
Para el riego de los jardines se utiliza difusores estables, por sus características se
puede escoger a cuantos grados de riego se desea, tienen la opción de regular la
presión de distancia de riego, 2m. distancia, 3m distancia y 4m. distancia y son
económicamente accesibles.
Figura 48 Aspersores de riego
Fuente: https://Mundoriego.es.com
Se realizo la medición del terreno del jardín para calcular cuantos metros de tubería se
necesita para la instalación y de acuerdo al tamaño del terreno para escoger que tipo
potencia de alcance de aspersores se debe colocar en el jardín, de acuerdo a los
datos de cálculo se podrá escoger que tipo de bomba centrífuga se requiere para el
riego del jardín.
CAPITULO 4
4.1 TABLA DE COSTOS
Fuente de alimentación 1 5V DC
5.1 CONCLUSIONES
Terminado el proyecto de grado se determina que el proyecto cumple con los objetivos
planteados, se realizó el análisis y evaluación de funcionamiento del sistema. La
conclusión total del proyecto con respecto a los componentes electrónicos no fue
realizada en su totalidad por la crisis económica a causa de la pandemia Covid-19.
Se describe las siguientes conclusiones generales y específicas.
● Se realizo la conexión entre el módulo ESP8266 y la base de datos de la
firebase, pero se tuvo los siguientes inconvenientes:
5.2 RECOMENDACIONES
El sistema de riego automático es expansible en el número de aspersores que se
desea ya que el sistema hidráulico es adaptable para la implementación de más
componentes de riego. Por esta razón se recomienda rediseñar o acoplar los nuevos
componentes de riego al actual.
Se proyecta que el sistema de riego será de aplicación futura no solo será para su uso
doméstico sino también será destinado para su uso en invernaderos o viveros.
Una vez puesto en marcha el sistema de riego se recomienda:
● Desarrollar dentro del programa, los ajustes necesarios para que el sistema
sea capaz de ajustarse a diferentes tipos de plantas y los suelos de los
jardines.
● Se recomienda una previa capacitación del uso del sistema con respecto a la
programación y activación del sistema para su buen funcionamiento.
ANEXOS
Anexo 1
Código del sistema de riego
//incluimos las librerias que necesitara el programa, los componentes y los sensores.
#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include "DHT.h"
#include <EEPROM.h>
int i;
char pulsacion;
char c_dia_semana='-';
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'} };
int segundo;
int minuto;
int hora;
int lun=EEPROM.read(2);
int mar=EEPROM.read(3);
int mie=EEPROM.read(4);
int jue=EEPROM.read(5);
int vie=EEPROM.read(6);
int sab=EEPROM.read(7);
int dom=EEPROM.read(8);
int h;
int t;
int r_dia;
void setup () {
pinMode(13, OUTPUT);
Wire.begin();
dht.begin();
lcd.init();
intro_0();
HS_prueba();
t_LuzFondo = (millis()/1000); }
void loop() {
//lecturaBlu();
segundo=now.second();
minuto=now.minute();
hora=now.hour();
pulsacion = Teclado1.getKey() ;
lcd.backlight();
t_LuzFondo = (millis()/1000);
lcd.clear();
delay(200);
lcd.noBacklight();
contador = 0;
if(contador == 0){
menu_0(); }
// Funciones
accion_21();
accion_22();
accion_23();
accion_01();
horario_1();
activar_timbre();
void accion_01(){
menu_21();
contador = 21; }
menu_22();
contador = 22; }
menu_23();
contador = 23; }
menu_3();
contador = 3; }
menu_2();
contador = 2; }
menu_1();
contador = 1; }
if(pulsacion == '#'){
contador = 0; } }
void activar_timbre(){
estado=1;
digitalWrite(timbre, HIGH);
menu_3();
lcd.setCursor(10,0);
lcd.print("*");
lcd.setCursor(10,1);
lcd.print(" "); }
estado=0;
digitalWrite(timbre, LOW);
menu_3();
lcd.setCursor(10,0);
lcd.print(" ");
lcd.setCursor(10,1);
lcd.print("*"); } }
int dia_de_semana(){
int n_dia;
int n_mes;
int t_mes;
int n_anno;
int d_anno;
int t_siglo=6;
DateTime now = RTC.now(); //fecha y hora del RTC
lcd.setCursor(13,1);
n_anno=(now.year()-2000);
d_anno=n_anno/4;
n_dia=now.day();
n_mes=now.month();
switch (n_mes) {
case 1:
t_mes=0;
break;
case 2:
t_mes=3;
break;
case 3:
t_mes=3;
break;
case 4:
t_mes=6;
break;
case 5:
t_mes=1;
break;
case 6:
t_mes=4;
break;
case 7:
t_mes=6;
break;
case 8:
t_mes=2;
break;
case 9:
t_mes=5;
break;
case 10:
t_mes=0;
break;
case 11:
t_mes=3;
break;
case 12:
t_mes=5;
break;
default:
t_mes=t_mes;
break;
r_dia=n_dia+t_mes+n_anno+d_anno+t_siglo;
r_dia = r_dia % 7;
switch (r_dia) {
case 1:
c_dia_semana='L';
break;
case 2:
c_dia_semana='M';
break;
case 3:
c_dia_semana='C';
break;
case 4:
c_dia_semana='J';
break;
case 5:
c_dia_semana='V';
break;
case 6:
c_dia_semana='S';
break;
case 0:
c_dia_semana='D';
break;
default:
c_dia_semana='-';
break;
return r_dia;
// Funcion on_
void on_(){
estado=1;
menu_0();
digitalWrite(12,HIGH);
void off_(){
estado=0;
menu_0();
digitalWrite(12,LOW); }
void horario_1(){
dia_de_semana();
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,LOW);
digitalWrite(13,HIGH);
delay(100);
delay(10);
digitalWrite(13,LOW);
if (hs>=limite_hs){
off_(); } }
/////////////////////Intro_0 //////////////////////////////
void intro_0(){
lcd.setCursor(0,1);
lcd.print("Riego Automatico");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("F:");
lcd.print(now.year(), DEC);
lcd.print("/");
lcd.print(now.month(), DEC);
lcd.print("/");
lcd.print(now.day(), DEC);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("H: ");
lcd.print(now.hour(), DEC);
lcd.print(":");
lcd.print(now.minute(), DEC);
lcd.print(":");
lcd.print(now.second(), DEC);
dia_de_semana();
lcd.setCursor(15,1);
lcd.print(c_dia_semana);
delay(5000);
lcd.clear();
/////////////////////Menu_0 //////////////////////////////////
void menu_0(){
lcd.setCursor(0,0);
lcd.print("LMCJVSD");
if(estado==1){
lcd.print("*");
}else{
lcd.print("-");
lcd.print(hora_timbre);
lcd.setCursor(8,1);
lcd.print(tiempo_timbre);
lcd.print("m");
lcd.setCursor(10,0);
lcd.print("h");
lcd.setCursor(11,1);
lcd.print(t);
lcd.print("c");
lcd.print(hs);
lcd.print(" ");
lcd.setCursor(0,1);
if(lun==1){
lcd.print("*");
}else{
lcd.print(" ");
}
if(mar==1){
lcd.print("*");
}else{
lcd.print(" ");
if(mie==1){
lcd.print("*");
}else{
lcd.print(" ");
if(jue==1){
lcd.print("*");
}else{
lcd.print(" ");
if(vie==1){
lcd.print("*");
}else{
lcd.print(" ");
if(sab==1){
lcd.print("*");
}else{
lcd.print(" ");
if(dom==1){
lcd.print("*");
}else{
lcd.print(" "); }
lcd.setCursor(7,1);
lcd.print(c_dia_semana);
lcd.setCursor(11,0);
lcd.print(":");
if(now.minute()<=9){
lcd.setCursor(15,0);
lcd.print(" "); }
lcd.setCursor(14,0);
lcd.print(now.minute(), DEC); }
/////////////////////Menu_1 //////////////////////////////////
void menu_1(){
digitalWrite(13,HIGH);
lcd.setCursor(0,1);
lcd.print("TEM:");
lcd.print(t);
lcd.print("*C ");
lcd.setCursor(9,0);
lcd.print("HA:");
lcd.print(h);
lcd.print(" % ");
lcd.setCursor(9,1);
lcd.print("HS:");
delay(100);
lcd.print(hs);
lcd.print(" % ");
delay(10);
digitalWrite(13,LOW); }
/////////////////////Menu_2 //////////////////////////////////
void menu_2(){
lcd.setCursor(0,0);
lcd.print("DIAS>1");
lcd.setCursor(0,1);
lcd.print("HORA>3");
lcd.setCursor(8,0);
lcd.print("TIEMPO>2");
lcd.setCursor(8,1);
lcd.print("SALIR >#"); }
/////////////////////Menu_21 //////////////////////////////////
void menu_21(){
lcd.setCursor(1,0);
lcd.print("L>1");
lcd.setCursor(5,0);
lcd.print("M>2");
lcd.setCursor(9,0);
lcd.print("C>3");
lcd.setCursor(13,0);
lcd.print("J>4");
lcd.setCursor(1,1);
lcd.print("V>5");
lcd.setCursor(5,1);
lcd.print("S>6");
lcd.setCursor(9,1);
lcd.print("D>7");
lcd.setCursor(13,1);
lcd.print("(#)");
lcd.setCursor(0,0);
if(lun==1){
lcd.print("(");
}else{
lcd.print(" ");
lcd.setCursor(4,0);
if(mar==1){
lcd.print("(");
}else{
lcd.print(" ");
lcd.setCursor(8,0);
if(mie==1){
lcd.print("(");
}else{
lcd.print(" ");
lcd.setCursor(12,0);
if(jue==1){
lcd.print("(");
}else{
lcd.print(" ");
lcd.setCursor(0,1);
if(vie==1){
lcd.print("(");
}else{
lcd.print(" ");
lcd.setCursor(4,1);
if(sab==1){
lcd.print("(");
}else{
lcd.print(" ");
lcd.setCursor(8,1);
if(dom==1){
lcd.print("(");
}else{
lcd.print(" ");
}}
/////////////////////Menu_22 //////////////////////////////////
void menu_22(){
lcd.setCursor(1,0);
lcd.setCursor(1,1);
switch (tiempo_timbre) {
case 1:
lcd.setCursor(0,0);
break;
case 5:
lcd.setCursor(5,0);
break;
case 10:
lcd.setCursor(10,0);
break;
case 15:
lcd.setCursor(0,1);
break;
case 30:
lcd.setCursor(5,1);
break;
case 59:
lcd.setCursor(10,1);
break;
lcd.print("(");
/////////////////////Menu_23 //////////////////////////////////
void menu_23(){
lcd.setCursor(1,0);
lcd.setCursor(1,1);
switch (hora_timbre) {
case 6:
lcd.setCursor(0,0);
break;
case 7:
lcd.setCursor(5,0);
break;
case 8:
lcd.setCursor(10,0);
break;
case 17:
lcd.setCursor(0,1);
break;
case 18:
lcd.setCursor(5,1);
break;
case 19:
lcd.setCursor(10,1);
break;
lcd.print("("); }
/////////////////////Menu_50 //////////////////////////////////
void menu_50(){
lcd.setCursor(3,0);
lcd.print("ERROR DATO");
lcd.setCursor(3,1);
lcd.print("INCORRECTO"); }
/////////////////////Menu_3 //////////////////////////////////
void menu_3(){
lcd.setCursor(0,0);
lcd.setCursor(0,1);
lcd.setCursor(13,1);
lcd.print("(#)"); }
/////////////////////accion_21 //////////////////////////////////
void accion_21(){
if(lun==1){
lun=0;
}else{
lun=1;
EEPROM.write(2,lun);
menu_21();
if(mar==1){
mar=0;
}else{
mar=1;
}
EEPROM.write(3,mar);
menu_21();
if(mie==1){
mie=0;
}else{
mie=1;
EEPROM.write(4,mie);
menu_21();
if(jue==1){
jue=0;
}else{
jue=1;
EEPROM.write(5,jue);
menu_21();
if(vie==1){
vie=0;
}else{
vie=1;
EEPROM.write(6,vie);
menu_21();
if(sab==1){
sab=0;
}else{
sab=1;
EEPROM.write(7,sab);
menu_21();
if(dom==1){
dom=0;
}else{
dom=1;
EEPROM.write(8,dom);
menu_21();
} }
/////////////////////accion_22 //////////////////////////////////
void accion_22(){
tiempo_timbre=1;
ajuste_hora_final();
menu_22();
tiempo_timbre=5;
ajuste_hora_final();
menu_22();
tiempo_timbre=10;
ajuste_hora_final();
menu_22();
tiempo_timbre=15;
ajuste_hora_final();
menu_22();
tiempo_timbre=30;
ajuste_hora_final();
menu_22();
tiempo_timbre=60;
ajuste_hora_final();
menu_22();
/////////////////////accion_23 //////////////////////////////////
void accion_23(){
hora_timbre=6;
EEPROM.write(0,hora_timbre);
menu_23();
hora_timbre=7;
EEPROM.write(0,hora_timbre);
menu_23();
hora_timbre=8;
EEPROM.write(0,hora_timbre);
menu_23();
hora_timbre=17;
EEPROM.write(0,hora_timbre);
menu_23();
hora_timbre=18;
EEPROM.write(0,hora_timbre);
menu_23();
hora_timbre=19;
EEPROM.write(0,hora_timbre);
menu_23(); }
h1_c1 = hora_timbre;
h1_c1_f = h1_c1;
void ajuste_hora_final(){
if(tiempo_timbre ==60){
tiempo_timbre = 59;
EEPROM.write(1,tiempo_timbre);
m1_c1_f = m1_c1+tiempo_timbre;
Anexo 2
Código ESP8266 y firebase
void setup() {
Serial.begin(9600);
// conectandose al wifi.
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("connecting");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(1000);, }
Serial.println();
Serial.print("connected: ");
Serial.println(WiFi.localIP());
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
pinMode (2, OUTPUT); }
int n = 1;
void loop() {
// get value
if (Firebase.getFloat("led")) //crea el valor “led”
{ digitalWrite(2,LOW); }
else { digitalWrite(2,HIGH); }
// set value
Firebase.setFloat("number", 7); // envia los numerales para verificar que esta
//conectado
// handle error
if (Firebase.failed()) {
Serial.print("setting /number failed:"); // envia error si no se realizo la //conexión
Serial.println(Firebase.error());
return; }
delay(1000);
// update value
Firebase.setFloat("number", 27); //envia los numerales para verificar que //esta
conectado
// handle error
if (Firebase.failed()) {
Serial.print("setting /number failed:");
Serial.println(Firebase.error());
return; }
delay(1000);
// get value
Serial.print("number: ");
Serial.println(Firebase.getFloat("number"));
delay(1000);
// remove value
Firebase.remove("number");
delay(1000);
// handle error
if (Firebase.failed()) {
Serial.print("setting /message failed:");
Serial.println(Firebase.error());
return;
}
delay(1000);
}