Primeiros Passos Raspberry Pico W Deixe um comentário

O modelo W da Raspberry Pi Pico acrescenta o recurso de comunicação WiFi à poderosa e flexível Pi Pico, facilitando o seu uso em aplicações da Internet das Coisas (IoT). Neste post vamos dar os primeiros passos com a Pico W, instalar o MicroPython, conectar a a placa em uma rede WiFi e acessar um serviço simples na internet.

placa raspberry pi pico w
Raspberry Pi Pico W

Conhecendo a Raspberry Pi Pico W

A Raspberry Pi é mais conhecida pelos seus modelos do tipo SBC – Single Board Computer ou computadores em uma única placa – como os modelos 1 a 4 e Zero. Estas placas normalmente rodam Linux e permitem a conexão de monitores, teclados e mouse.

As placas da linha Raspberry Pi Pico são placas baseadas em microcontrolador. Rodam normalmente em “bare metal” (sem sistema operacional) ou com sistemas operacionais de tempo real e são voltadas à conexão de sensores e controle de dispositivos.

A Raspberry Pi Pico W possui as mesmas dimensões e os mesmos pinos que a Pico original:

A Pico original (esquerda) e a Pico W (direita)
A Pico original (esquerda) e a Pico W (direita)

Ambas utilizam o microcontrolador RP2040 (desenvolvido pela Raspberry Pi Foundation), com dois cores ARM M0+, 264K de Ram e o recurso de E/S programável (PIO). Possuem um LED, um conector USB micro, um botão para entrada no modo de carga de software, um conector para debug (SWD) e uma Flash de 2M para armazenamento do programa e dados. Os pinos laterais fornecem até 25 entradas ou saídas digitais, 3 entradas analógicas e acesso às interfaces seriais UART, I2C e SPI (duas de cada):

Funções dos pinos da Pico W
Funções dos pinos da Pico W

A Raspberry Pi Pico W acrescenta o circuito necessário para a comunicação WiFi (localizado embaixo da proteção metálica). Uma outra diferença é que o LED presente na placa passa a estar ligado ao controlador do WiFi (Infineon 43439) ao invés do RP2040.

A programação da Pico W pode ser feita em C/C++, usando o SDK da Raspberry ou as bibliotecas do Arduino, e em MicroPython e CircuitPython.

Instalando o MicroPython na Pico W

A versão mais recente do MicroPython para a Pico W pode ser baixada do site oficial. No momento em que escrevo, a versão com suporte ao Pico W ainda está em beta (“unstable”) mas não existem relatos de problemas sérios. A instalação do software na placa é feita seguindo os passos abaixo:

  • Com a placa desconectada do micro, aperte o botão BOOT e o mantenha apertado
  • Conecte a placa ao micro usando um cabo micro USB
  • Solte o botão BOOT
  • A placa será reconhecida como uma unidade de nome RPI-RP2
  • Copie o arquivo .uf2 que você baixou do site oficial para esta unidade

Ao final da carga a Pico W reiniciará e passará a se apresentar como uma porta serial. Nas versões atuais de Windows, MacOS e Linux não é necessário instalar um driver.

Instalando a IDE Thonny no PC

O MicroPython utiliza a porta serial criada na USB para receber comandos (conexão REPL – Read Evaluate Print Loop). A aplicação Thonny utiliza isto para fornecer um ambiente integrado de desenvolvimento.

O Thonny deve ser baixado do site oficial. Estão disponíveis versões para Windows, MacOS e Linux. Para o Windows atual, basta baixar a versão “Installer with 64-bit Python 3.10” da página inicial e executá-la. Se você for um usuário avançado, o site do Thonny descreve outras opções.

A primeira vez que você escutar o Thonny ele vai dar o erro “Couldn’t find the device automatically”. Use Ferramentas Opções para acessar a tela de configuração, escolha a aba Interpretador e selecione “MicroPython (Raspberry Pi Pico):

Clique em OK. Na tela principal clique no ícone STOP (🛑). Na área “Shell” da tela deve aparecer a identificação da versão do MicroPython que você instalou na Pico W:

Conectando a Pico W a uma Rede WiFi

