Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Generalidades:
Componentes:
Funcionalidades:
4 entradas analógicas
1 entrada digital
1 salida digital
Comunicación inalámbrica
Modulo de censado
El circuito toma en cuenta las siguientes especificaciones necesarias para la elaboración, que
son:
EL circuito se lo realiza utilizando la herramienta de software libre Kicad tomando en cuenta las
consideraciones anteriores especificadas.
Todo esto se puede realizar en kicad como se muestra en la Figura con su respectiva etiqueta.
Censado de Panel Solar: Para realizar el censado del panel solar hay que tomar en cuenta el
pico de voltaje que envía el panel, el cual es 8 voltios. Considerando los 8 voltios como máximo
voltaje de entrada se realiza un divisor de voltaje en base a resistencias, para de esta forma tener
una entrada en los rangos desde 0v a 3.3v. Tomando en cuenta los cálculos se obtiene que el
divisor de voltaje estará formado por R1= 1.5k y R2=1k para obtener un voltaje máximo en caso
de tener una entrada de 8v de 3,2v. Esta configuración se tomo en cuenta para el diseño del
circuito y se puede observar en la Figura.
Censado de Batería: Se tiene que el voltaje de la batería es de un máximo de 4,2 por lo cual es
necesario utilizar un divisor de voltaje que regule y reduzca la señal de entrada a un máximo de
3.3v por lo cual se usara los valores R1=1k y R2= 2.2k reduciendo la entrada analógica a un
valor de 2.88v en caso de tener una entrada de 4.2v. Este circuito se puede observar en la
Figura.
Entradas sensores analógicos y digitales: Para las entradas analógicas no es necesario usar un
divisor de voltaje porque la mayoría de sensores comerciales funcionan con alimentación de
3.3v o 5v
El circuito final con la agregación de conectores para conectar los respectivos módulos se lo
puede ver en la Figura.
Figura. Circuito impreso Kicad
Asi también se puede observar en la Figura la placa del circuito impreso necesaria que tiene
unas medidas de
El proceso de realización es por corte CNC y para eso se requiere realizar los archivos de corte
en GCODE, estos archivos sirven para taladrar las pistas, perforar la baquelita y cortar los
bordes.
Una vez realizado el proceso se suelda los componentes necesarios y se realiza las conexiones y
pruebas de funcionamiento.
Diseño de la carcasa.
PRUEBAS DE AUTONOMIA
MATERIALES
ESP32 DEVKIT1
SENSOR TERMOCUPLA HW-550 – MAX6675
BATERIAS DE LITIO
PLACA DE CARGA TP4056
DIAGRAMA
OBSERVACIONES
Se requiere recibir una respuesta y enlace del servicio mqtt por lo qu ese
envia un mensaje al conectar y solo al recibir envia el dato del sensor
CODIGO
#include <WiFi.h>
#include <PubSubClient.h>
#include <Wire.h>
#include "max6675.h"
#define uS_TO_S_FACTOR 1000000ULL /* Conversion factor for micro
seconds to seconds */
#define TIME_TO_SLEEP 900 /* Time ESP32 will go to sleep (in
seconds) */
int thermoDO = 19;
int thermoCS = 23;
int thermoCLK = 5;
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
const char* ssid = "INPRISEWLAN"; //Nombre de la red inalambrica
const char* password = "Di6epai2014"; //Contraseña de la red
inalambrica
const char* mqtt_server = "51.222.22.191";// Direccion ip del raspberry
const char* topicEnvia = "/esp32/sensores/temperatura/envia"; //
Direccion del topico para envio de datos sensor
const char* topicRecibe = "/esp32/sensores/temperatura/recibe";
//Direccion del topic para recepcion de solicitudes
const char* topicEventos = "/esp32/sensores/temperatura/eventos";
//Direccion del topic para recepcion de solicitudes
const char* topicConexion = "/esp32/sensores/temperatura/conexion";
//Direccion del topic para recepcion de solicitudes
String messageTemp;
bool bandera=false;
int vccPin=4;
WiFiClient espClient; //Inicializacion del cliente Wifi
PubSubClient client(espClient); //nombre del cliente mqtt
unsigned long lastMsg = 0; //Variable para almacenar mensajes recibidos
#define MSG_BUFFER_SIZE (50) //tamaño maximo del buffer para recepcion
de mensajes
char msg[MSG_BUFFER_SIZE]; //Asigna un tamaño de mensaje
int value = 0; //variable para comparaciones logicas
void setup_wifi() {
delay(10);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
randomSeed(micros());
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP()); //Imprime la direccion ip del cliente
esp
}
}
//Conexion automatica y constante al servidor mqtt
void reconnect() {
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
if (client.connect("ESP8266Client")) {
Serial.println("connected");
client.subscribe(topicRecibe);
//client.subscribe(topicEventos);
client.subscribe(topicConexion);
delay(20);
client.publish(topicEventos, "AT");
//client.publish(topicEventos, "ESP inicio...");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
delay(5000);
}
}
}
void setup()
{
Serial.begin(9600);
Serial.println("MAX6675 test");
Wire.begin();
setup_wifi();
pinMode(vccPin, OUTPUT);
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
bandera = false;
delay(500);
++bootCount;
Serial.println("Boot number: " + String(bootCount));
pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
if (!client.connected()) {
reconnect();
}
client.loop();
//digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the
voltage level)
//delay(1000);
//digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making
the voltage LOW
//delay(5000);
}
void temperatura(){
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
float lux = thermocouple.readCelsius();
Serial.print("Light: ");
Serial.print(lux);
Serial.println(" lx");
char Lumenes[18];
dtostrf(lux, 1, 5, Lumenes);
client.publish(topicEnvia, Lumenes);
//client.publish(topicConexion, "AT");
delay(1000);
esp_deep_sleep_start();
Observaciones:
DESCRIPCION
El Esp32 tiene algunos modos de trabajo en los cuales se puede aumentar o reducir
su consumo en funcionamiento normal enviando datos por MQTT y enlazado a la
red inalámbrica por medio de pruebas técnicas utilizando el multímetro para lectura
de amperios se tuvo un consumo de:
176mA
Y sin enviar datos por medio de MQQT se tenía un consumo estimado por pruebas
de:
61mA
Por lo que para la primera parte se empezó con el envío el día 20 de agosto a las
16:30, y se descargó la batería el siguiente día a las 21:40
RESULTADOS
El esp32 estuvo funcionado por 29 horas con 10 minutos con una batería de litio
reutilizada con capacidad de 21000 mA/h
CONCLUSIONES
Utilizando todas las capacidades del Esp32 todo el tiempo el consumo no permite
una autonomía prolongada
DESCRIPCION
105mA
10mA
RESULTADOS
CONCLUSIONES
DISEÑO DE PROTOTIPO
3 entradas analógicas:
2 entradas digitales:
1 entrada a 5v
1 entrada a 3.3v
Desarrollo de diseño
Se tiene los valores de R1 = 1k y R2 = 2.2K que permiten obtener una salida de 3.05v en caso
de tener entradas de 5v desde el sensor analógico, este divisor se usara para todas las entradas
por estandarización de voltajes
Entradas digitalis
Tambien se usará el mismo divisor de voltaje para reducir los voltajes de entrada que soporta el
esp32 que varia desde 2.6 a 3.3 voltios como uno lógico y menores a 2.6 como 0 lógico.
Para simplicar el circuito se usa los pines que tienen pull up interno que son:
GPIO14
GPIO16
GPIO17
GPIO18
GPIO19
GPIO21
GPIO22
GPIO23
NODEMCU-32 - ESP32 WIFI
Es una herramienta muy potente para proyectos IoT, que viene integrada con
una placa SoMESP-WROOM-32 y como base al SoC Esp32, se usa un conversor
USB-Serial CP2102 para programar por medio del USB el ESP32, esta viene a ser
una evolución del ESP8266 mejorando sus capacidades de comunicación y
procesamiento computacional. En lo que refiere a conectividad cuenta con protocolos
de comunicaciones como WiFi, Bluetooth y BLE. En lo que refiere a procesamiento su
CPU 32-bit de dos núcleos de hasta 240Mhz que pueden funcionar de manera
independiente.