Introdução ao Raspberry Pi Pico W usando o MicroPython

Tempo de leitura: 10 minutes

Visão geral

Este é um tutorial de introdução ao Raspberry Pi Pico W, uma nova e emocionante placa de microcontrolador baseada no microcontrolador RP2040 e no chip CYW43439 WiFi+BLE. O Raspberry Pi Pico W é um microcontrolador baseado em Arm de baixo custo que podemos programar usando C/C++ e MicroPython.

O Raspberry Pi Pico W também adiciona interfaces sem fio de banda única de 2,4 GHz integradas (802.11n) usando o Infineon CYW43439, mantendo o fator de forma do Pico; portanto, além da função GPIO básica, ele também pode se conectar à rede para que possamos use-o para alguns projetos de IoT. Por exemplo, usando IFTTT para um sistema de segurança, construindo um reprodutor de nuvem e um sistema de campainha de serviço de nuvem usando MQTT e assim por diante.

 

O tutorial cobre a visão geral do Raspberry Pi Pico W, seus recursos e especificações. O guia detalhado dos pinos Raspberry Pi Pico W, como pinos ADC, pinos I2C, pinos SPI, UART, etc., pode ajudá-lo a conectar qualquer sensor ou módulo com esta poderosa placa.

Mais tarde, passaremos pela configuração e programação do MicroPython, como piscar de LED, digitalizar redes Wi-Fi e conectar-se à rede Wi-Fi.

 

Microcontrolador RP2040

Anteriormente, todas as placas Raspberry Pi, como Raspberry Pi 3 ou 4 ou Raspberry Pi Zero, apresentavam processadores Broadcom como BCM2835, BCM2836, BCM2711 etc. O chip RP2040 foi anunciado em 21 de janeiro de 2021 e é o primeiro processador projetado pela Raspberry Pi Foundation.

O RP2040 é um circuito integrado de microcontrolador ARM Cortex-M0+ duplo de 32 bits lançado ao mesmo tempo como parte da placa Raspberry Pi Pico. O processador é um microcontrolador de baixo custo e custa em torno de US$ 4. O chip é de silício de 40 nm em um pacote QFN-56 de 7 × 7 mm.

O RP2040 contém dois núcleos ARM Cortex-M0+ com clock de 133 MHz junto com 264 KB de RAM. A memória do programa é externa e suporta até 16 MB. O dispositivo tem tudo o que você espera de um microcontrolador moderno, como portas UARTS, SPI e I2C, e há temporizadores, PWM, DMA e um conversor analógico-digital (ADC) de 12 bits.

 

CYW43439 Wi-Fi 4 (802.11n) + Bluetooth 5.2

A placa Raspberry Pi Pico W possui um chip CYW43439 Wi-Fi + BLE. O dispositivo combinado de chip único Airoc CYW43439 da Infineon apresenta Wi-Fi 4 (802.11n) de 2,4 GHz de banda única 1 × 1 e Bluetooth 5.2. O CYW43439 adiciona recursos atualizados de Bluetooth, WPA3, DPP para Wi-Fi Easy Connect, Soft AP aprimorado e interface de host SDIO compartilhada para Wi-Fi + Bluetooth.

 

Recursos Wi-Fi

  • Wi-Fi 4 (802.11n), banda única (2,4 GHz)
  • 1×1 SISO
  • Canais de 20 MHz, taxa de dados PHY de até 96 Mbps
  • PA interno integrado, LNA e comutador T/R suporta uma única antena compartilhada entre Wi-Fi e Bluetooth

 

Introdução ao Raspberry Pi Pico W

Raspberry Pi Pico W traz conectividade sem fio para a linha de produtos Raspberry Pi Pico. Ele é construído em torno do nosso microcontrolador RP2040 e do chip WiFi CYW43439.

O Raspberry Pi Pico W oferece suporte a LAN sem fio 802.11 b/g/n de 2,4 GHz, com uma antena integrada e certificação de conformidade modular. É capaz de operar nos modos de estação e ponto de acesso. O acesso total à funcionalidade de rede está disponível para desenvolvedores C e MicroPython.

