Problemas al reconocer el puerto con el ESP8266



Node MCU
 es una plataforma para el desarrollo de proyectos IoT que integra el famoso chip ESP8266, el cual se ha extendido enormemente debido a su facilidad para desarrollar proyectos open source  que pueden ademas  pueden   involucrar el IoT  .

Esta placa  destaca  porque integra capacidades de comunicación via WiFi , conteniendo en su interior  un microprocesador que puede ser programado fácilmente usando el  conocido lenguaje de programación Lua o bien vía Arduino IDE.

Obviamente ante todo no podemos perder de vista su bajisimo precio ( menos de 7.5€  ) comparados con otras opciones , pues no debemos olvidar  que incluye  el modulo wifi integrado  y un bus GPIO para conectar dispositivos de E/S.
Node MCU es una plataforma de desarrollo permite un prototipado rápido, para una vez satisfechos con el resultado, portar el desarrollo a un sistema final con un chip ESP8266 como pieza central.

A la hora de programar nuevas funciones, si optamos por utilizar Lua, dispondremos de un sistema simple con buena comunidad de usuarios. En cambio programar con el sistema Arduino nos aporta un fantástico IDE y un sinfin de manuales y ejemplos de desarrollo.

Este modulo es Ideal como una solución independiente en lugar de Arduino además de Wi-Fi  integrado siendo fácil de programar a través del IDE de Arduino (como vamos a ver ) , al igual que un Arduino.
Todos los periféricos con bus I2C puede unirse,por ejemplo Pantallas OLED, pantallas LCD, temperatura, presión, sensores de humedad pueden ser conectados en paralelo. También se puede conectar múltiples DS18B20

Sin embargo, sólo hay una entrada analógica y salida y las pantallas táctiles no se pueden conectar con ella.

Los pasos  a seguir   para conectar un ESP8266     son los siguientes:

  •  Instalación del IDE de Arduino .Si aun no lo tiene instalado ,se puede hacer  desde aqui
  • Instalación  del paquete de la placa ESP8266 en Arduino IDE  siguiendo las instrucciones del sitio : https://github.com/esp8266/Arduino
esp
  • Instalación de los controladores USB

Es necesario instalar el controlador USB requerido en su ordenador  para que pueda programar el ESP8266.  Independientemente de la opción de firmware que elijamos, primero necesitamos comunicarnos con la placa de desarrollo ESP-12E utilizando la interfaz USB de la computadora.

El módulo USB a Serial UART incluido en la placa es Silicon Labs ‘CP2012, para lo cual generalmente necesitamos instalar los controladores de puerto COM virtual (VCP) fácilmente disponibles para su sistema operativo específico.Una vez instalado, debemos verificar que el CP2102 sea reconocido por su ordenador.

Una vez que el controlador está instalado, podemos conectar el cable USB al puerto USB de la computadora y la placa. Después de hacerlo, deberíamos ver el mensaje: software del controlador del dispositivo instalado correctamente.

Además, podemos verificar manualmente que todo funcione correctamente siguiendo estos pasos:

Abra el Administrador de dispositivos (disponible a través del Panel de control → Sistema y seguridad → Administrador de dispositivos en la sección Sistema)
Debajo de la entrada Puertos (COM & LPT), debe haber un puerto abierto llamado USB-SERIAL CP2102 (COM) donde hay un número típicamente mayor o igual a 3.

Ahora que estamos listos para comunicarnos con nuestro ESP8266 a través del CP2102, podemos explorar algunas de las diferentes opciones de firmware disponibles.

  • Conecte  un cable usb  de datos al ESP8266
  • Seleccione   Herramientas –>ESP8266   y ahi la placa que haya comprado. En caso de  haberla comprado en Amazon aqui seleccione  NodeMCU 1.0 (ESP-12EModule).

node.png
  • En el IDE de Arduino, vaya al menú de herramientas, seleccionada su placa y elija el  puerto al que está conectado su ESP8266.En el ejemplo  es el COM11
puerto.png

Problemas al reconocer el puerto

En varios casos, la placa no se detecta debido a que faltan los controladores. Sin embargo, también puede ser por el puerto USB o el cable.

