De vez en cuando, te vas a topar con problemas mientras trabajas con CircuitPython. Estas son algunas de las cosas que te pueden pasar y como resolverlas.

Mientras continuamos desarrollando CircuitPython y creando nuevas versiones, vamos a dejar de darle mantenimiento a las versiones anteriores. Visita https://circuitpython.org/downloads para descargar la última versión de CircuitPython. Favor actualiza CircuitPython y luego visita https://circuitpython.org/libraries para descargar la última versión del Agrupado de Librerías.

Siempre Ejecuta la Última Versión de CircuitPython y sus Librerías

Mientras continuamos desarrollando CircuitPython y crear nuevas versiones, vamos a dejar de darle mantenimiento a versiones anteriores. Usted necesita actualizarse a la última versión de CircuitPython..

Usted necesita descargar el Agrupado de Librerías para CircuitPython compatible con tu versión de CircuitPython. Favor actualice CircuitPython y luego descargue el último agrupado.

Mientras sacamos nuevas versiones de CircuitPython, vamos a dejar de agrupar automáticamente para versiones anteriores en el repositorio de Agrupado de Librerías de CircuitPython de Adafruit. Si desea seguir usando una versión anterior, todavía puede descargar la versión apropiada de mpy-cross para una versión en particular de CircuitPython, en el repositorio de CircuitPython y crear sus propios archivos .mpy para librerías. Sin embargo, es mejor actualizar ambas versiones de CircuitPython y del agrupado de librerías.

Tengo que seguir usando CircuitPython 3.x o 2.x, ¿donde puedo encontrar librerías compatibles?

Ya no le estamos dando mantenimiento a los agrupados de librerías para CircuitPython 2.x y 3.x. Te recomendamos actualizar CircuitPython a la última versión y usar la versión actuali de las librerías. Sin embargo, si por alguna razón no puedes actualizar, puedes encontrar  la última versión 2.x disponible aquí y y la última de 3.x disponible aquí.

Unidades de disco CPLAYBOOT, TRINKETBOOT, FEATHERBOOT, or GEMMABOOT no presentes.

Puede que tenga una tarjeta diferente.

Solo las tarjetas Express de Adafruit y las Trinket M0 y las Gemma M0 vienen con el gestor de arranque UF2 instalado. Las Feather M0 Basic, Feather M0 Adalogger, y tarjetas similares utilizan un bootloader compatible con Arduino, el cual no tiene una unidad de disco nombretarjetaBOOT.

MakeCode

Si estás utilzando un programa en MakeCode presiona el botón de reset solo una vez para que aparezca la unidad de discoCPLAYBOOT. Presionándola dos veces, no va a funcionar.

Windows 10

¿Instalaste el paquete con Controladoras para Windows de Adafruit por error? No necesitas instalar este paquete en Windows 10 para la mayorías de las tarjetas. La versión anterior (v1.5) puede causar problemas reconociendo tu dispositivo. Vaya a Settings -> Apps y desinstale controladoras de "Adafruit".

Windows 7

La versión 2.0.0.0 o posterior de las controladoras para Windows de Adafruit van a arreglar el problema de que no aparezca la unidad de disco nombretarjetaBOOT. Para resolver esto, primero desinstale las versiones anteriores de las controladoras:

  • Desconecte cualquier tarjeta. En Uninstall or Change a Program (Control Panel->Programs->Uninstall a program), desinstale cualquier cosa de nombre "Windows Driver Package - Adafruit Industries LLC ...".

MacOS

DriveDX y su controladora acompañante SAT SMART Driver pueden interferir con ver una unidad de disco BOOT. Observa este mensaje del foro para saber como arreglar este problema.

  • Ahora instale el nuevo paquete de Controladoras de Adafruit para Windows, versión 2.3.0.0 (o superior):
  • Cuando ejecutas el instalador, vas a observar una lista de controladoras a escoger. Puedes marcar y desmarcar las cajas para escoger los controladores a instalar.

¡Ya estás listo! Realice una prueba desconectando y reconectando la tarjeta. Deberías ver la unidad de disco CIRCUITPY, y cuando le das doble click al botón de reset (o un solo click en una Circuit Playground Express corriendo MakeCode), deberías ver la unidad de disco apropiada tipo nombretarjetaBOOT.

