jueves, 8 de junio de 2023

ESP32 consola en la ROM. Intérprete interno de BASIC (ESP32 ROM console and BASIC interpreter)

   Hace un tiempo atrás estaba experimentando con alguno de mis ESP32 y se me dio por buscar posibles lenguajes de programación, por curiosidad, para el ESP32: C/C++, MicroPython, CircuitPython, Lua, JavaScript, BASIC, ... Y me detuve en este último, buscando un poco por Internet fui a parar a la web de Espressif, el fabricante de los ESP32 y en una de sus webs de documentación sobre el framework ESP-IDF (Espressif IoT Development Framework) vi que en el apartado API guides había una entrada: ESP32 ROM console que hablaba de un intérprete de BASIC para hacer depuración sencilla, me llamó la atención pero lo dejé ahí. Nota: en las versiones modernas de la documentación ni lo mencionan. Hay alguna web más que habla sobre el tema en inglés y otra en japonés, usad un traductor sino las entendéis. Al final, pondré las referencias (webs) que he utilizado yo para documentarme sobre esta temática.

   Posteriormente, en un grupo de Telegram sobre cacharreo volvieron a hablar del tema, pero a la gente no le funcionó el método de activar este intérprete de BASIC en sus ESP32, así que me propuse a probar, a ver si lo podía activar en alguno de mis ESP32. La verdad, fui a tiro fijo y lo probé en el más antiguo que tenía, mi primer ESP32, que su compra data de entorno al año 2017. Una captura de tal hazaña (módulo, montaje y captura de la terminal serie):


    Si quieres saber un poco más y entender el porqué de todo el proceso, sigue leyendo...

Voy a resumir las consideraciones más importante y el procedimiento a seguir, si se cumplen los requisitos, para activar este intérprete:

  1) Partimos de que vuestro ESP32, modelo normal, no ESP32-S2/S3/C3, funciona correctamente y tenéis instalados los drivers para la comunicación con el chip. 

   2) La activación (arranque) de la consola de BASIC de la ROM no se puede realizar en todos los ESP32, solo en las versiones más antiguas de los mismos en las que no esté "quemado" el fuse que lo deshabilita. Este BASIC está basado en el TinyBasic Plus de Mike Field y Scoot Lawrence (mirar las referencias al final). Yo lo he probado con éxito en una board Geekworm EASY KIT ESP32-B1, comprada en el año 2017 aproximadamente. Puede ser que en tu placa no funcione por ser relativamente moderna y por lo tanto tenga quemado el fuse que deshabilita esta consola BASIC. De echo la última versión del ESP-IDF de Espressif en donde aparece documentada esta consola es la release v4.3 (mirar las referencias al final).

   3) Paso a explicar cómo se activa esta consola, esto suponiendo que sí que la tiene activada de fábrica:

      - Partimos de la placa ESP32 desconectada de la alimentación o del puerto USB.

     - Conectaremos una resistencia de pull-up de unos 10 kohms entre el pin de alimentación de 3.3V de la board (3V3 en mi caso) y el strapping pin GPIO 12, también conocido por pin MTDI (IO12  en mi caso).

      - Después conectamos la placa al computador por medio del cable USB y nos conectamos a ella por el puerto serie correspondiente a una velocidad de 115200 bps, por ejemplo con el monitor Serie del IDE de Arduino o cualquier otra aplicación que nos lo permita.

      - Una vez conectados nos aparecerá un mensaje que se repite continuamente, se está reiniciando el ESP32 cada pocos segundos. Entonces, tenemos que pulsar la tecla Enter en nuestro teclado de la computadora y aparecerá un prompt, parando los reinicios, avisándonos que ya estamos que ya estamos en el intérprete de comando y que todo está OK.

     - Ahora ya podemos usar el intérprete de BASIC.  Comandos interesantes para  comenzar la prueba (primero escribimos el comando y luego le damos a la tecla Enter): help (ayuda de todos los comandos/funciones), about (para ver la versión del intérprete de comandos e información resumida del mismo), list (para listar el código fuente de BASIC si se ha introducido), etc. Ver la documentación (referencias) para más información.

       - Cuando acabemos, desconectamos la placa del puerto USB y quitamos la la resistencia de pull-up y el ESP32 volverá a su modo normal la próxima vez que lo usemos.   

➣ Saber si nuestro ESP32 admite la activación del intérprete de BASIC, si lo tiene en la ROM:

   Lo más probable es que si vuestro ESP32 es antiguo, sí que tenga el intérprete de BASIC, pero para estar más seguro explico los pasos para comprobarlo:

   Desde Windows, tenemos que instalar Python primero y los drivers del bridge USB-serial. Además si ya hemos programado alguna vez un ESP32 tanto con el IDE de Arduino o PlatformIO y los tenemos instalados, alguno de los dos o ambos seguro que ya tiene instaladas las utilidades de Espressif (esptool) para acceder y programar el ESP32. Podemos comprobar si las tenemos instaladas si abrimos una ventana de Símbolo del sistema y ponemos el siguiente comando y luego le damos a la tecla Enter:

py -m esptool -h

   No nos debería de dar ningún error y nos mostrará lo básico de esta utilidad. Si no tenemos instaladas esta utilidades se pueden instalar abriendo una ventana de Símbolo de sistema y poniendo el siguiente comando y dándole a la tecla Enter:

py -m pip install esptool

 Usaremos después otra de las utilidades (espefuse) en el Símbolo del sistema para averiguar  si nuestra placa admite este intérprete de BASIC en la ROM. Unas captura de pantalla del resultado con una placa que sí que lo tiene y otra que no son las siguientes. En el Símbolo del sistema deberemos de ejecutar el siguiente comando sabiendo el puerto serie de nuestro ESP32, en mi ejemplo el COM5:

py -m espefuse -p COM5 summary

    Primero una captura de una placa en la que sí que lo admite el intérprete de BASIC (haced clic en ella para verla más grande): 

 

   Y después otra captura con una placa que no lo admite (haced clic en ella para verla más grande):


   Próximamente, un vídeo en mi canal de YouTube, atentos. 

   Webs de referencia sobre este tema:

   Si consideras que te ha servido la información que te he proporcionado colabora conmigo haciendo una donación, siguiéndome en Twitter,  suscribiéndote a mi canal de YouTube, comparte este contenido diciendo la fuente, o escribe un comentario en el blog para que podamos ayudar a otra gente.

  Ten en cuenta que proporcionar contenido nuevo en el blog lleva tiempo de trabajo e investigación y recursos.

   Desde aquí un cordial saludo a tod@s.

 

0 comentarios:

Publicar un comentario