Si después de instalar los controladores sigue sin funcionar, por favor:

  • Verifique conectando la placa en otro puerto
  • Intente cambiar el cable USB de conexión por otro porque a veces aunque haya alimentación pueden fallar ( no olvidar que en un cable USB standard deberia haber 4 hilos)
  • Pruebae en otro ordenador distinta

Una vez dicho eso, veamos los controladores de NodeMCU 8266 en Windows.

Controladores para esp8266 en Windows

Hay que ir al siguiente enlace:

https://github.com/nodemcu/nodemcu-devkit/tree/master/Drivers

Y descargar el archivo que se llama CH341SER_WINDOWS.zip. Si quieres un enlace directo lo dejo aquí:

https://github.com/nodemcu/nodemcu-devkit/raw/master/Drivers/CH341SER_WINDOWS.zip

Una vez que lo descargues, extraer el fichero comprimido con extension .zip. Tendrá un programa llamado CH341SER.EXE, ejecútelo y dale permisos de administrador.

En la siguiente ventana haz click en Install:

Instalar drivers de NodeMCU 8266 en Windows

Espere a recibir la notificación de que se ha instalado y eso es todo. Debe detectar el dispositivo en un puerto COM; yo lo tenía en el COM4.

Conclusión

Es necesario mencionar que esto lo probé en Windows 10 de 64 bits usando PlatformIO dentro de Visual Studio Code, pero supongo que debe funcionar de igual modo en otras plataformas.

Lo explicado aquí está en un issue de GitHub.

Instalación NILMTK en Windows


Aunque NILMTK se puede instalar muy facilmente en sistemas basados en Linux , es posible instalarlo tambien desde windows . Basicamente necesitaremos instalar Anaconda ( y Git si no lo tiene instalado ) y realizar la identificación de la carga, encontrar el paquete de instalación de NILMTK y registrar el proceso deliberadamente.

Instalación de GIT Windows

Hay varias maneras de instalar Git en Windows. La forma más oficial está disponible para ser descargada en el sitio web de Git. Solo tiene que visitar http://git-scm.com/download/win y la descarga empezará automáticamente. Observe que éste proyecto conocido como Git para Windows (también llamado msysGit), es diferente de Git «normal». Para más información acerca de este proyecto visita http://msysgit.github.io/.

Otra forma de obtener Git fácilmente es mediante la instalación de GitHub para Windows. El instalador incluye la versión de línea de comandos y la interfaz de usuario de Git. Además funciona bien con Powershell y establece correctamente «caching» de credenciales y configuración CRLF adecuada. Puede descargar este instalador del sitio web de GitHub para Windows en http://windows.github.com.

Instalación de Anaconda

  • Descargar el instalador de Anaconda . Nos recomiendan que  verifiquemos la integridad de los datos con SHA-256 .
  • Haga doble clic en el instalador para iniciar.Para evitar errores de permisos, no inicie el instalador desde la carpeta Favoritos .Si tiene problemas durante la instalación, desactive temporalmente su software antivirus durante la instalación y vuelva a activarlo una vez que concluya la instalación. Si instaló para todos los usuarios, desinstale Anaconda y vuelva a instalarlo solo para su usuario y vuelva a intentarlo.
  • Haga clic en Siguiente.
  • Lea los términos de la licencia y haga clic en «Acepto».
  • Seleccione una instalación para «Solo yo» a menos que esté instalando para todos los usuarios (lo que requiere privilegios de administrador de Windows) y haga clic en Siguiente.
  • Seleccione una carpeta de destino para instalar Anaconda y haga clic en el botón Siguiente. Nota: Instale Anaconda en una ruta de directorio que no contenga espacios ni caracteres Unicode..No lo instale como administrador a menos que se requieran privilegios de administrador.
  • Elija si desea agregar Anaconda a su variable de entorno PATH. Se Recomienda no agregar Anaconda a la variable de entorno PATH, ya que esto puede interferir con otro software. En su lugar, use el software Anaconda abriendo Anaconda Navigator o Anaconda Prompt desde el menú Inicio.
  • Elija si desea registrar Anaconda como su Python predeterminado. A menos que planee instalar y ejecutar múltiples versiones de Anaconda o múltiples versiones de Python, acepte el valor predeterminado y deje esta casilla marcada.
  • Haga clic en el botón Instalar. Si desea ver los paquetes que está instalando Anaconda, haga clic en Mostrar detalles.
  • Haga clic en el botón Siguiente.
  • Opcional: para instalar PyCharm para Anaconda, haga clic en el enlace a https://www.anaconda.com/pycharm .
  • O para instalar Anaconda sin PyCharm, haga clic en el botón Siguiente.
  • Después de una instalación exitosa, verá el cuadro de diálogo «Gracias por instalar Anaconda»:
  • Si desea leer más sobre Anaconda.org y cómo comenzar con Anaconda, marque las casillas “Tutorial de Anaconda Edición Individual” y “Aprenda más sobre Anaconda”. Haga clic en el botón Finalizar.
  • Verifique su instalación .Nota: Si está detrás de un proxy de la empresa, es posible que deba realizar una configuración adicional.