¡Déjenos saber en los foros de servicio técnico de Adafruit o en el canal de Adafruit en Discord si esto no te funciona!

Windows Explorer se queda pegado al accesar la unidad de disconombretarjetaBOOT

En Windows, algunas aplicaciones de tercero pueden causar problemas. El síntoma es que tratas de accesar la unidad de disco nombretarjetaBOOT, y Windows o el Explorador de Windows parece que se queda pegado. Estas aplicaciones son causantes conocidos:

  • AIDA64: para arreglarlo, detenga la aplicación. El problema ha sido reportado a AIDA64. Ellos consiguieron hardware para probar y sacaron una versión beta que resuelve este problema. Esto puede que se haya integrado con la última versión. Déjanos saber en los foros si lo pruebas.
  • Hard Disk Sentinel
  • Anti-virus Kaspersky: Para arreglarlo, es posible que tengas que deshabilitar Kaspersky del todo. Deshabilitar algunos aspectos de Kaspersky puede que no arregle el problema. El problema ha sido reportado a Kaspersky.

Copiar un UF2 a la unidad de disco nombretarjetaBOOT se queda pegado con un 0% de copia completada

En Windows, el utilitario de Western Digital (WD) que se incluye con las unidades de disco externas USB, interfiere con la copia de archivos UF2 hacia la unidad de disco nombretarjetaBOOT. Desinstala el utilitario para arreglar el problema.

La Unidad de Disco CIRCUITPY no Aparece

El anti-virus Kaspersky puede bloquear el que aparezca la unidad de disco CIRCUITPY. Aún no hemos encontrado un cambio de configuración que evite que suceda. Una desinstalación completa de Kaspersky arregla el problema.

El anti-virus Norton puede interferir con CIRCUITPY. Un usuario ha reportado este problema en Windows 7. El usuario apagó tanto la Pared de Fuergo Inteligente (o Smart Firewall) y Auto Protect, y CIRCUITPY entonces apareció.

La Consola Serial de Mu no Imprime Nada

Pasa a veces que la consola serial no va a imprimir nada, por ejemplo, cuando no hay código corriendo en ese momento, o cuando un código sin salida serial ya se está ejecutando antes de abrir la consola. Sin embargo, si te encuentras en una situación donde consideras que debería estar imprimendo algo como por ejemplo un mensaje de error, considera lo siguiente.

Dependiendo del tamaño de tu pantalla o de la ventana de Mu, cuando abres la consola serial, el panel de la consola serial puede que quede muy pequeño. Esto puede ser incómodo. ¡Un mensaje de error típico en CircuitPython toma 10 líneas para desplegarse!

Download: file
Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.
code.py output:
Traceback (most recent call last):
  File "code.py", line 7
SyntaxError: invalid syntax



Press any key to enter the REPL. Use CTRL-D to reload.
 

¡Errores más complejos necesitan todavía más líneas!

Por lo tanto, si tu panel de consola serial es de menos de 5 líneas, puede que solo veas líneas en blanco, o líneas en blanco seguidas de Press any key to enter the REPL. Use CTRL-D to reload. Si este es el caso, necesitas parate con el mouse encima de la parte superior del panel para poderle cambiar su tamaño o utilizar la barra de desplazamiento al lado derecho para encontrar tu mensaje.

Esto aplica para cualquier tipo de salida serial, ya sea un mensaje de error o un mensaje de un print. Así que antes de que trates de depurar tu problema del lado del hardware, primero asegúrate de que no hay mensajes que puedas no estar viendo a causa del tamaño del panel de consola serial.

Luz de Estado RBG para CircuitPython

Casi todas las tarjetas para CircuitPython de Adafruit, tienen en la tarjeta un solo LED RGB de tipo NeoPixel o DotStar, que indica el estado de CircuitPython. Algunas tarjetas que se diseñaron antes de que existiera CircuitPython, tales como las Feather M0 Basic, no lo tienen.

Las Circuit Playground Express y las Circuit Playground Bluefruit tienen múltiples LEDs RGB, pero NO un LED de estado. Los LEDs prenden en verde cuando está dentro del modo de gestor de arranque. Ellos NO indican el estado mientras CircuitPython se ejecuta.

