Error al conectarse a ESP32: se agotó el tiempo de espera para el encabezado del paquete


¿Por qué recibe este error?

Algunas placas de desarrollo ESP32 no entran en modo de carga / parpadeo automáticamente cuando se carga un nuevo código.

Esto significa que cuando intenta cargar un nuevo boceto en su ESP32, el IDE de Arduino no se conecta a su placa y recibe el siguiente mensaje de error:A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header

Manteniendo pulsado el botón BOOT / FLASH

Una de las formas de resolver esto es mantener presionado el botón ” BOOT / FLASH ” en su placa ESP32 mientras carga un nuevo boceto al mismo tiempo. Pero tener que preocuparse por esto cada vez que desee cargar un nuevo código puede ser tedioso, especialmente cuando está probando y depurando su código. Hay una forma de solucionar este problema de una vez por todas: ya no es necesario mantener pulsado el botón “BOOT / FLASH”.

¿Cómo solucionar el error?

Para que su placa ESP32 entre en modo de parpadeo / carga automáticamente, puede conectar un condensador electrolítico de 10 uF entre elES pin y GND.

Es posible que desee probar esta configuración primero en una placa de pruebas para asegurarse de que funcione para su placa de desarrollo ESP32.

Nota: los condensadores electrolíticos tienen polaridad. La raya blanca / gris indica el cable negativo.

Si funciona, puede soldar el condensador electrolítico de 10 uF a la placa. Desde elES Y los pines GND están muy separados entre sí, simplemente puede conectar el condensador entre el ES y el GND del chip ESP32 como se muestra en el diagrama esquemático a continuación:

La siguiente figura muestra cómo se ve mi ESP32 después de soldar el condensador. No ocupa mucho espacio y, afortunadamente, no tendrá más problemas para conectarse al ESP32 cuando cargue un nuevo código.

Antes de intentar cargar un nuevo código, debe verificar las conexiones con un multímetro en modo de continuidad; verifique que no haya soldado inadvertidamente nada al siguiente pin.

Se corrigió el tiempo de espera agotado para el encabezado del paquete con prueba de condensadores

Si todo está soldado correctamente, no necesitará presionar el botón BOOT cuando cargue un nuevo código. Tampoco obtendrá el error fatal ocurrido: “No se pudo conectar a ESP32: se agotó el tiempo de espera para el encabezado del paquete”.

Videos mas famosos sobre Inteligencia artificial


Inteligencia Artificial es una realidad de hoy en día  constituyendo realmente una colección de tecnologías avanzadas que permite a las máquinas sentir, comprender, actuar y aprender.

En el  siguiente documental de Discovery channel podemos  ver como la inteligencia artificial está cambiando la forma de ver el mundo  en ejemplos tan diversos  como :

  • La capacidad de debatir
  • Vehículos autónomos
  • Teoría de los juegos
  • Robótica
  • Humanoides
  • Educación
  • Aplicaciones para invidentes
  • Reconocimiento facial
  • Uso de otros medicamentos para curar otras enfermedades
  • etc

Asimismo  se  trata un tema como Stephen Hawking pronosticó que el desarrollo de la inteligencia artificial puede llegar a provocar la extinción de la raza humana.

En este otro  video, podemos  ver la evolución de los robots que  han creado la famosa  empresa  Boston Dynamics desde 2012 hasta 2019

 

Transformar el negocio de maneras que no hemos visto desde la Revolución Industrial; reinventar fundamentalmente la forma en que las empresas funcionan, compiten y prosperan. Cuando se implementan holísticamente, estas tecnologías ayudan a mejorar la productividad y reducir los costos, desbloqueando empleos más creativos y creando nuevas oportunidades de crecimiento.

Este cortometraje fue creado por MMP Global para destacar por qué los profesionales que trabajan en Servicios Financieros necesitan estar al tanto de la IA ahora.

 

Antes de profundizar en el apasionante mundo de la Inteligencia Artificial, hay que conocer bien por donde nos movemos. Hoy traigo un mapa conceptual con algunos de los conceptos más importantes y que con mayor confusión son utilizados: el Machine Learning  y el Deep Learning.

La visión por computadora es fascinante para mí porque a) suena intrigante y b) es parte de tantas cosas diferentes que usamos hoy en día (realidad aumentada, búsqueda de imágenes, Google Fotos, cámaras, esas primeras líneas amarillas que vemos viendo fútbol en la televisión, coches autónomos, lentes selfie, y más). En este video,podemos ver  varios investigadores de Google para obtener una visión general del campo hoy, un poco de su historia, y un indicio de su futuro.

