

Lançada em 2021, Raspberry Pi Pico é a primeira placa microcontrolada da série Raspberry Pi. Diferentemente das demais, seu chip principal é o RP2040, o primeiro microcontrolador desenvolvido pela empresa. Tendo baixo custo quando comparada com as demais placas com chips de 32 bits, é bem versátil e, portanto, tem potencial para integrar diversos projetos. A seguir, algumas características destacadas no datasheet da placa:

A forma mais simples de programar o Raspberry Pi Pico é utilizando o MicroPython. Este interpretador pode ser carregado como firmware na placa e usado para traduzir os códigos em Python salvos em sua memória flash. Já o software que melhor funciona com este interpretador é o Thonny Python, que pode ser baixado pelo link.
Enquanto o mantém pressionado, conecte a placa, via USB, ao computador, que irá percebe-la como um dispositivo de armazenamento. Então, abra a IDE e, no canto inferior direito, clique na versão do Python mostrada.
No menu que será aberto, selecione "MicroPython (Raspberry Pi Pico)".
A partir daí, prossiga com o processo de instalação.Ao término, você poderá controlar sua placa pela IDE. Para testar, digite, no terminal que aparece no canto inferior da tela, "from machine import Pin", pressione enter, "led = Pin(25, Pin.OUT)", pressione enter e "led.value(1)" e pressione enter. Neste momento, o Led embutido na placa deverá estar aceso. Para apaga-lo, digite "led.value(0)" e tecle enter. Caso algo dê errado no processo, verifique se as etapas de instalação foram executadas adequadamente.

No nome, inclua, ao fim, a extensão ".py". Com o arquivo salvo, basta clicar em "Run current script" (circulo verde ao lado da opção de salvar) com ele aberto na IDE para que o Raspberry Pi Pico o execute. Para que o código seja executado automaticamente na energização do Pico, mesmo que desconectado do computador, basta nomear o arquivo como "main.py".
Em todos os exemplos utilizaremos a montagem vista a seguir. Nela serão utilizados:Materiais necessários para os projetos de exemplo

#importa as classes a serem utilizadas
from machine import Pin, Timer
#instancia o pino 15 como uma saída para led
led = Pin(15, Pin.OUT)
#instancia timer como um objeto do tipo Timer()
timer = Timer()
#descreve a função blink
def blink(timer): #colocar timer como parâmetro é necessário para indicar que a função é callback deste objeto
led.toggle() #inverte o estado do led
#inicia o timer com frequencia de 1 Hz, modo periódico (não encerra após o primeiro ciclo) e callback para blink
timer.init(freq = 1, mode = Timer.PERIODIC, callback = blink)Repare que não há rotinas de delay ou sleep neste código. Portanto, é possível atribuir instruções para que o processador execute nos intervalos entre as mudanças de estado do led.A seguir, o funcionamento do código:#importa as classes que serão utilizadas
from machine import Pin, PWM
from time import sleep
#instancia o pino 15 como saída PWM
pwm = PWM(Pin(15))
#define a frequencia, em Hz, da saída
pwm.freq(1000)
#ciclo infinito
while True:
for duty in range(65025): #varia duty de 0 a 2^16
pwm.duty_u16(duty) #define o duty-cicle como igual a duty
sleep(0.0001) #delay de 100 us
for duty in range(65025, 0, -1): #realiza o mesmo processo
pwm.duty_u16(duty) #do ciclo anterior, mas com
sleep(0.0001) #duty variando decrescentementeO funcionamento:#importa as classes que serão utilizadas
from machine import Pin
from time import sleep
#instancia led como saida digital
#e button como entrada digital
led = Pin(15, Pin.OUT)
button = Pin(16, Pin.IN)
#ciclo infinito
while True:
if not button.value(): #se o botao não estiver em nível alto
#e, portanto, estiver apertado
#já que liga a entrada ao GND
led.toggle() #inverte o valor do led
sleep(0.5) #delay para debounceO funcionamento pode ser visto abaixo:#importa as classes que serão utilizadas
from pico_i2c_lcd import I2cLcd
from machine import I2C, Pin, ADC
from time import sleep
#instancia o pino de entrada analógica
adc = ADC(Pin(26))
#instancia a conexão I2C, utilizando a interface 0
#o pino 1 como scl, o 0 como sda e a frequencia de
#medições como 100000 Hz
i2c = I2C(id=0,scl=Pin(1),sda=Pin(0),freq=100000)
#instancia o LCD com a conexão i2c iniciada anteriormente,
#o endereço 0x27 do barramento e 2 linhas de 16 caracteres
lcd = I2cLcd(i2c, 0x27, 2, 16)
#ciclo infinito
while True:
lcd.putstr('V: ') #escreve a partir da primeira posição
lcd.putstr(str(adc.read_u16() * 3.3 / 65535)) #escreve a leitura do ADC convertida p/ tensão
sleep(0.5) #aguarda meio segundo
lcd.clear() #limpa o LCD e volta p/ primeira posição
Para descobrir o endereço do LCD, rode o seguinte código com ele conectado ao Pico.import machine
sda=machine.Pin(0)
scl=machine.Pin(1)
i2c=machine.I2C(0,sda=sda, scl=scl, freq=400000)
print('I2C address:')
print(i2c.scan(),' (decimal)')
print(hex(i2c.scan()[0]), ' (hex)')O endereço será mostrado no terminal da IDE.Funcionamento:Neste post, vimos algumas funcionalidades do Raspberry Pi Pico e uma forma diferente de programar um microcontrolador. O MicroPython também pode ser utilizado junto aos ESP's e outros chips. Futuramente, veremos como explorar sua divisão de núcleos e como programa-lo com linguagens compiladas, aumentando sua eficiência e aproveitando melhor seu armazenamento. Obrigado pela leitura!
|
Neste post, conheceremos o Raspberry Pi Pico e exploraremos alguns de seus recursos mais básicos.
Encontre tudo na Loja Eletrogate com frete grátis para compras acima de R$ 200