Esto es lo que los colores y su parpadeo significan:

  • VERDE fijo: se está ejecutandocode.py (ocode.txt, omain.py, o main.txt)
  • VERDE parpadeando: code.py (etc.) ha terminado de correr o no existe
  • AMARILLO fijo al inicio: (4.0.0-alpha.5 o más reciente) CircuitPython está esperando un reset para indicar que debería entrar en modo a prueba de fallos (o safe mode)
  • AMARILLO parpadeando: CircuitPython está en modo a prueba de fallos: tuvo una caída y se reinició
  • BLANCO fijo: El REPL está corriendo
  • AZUL fijo: boot.py está corriendo

El parpadeo de múltiples colores en secuencia indica una excepción de Python donde se indica el número de línea del error. El color del primer parpadeo indica el tipo de error:

  • VERDE: IndentationError
  • CIAN: SyntaxError
  • BLANCO: NameError
  • NARANJA: OSError
  • MORADO: ValueError
  • AMARILLO: other error

Luego sigue la secuencia de parpadeo que indica el número de línea, incluyendo un valor por posición. Parpadeo BLANCO son miles, AZUL las centenas, AMARILLO las decenas, y CIAN las unidades. Así que por ejemplo, un error en la línea 32 parpadearía en AMARILLO tres veces y en CIAN dos veces más. Los ceros se representan por apagados de larga duración.

ValueError: Incompatible .mpy file.

Esto sucede cuando se importa un módulo que ha sido almacenado como binario mpy, el cual ha sido creado con una versión diferente de CircuitPython a la que estás usando para cargarlo. En particular, el formato binario mpy cambió entre las versiones 2.x y 3.x de CircuitPython, así como también entre 1.x y 2.x.

Así que por ejemplo, si has actualizado a CircuitPython 3.x desde 2.x vas a necesitar descargar la última versión de la librería que inició el problema cuando se ejecutó el import. Todas están disponibles en el Agrupado de Librerías de Adafruit .

Asegúrate de descargar una versión con 2.0.0 o superior en el nombre de archivo si estás usando CircuitPython 2.2.4, y la versión 3.0.0 o superior si estás utilizando CircuitPython 3.0.

Problemas con la Unidad de Disco CIRCUITPY

Puede que te pase que ya no puedes salvar archivos en la unidad de disco CIRCUITPY. Puede que te pase que CIRCUITPY ya no sale en tu explorador de archivos, o ya aparece como NO_NAME. Estos son indicadores de que tu sistema de archivos tiene problemas.

Primero revisa - ¿Has utilizado Arduino para programar tu tarjeta? Si es así, CircuitPython ya no puede dar los servicios de USB. Reinicie la tarjeta para recibir la unidad de disco nombretarjetaBOOT en lugar de la unidad de disco CIRCUITPY, copie la última versión de CIRCUITPYTHON (.uf2) hacia la tarjeta y reinicie. Ya debería aparecer CIRCUITPY.

Si todavía sigue mal - Es posible que el sistema de archivos esté corrupto como resultado de no expulsar de forma segura a la unidad de disco CIRCUITPY antes de presionar el botón de reset o de desconectarla del USB. Esto puede pasar en Windows, Mac o Linux.

En este caso, la tarjeta debe ser borrada completamente y CircuitPython recargado a la tarjeta.

VAS A PERDER todo en la tarjeta cuando completes los siguientes pasos. Si es posible, realiza una copia de tu código antes de continuar.

Forma sencilla: Usando storage.erase_filesystem()

Desde la versión 2.3.0, CircuitPython incluye una función para borrar y dar formato al sistema de archivos. Si tienes una versión anterior de CircuitPython en tu tarjeta, puedes actualiza a la última versión para poder hacer esto.

  1. Conéctese al REPL usando Mu or la aplicación de terminal.
  2. Escriba:
Download: file
>>> import storage
>>> storage.erase_filesystem()

CIRCUITPY se va a borrar y a dar formato, y luego tu tarjeta se reiniciará. ¡Listo!

Forma antigua: Para las Circuit Playground Express, Feather M0 Express, y Metro M0 Express:

Si no puedes entrar en el REPL, o estás corriendo una versión anterior a CircuitPython 2.3.0 y no deseas actualizar, puedes hacer esto.

       1.  Descargue el archivo de borrado apropiado para tu tarjeta:

       2. Realice doble click en el botón de reset de la tarjeta para que aparezca la unidad de disco nombretarjetaBOOT.
       3. Arrastre el archivo de borrado .uf2 a la unidad de disco nombretarjetaBOOT.
       4. El LED de estado se va a prender de color amarillo o azul, indicando que el borrado a comenzado.

       5. Luego de aproximadamente 15 segundo, el LED de estado se prenderá de color verde. En las NeoTrellis M4 este es el primer NeoPixel de la rejilla.

       6. Realice doble click en el botón de reset de la tarjeta para que aparezca la unidad de disco nombretarjetaBOOT.
       7.  Arrastre la versión correcta de CircuitPython en archivo .uf2 hacia la unidad de disco nombretarjetaBOOT.

Debería reiniciar automáticamente y deberías ver de nuevo en tu explorador de archivos a la unidad de disco CIRCUITPY,

Si el LED parpadeo en rojo durante el paso 5, significa que el borrado falló. Repita los pasos desde el 2.

Si aún no lo ha hecho, descargue la última versión de CircuitPython para tu tarjeta, en la página de instalaciónIf you haven't already downloaded the latest release of CircuitPython for your board, check out the installation page. ¡También vas a ocupar instalar las librerías y tu código!

Forma antigua: Para tarjetas no-Express con gestor de arranque UF2 (Gemma M0, Trinket M0):

Si no puedes recibir el REPL, o estás ejecutando una versión anterior a CircuitPython 2.3.0 y no quieres actualizar, puedes hacer esto.

       1.  Descargue el archivo de borrado:

       2. Realice doble click en el botón de reset de la tarjeta para que aparezca la unidad de disco nombretarjetaBOOT.

       3. Arrastre el archivo de borrado .uf2 hacia la unidad de disco nombretarjetaBOOT.
       4. El LED de estado va a parpadear, y la unidad nombretarjetaBOOT aparece.

       5.  Arrastre una versión reciente de CircuitPython para su tarjeta en archivo.uf2 hacia la unidad de disco nombretarjetaBOOT.

Debería reiniciarse y verse la unidad de disco CIRCUITPY de nuevo en el explorador de archivos.

Si no lo has hecho, descarga la última versión de CircuitPython para tu tarjeta en la página de instalación ¡También vas a ocupar instalar las librerías y tu código!

Forma antigua: Para tarjetas no-Express sin gestor de arranque UF2 (Feather M0 Basic Proto, Feather Adalogger, Arduino Zero):

Si estás corriendo un versión anterior a CircuitPython 2.3.0 y no quieres actualizar o no puedes recibir al REPL, puedes hacer esto.

Sigue las instrucciones para cargar CircuitPython usando bossac, con la cual se va a borrar y a dar formato a CIRCUITPY.

Quedándose Sin Espacio en Tarjetas No-Express

El sistema de archivos de la tarjeta es muy pequeño. (Más pequeños que los viejos discos floppy) Así que es posible que te vayas a quedar sin espacio, pero ¡sin pánico! Hay un par de formas para liberar espacio.

La tarjeta se envía con un controlador serial para Windows 7. Sin problemas puedes eliminar el archivo si no lo necesitas o si ya lo tienes instalado. Son como 12KiB.

¡Borra algo!

La forma más sencilla de liberar espacio es borrando archivos de la unidad de disco. Tal vez hay librerías en la carpeta de lib que ya no estás utilizando o código de prueba que no se usa. No borre completamente la carpeta lib, solamente borre lo que no haga falta.

Use tabs

Una característica única de Python es que la identación del código importa. Usualmente la recomendación es identar el código con cuatro espacio por sangría. En general, también recomendamos eso. Sin embargo, un truco para almacenar más código legible por humanos es utilizar un solo tab para la sangría. De esta forma se usa 1/4 del espacio de almacenamiento para identar, y esto puede ser significativo cuando contamos en bytes.