Instalación manual del NILMTK

Suponiendo que Anaconda se ha instalado en esa máquina, el entorno es Python3 y la dirección del proyecto del paquete NILMTK es: https://github.com/nilmtk/nilm_metadata/ , Como se supone tenemos instalado el comando git para descargar los recursos de git, en primer lugar descargaremos nilmtk con Git usando el siguiente comando:

git clone https://github.com/nilmtk/nilmtk.git

Y este seria el resultado:

C:\Users\carlo\anaconda3>git clone https://github.com/nilmtk/nilmtk.git
Cloning into 'nilmtk'…
remote: Enumerating objects: 12331, done.
remote: Counting objects: 100% (121/121), done.
remote: Compressing objects: 100% (72/72), done.
remote: Total 12331 (delta 69), reused 84 (delta 48), pack-reused 12210
Receiving objects: 100% (12331/12331), 51.87 MiB | 6.81 MiB/s, done.
Resolving deltas: 100% (8775/8775), done.

Encontrará la carpeta nilmtk-metadata en el directorio y hay un archivo setup.py. Cambie a este directorio y luego instale, el comando es:

python setup.py develop

Resultado de ejecucion del comando;

C:\Users\carlo\anaconda3\nilmtk>python setup.py develop
running develop
running egg_info
creating nilmtk.egg-info
writing nilmtk.egg-info\PKG-INFO
writing dependency_links to nilmtk.egg-info\dependency_links.txt
writing requirements to nilmtk.egg-info\requires.txt
writing top-level names to nilmtk.egg-info\top_level.txt
writing manifest file 'nilmtk.egg-info\SOURCES.txt'
reading manifest file 'nilmtk.egg-info\SOURCES.txt'
writing manifest file 'nilmtk.egg-info\SOURCES.txt'
running build_ext
Creating c:\users\carlo\appdata\local\programs\python\python39\lib\site-packages\nilmtk.egg-link (link to .)
Adding nilmtk 0.4.0.dev1+git.45a50c8 to easy-install.pth file
Installed c:\users\carlo\anaconda3\nilmtk
Processing dependencies for nilmtk==0.4.0.dev1+git.45a50c8
Searching for matplotlib==3.1.3
Reading https://pypi.org/simple/matplotlib/
Downloading https://files.pythonhosted.org/packages/be/74/24d058c17b155d131359f1cd01e120b3954686bf8b7853172b279237e1dc/matplotlib-3.1.3.tar.gz#sha256=db3121f12fb9b99f105d1413aebaeb3d943f269f3d262b45586d12765866f0c6
Best match: matplotlib 3.1.3
Processing matplotlib-3.1.3.tar.gz
Writing C:\Users\carlo\AppData\Local\Temp\easy_install-qhium5qh\matplotlib-3.1.3\setup.cfg
Running matplotlib-3.1.3\setup.py -q bdist_egg --dist-dir C:\Users\carlo\AppData\Local\Temp\easy_install-qhium5qh\matplotlib-3.1.3\egg-dist-tmp-gu_he1dr
Edit setup.cfg to change the build options
BUILDING MATPLOTLIB
matplotlib: yes [3.1.3]
python: yes [3.9.4 (tags/v3.9.4:1f2e308, Apr 6 2021, 13:40:21) [MSC
v.1928 64 bit (AMD64)]]
platform: yes [win32]
OPTIONAL SUBPACKAGES
sample_data: yes [installing]
tests: no [skipping due to configuration]
OPTIONAL BACKEND EXTENSIONS
agg: yes [installing]
tkagg: yes [installing; run-time loading from Python Tcl/Tk]
macosx: no [Mac OS-X only]
OPTIONAL PACKAGE DATA
dlls: no [skipping due to configuration]
UPDATING build\lib.win-amd64-3.9\matplotlib_version.py
set build\lib.win-amd64-3.9\matplotlib_version.py to '3.1.3'
error: Setup script exited with error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads/