Digite o programa abaixo na parte principal do Thonny (identificada como “<untitled>”, colocando o nome da sua rede (ESSID) e a senha correspondente:

import rp2
import network
from time import sleep

rp2.country('BR')

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect('rede', 'senha')

print ("Conectando...")
while not wlan.isconnected() and wlan.status() >= 0:
    sleep(1)
    
if wlan.isconnected(): 
    print ("Conectado")
    print("IP: "+wlan.ifconfig()[0])

Pressione o botão de execução (o triângulo verde), selecione Raspberry Pi Pico e forneça o nome t1.py.

Vamos entender o que estamos fazendo:

  • Os comandos import carregam as bibliotecas que vamos usar.
  • rp2.country(‘BR’) informa que vamos usar a placa no Brasil. Se isto não for feito o módulo WiFi usará somente os canais que estão disponíveis em todos os países.
  • A interface de comunicação (WLAN) será usada no modo station (se conectando a uma rede).
  • O método connect() dispara uma tentativa de conexão, que prosseguirá em paralelo ao seu programa. Os métodos isconnected() e status() permitem verificar se uma conexão ou erro ocorreu.
  • Neste exemplo estamos aguardando indefinidamente a conexão. No próximo exemplo colocaremos um tempo limite para a conexão
  • Conseguida a conexão, wlan.ifconfig() informa o IP obtido (e outras informações).

Acessando um Serviço na Internet

Para esse exemplo vamos usar um serviço gratuito e aberto de consulta a informações sobre os filmes da série Star Wars. Este serviço é um exemplo bem simples de API REST, a documentação completa pode ser vista em https://swapi.dev/documentation. A consulta que vamos usar é feita acessando o endereço https://swapi.dev/api/films/{filme}/ onde {filme} é o número do filme de 1 a 9 (em ordem de lançamento). A resposta vem no formato json:

{
    "characters": [
        "https://swapi.dev/api/people/1/",
        ...
    ],
    "created": "2014-12-10T14:23:31.880000Z",
    "director": "George Lucas",
    "edited": "2014-12-12T11:24:39.858000Z",
    "episode_id": 4,
    "opening_crawl": "It is a period of civil war...",
    "planets": [
        "https://swapi.dev/api/planets/1/",
        ...
    ],
    "producer": "Gary Kurtz, Rick McCallum",
    "release_date": "1977-05-25",
    "species": [
        "https://swapi.dev/api/species/1/",
        ...
    ],
    "starships": [
        "https://swapi.dev/api/starships/2/",
        ...
    ],
    "title": "A New Hope",
    "url": "https://swapi.dev/api/films/1/",
    "vehicles": [
        "https://swapi.dev/api/vehicles/4/",
        ...
    ]
}

No nosso exemplo vamos consultar o primeiro filme e mostrar o seu título e o texto apresentado na abertura.

import rp2
import network
import time
import urequests
import json

filme = 1
url = 'https://swapi.dev/api/films/{0}/'.format(filme)
TIMEOUT = 10

rp2.country('BR')

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect('rede', 'senha')

print ('Conectando...')

timeout = time.ticks_add(time.ticks_ms(), TIMEOUT*1000)
while not wlan.isconnected() and wlan.status() >= 0 and \
      time.ticks_diff(timeout, time.ticks_ms()) > 0:
    time.sleep(0.2)
    
if wlan.isconnected():
    print ('Conectado')
    print ('Consultando filme {0}'.format(filme))
    r = urequests.get(url)
    if r.status_code == 200:
        resposta = json.loads(r.text)
        print ('Episodio {0}: {1}'.format(resposta['episode_id'],
               resposta['title']))
        print (resposta['opening_crawl'])
    else:
        print ('ERRO: {0}'.format(r.status_code));
    r.close()
else:
    print ('ERRO: Nao conseguiu conectar ao WiFi!')

wlan.active(False)





Conclusão

Neste artigo vimos os primeiros passos com a Pico W, como conectá-la em uma rede WiFi e usá-la para acessar serviços disponíveis na internet. O MicroPython torna bastante simples isso, protegendo o programador das complexidades dos protocolos e formatos envolvidos.

Alguns exemplos de operações que podemos fazer com a Pico W:

  • Registrar na “nuvem” informações coletadas de sensores conectados a ela, para posterior processamento e visualização.
  • Acionar dispositivos conectados a ela conforme comandos recebidos pela rede (diretamente de um outro dispositivo ou de um site na internet).
  • Implementar um mini web server para apresentar informações de sensores e/ou controlar dispositivos conectados a ela.

Conte para a gente nos comentários o que você pretende fazer com a Pico W e siga a FilipeFlop no Instagram para se manter atualizado sobre nosso blog e produtos!

 

 

Faça seu comentário

Acesse sua conta e participe