Está en la página 1de 17

Proyecto IoT

Generalidades:

Elaborar una plataforma IoT

Realizar pruebas para elaborar un producto autónomo

Realizar un diagrama propio

Realizar pruebas de lectura de sensores

Componentes:

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.

Fig. 1. Pinout Esp32. Fuente: (Naylamp Mechatronics, 2021)


Como se observa en la Figura 18 se puede notar las siguientes características:
 Voltaje de Alimentación (USB): 5V DC
 Voltaje de Entradas/Salidas: 3.3V DC
 Placa: ESP32 DEVKIT V1 (Espressif)
 SoM: ESP-WROOM-32 (Espressif)
 SoC: ESP32 (ESP32-D0WDQ6)
 CPU: Dual core Tensilica Xtensa LX6 (32 bit)
 Frecuencia de Reloj: hasta 240Mhz
 Desempeño: Hasta 600 DMIPS
 Procesador secundario: Permite hacer operaciones básicas en modo de
ultra bajo consumo
 Wifi: 802.11 b/g/n/e/i (802.11n @ 2.4 GHz hasta 150 Mbit/s)
 Bluetooth: v4.2 BR/EDR and Bluetooth Low Energy (BLE)
 Memoria: 448 KByte ROM; 520 KByte SRAM; 16 KByte SRAM in RTC;
QSPI Flash/SRAM, 4 MBytes
 Pines Digitales GPIO: 24 (Algunos pines solo como entrada)
 Pines PWM: 16
 Pines Analógicos ADC: 18 (3.3V, 12bit: 4095, tipo SAR, ganancia
programable)
 Conversor Digital a Analógico DAC: 2 (8bit)
 UART: 2
 Chip USB-Serial: CP2102
 Antena en PCB
 Seguridad: 
 Estándares IEEE 802.11 incluyendo WFA, WPA/WPA2 and WAPI
 1024-bit OTP, up to 768-bit for customers
 Aceleración criptográfica por hardware: AES, HASH (SHA-2), RSA,
ECC, RNG
 Dimensiones: 55*28 mm

Funcionalidades:

El presente proyecto plantea la elaboración de un módulo de censado autónomo para


instalación en exteriores, por lo cual se plantea las siguientes funcionalidades o características:

4 entradas analógicas

1 entrada digital
1 salida digital

Alimentación por baterías

Comunicación inalámbrica

Modulo de censado

El circuito toma en cuenta las siguientes especificaciones necesarias para la elaboración, que
son:

Censado del voltaje de la batería de Litio

Censado del voltaje entregado por el panel solar

1 entradas analógicas externas para sensores

1 entrada digital para sensor digital

1 entrada digital para botón

Puerto de alimentación externa para carga de batería

Diseño del circuito

EL circuito se lo realiza utilizando la herramienta de software libre Kicad tomando en cuenta las
consideraciones anteriores especificadas.

Para el ESP32 se determino los siguientes pines y funciones:

 Pines de alimentación (5v, GND).


 Pines de alimentación para los sensores analógicos y digitales (3.3v, GND)
 INT3 que se conecta al GPIO4 para entrada digital donde se conectará un botón.
 INT2 que se conecta al GPIO16 para entrada de un sensor digital.
 ADC1 que se conecta al GPIO33 para entrada de sensor analógico.
 ADC2 que se conecta al GPIO35 para entrada de sensor analógico.
 ADC3 que se conecta al GPIO34 para entrada del censado de la batería.
 ADC4 que se conecta al GPIO32 para entrada del censado del panel solar.

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.

El diseño de la carcasa se lo realizo en FreeCAD una herramienta de software libre para


modelado 3D, por lo cual se tomo en cuenta las consideraciones que se muestran en la figura y
lo que ocupa el modulo en conjunto con cada uno de sus componentes.

PRUEBAS DE AUTONOMIA

Para la elaboración de las pruebas se procede a realizar la conexión descrita en el diagrama

MATERIALES

 ESP32 DEVKIT1
 SENSOR TERMOCUPLA HW-550 – MAX6675
 BATERIAS DE LITIO
 PLACA DE CARGA TP4056

DIAGRAMA

1)Se realiza la conexión de los componentes que se requieren para las