A MacOS le encantan los archivos extra.

 Por suerte, puedes deshabilitar algunos de los archivos escondidos adicionales que MacOS agregar, corriendo un par de comandos para deshabilitar el indexado y crear archivos de cero bytes para reservar el lugar. Sigue los pasos a continuación para maximizar la cantidad de espacio disponible en MacOS:

Prevenir y Remover Archivos Escondidos de MacOS Hidden

Primero, encuentre el nombre del volumen de disco para tu tarjeta. Con la tarjeta conectada, ejecutas ese comando en una terminal para listas las unidades de disco:

Download: file
ls -l /Volumes

Buscar una unidad de disco con un nombre como CIRCUITPY (el nombre por omisión en CircuitPython).  La ruta completa del volumen es la ruta /Volumes/CIRCUITPY.

Ahora siga los pasos descritos en esta pregunta donde ejecutamos estos comandos para detender que los archivos escondidos sean creados en la tarjeta:

Download: file
mdutil -i off /Volumes/CIRCUITPY
cd /Volumes/CIRCUITPY
rm -rf .{,_.}{fseventsd,Spotlight-V*,Trashes}
mkdir .fseventsd
touch .fseventsd/no_log .metadata_never_index .Trashes
cd -

Reemplace /Volumes/CIRCUITPY en los comandos descritos arriba, si el nombre de tu tarjeta es diferente. En este paso, los archivos escondidos han sido borrados de tu tarjeta y se va a prevenir que algunos archivos escondidos sean creados.

De forma alternativa, desde CircuitPython 4.x y superiores, los archivos especiales y carpetas descritos van a ser creados automáticamente luego de borrar y dar formato al sistema de archivos. Advertencia: ¡Primero salve sus archivos! Haga esto en el REPL:

>>> import storage
>>> storage.erase_filesystem

Sin embargo, todavía hay casos donde archivos escondidos pueden ser creados por MacOS. En particular, si copias un archivo que ha sido descargado de internet, va a tener metadata que MacOS almacena como un archivo escondido. Por suerte, puedes correr un comando de copia desde una terminal para copiar archivos sin este archivo escondido de metadatos. Observe los siguientes pasos.

Copie Archivos en MacOS Sin Crear Archivos Escondidos

Una vez que has deshabilitado y removido archivos escondidos con los comandos descritos arriba en MacOS, vas a necesitar realizar una copia cuidadosa de archivos para prevenir que futuros archivos escondidos sean creados. Lastimosamente, no se puede arrastrar archivos desde el Finder, dado que va a crear los archivos escondidos de metadatos en algunos casos (para archivos descargados de internet, como módulos de Adafruit).

Para copiar un archivo o carpeta, utilice la opción -X del comando cp en una terminal. Por ejemplo, para copiar el archivo foo.mpy a la tarjeta, use un comando similar a:

Download: file
    cp -X foo.mpy /Volumes/CIRCUITPY
  

(Reemplace foo.mpy con el nombre del archivo que quiere copiar) O para copiar una carpeta con todos sus archivos y carpetas que contiene, use un comando similar a:

Download: file
cp -rX folder_to_copy /Volumes/CIRCUITPY

Si estás copiando hacia la carpeta lib, o hacia otra carpeta, es bueno verificar que exista, antes de copiarle algo.

Download: file
# ¡si lib no existe, vas a crear un archivo llamado lib !
cp -X foo.mpy /Volumes/CIRCUITPY/lib
# Esta forma es preferida, y se va a quejar si la carpeta lib
# no existe.
cp -X foo.mpy /Volumes/CIRCUITPY/lib/

Otros tips para Ahorro de Espacio en MacOS

Si desea ver la cantidad de espacio utilizda en la unidad de disco, y manualmente borrar archivos escondidos, esta es la forma. Primero, liste la cantidad de espacio utilizada en la unidad de disco CIRCUITPY con el comando df:

Removamos los archivos  ._ primero.

¡Hey! ¡Tenemos 13Ki más que antes! ¡Este espacio ahora puede ser usado para librerías y código!

This guide was first published on Mar 11, 2020. It was last updated on Mar 11, 2020.
This page (Depuración) was last updated on Jul 08, 2020.