martes, 28 de julio de 2020

Panel solar con nodeMCU



Desde hace ya algún tiempo, dispongo de un panel solar que está muerto de risa y que no sabía qué hacer con él. Al final, con el nodeMCU olvidado que tenía por casa y el panel solar os brindo esta entrada, que apunta a una idea muy simple de cómo monitorizar un panel solar midiendo su voltaje, temperatura y humedad, y calculando para una carga dada su potencia y rendimiento.
Voy a ahorrarme todo el rollo posible ya comentado en una entrada anterior titulada IoT fácil con nodeMCU

Primero instalamos la última versión de Arduino. El archivo que lo contiene lo descomprimimos en una carpeta:


Luego lo instalamos usando el terminal como root usando el comando sh:


sh install.sh


Para poder brindar soporte para el chip ESP8266 del nodeMCU al entorno Arduino, permitiendo crear sketches utilizando funciones y bibliotecas conocidas por Arduino, tenemos que añadir desde la siguiente web de GitHub - esp8266 de Arduino, en Archivo --> Preferencias --> Ajustes, el enlace al archivo package_esp8266com_index.json



Instalamos luego con el Gestor de tarjetas  del entorno IDE de Arduino la última versión del paquete ESP8266 Community versión 2.7.2


Última versión del paquete ESP8266 Community:


Finalmente, seleccionamos la placa NodeMCU 1.0 (ESP-12E Module)



A continuación instalamos una serie de librerías hechas por terceros que usamos para facilitar la programación con dispositivos diversos; así, por ejemplo, el sensor de humedad y temperatura DHT11 requiere una librería especifica para poder usarlo con facilidad en los sketch de programación.

Instalamos las librería requeridas para el DHT11: DHT sensor library by Adafruit Versión 1.3.10 y la Adafruit Unified Sensor by Adafruit Versión 1.1.4. Para ello nos dirigimos al menú Herramientas -> Administrar bibliotecas... y las buscamos para instalarlas desde el Gestor de Librerías. Usar la última versión, y si da algún error volver a la versión anterior (antes de instalar una, desinstalar la otra).


Para poder trabajar con facilidad con Thinger.io debemos instalar otra librería más: Thinger.io by Álvaro Luis Bustamante Versión 2.13.0 o superior


En Linux, si no se abren los puertos serie USB, es decir, no hay comunicación con la placa a través de ellos, debemos ejecutar el siguiente comando en el Terminal de root:

usermod -a -G dialout usuario

Elegimos luego el puerto correspondiente:



HARDWARE


Imagen del circuito montado en el protoboard:


El resistor variable sirve para simular las variaciones de tensión presentes en un panel solar en función de la incidencia de la luz sobre él.


En el software podemos apreciar que la potencia y el rendimiento es un cálculo en función de la tensión y la carga resistiva que le aplicamos al panel; ese cáculo sólo sirve para este propósito, ya que directamente, con una sola entrada analógica de 10 bits no podemos estimar de forma real, por ejemplo, la corriente a través de los circuitos.

En la siguiente imagen  podemos apreciar las características del panel solar:



SOFTWARE

/*
 Lectura de datos de temperatura y humedad con sensor DHT11 y voltaje de panel solar, con cálculo de potencia y rendimiento para R = 33 Ohmios,
 monitorizado desde la plataforma www.thinger.io
   By Cotidiana Place
 */
#define _DEBUG_                    //Ver respuesta server por el puerto serie
#define _DISABLE_TLS_              //si tienes  problemas con el router

#include <ESP8266WiFi.h>       //Librería de conexión WiFi del módulo ESP8266
#include <ThingerESP8266.h>    //Librería de la plataforma thinger.io
#include "DHT.h"               //Librería de los sensores DHT11, DHT22, etc.

// Parámetros del conexión con thinger.io
#define usuario "usuarioThinger"            // Cuenta de Thinger.io
#define device_Id "PanelSolar"            // Dispositivo creado en la plataforma Thinger.io
#define device_credentials "credenciaPanelSolar"   // Contraseña del dispositivo creado en la plataforma Thinger.io