O Raspberry Pi Pico W combina o RP2040 com 2 MB de memória flash e um chip de fonte de alimentação que suporta tensões de entrada de 1,8 a 5,5 V. Ele fornece 26 pinos GPIO, três dos quais podem funcionar como entradas analógicas, em almofadas de passagem de passo de 0,1” com bordas acasteladas.

O chip sem fio CYW43439 é conectado via SPI ao RP2040. Enquanto o CYW43439 oferece suporte a 802.11 sem fio e Bluetooth, inicialmente o Pico W não possui suporte a Bluetooth. O suporte pode ser adicionado posteriormente e usará a mesma interface SPI. Se o suporte for adicionado, o hardware existente pode exigir uma atualização de firmware para oferecer suporte ao Bluetooth, mas não serão necessárias modificações de hardware.

 

Características do Raspberry Pi Pico W
A seguir estão os recursos do Raspberry Pi Pico W Board.

  • Fator de forma de 21 mm × 51 mm
  • Chip microcontrolador RP2040 projetado por Raspberry Pi no Reino Unido
  • Processador Arm Cortex-M0+ de núcleo duplo, clock flexível de até 133 MHz
  • SRAM no chip de 264kB
  • Flash QSPI integrado de 2 MB
  • LAN sem fio 802.11n de 2,4 GHz
  • 26 pinos GPIO multifuncionais, incluindo 3 entradas analógicas
  • 2 × UART, 2 × controladores SPI, 2 × controladores I2C, 16 × canais PWM
  • 1 × controlador USB 1.1 e PHY, com suporte a host e dispositivo
  • 8 × Máquinas de estado de E/S programáveis (PIO) para suporte a periféricos personalizados
  • Potência de entrada suportada 1,8–5,5 V CC
  • Temperatura de operação -20°C a +70°C
  • O módulo acastelado permite soldar diretamente nas placas transportadoras
  • Programação de arrastar e soltar usando armazenamento em massa por USB
  • Modos de suspensão e dormentes de baixa potência
  • Relógio preciso no chip
  • Sensor de temperatura
  • Bibliotecas aceleradas de número inteiro e ponto flutuante no chip

 

Pinagem Raspberry Pi Pico W

Esta é uma visão superior das pinagens no Raspberry Pi Pico W. Os rótulos dos pinos estão na parte inferior da placa.

 

Existem 40 pinos no Raspberry Pi Pico. A funcionalidade de todos os pinos é explicada abaixo.

  • GP0-GP28: São pinos de entrada/saída de uso geral. Ele age como entrada ou saída e não tem um propósito fixo próprio
  • GND: Este é um aterramento de 0 volts Vários pinos GND ao redor do Pico W para facilitar a ligação.
  • RUN: Habilita ou desabilita o Pico. Você pode iniciar e parar o Pico W de outro microcontrolador.
  • GPxx_ADCx: Entrada/saída de uso geral ou entrada analógica. Ele pode ser usado como uma entrada analógica, bem como uma entrada ou saída digital – mas não os dois ao mesmo tempo.
  • ADC_VREF: Referência de tensão do conversor analógico-digital (ADC). Um pino de entrada especial que define uma tensão de referência para qualquer entrada analógica.
  • AGND: conversor analógico-digital (ADC) 0 volts terra. Uma conexão de aterramento especial para uso com o pino ADC_VREF.
  • 3V3(O): 3,3 volts de potência. Uma fonte de alimentação de 3,3V, a mesma tensão em que seu Pico W funciona internamente, gerada a partir da entrada VSYS.
  • 3v3(E): Ativa ou desativa a alimentação. Ligue ou desligue a alimentação 3V3(O), também pode desligar o seu Pico W.
  • VSYS: 2-5 volts de energia. Um pino conectado diretamente à fonte de alimentação interna do seu Pico, que não pode ser desligado sem desligar também o Pico W.
  • VBUS: alimentação de 5 volts. Uma fonte de alimentação de 5 V retirada da porta micro USB do seu Pico e usada para alimentar o hardware que precisa de mais de 3,3 V.