pruebas como se observa a continuación:
Las conexiones necesarias son las siguientes:

Esp32 DevKitv1 MAX6675


GND GND
VCC 3.3V
D19 S0
D23 CS
D5 SCK

Una vez realizado estas conexiones se procede a realizar un envío cada


cierto tiempo datos al servidor MQTT.

OBSERVACIONES

Se procede a usar el regulador de carga de baterías de litio para proteger la


batería de descargas excesivas y a su vez cargarla en caso de ser necesario.

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;

RTC_DATA_ATTR int bootCount = 0;

 
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
}

void callback(char* topic, byte* payload, unsigned int length) {


  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();
 
//En caso de recibir el mensaje con un caracter 1 se realiza el metodo
lumenes()
  if ((char)payload[0] == '1') {
    Serial.print("recibio");
    temperatura();
  }

}
//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:

AREA PRUEBA N0 DESCRIPCION DE LA PRUEBA

ELECTRÓNICA 1 Prueba de autonomía funcionamiento normal

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

Envió de datos cada 2 segundos

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

El esp32 envió 3132030 de lecturas totales en ese periodo de tiempo.

CONCLUSIONES

Utilizando todas las capacidades del Esp32 todo el tiempo el consumo no permite
una autonomía prolongada

AREA PRUEBA N0 DESCRIPCION DE LA PRUEBA

ELECTRÓNICA 1 Prueba de autonomía funcionamiento usando Deep sleep


y enviando datos cada 15 minutos

DESCRIPCION

El Esp32 utilizando el modo Deep sleep en teoría consume 10 mA por medio de el


apagado de todas sus funcionalidades, por lo cual se tomo en cuenta el proceso y la
elaboración de pruebas en base a el envío de datos cada 15 minutos por medio de
despertar el microcontrolador con un timer interno.

Envió de datos cada 15 segundos

El consumo del microcontrolador mientras envía los datos es de:

105mA

Mientras que esta dormido por pruebas realizadas es de:

10mA

Las pruebas inician el día 5 de noviembre a las 17:10 y terminan

RESULTADOS

CONCLUSIONES
DISEÑO DE PROTOTIPO

3 entradas analógicas:

 2 entradas para sensores (5v)


 1 entrada para lectura de nivel de batería

2 entradas digitales:

 1 entrada a 5v
 1 entrada a 3.3v

Comunicación SPI sensor

Desarrollo de diseño

Entradas analógicas con divisor de voltaje

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.

Fig. 2. Pinout Esp32. Fuente: (Naylamp Mechatronics, 2021)

Como se observa en la Figura 18 se puede notar las siguientes características:


 Voltaje de Alimentación (USB): 5V DC
 Voltaje de Entradas/Salidas: 3.3V DC
 Placa: ESP32 DEVKIT V1 (Espressif)
 SoM: ESP-WROOM-32 (Espressif)
 SoC: ESP32 (ESP32-D0WDQ6)
 CPU: Dual core Tensilica Xtensa LX6 (32 bit)
 Frecuencia de Reloj: hasta 240Mhz
 Desempeño: Hasta 600 DMIPS
 Procesador secundario: Permite hacer operaciones básicas en modo de
ultra bajo consumo
 Wifi: 802.11 b/g/n/e/i (802.11n @ 2.4 GHz hasta 150 Mbit/s)
 Bluetooth: v4.2 BR/EDR and Bluetooth Low Energy (BLE)
 Memoria: 448 KByte ROM; 520 KByte SRAM; 16 KByte SRAM in RTC;
QSPI Flash/SRAM, 4 MBytes
 Pines Digitales GPIO: 24 (Algunos pines solo como entrada)
 Pines PWM: 16
 Pines Analógicos ADC: 18 (3.3V, 12bit: 4095, tipo SAR, ganancia
programable)
 Conversor Digital a Analógico DAC: 2 (8bit)
 UART: 2
 Chip USB-Serial: CP2102
 Antena en PCB
 Seguridad: 
 Estándares IEEE 802.11 incluyendo WFA, WPA/WPA2 and WAPI
 1024-bit OTP, up to 768-bit for customers
 Aceleración criptográfica por hardware: AES, HASH (SHA-2), RSA,
ECC, RNG
 Dimensiones: 55*28 mm

También podría gustarte