Raspberry Pi Pico e MicroPython no Windows
Este artigo responde à pergunta: Como é que eu uso o Raspberry Pi Pico com o MicroPython no Windows? Nós também mostramos como instalar o driver correto para a "Board CDC" (que o Pico vai aparecer quando o MicroPython estiver instalado) no Windows 8.1. (Também discutiremos as diferenças entre MicroPython e CircuitPython quando aplicável - onde a placa será chamada de "CircuitPython CDC Control").
Finalmente, vamos mostrar como se conectar ao Pico usando PuTTY, e uma opção mais confortável usando Thonny (que é um IDE Python, integrado com o Pico!)
Introdução: O que é o Pico e o que é MicroPython?
O Framboesa Pi Pico é uma nova placa microcontroladora da Raspberry Pi, com o chip microcontrolador RP2040 desenvolvido internamente.
A Raspberry Pi concebeu imensas funcionalidades interessantes para o RP2040 (a minha favorita é a PIO - programmable IO, onde se pode emular imensas interfaces de hardware que requerem uma temporização precisa, etc.). - Vou falar sobre isso noutro artigo no futuro), e o Pico é uma plataforma de referência muito boa na qual o RP2040 é implementado.
Como é que um Raspberry Pi Pico é diferente de um Raspberry Pi Zero W?
A diferença entre um microcontrolador (como o Pico) e um computador de placa única (digamos Pi Zero W) é mais ou menos o seguinte: programa-se o Pico diretamente (por exemplo, em C), sem um sistema operativoenquanto a Pi Zero W normalmente correm Linux.
Isto tem vantagens, como o tempo real, mas também desvantagens - é preciso saber mais sobre o hardware que se está a utilizar e é preciso implementar muitas funcionalidades que se tomariam como garantidas num sistema operativo moderno (por exemplo, acesso a ficheiros).
O Pico tem menos recursos em comparação com o Pi Zero W (por exemplo, significativamente menos RAM, sem GPU VideoCore, etc.) - mas consome menos energia e tem recursos adicionais, como o já mencionado PIO e entradas analógicas (ADC).
O Pico é uma boa escolha para projectos que não requerem necessariamente conectividade de rede, saída HDMI, entrada e processamento de câmaras. Por outras palavras, se quiser fazer interface com hardware, ter uma longa duração da bateria, etc. - então o Pico é para si.
Que software já existe para o Pico?
O Pico pode ser flashado utilizando diferentes softwares, que são fornecidos em Ficheiros UF2 (ver guia de iniciação ao Pico). Raspberry Pi fornece vários ficheiros UF2 para que possa começar:
- MicroPython (que será o foco deste artigo) e um primo próximo, CircuitPython
- Pestanejar um LED (Pestanejar UF2)
- Olá mundo (dirá "Olá mundo" se se conectar através de um terminal)
- Picoprobe (usar um Pico para depurar outro Pico)
- Reiniciar a memória flash (irá definir a memória Flash para esvaziar)
Há muito mais de exemplos que podem ser encontrados aqui (código C).
Nota: Estou a ligar para os ficheiros UF2 mais recentes a partir de 30.01.2021 - especificamente o MicroPython pode ser atualizado, por isso não te esqueças de verificar a página Página de início de Raspberry Pi Pico.
MicroPython
Se a perspectiva de entrar em pleno e programar em C lhe parecer um pouco assustadora, pode começar em MicroPython. Neste caso, algum software está pré-instalado no Raspberry Pi Pico (o ficheiro MicroPython UF2), que irá executar um pequeno intérprete Python.
Chama-se MicroPython porque não suporta a biblioteca padrão Python 3 completa. MicroPython é destinado a ambientes restritos, como o Pico. O Pico tem um total de 2 MB de RAM - isto não vai caber em tudo o que a Python 3 traz consigo. Ver esta página Github para diferenças de CPython a MicroPython. Também, aqui está o oficial Página inicial de MicroPythone o documentação oficial da MicroPython.
CircuitPython
Nota: a maioria das instruções também se aplica às placas baseadas no CircuitPython RP2040 no Windows, por exemplo a Adafruit Feather RP2040, mas terá de seguir passos um pouco diferentes - vou apontar as diferenças neste artigo.
CircuitPython é basicamente uma variante de MicroPython que está a ser desenvolvida pela Adafruit.
A própria placa será chamada de forma diferente no seu gestor de dispositivos depois de piscar (CircuitPython CDC Control) - e necessitará de software diferente, claro. Aqui está o que precisa, para começar:
- Adafruit Feather RP2040 Descarregar página (ficheiro CircuitPython 7.0.0 UF2)
Neste artigo, também lhe mostraremos como instalar bibliotecas CircuitPython em dispositivos baseados em RP2040 no Windows, e como executar e parar programas usando Thonny.
O que vai receber com o MicroPython UF2?
Uma vez instalado o MicroPython no Pico, poderá ligar-se ao Pico usando a consola em série (mostraremos como neste artigo), e começar a escrever o código Python no Pico.
Instalação de MicroPython no Pico
- Retirar a energia do Pico
- Prima o botão BOOTSEL e mantenha-o premido
- ligue o Pico ao seu PC usando um cabo microUSB para USB
- agora pode soltar o botão BOOTSEL
O Pico deve agora estar visível no seu sistema de ficheiros, como RPI-RP2:
(Sidenote: O que será que foi a RPI-RP1?)
O Pico emula uma unidade flash FAT32, que tem dois ficheiros: INDEX.HTM e INFO_UF2.TXT.
De facto, o Windows Drive Manager mostra o Pico como sendo uma unidade flash FAT de 128 MB.
Não cometa o erro de tentar armazenar quaisquer ficheiros no Pico deste modo: serão largados silenciosamente. Mesmo que pareça que estão escritos, isso é apenas o Windows a armazenar as operações - os seus ficheiros desaparecerão! Já mencionei que o Pico tem apenas 2MB Flash? É descaradamente mentir sobre os 128MB aqui (o RP2040 deve suportar até 16MB de Flash, AFAIK).
Nota lateral: Isto faz-me lembrar um pouco a minha viagem à Índia, onde comprei unidades de memória com 128 GB de capacidade - que escreviam os dados para o Nirvana. Quando tentei devolver a pen e receber o meu dinheiro de volta, o vendedor tinha desaparecido... as aventuras que se podem viver 🙂
Contudo, se copiar o tipo certo de ficheiro - o ficheiro UF2 - para esta unidade, este será reconhecido e escrito.
Pode arrastá-lo e largá-lo do seu navegador, depois de o ter descarregado, ou copiá-lo e colá-lo. Uma vez concluída a cópia, o Pico reiniciará automaticamente, e não verá mais uma pen drive.
Nota: Se quiser usar o CircuitPython, é claro que neste passo deve usar o ficheiro CircuitPython UF2.
O Pico agora (após a reinicialização) corre MicroPython, que fornece uma porta série (COM-port) via USB. (Em termos técnicos, esta é a classe 02 do dispositivo USB = Comunicações e Controlo CDC e dispositivo USB SubClasse 02).
Ligação ao Pico, Windows 10
O Windows 10 facilita a nossa ligação ao Pico, pois o driver COM-Port necessário (usbser.inf) será automaticamente instalado e activado para si.
Para verificar em que porta COM está ligado, abra o seu gestor de dispositivos:
Aqui, poderá ver o novo Dispositivo de Série USB, com o número da porta COM (que necessitará num segundo para ligar), em Portas (COM & LPT).
Para verificar se este é, de facto, o Pico, a executar MicroPython, pode fazer o seguinte:
Clique em View, e seleccione Devices by Container:
Aqui verá uma entrada "Board in FS mode", com os dois nós "USB Composite Device" e "USB Serial Device (COM3)”. A COM3 é importante, terá de a utilizar para a PuTTY (ver abaixo).
Podemos investigar melhor os dispositivos clicando com o botão direito do rato sobre eles, e seleccionando a entrada de propriedades apropriadas a partir do menu de contexto. As propriedades para Board no modo FS estão vazias:
O Dispositivo Composto USB mostra "Board in FS mode", uma vez que é a descrição do dispositivo relatado pelo Bus:
Nota: este é o MicroPython do Pico. Quando o reflicta com software diferente, mostrará aqui resultados diferentes!
O próprio dispositivo de série USB irá mostrar algumas propriedades interessantes:
Nota: a descrição do dispositivo da placa será "CircuitPython CDC Control" em vez de "Board CDC" se estiver a usar o CircuitPython.
Se souber o que procura, os IDs de Hardware (VID = id de fornecedor, e PID = id de produto) são úteis:
VID_2E8A -> a identificação do fornecedor é 2E8A (em hex) ou 11914 (em decimal), que é Raspberry Pi
PID_0005 -> a identificação do produto é 5que o quadro mostrará ao executar MicroPython (a identificação padrão do produto é 3)
Sidenote: Registo de depuração do Browser Chrome
Esta informação também pode ser obtida utilizando o navegador Chrome.
permitir-lhe-á ver os Dispositivos actualmente anexados
Voltar ao Windows 10:
Como pode ver na imagem acima, o Windows 10 instalou automaticamente o usbser (USB Serial Driver) para si - para que possa começar a utilizar o Pico imediatamente.
PuTTY
PuTTY é um cliente telnet / SSH. Irá utilizá-lo para se ligar ao Pico, e falar com a REPL da MicroPython. Descarregar PuTTY aqui. (Pode ir com o Windows Installer MSI de 64 bits para a maioria das instalações Windows 10).
PuTTY aberto. Introduza as definições correctas:
- O tipo de ligação tem de ser definido para Serial
- A Linha de Série precisa de ser definida para o que quer que a sua investigação de cima tenha rendido. No meu caso, esta é COM3. No seu caso, o mais provável é que seja algo diferente!
- A velocidade pode ser deixada em 9600 por agora
Clique em Abrir, e será aberto um Terminal:
Para obter a solicitação inicial, prima Enter uma vez
Depois pode começar a escrever o código Python após o pedido, que será interpretado imediatamente. Tente entrar no clássico "Olá mundo":
print("Hello world!")
MicroPython irá responder com
Olá mundo!
como esperado 🙂
Agora que o contacto inicial está estabelecido, desejo-lhe uma codificação feliz!
Thonny: uma IDE Python, trabalha com a Pico!
Utilizar PuTTY não é muito confortável para sessões mais longas, ou quando quer carregar muito código no seu Pico. Felizmente, a aplicação de código aberto Thonny (que está instalada por defeito no SO Raspberry Pi) também está disponível para Windows e integra suporte Pico (MicroPython e CircuitPython)
Primeiro passo
Descarregar Thonny aquie instalá-lo
Segundo passo
Ligue o seu Pico, como descrito acima - agora deve ter um número COM - se desejar, pode testar usando o método PuTTY descrito acima, se pode chegar ao seu Pico.
Terceiro passo
Comece Thonny, e clique no botão Ferramentas menu, escolha Opções
Quarto passo: definir o Pico como o intérprete
Clique no separador Intérprete. Verá este ecrã por defeito:
Clique e seleccione MicroPython (Raspberry Pi Pico)
Nota: se estiver a utilizar CircuitPythoné necessário, em vez disso, seleccionar "CircuitPython (genérico)" a partir deste menu pendente.
Pode deixar a porta em "tentar detectar a porta automaticamente", ou definir uma porta específica (já vimos acima como pode ser determinado o número correcto da porta).
Nota: o porto ainda deve aparecer na descida, por isso pode ser uma boa ideia verificar novamente se está lá:
Vou deixá-lo como "tentar detectar porto automaticamente". Clique em OK para guardar a configuração.
O seu ecrã deve agora mudar para isto:
Etapa cinco: teste
Agora pode testar a comunicação com o Pico.
Tipo
print("Hello world")
no prompt do MicroPython, e pressione enter
Verá o Pico a responder-lhe.
Parabéns, conseguiu ligar Thonny com o Pico no Windows!
Argumentos mais complexos: Piscar um LED com Thonny
O REPL (read evaluate print loop) que acabou de ver é agradável, mas para projectos mais complexos, gostaríamos de introduzir a fonte primeiro, ou carregá-la a partir de um ficheiro.
É para isto que a parte de cima da janela Thonny pode ser utilizada.
Introduza o seu código. No meu exemplo, vamos piscar o LED de bordo (que é o equivalente do hardware hello world!), e fazer um loop para sempre.
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)
Presta atenção à indentação correcta em Python (os espaços em branco são utilizados para fins de controlo em Python!)
Agora clique no botão "run" (executar)
Thonny perguntar-lhe-á onde poupar para
Seleccionar Raspberry Pi Pico:
Escolhi o nome do ficheiro hello.py - Clique em OK para o guardar
Uma vez premido o botão OK, o seu código começará a ser executado. O LED a bordo do Pico deve começar a piscar, e verá a saída na Concha:
Nota: Não tive de entrar no comando %Run -c $EDITOR_CONTENT, Thonny estava a fazê-lo sozinho. A saída abaixo é do nosso código.
CircuitPython no Thonny no Windows
Seguir os mesmos passos, mas seleccionar CircuitPython (genérico) como intérprete.
A concha Thonny irá mostrar-lhe uma confirmação diferente:
Janelas 8.1
Windows 8.1 NÃO irá carregar automaticamente o controlador de série, e mostrar o dispositivo num estado de erro.
Nota: com CircuitPython, o nome do dispositivo será "CircuitPython CDC control" em vez disso. O mesmo procedimento.
Eis como são as propriedades do CDC (o MicroPython do Pico) do Conselho de Administração:
Diz que os condutores para este dispositivo não foram instalados (Código 28).
Uma solução para resolver este problema é o Ferramenta Zadigque pode descarregar gratuitamente:
Atenção: Vários scanners de vírus parecem concordar que o instalador_x64.exe contido em Zadig 2.7 tem "Trojan.Tedy". Talvez isto seja um falso alarme, no entanto: recomendo a utilização de Zadig-2.5.exe em vez disso, o que não me deu estes avisos (apenas verificados uma segunda vez). Mais vale prevenir do que remediar!
Zadig ajuda-o a instalar drivers USB genéricos para o ajudar a aceder a dispositivos USB.
No nosso caso, queremos o condutor USB Serial (CDC).
Seleccione Board CDC (Interface 0) no menu pendente acima e USB Serial (CDC) no outro campo. Clique em Instalar controlador.
Após a instalação, verá que o condutor está agora definido para usbser (v1.0.0.0):
E poderá ligar-se, como descrevi no Windows 10, utilizando o número correcto da porta COM:
sidenote:
Porta Pico/Serial no Windows 7
De acordo com um cliente, Zadig ajudou a instalar o driver da porta de série também no Windows 7, e o Pico era utilizável a seguir! Não deixe de utilizar Zadig 2.5, pois o mais recente Zadig 2.7 foi assinalado pelo meu Scanner de Vírus durante a instalação do condutor. (Não sei bem porquê, mas mais vale prevenir do que remediar - o antigo funciona)
Se precisar de um guia passo a passo, consulte o guia para Windows 8.1 acima - deve ser bastante semelhante numa máquina Windows 8.1.
Instalação de bibliotecas e programação de uma placa CircuitPython RP2040 no Windows
Se estiver a usar por exemplo um Adafruit Feather RP2040, poderá querer usar o CircuitPython nele. Adafruit tem um NeoPixel RGB sobre ele, que necessita de bibliotecas para ser instalado no lib pasta no dispositivo.
(nota: descarregue as bibliotecas aqui - clicar no link "Download Project Bundle").
Ao extrair a pasta do pacote do projecto, verá duas subpastas diferentes com CircuitPython 6.x e CircuitPython 7.x
Estou a usar aqui a versão 7.x do CircuitPython, enquanto flashei o 7.0.0 Versão CircuitPython.
Notará uma unidade chamada "CIRCUITPY" no seu Explorador:
O lib está vazia com uma nova instalação de CircuitPython. Usando o Explorador do Windows podemos simplesmente copiar & colar ficheiros aqui.
Copiar as bibliotecas necessárias da pasta lib descarregada para a pasta CIRCUITPY lib:
Agora também podemos sobrescrever code.py:
Usando Thonny podemos editar e executar o ficheiro code.py. Clique no ícone abrir no Thonny, e seleccione "CircuitPython device" no diálogo "Where to open from":
E aqui pode abrir code.py:
Agora a sua janela Thonny deve ficar um pouco parecida com esta:
Prima F5 no seu teclado, ou clique no ícone de execução
Se tudo correr bem, o LED NeoPixel RGB no seu Adafruit Feather RP2040 deve agora começar a piscar em cores diferentes. Parabéns 🙂
Agora pode ir em frente e brincar com o guião - possivelmente pode modificar as cores, ou o tempo entre as mudanças de cor? Ou adicionar outras funções.
Para poder executar o seu guião modificado, prima Ctrl + C na Shell (ou seleccione Executar > Interromper Execução no Menu Thonny). Agora pode carregar novamente o seu guião.
Uma coisa óptima para depuração é que obterá a saída da consola com Thonny, para que possa utilizar declarações impressas para produzir informação:
Pacote Adafruit CircuitPython
Adafruit fornece um conveniente download de múltiplas bibliotecas num ZIP. Descarregar o circuito adafruit-circuitpython-bundle-7.x.-mpy correspondente ou -6.x. mpy aqui. Pode instalar várias ou todas as bibliotecas como discutido acima simplesmente usando o Windows Explorer. Um carregamento completo de todas as bibliotecas teria cerca de 1,2 MB de tamanho, o Adafruit Feather RP2040 tem espaço suficiente para o permitir. A cópia pode demorar alguns minutos.
Notas diversas
Posso utilizar também os procedimentos deste guia para o CircuitPython?
Absolutamente, sim. Por exemplo, pode usar Zadig no Windows 8.1 (ver a descrição acima para detalhes. Use a versão 2.5.730 de Zadig!). Procurará um dispositivo "CircuitPython CDC control" em vez do dispositivo "Board CDC".
Instalação do condutor falha com Zadig?
Isto pode ser devido ao software Antivírus. Talvez um falso alarme, mas não posso ter a certeza disso. O meu scanner de vírus (Bitdefender) diz-me o seguinte:
"Die Datei C:\Users\Max\usb_driver\installer_x64.exe ist mit Gen:Variant.Tedy.11444 infiziert und wurde in die Quarantäne verschoben. Wir empfehlen die Durchführung eines System-Scans, um weitere Infektionen auszuschließen".
Vários scanners de vírus parecem concordar que o instalador_x64.exe (parte do driver USB) tem "Trojan.Tedy". Recomendo que se tente usar Zadig-2.5.exe em vez disso. Que pode descarregar aqui. Utilizei Zadig-2.5 para instalar um driver de série CircuitPython USB na minha instalação Windows 8.1 (que é a minha máquina principal).
Como posso parar a execução do código no Pico em Thonny?
Clique na concha, e pressione Ctrl+C. Isto deverá parar a execução do código actual:
Repetição de declarações anteriores em Thonny
É conveniente executar novamente o mesmo comando - prima a tecla para cima no teclado no prompt da shell para chamar um histórico de comandos anteriores.
Como posso saber quando o meu Pi Pico está desligado do Thonny?
Receberá uma mensagem de erro quando tentar executar o código, algo como isto:
Isto significa que Thonny não pode escrever para a porta de série onde se espera que o Pico esteja.
Não foi possível encontrar automaticamente o erro do dispositivo em Thonny
Se obtiver o seguinte erro:
Não foi possível encontrar o dispositivo automaticamente.
Verifique a ligação (certificando-se de que o dispositivo não está em modo bootloader) ou escolha
"Configurar intérprete" no menu do intérprete (canto inferior direito da janela)
para seleccionar um porto específico ou outro intérprete.
Verifique se seleccionou o interpretador correto. Se o seu dispositivo executar CircuitPython em vez de MicroPython, tem de selecionar CircuitPython (genérico) como intérprete em Thonny. Ver as informações relevantes neste artigo para instruções.
Suas dicas para Pico/MicroPython no Windows?
Informe-nos nos comentários se tiver outras dicas para começar a utilizar o Pico e MicroPython no Windows, actualizaremos o artigo em conformidade 🙂
Desfrute do seu Pico e divirta-se com os projectos fantásticos que pode fazer com ele!
Mais posts no blog Pico no PiCockpit
Se gostou de ler este artigo, poderá também gostar de ler o seguinte:
Eu ganhei 8.1 e este é o único site que tem a solução para o problema da COM. Muito obrigado.
Pode, por favor, partilhar a ligação do artigo em que existe uma solução para o CDC do Board no Windows 8.1
Este artigo que está a ler descreve como utilizar o Board CDC no Windows 8.1 - utilizar a ferramenta Zadig na Versão 2.5.
Obrigado, Windows 7 64 bits a funcionar sem problemas.
Um grande obrigado por este tutorial !
Muito bom tutorial Pões o café na mesa como dizemos na Polónia, o que significa sem rodeios. Óptimo!
Preciso de ajuda. As minhas janelas 11 apenas mostram o pico como "dispositivo portátil". O Putty não o pode encontrar devido a isto, por isso recebo um erro que não pode refinar o caminho.
Não sei como ultrapassar isto.
Obrigado!
Esta foi uma óptima introdução para mim! Obrigado!
Olá, muito bem, consulto x a inquietação que me foi apresentada
si despues de subir mi codigo a mi pi pico, y la coloco en una placa para que ejecute una tarea x,
se qualquer outra pessoa que não seja você sacara a pi pico da placa e a ligara a um pc ou notebook,
poderia ler o código que está na pilha através do exemplo de Thonny dando um clique no ícone de abrir carpeta e seleccionando abrir o que está na pilha?
Existe alguma forma de o fazer sem leitura?
agradecimentos
Putty e zadig funcionaram para mim. Excelente tutorial.