Antes de começar a usar o Raspberry Pi Pico W, você deve soldar conectores macho de 40 pinos, 20 de cada lado da placa.

Programando e Instalando o MicroPython no Raspberry Pi Pico W

O Raspberry Pi Pico W pode ser programado usando C/C++ ou MicroPython, entre outras linguagens. O Pico W é adaptável a uma vasta gama de aplicações e níveis de habilidade, e começar é tão fácil quanto arrastar e soltar um arquivo. Se você estiver trabalhando com C, é recomendável usar um sistema baseado em Linux como um computador Raspberry Pi, pois é fácil baixar o SDK e escrever programas C no Linux.

Mas vou recomendar o uso do MicroPython para programar o Raspberry Pi Pico W Board. MicroPython é um interpretador de linguagem Python desenvolvido para microcontroladores e sistemas embarcados. A sintaxe do MicroPython é muito semelhante à do Python. Portanto, se você trabalhou com Python, trabalhar com MicroPython será muito fácil.

Para programar o Raspberry Pi Pico usando o Micropython, usaremos o Thonny IDE:

Mas antes de começar a usar o Raspberry Pi Pico W, você deve instalar o MicroPython no Raspberry Pi Pico W Board.

Pressione e segure o botão BOOTSEL no Pico W e, em seguida, conecte imediatamente o Pico W Board ao seu computador usando um cabo micro USB. Solte BOOTSEL assim que a unidade RPI-RP2 aparecer em seu computador.

Abra a unidade RPI-RP2 que aparece na guia Unidades.

Visite a página de documentação oficial do Raspberry Pi Pico W aqui: Raspberry Pi Datasheets.

Baixe o arquivo MicroPython UF2 na guia MicroPython.

Arraste e solte o arquivo UF2 na unidade RPI-RP2. O Raspberry Pi Pico W será reinicializado e agora executará o MicroPython.

Agora você pode começar a usar o Raspberry Pi Pico W com MicroPython no Thonny IDE e fazer projetos IoT ilimitados.

 

Introdução ao Raspberry Pi Pico W usando o MicroPython

Agora vamos começar com o Raspberry Pi Pico W usando o MicroPython no Thonny IDE. Primeiro você tem que baixar Thonny do https://thonny.org/

Conecte o Raspberry Pi Pico W ao seu computador. Em Thonny, vá para Ferramentas > Opções e clique na guia Intérprete. Na lista suspensa do interpretador, selecione MicroPython (Raspberry Pi Pico). O menu suspenso da porta pode ser deixado para detectar automaticamente o Pico. Clique em Ok para fechar.

Após uma conexão bem-sucedida, a versão MicroPython e a placa Raspberry aparecerão no Python Shell. Para testar, podemos escrever uma função de impressão rápida para dizer “Bem Vindo”. Pressione Enter para executar o código. Você receberá Bem Vindo como resposta.

Você também pode verificar as informações do dispositivo seguindo os comandos.

import sys
sys.implementation

O diretório também pode ser visualizado usando o seguinte comando.

import uso
uso.listdir()

Escrevendo um programa de piscar para o LED onboard do Pico W

Ao contrário do Raspberry Pi Pico original, o LED integrado no Pico W não está conectado a um pino no RP2040, mas sim a um pino GPIO no chip sem fio CYW43439. MicroPython foi modificado de acordo

import machine
import time
 
led= machine.Pin('LED', machine.Pin.OUT)
 
while (True):
    led.on()
    time.sleep(0.5)
    led.off()
    time.sleep(0.5)

Salve o programa no Raspberry Pi Pico W e dê um nome como main.py

O shell do Python seguirá a mensagem, o que significa que o programa será executado sem nenhum erro.

O programa será executado e você poderá ver o LED alternando na placa

 

Verificando Pontos de Acesso Wi-Fi

O Raspberry Pi Pico W possui chip Wi-Fi CYW43439 de 2,4 GHz da Infineon. Assim, a placa pode se conectar à rede WiFi e todos os recursos relacionados ao WiFi também podem ser acessados.