Configuración de Visual Studio Code y WSL para el desarrollo MPI


Muchos planes de estudios requieren que se realicen pequeños programas con  MPI como parte del curso de Computación paralela, por lo que en este post   intentaremos ver como hacer la configuración de WSL (Subsistema de Windows para Linux) y Visual Studio Code para el desarrollo de MPI, que se ejecuta en Ubuntu WSL Distro de Microsoft Store

Configuración de WSL

En las versiones recientes de Windows, WSL está habilitado de forma predeterminada y todo lo que necesita hacer es instalar una distribución debajo de él.

Comenzaremos descargando la distribución de Ubuntu de Microsoft Store. Abra la tienda desde el menú de inicio y busque Ubuntu 18.04 o haga clic aquí

Imagen para publicación
Toca “Obtener” para instalar la distribución de Ubuntu de WSL

después de  instalarlo, ábralo y siga todas las instrucciones para ingresar su nombre de usuario y contraseña predeterminados, etcétera.

Instalación de OpenMPI y herramientas de compilación para OpenMPI

Ahora debería estar mirando una ventana de línea de comandos, ejecutando bash, con el logotipo de ubuntu como el icono de la aplicación en la barra de tareas. Si ve esto, significa que ha instalado con éxito la distribución de Ubuntu en WSL

Ahora escriba el siguiente comando para instalar OpenMPI. En el caso de la siguiente captura de pantalla, ya se ha instalado.

sudo apt update && sudo apt install openmpi-bin libopenmpi-dev

Después de esto, inmediatamente podrá usar mpicc y mpirun para ejecutar y compilar programas que usen MPI, pero pronto verá este mensaje.

WARNING: Linux kernel CMA support was requested via thebtl_vader_single_copy_mechanism MCA variable, but CMA support isnot available due to restrictive ptrace settings.

Esto se debe a uno de los parámetros con los que WSL está configurado de forma predeterminada. Para resolver esto, necesitamos ejecutar este comando

  echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

Después de esto, la advertencia simplemente desaparecerá.

Para compilar con MPI  simplemente debemos usr el compilador mpicc  , como por ejemplo:

>mpicc -o ejemplo ejemplo.c

Y para ejecutarlo usaremos mpirun  pasándole con el argumento -n el numero de procesadores:

mpirun -n 2 ./ejemplo

Ahora veamos un ejemplo sencillo para probar mpi :

 

#include<stdio.h>

#include<mpi.h>

int main( int argc, char* argv[] ) {

    int rank, size;

  

    // Paralelismo

    MPI_Init( &argc, &argv );

    // Indice del proceso

    MPI_Comm_size( MPI_COMM_WORLD, &size );

    // Tamano del comunicador seleccionado

    MPI_Comm_rank( MPI_COMM_WORLD, &rank );

    printf( "Hola mundo! Soy el proceso numero %d. En total somos %d procesos.\n", rank, size );




    MPI_Finalize();

}

 

 Para poder ejecutar con más procesadores  de los que físicamente tiene el equipo al usar  mpirun  pasándole con el argumento -n (el numero de procesadores) , nos dará un error :
>mpirun -n 4 ./ejemplo
There are not enough slots available in the system to satisfy the 3slots that were requested by the application:
  ./Step6-SendReceive
Either request fewer slots for your application, or make more slotsavailable for use.
A "slot" is the Open MPI term for an allocatable unit where we canlaunch a process.  The number of slots available are defined by theenvironment in which Open MPI processes are run:
  1. Hostfile, via "slots=N" clauses (N defaults to number of     processor cores if not provided)  2. The --host command line parameter, via a ":N" suffix on the     hostname (N defaults to 1 if not provided)  3. Resource manager (e.g., SLURM, PBS/Torque, LSF, etc.)  4. If none of a hostfile, the --host command line parameter, or an     RM is present, Open MPI defaults to the number of processor cores
In all the above cases, if you want Open MPI to default to the numberof hardware threads instead of the number of processor cores, use the--use-hwthread-cpus option.
Alternatively, you can use the --oversubscribe option to ignore thenumber of available slots when deciding the number of processes tolaunch.