Ahora debemos descargar nilmtk-metadata por lo que una vez mas usaremos el comando git:

git clone https://github.com/nilmtk/nilm_metadata/

Y este seria el resultado:

C:\Users\carlo\anaconda3>git clone https://github.com/nilmtk/nilm_metadata/
Cloning into 'nilm_metadata'…
remote: Enumerating objects: 2053, done.
Receiving objects:
Receiving objects: 100% (2053/2053), 2.16 MiB | 6.17 MiB/s, done.
Resolving deltas: 100% (1380/1380), done.

Encontrará la carpeta nilmtk-metadata en el directorio y hay un archivo setup.py. Cambie a este directorio y luego instale, el comando es:

python setup.py develop

Resultados de la ejecucion del comando:

C:\Users\carlo\anaconda3\nilm_metadata>python setup.py develop
running develop
running egg_info
creating nilm_metadata.egg-info
writing nilm_metadata.egg-info\PKG-INFO
writing dependency_links to nilm_metadata.egg-info\dependency_links.txt
writing requirements to nilm_metadata.egg-info\requires.txt
writing top-level names to nilm_metadata.egg-info\top_level.txt
writing manifest file 'nilm_metadata.egg-info\SOURCES.txt'
reading manifest file 'nilm_metadata.egg-info\SOURCES.txt'
writing manifest file 'nilm_metadata.egg-info\SOURCES.txt'
running build_ext
Creating c:\users\carlo\appdata\local\programs\python\python39\lib\site-packages\nilm-metadata.egg-link (link to .)
Adding nilm-metadata 0.2.5 to easy-install.pth file
Installed c:\users\carlo\anaconda3\nilm_metadata
Processing dependencies for nilm-metadata==0.2.5
Searching for pandas==1.3.3
Best match: pandas 1.3.3
Processing pandas-1.3.3-py3.9-win-amd64.egg
pandas 1.3.3 is already the active version in easy-install.pth
Using c:\users\carlo\appdata\local\programs\python\python39\lib\site-packages\pandas-1.3.3-py3.9-win-amd64.egg
Searching for six==1.16.0
Best match: six 1.16.0
Processing six-1.16.0-py3.9.egg
six 1.16.0 is already the active version in easy-install.pth
Using c:\users\carlo\appdata\local\programs\python\python39\lib\site-packages\six-1.16.0-py3.9.egg
Searching for pyyaml==5.4.1
Best match: pyyaml 5.4.1
Processing pyyaml-5.4.1-py3.9-win-amd64.egg
pyyaml 5.4.1 is already the active version in easy-install.pth
Using c:\users\carlo\appdata\local\programs\python\python39\lib\site-packages\pyyaml-5.4.1-py3.9-win-amd64.egg
Searching for pytz==2021.1
Best match: pytz 2021.1
Processing pytz-2021.1-py3.9.egg
pytz 2021.1 is already the active version in easy-install.pth
Using c:\users\carlo\appdata\local\programs\python\python39\lib\site-packages\pytz-2021.1-py3.9.egg
Searching for python-dateutil==2.8.2
Best match: python-dateutil 2.8.2
Processing python_dateutil-2.8.2-py3.9.egg
python-dateutil 2.8.2 is already the active version in easy-install.pth
Using c:\users\carlo\appdata\local\programs\python\python39\lib\site-packages\python_dateutil-2.8.2-py3.9.egg
Searching for numpy==1.21.2
Best match: numpy 1.21.2
Processing numpy-1.21.2-py3.9-win-amd64.egg
numpy 1.21.2 is already the active version in easy-install.pth
Installing f2py-script.py script to C:\Users\carlo\AppData\Local\Programs\Python\Python39\Scripts
Installing f2py.exe script to C:\Users\carlo\AppData\Local\Programs\Python\Python39\Scripts
Using c:\users\carlo\appdata\local\programs\python\python39\lib\site-packages\numpy-1.21.2-py3.9-win-amd64.egg
Finished processing dependencies for nilm-metadata==0.2.5