Permite digitalizar todos os pontos de acesso de rede disponíveis usando o Raspberry Pi Pico W trabalhando em um modo de estação.

No editor Thonny, cole o seguinte código e salve com qualquer nome como main.py.

import network
wlan=network.WLAN(network.STA_IF)
wlan.active(True)
accesspoints = wlan.scan()
for ap in accesspoints:
        print(ap)

Agora aperte o botão de execução para executar o código.

O chip WiFi fará a varredura de toda a rede disponível e mostrará a lista de toda a rede na janela Shell.

 

Conexão com a Internet (rede WLAN/WiFi)

Agora vamos ver como o Raspberry Pi Pico W se conecta à rede Wi-Fi.

Crie um novo script clicando no botão Novo no Thonny IDE. Copie e cole o seguinte código. Substitua as credenciais WiFi alterando o SSID e a SENHA para o seu próprio.

import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("SSID","PASSWORD")
print(wlan.isconnected())

 

Julgamento de tempo limite e exibição do endereço IP W do Raspberry Pi Pico

Considerando algumas condições de rede ruins, vamos adicionar um julgamento de tempo limite ao código e também imprimir o endereço IP da rede à qual o Pico W se conecta.

Crie um novo script clicando no botão Novo no Thonny IDE. Copie e cole o seguinte código. Substitua as credenciais WiFi.

import network
import time
 
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("SSID","PASSWORD")
 
# Wait for connect or fail
wait = 10
while wait > 0:
    if wlan.status() < 0 or wlan.status() >= 3:
        break
    wait -= 1
    print('waiting for connection...')
    time.sleep(1)
 
# Handle connection error
if wlan.status() != 3:
    raise RuntimeError('wifi connection failed')
else:
    print('connected')
    print('IP: ', wlan.ifconfig()[0])

Agora execute o script.

O Thonny Shell exibirá o endereço IP do Pico W.

  • Função wlan.status(): Retorna o status atual da conexão sem fio
  • Função wlan.ifconfig(): Obtém endereços IP, máscaras de sub-rede, gateways e servidores DNS. Este método retornará uma tupla de 4 contendo as informações acima quando chamado diretamente. Nesse caso, imprimimos apenas o endereço IP.

Para obter mais informações sobre os comandos WiFi, consulte a documentação da classe WLAN MicroPython.

 

Armazenando Credenciais WiFi em Arquivo Secreto e Simplifique a Conexão WiFi

Ao compartilhar seu projeto Pico W, você não deve querer que outras pessoas vejam sua senha Wi-Fi ou chave API. Para uma boa segurança, podemos criar um arquivo secrets.py para armazenar suas informações privadas.

Considerando que cada um de nossos próximos projetos exigirá uma conexão de rede, por que não criamos um novo arquivo do_connect.py e escrevemos as funções relevantes nele para reutilização, o que pode simplificar bastante o código de projetos complexos.

secrets.py
Copie o código a seguir em um novo arquivo de script no Thonny. Nota para alterar SSID e PASSWORD para o seu. Defina o nome do arquivo como secrets.py

secrets = {
'ssid': 'SSID',
'password': 'PASSWORD',
}

do_connect.py

Copie o código a seguir em um novo arquivo de script e salve-o no Raspberry Pi Pico como do_connect.py.

import network
import time
from secrets import *
 
def do_connect(ssid=secrets['ssid'],psk=secrets['password']):
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    wlan.connect(ssid, psk)
 
    # Wait for connect or fail
    wait = 10
    while wait > 0:
        if wlan.status() < 0 or wlan.status() >= 3:
            break
        wait -= 1
        print('waiting for connection...')
        time.sleep(1)
 
    # Handle connection error
    if wlan.status() != 3:
        raise RuntimeError('wifi connection failed')
    else:
        print('connected')
        ip=wlan.ifconfig()[0]
        print('network config: ', ip)
        return ip

main.py
Chamar o script acima em outros scripts pelo seguinte permitirá que o Raspberry Pi Pico W se conecte à rede.

from do_connect import *
do_connect()

Depois de executar todos os 3 scripts, o Pico W se conectará à rede WiFi.