Raspberry Pi Pico y MicroPython en Windows
Este artículo responde a la pregunta: ¿Cómo puedo utilizar la Raspberry Pi Pico con MicroPython en Windows? También mostramos cómo instalar el controlador adecuado para "Board CDC" (como se mostrará el Pico una vez instalado MicroPython) en Windows 8.1. (También discutiremos las diferencias entre MicroPython y CircuitPython cuando sea aplicable - donde la placa se llamará "CircuitPython CDC Control").
Finalmente, mostraremos cómo conectarse al Pico usando PuTTY, y una opción más cómoda usando Thonny (que es un IDE de Python, ¡integrado con el Pico!)
Introducción: ¿Qué es Pico y qué es MicroPython?
El Raspberry Pi Pico es una nueva placa microcontroladora de Raspberry Pi, con el chip microcontrolador RP2040 de desarrollo propio.
Raspberry Pi ha diseñado un montón de características interesantes en el RP2040 (mi favorito es PIO - IO programable, donde se puede emular un montón de interfaces de hardware que requieren una sincronización precisa, etc.). - Hablaré de ello en otro artículo en el futuro), y el Pico es una plataforma de referencia realmente agradable en la que se implementa el RP2040.
¿En qué se diferencia una Raspberry Pi Pico de una Raspberry Pi Zero W?
La diferencia entre un microcontrolador (como el Pico) y un ordenador monoplaca (digamos Pi Cero W) es más o menos así: se programa el Pico directamente (por ejemplo, en C), sin sistema operativomientras que el Pi Cero W suelen ejecutar Linux.
Esto tiene ventajas, como el tiempo real, pero también desventajas: hay que saber más sobre el hardware que se utiliza e implementar muchas funciones que se darían por sentadas en un sistema operativo moderno (por ejemplo, el acceso a archivos).
La Pico tiene menos recursos en comparación con la Pi Zero W (por ejemplo, mucha menos RAM, sin GPU VideoCore, etc.), pero consume menos energía y tiene funciones adicionales, como la ya mencionada PIO y entradas analógicas (ADC).
El Pico es una buena opción para proyectos que no requieren necesariamente conectividad de red, salida HDMI, entrada de cámara y procesamiento. En otras palabras, si quieres interactuar con hardware, tener una batería de larga duración, etc., entonces el Pico es para ti.
¿Qué software existe ya para el Pico?
El Pico se puede flashear utilizando diferentes programas, que se proporcionan en Archivos UF2 (consulte la guía de inicio de Pico). Raspberry Pi proporciona varios archivos UF2 para empezar:
- MicroPython (que será el tema central de este artículo) y un primo cercano, CircuitPython
- Parpadear un LED (Parpadeo UF2)
- Hola mundo (dirá "Hola mundo" si te conectas a través de un terminal)
- Picoprobe (usar un Pico para depurar otro Pico)
- Reiniciar memoria flash (pondrá la memoria Flash vacía)
Hay mucho más de ejemplos que puede encontrar aquí (código C).
Nota: Estoy vinculando a los archivos más recientes UF2 a partir de 30.01.2021 - específicamente MicroPython podría ser actualizado, así que asegúrese de comprobar el Página de inicio de Raspberry Pi Pico.
MicroPython
Si la perspectiva de entrar de lleno y programar en C te parece un poco desalentadora, puedes empezar con MicroPython. En este caso, hay un software preinstalado en la Raspberry Pi Pico (el archivo MicroPython UF2), que ejecutará un pequeño intérprete de Python.
Se llama MicroPython porque no es compatible con toda la biblioteca estándar de Python 3. MicroPython está pensado para entornos limitados, como el Pico. El Pico tiene un total de 2 MB de RAM - esto no se ajusta a todo lo que Python 3 trae consigo. Consulte esta página de Github para ver las diferencias entre CPython y MicroPython. Además, aquí está el Página principal de MicroPythony el documentación oficial de MicroPython.
CircuitoPython
Nota: la mayoría de las instrucciones también se aplican a las placas basadas en CircuitPython RP2040 en Windows, por ejemplo la Adafruit Feather RP2040, pero tendrás que seguir unos pasos un poco diferentes - señalaré las diferencias en este artículo.
CircuitPython es básicamente una variante de MicroPython que está siendo desarrollado por Adafruit.
La placa en sí se llamará de manera diferente en el administrador de dispositivos después de flashear (CircuitPython CDC Control) - y necesitarás un software diferente, por supuesto. Esto es lo que necesitas, para empezar:
- Página de descarga de Adafruit Feather RP2040 (Archivo CircuitPython 7.0.0 UF2)
En este artículo, también le mostraremos cómo instalar las librerías CircuitPython en dispositivos basados en RP2040 en Windows, y cómo ejecutar y detener programas usando Thonny.
¿Qué obtendrá con MicroPython UF2?
Una vez que MicroPython esté instalado en el Pico, podrá conectarse al Pico utilizando la consola serie (mostraremos cómo en este artículo), y empezar a escribir código Python en el Pico.
Instalación de MicroPython en el Pico
- Desconecte la alimentación del Pico
- Pulse el botón BOOTSEL y manténgalo pulsado
- conecte el Pico a su PC mediante un cable microUSB a USB
- ahora puede soltar el botón BOOTSEL
El Pico debe ser visible en su sistema de archivos ahora, como RPI-RP2:
(Nota al margen: me pregunto qué era RPI-RP1.)
El Pico emula una unidad flash FAT32, que tiene dos archivos: INDEX.HTM e INFO_UF2.TXT.
De hecho, el Administrador de unidades de Windows muestra que Pico es una unidad flash FAT de 128 MB.
No cometas el error de intentar almacenar archivos en el Pico asíserán eliminados silenciosamente. Incluso si parece que se han escrito, eso es sólo Windows almacenando en caché las operaciones - ¡tus archivos desaparecerán! ¿He mencionado ya que el Pico sólo tiene 2 MB de Flash? Aquí se miente descaradamente sobre los 128 MB (por cierto, se supone que el RP2040 admite hasta 16 MB de flash, AFAIK).
Nota al margen: Esto me recuerda un poco a mi viaje a la India, donde compré unidades de memoria USB con 128 GB de capacidad, que grababan tus datos en el Nirvana. Cuando intenté devolver la unidad y recuperar mi dinero, el vendedor se había ido... las aventuras que hay que vivir 🙂 .
Sin embargo, si copias el tipo correcto de archivo - el archivo UF2 - en esta unidad, será reconocido y escrito.
Puedes arrastrarlo y soltarlo desde tu navegador, después de haberlo descargado, o copiarlo y pegarlo. Una vez que haya terminado de copiar, el Pico se reiniciará automáticamente, y usted no verá una unidad flash más.
Nota: Si desea utilizar CircuitPython, por supuesto, utilice el archivo CircuitPython UF2 en su lugar en este paso.
El Pico ahora (después del reinicio) ejecuta MicroPython, que proporciona un puerto serie (puerto COM) a través de USB. (En términos técnicos, se trata de un dispositivo USB de clase 02 =) Comunicaciones y control de CDC y dispositivo USB Subclase 02).
Conexión a Pico, Windows 10
Windows 10 nos facilita la conexión al Pico, ya que el controlador de puerto COM necesario (usbser.inf) se instalará y activará automáticamente por ti.
Para comprobar en qué puerto COM está, abre el administrador de dispositivos:
Aquí, podrás ver el nuevo Dispositivo Serie USB, con el número de puerto COM (que necesitarás en un segundo para conectarte), bajo Puertos (COM & LPT).
Para volver a comprobar que se trata efectivamente del Pico, ejecutando MicroPython, puede hacer lo siguiente:
Haga clic en Ver y seleccione Dispositivos por contenedor:
Aquí verás una entrada "Board in FS mode", con los dos nodos "USB Composite Device" y "USB Serial Device (COM3)". El COM3 es importante, necesitarás usarlo para PuTTY (ver más abajo).
Podemos investigar más a fondo los dispositivos haciendo clic con el botón derecho del ratón sobre ellos y seleccionando la entrada de propiedades adecuada en el menú contextual. Las propiedades de Board en modo FS están vacías:
El Dispositivo Compuesto USB muestra "Board in FS mode" como su Bus reportó la descripción del dispositivo:
Nota: este es el Pico ejecutando MicroPython. Cuando lo reprogrames con otro software, mostrará resultados diferentes aquí.
El propio dispositivo serie USB mostrará algunas propiedades interesantes:
Nota: la descripción del dispositivo de la placa será "CircuitPython CDC Control" en lugar de "Board CDC" si está utilizando CircuitPython.
Si sabe lo que está buscando, los identificadores de hardware (VID = identificador de proveedor y PID = identificador de producto) son útiles:
VID_2E8A -> el identificador de proveedor es 2E8A (en hexadecimal) o 11914 (en decimal), que es Raspberry Pi
PID_0005 -> el id del producto es 5que la placa mostrará al ejecutar MicroPython (el id de producto por defecto es 3)
Nota: Registro de depuración del navegador Chrome
Esta información también puede obtenerse utilizando el navegador Chrome.
le permitirá ver los Dispositivos actualmente conectados
Volver a Windows 10:
Como puede ver en la captura de pantalla anterior, Windows 10 ha instalado automáticamente usbser (USB Serial Driver) para que pueda empezar a utilizar Pico inmediatamente.
PuTTY
PuTTY es un cliente telnet / SSH. Lo utilizará para conectarse al Pico y hablar con el REPL de MicroPython. Descargue PuTTY aquí. (Puede utilizar el instalador de Windows MSI de 64 bits para la mayoría de las instalaciones de Windows 10).
Abra PuTTY. Introduzca la configuración correcta:
- El tipo de conexión debe ser Serie
- Serial Line necesita ser ajustado a lo que su investigación de arriba arrojó. En mi caso, es COM3. En su caso, lo más probable es que sea algo diferente.
- La velocidad se puede dejar en 9600 por ahora
Haga clic en Abrir, y se abrirá un Terminal:
Para acceder a la pantalla inicial, pulse Intro una vez
Entonces puedes empezar a escribir código Python después del prompt, que será interpretado inmediatamente. Prueba a escribir el clásico "Hola mundo":
print("Hello world!")
MicroPython responderá con
¡Hola, mundo!
como era de esperar 🙂 .
Una vez establecido el contacto inicial, le deseo una feliz codificación.
Thonny: un IDE de Python, ¡funciona con Pico!
Utilizar PuTTY no es muy cómodo para sesiones más largas, o cuando quieres cargar mucho código en tu Pico. Por suerte, la aplicación de código abierto Thonny (que se instala por defecto en Raspberry Pi OS) también está disponible para Windows e integra compatibilidad con Pico (MicroPython y CircuitPython).
Primer paso
Descargue Thonny aquíe instálelo
Segundo paso
Conecte su Pico, como se describió anteriormente - ahora debe tener un número COM - si lo desea, puede probar utilizando el método PuTTY descrito anteriormente, si puede llegar a su Pico.
Tercer paso
Inicie Thonny y haga clic en el botón Herramientas seleccione Opciones
Cuarto paso: establece Pico como intérprete
Haga clic en la pestaña Intérprete. Verá esta pantalla por defecto:
Haga clic y seleccione MicroPython (Raspberry Pi Pico)
Nota: si utiliza CircuitoPythondebe seleccionar "CircuitPython (genérico)" en este menú desplegable.
Puede dejar el puerto en "intentar detectar el puerto automáticamente", o establecer un puerto específico (ya hemos visto más arriba cómo se puede determinar el número de puerto correcto).
Nota: el puerto debe seguir apareciendo en el menú desplegable, por lo que puede ser una buena idea volver a comprobar que está ahí:
Lo dejo como "intentar detectar el puerto automáticamente". Haga clic en Aceptar para guardar la configuración.
La pantalla debería cambiar a este aspecto:
Quinto paso: probar
Ahora puede probar la comunicación con el Pico.
Tipo
print("Hello world")
en el prompt de MicroPython, y pulse intro
Verás que el Pico te responde.
Enhorabuena, ¡ha conectado correctamente Thonny con el Pico en Windows!
Scripts más complejos: Parpadeo de un LED con Thonny
El REPL (read evaluate print loop) que acabas de ver está bien, pero para proyectos más complejos, nos gustaría introducir primero el código fuente, o cargarlo desde un archivo.
Para esto se puede utilizar la parte superior de la ventana Thonny.
Introduce tu código. En mi ejemplo, vamos a parpadear el LED de la placa (que es el equivalente de hardware hola mundo), y el bucle para siempre.
import time
from machine import Pin
print("Welcome to Pico example 2, blinking an LED")
led = Pin(25, Pin.OUT)
# For demo purposes, we have an infinite loop here
while True:
led.high()
time.sleep(0.5)
led.low()
time.sleep(0.5)
Preste atención a la indentación adecuada en Python (los espacios en blanco se utilizan con fines de control en Python).
Ahora haga clic en el botón "Ejecutar
Thonny te preguntará dónde guardar para
Seleccione Raspberry Pi Pico:
He elegido llamar al archivo hola.py - Pulsa OK para guardarlo
Una vez pulsado el botón OK, su código comenzará a ejecutarse. El LED integrado en el Pico debería empezar a parpadear y verás la salida en el Shell:
Nota: No tuve que introducir el comando %Run -c $EDITOR_CONTENT, Thonny lo hacía por sí mismo. La salida de abajo es de nuestro código.
CircuitPython en Thonny con Windows
Siga los mismos pasos, pero seleccione CircuitPython (genérico) como intérprete.
La concha Thonny le mostrará una confirmación diferente:
Windows 8.1
Windows 8.1 NO cargará automáticamente el controlador serie y mostrará el dispositivo en estado de error.
Nota: con CircuitPython, el nombre del dispositivo será "CircuitPython CDC control" en su lugar. Mismo procedimiento.
Así es como se ven las propiedades de la placa CDC (el Pico que ejecuta MicroPython):
Dice que no se instalaron los controladores para este dispositivo (Código 28).
Una solución para resolver este problema es el Herramienta Zadigque puede descargar gratuitamente:
Atención: Varios escáneres de virus parecen coincidir en que el archivo installer_x64.exe contenido en Zadig 2.7 contiene "Trojan.Tedy". Sin embargo, puede que se trate de una falsa alarma: recomiendo utilizar Zadig-2.5.exe en su lugar, que no me dio estas advertencias (sólo verificado por segunda vez). Más vale prevenir que curar.
Zadig le ayuda a instalar controladores USB genéricos para ayudarle a acceder a dispositivos USB.
En nuestro caso queremos el controlador USB Serial (CDC).
Seleccione Board CDC (Interface 0) en el menú desplegable de arriba, el USB Serial (CDC) en el otro campo. Haga clic en Instalar controlador.
Tras la instalación, verá que el controlador se ha configurado como usbser (v1.0.0.0):
Y podrás conectarte, como he descrito en Windows 10, utilizando el número de puerto COM correcto:
nota al margen:
Puerto Pico/Serial en Windows 7
Según un cliente, Zadig ¡ayudó a instalar el controlador del puerto serie en Windows 7 también, y el Pico era utilizable después! Asegúrese de utilizar Zadig 2,5ya que el nuevo Zadig 2.7 fue marcado por mi escáner de virus durante la instalación del controlador. (No estoy seguro de por qué, pero más vale prevenir que curar - el viejo funciona)
Si necesita una guía paso a paso, consulte la guía para Windows 8.1 anterior; debería ser bastante similar en un equipo con Windows 8.1.
Instalación de librerías y programación de una placa CircuitPython RP2040 en Windows
Si estás usando por ejemplo un Adafruit Feather RP2040, puede que quieras usar CircuitPython en él. Adafruit tiene un NeoPixel RGB en él, que necesita que se instalen bibliotecas en el lib del dispositivo.
(Nota: descargue las bibliotecas aquí - haga clic en el enlace "Descargar paquete de proyectos").
Cuando extraigas la carpeta del paquete del proyecto, verás dos subcarpetas diferentes con CircuitPython 6.x y CircuitPython 7.x
Estoy usando la versión CircuitPython 7.x aquí, como he flasheado el 7.0.0 Versión de CircuitPython.
En el Explorador verá una unidad llamada "CIRCUITPY":
El lib está vacía con una nueva instalación de CircuitPython. Usando el Explorador de Windows podemos simplemente copiar y pegar archivos aquí.
Copie las bibliotecas necesarias de la carpeta lib descargada en la carpeta lib de CIRCUITPY:
Ahora también podemos sobrescribir code.py:
Usando Thonny podemos editar y ejecutar el archivo code.py. Haz clic en el icono de abrir en Thonny, y selecciona "CircuitPython device" en el diálogo "Where to open from":
Y aquí puedes abrir code.py:
Ahora tu ventana de Thonny debería parecerse un poco a esto:
Pulse F5 en el teclado o haga clic en el icono de ejecución
Si todo ha ido bien, el LED NeoPixel RGB de tu Adafruit Feather RP2040 ahora debería empezar a parpadear en diferentes colores. Enhorabuena 🙂 .
Ahora puedes seguir adelante y jugar con el script - posiblemente podrías modificar los colores, o el tiempo entre los cambios de color? O añadir otras funciones.
Para poder ejecutar su script modificado, pulse Ctrl + C en el Shell (o seleccione Ejecutar > Interrumpir ejecución en el menú de Thonny). Ahora puede cargar su script de nuevo.
Una gran cosa para la depuración es que usted obtendrá la salida de la consola con Thonny, por lo que puede utilizar sentencias print para la salida de información:
Paquete Adafruit CircuitPython
Adafruit proporciona una cómoda descarga de múltiples librerías en un ZIP. Descargue el adafruit-circuitpython-bundle-7.x.-mpy o -6.x. mpy correspondiente. aquí. Puedes instalar varias o todas las librerías como se discutió anteriormente simplemente usando el Explorador de Windows. Una carga completa de todas las librerías tendría un tamaño aproximado de 1.2 MB, el Adafruit Feather RP2040 tiene suficiente espacio para permitir esto. La copia puede tardar un par de minutos.
Notas varias
¿Puedo utilizar los procedimientos de esta guía también para CircuitPython?
Por supuesto que sí. Por ejemplo puedes usar Zadig en Windows 8.1 (ver la descripción arriba para más detalles. ¡Usa la versión 2.5.730 de Zadig!). Usted buscará un dispositivo "CircuitPython CDC control" en lugar del dispositivo "Board CDC".
¿Falla la instalación del controlador con Zadig?
Esto podría deberse al software antivirus. Tal vez una falsa alarma, pero no puedo estar seguro de ello. Mi escáner antivirus (Bitdefender) me dice lo siguiente:
"El archivo C:\Users\Max\usb_driver\installer_x64.exe está infectado con Gen:Variant.Tedy.11444 y ha sido eliminado de la cuarentena. Le recomendamos que realice un análisis del sistema para detectar posibles infecciones".
Varios escáneres de virus parecen coincidir en que el installer_x64.exe (parte del controlador USB) tiene "Trojan.Tedy". Recomiendo probar a utilizar Zadig-2.5.exe en su lugar. Que puede descargar aquí. He utilizado Zadig-2.5 para instalar un controlador serie USB CircuitPython en mi instalación de Windows 8.1 (que es mi máquina principal).
¿Cómo detengo la ejecución de código en el Pico en Thonny?
Haz clic en el Shell y pulsa Ctrl+C. Esto debería detener la ejecución del código actual:
Repetición de declaraciones anteriores en Thonny
Es conveniente volver a ejecutar el mismo comando: pulse la tecla Arriba del teclado en el indicador del intérprete de comandos para acceder al historial de comandos anteriores.
¿Cómo sé si mi Pi Pico está desconectada de Thonny?
Aparecerá un mensaje de error al intentar ejecutar el código, algo parecido a esto:
Esto significa que Thonny no puede escribir en el puerto serie en el que se espera que esté el Pico.
No se pudo encontrar el dispositivo automáticamente error en Thonny
Si obtiene el siguiente error
No se ha podido encontrar el dispositivo automáticamente.
Compruebe la conexión (asegurándose de que el dispositivo no está en modo cargador de arranque) o elija
"Configurar intérprete" en el menú del intérprete (esquina inferior derecha de la ventana)
para seleccionar un puerto específico u otro intérprete.
Compruebe que ha seleccionado el intérprete correcto. Si su dispositivo ejecuta CircuitPython en lugar de MicroPython, debe seleccionar CircuitPython (genérico) como intérprete en Thonny. Consulte la información pertinente en este artículo para obtener instrucciones.
¿Tus consejos para Pico/MicroPython en Windows?
Haznos saber en los comentarios si tienes algún otro consejo para empezar con el Pico y MicroPython en Windows, actualizaremos el artículo en consecuencia 🙂 .
¡Disfruta de tu Pico y diviértete con los increíbles proyectos que puedes hacer con él!
Más entradas del blog de Pico en PiCockpit
Si le ha gustado leer este artículo, puede que también le guste leer los siguientes:
Tengo Win 8.1 y este ist él único sitio que tiene la solución para el problema COM. Muchas gracias.
¿Podría compartir el enlace del artículo en el que hay una solución para CDC Junta en Windows 8.1
Este artículo que está leyendo describe cómo utilizar Board CDC en Windows 8.1 - utilice la herramienta Zadig en la versión 2.5.
Gracias, Windows 7 64 bits funcionando sin problemas.
Muchas gracias por este tutorial.
Muy buen tutorial Pusiste el café sobre la mesa como decimos en Polonia, lo que significa sin andarse por las ramas. ¡Genial!
Necesito ayuda. Mi windows 11 sólo muestra el pico como "dispositivo portátil". Putty no puede encontrar debido a esto, así que me sale un error que no puede bien la ruta.
No sé cómo superar esto.
Gracias.
Esta ha sido una gran introducción para mí. Gracias.
Hola muy bueno, consulto x la inquietud que se me ha presentado
si despues de subir mi codigo a mi pi pico, y la coloco en una placa para que ejecute una tarea x,
si cualquier otro que no sea yo sacara la pi pico de la placa y la conectara a una pc o notebook,
podria leer el codigo que esta en la pi pico a traves por ejemplo de Thonny dando click al icono de abrir carpeta y seleccionando abrir lo que esta en la pi pico.?
¿Hay algún modo de hacerlo de no lectura?
gracias
Putty y zadig me han funcionado. Excelente tutorial.