Como no es difícil de adivinar el error advierte de que intentamos ejecutar  en mas procesadores los que realmente se tienen en nuestra máquina .Para simular los procesadores que no se tiene podemos utilizar el flag –oversubscribe

 
Sería así:
mpirun -np 4 –oversubscribe ./programa

 

 

Si solo desea ejecutar programas en el terminal y no necesitar configurar Visual Studio Code, ahora puede hacerlo usando mpicc y mpirun desde la consola .De lo contrario, siga leyendo para descubrir cómo configurar VSCode para la tarea.

Configuración de VSCode

Suponemos que ya tiene VSCode instalado, si no, descárguelos de su sitio web .

Necesitaremos instalar WSL Remote desde su página de Extensiones de Visual Studio , después de eso, haga clic en el nuevo ícono en la parte inferior izquierda para iniciar una nueva sesión de WSL.

Imagen para publicación

Después de eso, le pedirá que elija un directorio que desea abrir. Continúe y abra el directorio en el que planea realizar su desarrollo.

Para habilitar el resaltado de sintaxis, intellisense y otras características conscientes del lenguaje, también necesitamos configurar el soporte C / C ++ en VSCode. Para eso, vaya al panel de extensiones e instálelo

Imagen para publicación

Ahora, por defecto, VSCode no va a poder encontrar mpi.h, lo cual es fundamental para poder brindar sugerencias para Interfaces MPI, para eso necesitaremos configurar el includePath y la ruta ejecutable en el C / C ++ Ajustes.

 

Probablemente tenga  un archivo llamado c_ccp_properties.json en la carpeta .vscode en su directorio del programa 
    "configurations": [

        {

            "name": "Win32",

            "includePath": [

                "${workspaceFolder}/**", "C:\\Program Files (x86)\\Microsoft SDKs\\MPI\\Lib\\"

            ],

            "defines": [

                "_DEBUG",

                "UNICODE",

                "_UNICODE"

            ],

            "compilerPath": "C:\\MinGW\\bin\\gcc.exe",

            "cStandard": "gnu11",

            "cppStandard": "gnu++14",

            "intelliSenseMode": "windows-gcc-x86"

        }

    ],

    "version": 4

}

 Modifique ese archivo llamado c_ccp_properties.json en la carpeta .vscode en su directorio del programa MPI para poderlo  ejecutar desde Linux :

{

    "configurations": [

        {

            "name": "Linux",

            "includePath": [

                "${workspaceFolder}/**",

                "/usr/lib/x86_64-linux-gnu/openmpi/include"

            ],

            "defines": [],

            "compilerPath": "/usr/bin/mpicc",

            "cStandard": "c11",

            "cppStandard": "c++17",

            "intelliSenseMode": "clang-x64"

        }

    ],

    "version": 4

}
 
Se puede conseguir auto construcción y ejecución  por lo que además  de lo anteriror, si desea poder compilar y ejecutar directamente desde VSCode, debemos agregar las siguientes tareas de compilación y lanzamiento
 
fichero=launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "(mpirun) Launch",
"type": "cppdbg",
"request": "launch",
"program": "/usr/bin/mpirun",
"args": ["-np", "4", "${fileDirname}/${fileBasenameNoExtension}.out"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,

}
]
}

fichero task.json

 
{

    "version": "2.0.0",

    "tasks": [

        {

            "type": "shell",

            "label": "gcc build active file",

            "command": "/usr/bin/gcc",

            "args": [

                "-g",

                "${file}",

                "-o",

                "${fileDirname}/${fileBasenameNoExtension}"

            ],

            "options": {

                "cwd": "/usr/bin"

            },

            "problemMatcher": [

                "$gcc"

            ],

            "group": "build"

        },

        {

            "type": "shell",

            "label": "mpicc build active file",

            "command": "/usr/bin/mpicc",

            "args": [

                "-g",

                "${file}",

                "-o",

                "${fileDirname}/${fileBasenameNoExtension}.out"

            ],

            "options": {

                "cwd": "/usr/bin"

            },

            "problemMatcher": [

                "$gcc"

            ],

            "group": {

                "kind": "build",

                "isDefault": true

            }

        },

    ]

}

Con esa configuración, debería poder usar sus atajos de teclado predeterminados para Ejecutar sin depurar (Ctrl + F5) y Generar (Ctrl + Shift + B) para construir y ejecutar sus programas MPI.