ThingerESP8266 thing(usuario, device_Id, device_credentials);

// Parámetros de conexión WiFi
const char WiFi_ssid[]="you_wifi";  //Nombre  de la red
const char WiFi_password[]="wifi_key";  //Clave de red


// Parámetros del DHT
#define DHTPIN 4       //Pin de datos DHT11. GPIO4 serigrafiada como D2
#define DHTTYPE DHT11   //Modelo DHT11

DHT dht(DHTPIN, DHTTYPE);
void setup() {


  dht.begin(); // Inicialización del DHT11

  // Inicialización de la WiFi para comunicarse con la API
    thing.add_wifi(WiFi_ssid, WiFi_password);

  // Inicialización de la lectura de datos desde la API
    thing["dht11"] >> [](pson& out){
            out["Temperatura"] = dht.readTemperature();
            out["Humedad"] = dht.readHumidity();
            };

 
    // Inicialización de la lectura del voltaje del panel a través de A0
   
    thing["PANEL"] >> [](pson & out){
            out["Voltaje"] = (analogRead(A0)*0.024);  // Voltaje por cada valor digital de A0; máximo 1023 x 0,024 = 24,5 Vmáx
            out["Potencia"] = pow((analogRead(A0)*0.024),2)/33;   // P = V*V/R
            out["Rendimiento"] = (pow((analogRead(A0)*0.024),2)/33)*10;   // R = P * 10, en este caso
             };


  }

void loop() {

  thing.handle();

  
  }


Debemos programar la placa nodeMCU (mediante un cable USB adecuado) con el software anterior para comenzar a trabajar con la plataforma Thinger.io

No olviden asignar al software los parámetros correctos de su WIFI y el nombre de su cuenta y las credencial del dispositivo creado en la plataforma.
 
Iniciamos la sesión (Login) en la plataforma.


Después de iniciar sesión, aparece directamente el tablero de instrumentos (Console dashboard), donde mostrará los dispositivos conectados (Connected devices), la estadística de la cuenta (Account Stats), los dispositivos usados (Devices), los paneles de instrumentos disponibles (Dashboard), los paquetes o almacen de datos (Data buckets) y Endpoints, dispositivos informáticos remotos que se comunica desde una red a la que, evidentemente, están conectado.


Creamos el dispositivo (Devices) en la plataforma Thinger.io, cubriendo el formulario requerido:


Si todo lo anterior se hizo correctamente, al picar sobre el dispositivo PanelSolar (que pueden llamarle como quieran, pero deben luego cambiarlo en los parámetros del software anterior), veremos que está conectado:



Luego creamos la consola o tablero de instrumentos desde el menú Dashboard, hacemos clic en Add Dashboard.
Como es habitual en estos entornos, cubriendo un sencillo formulario creamos el oportuno Dashboard.



Este Dashboard está compuesto por cinco widgets:


Detalle del widget de Temperatura:



    Pestaña Widget:



    Pestaña Tachometer:


    Pestaña Display Options:



Detalle del widget de Humedad:




    Pestaña Widget:


  
    Pestaña Gauge:



    Pestaña Display Options:




Detalle del widget de Voltaje:


    Pestaña Widget:


    Pestaña Tachometer:


    Pestaña Display Options:



En los otros dos widgets lo único que cambia en el formulario de la presentación de la Potencia y el Rendimiento son los campos Select Resource (Seleccionar Recurso) y Select Value (Seleccionar Valor), donde elegiremos las variables PANEL en Select Resource, y Potencia o Rendimiento en Select Value, según corresponda.
En la pestaña Display Options podemos añadir en el campo Units la coletilla correspondiente al detalle de la carga requerida en el panel solar para que los cálculos y las unidades coincidan.

Mi propuesta para el panel, que no he podido realizar, es la siguiente:


Cuando sobre el panel incida una cantidad de luz apreciable, nodeMCU se enganchará a la red WIFI y comenzará a enviar los datos.

No hay comentarios:

Publicar un comentario