Instalación semiautomática de NILMTK

Abra una ventana de terminal de conda, crearemos un nuevo entorno de Conda y lo activaremos con los comandos:

conda create --name nilmtk-env 
conda activate nilmtk-env

Si aún no está presente en su instalación de Conda, agregue el conda-forge a la lista de canales:

conda config --add channels conda-forge

Finalmente, instale la última versión de NILMTK de conda-forge :

conda install -c nilmtk nilmtk=0.4.3

Observe que el signo igual no lleva espacios(piense estamos usando Python). La ejecución del comando puede tardar un rato. Mientras tanto, consulte otros paquetes en Forge de NILMTK .

Como puede experimentar algunos problemas posteriores a la instalación con NILMTK y Matplotlib., para solucionarlos, aplique el comando:

conda install matplotlib 

Verificar la instalación Para verificar que Matplotlib está instalado, intente invocar la versión de Matplotlib en Python REPL. Use desde el interprete Python los comandos a continuación que incluyen llamar a .__ version__, un atributo común a la mayoría de los paquetes de Python.

>>> import matplotlib

>>> matplotlib.__version__

Ejemplo de salida:

(nilmtk-env) C:\Users\carlo>python
Python 3.6.13 (default, Sep 7 2021, 06:39:02) [MSC v.1916 64 bit (AMD64)] on win32
Type «help», «copyright», «credits» or «license» for more information.

import matplotlib
matplotlib.version
‘3.1.3’

Agregar un kernel de Jupyter

Básicamente, NILMTK ahora está instalado en su ordenador. El siguiente paso involucra los cuadernos de Jupyter. Trabajar con Jupyter abre muchas posibilidades y se dice que es una herramienta imprescindible. Por lo tanto, agregue el entorno NILMTK a Jupyter:

python -m ipykernel install --user --name nilmtk-env --display-name "Python (nilmtk-env)"

Prueba de la instalación

Ha llegado el momento de comprobar su instalación. Antes que nada, cree una nueva carpeta y descargue el conjunto de prueba aleatorio de Github:

md nilmtk_test
cd nilmtk_test 
 wget https://raw.githubusercontent.com/nilmtk/nilmtk/master/data/random.h5

Como puede comprobar random.h5 es el fichero de de datos en en formato hdf5 .A continuación, levante Jupyter:

notebook jupyter

Para probar su instalación, intente importar el conjunto de datos aleatorio usando NILMTK y trazar todos los medidores:https://klemenjak.medium.com/media/9ba2be16d331653a7b4093a0fe412434

La salida debe ser:

MeterGroup (metros =   ElecMeter (instancia = 1, edificio = 1, conjunto de datos = Ninguno, electrodomésticos = [])   ElecMeter (instancia = 2, edificio = 1, conjunto de datos = Ninguno, electrodomésticos = [])   ElecMeter (instancia = 3, edificio = 1, conjunto de datos = Ninguno, electrodomésticos = [])   ElecMeter (instancia = 4, edificio = 1, conjunto de datos = Ninguno, electrodomésticos = [])   ElecMeter (instancia = 5, edificio = 1, conjunto de datos = Ninguno, electrodomésticos = []) )

¡Felicitaciones! Lo ha logrado. ¡NILMTK parece funcionar según lo previsto! La próxima vez, discutiremos cómo usar la API de NILMTK para una experimentación rápida y conveniente.