Como usar um sensor de movimento com Raspberry Pi Pico
O Raspberry Pi Pico tem vários pinos GPIO que podemos usar como entradas ou saídas simplesmente configurando os pinos em nosso código. Neste guia, aprenderemos a trabalhar com entradas, neste caso um sensor, e saídas em forma de LED. No final deste guia, teremos um detector de movimento simples em 16 linhas de MicroPython.
Neste guia, aprenderemos como usar os pinos GPIO do Raspberry Pi Pico como entradas e saídas digitais que usam alto e baixo como um método de controle simples.
Configurar
O circuito para este projeto adiciona um componente extra, um sensor infravermelho passivo (PIR) comumente usado em sistemas de segurança residencial para detectar movimento. Neste projeto ele executará a mesma função, e nosso código irá acionar um LED para acender quando o sensor relatar movimento.
Adicionar o sensor ao projeto requer:
- Um protoboard de meio tamanho
- Um LED
- Um resistor de 330 Ohm
- Um sensor PIR
- 3 x fios de jumper fêmea para macho
1. Insira o Raspberry Pi Pico no protoboard de modo que fique sobre o canal central. Certifique-se de que a porta Micro USB esteja em uma extremidade do protoboard.
2. Insira um resistor de 330 Ohm no protoboard, uma perna deve estar alinhada com o GND, que é o pino 38. A outra perna deve ser inserida no trilho – do protoboad. Isso nos fornece um trilho GND onde todos os pinos nesse trilho são conectados ao GND
2. Insira um resistor de 330 Ohm no protoboard, uma perna deve estar alinhada com o GND, que é o pino 38. A outra perna deve ser inserida no trilho – do protoboard. Isso nos fornece um trilho GND onde todos os pinos nesse trilho são conectados ao GND
3. Insira um LED, com a perna longa (o ânodo) inserida no protoboard no pino 34 e a perna curta inserida no trilho GND. O circuito agora está construído.
O sensor PIR possui três pinos. VCC, OUT e GND. O pino VCC é usado para fornecer 3,3 V de energia do Raspberry Pi Pico.
4. Usando um fio de jumper, conecte o VCC do PIR ao pino de 3,3 V (pino 37) que está próximo ao resistor.
5. Use outro fio jumper para conectar o pino OUT do PIR ao pino 21 do Pico.
6. Conecte o pino GND do PIR ao trilho GND do protoboard.
7. Com o circuito montado, conecte o Raspberry Pi Pico ao computador usando um cabo micro USB. Abra o aplicativo Thonny.
Agora passamos para a codificação do projeto e nos baseamos no código usado no projeto Getting Started para incluir uma entrada, nosso sensor PIR e um teste condicional para verificar se o sensor foi acionado.
1. Importe a classe Pin da biblioteca da máquina e, em seguida, importe utime. Essas bibliotecas nos permitem, respectivamente, nos comunicarmos com o GPIO e controlar o ritmo de nosso projeto.
from machine import Pin import utime
2. Crie um objeto, “led” que é usado para criar um link entre o pino GPIO físico e nosso código. Nesse caso, ele definirá o GPIO 28 (que mapeia para o pino físico 34 na placa) como um pino de saída, onde a corrente fluirá do Raspberry Pi Pico GPIO para o LED. Em seguida, usamos o objeto para instruir o pino GPIO a puxar para baixo. Em outras palavras, isso irá garantir que o pino GPIO seja desligado no início do nosso projeto.
led = Pin(28, Pin.OUT)
3. Crie outro objeto, “pir”. Este objeto é usado para criar uma conexão entre nosso código e o pino GPIO usado para a conexão OUT do PIR. Por padrão, o sensor PIR OUT é puxado para cima e, quando o movimento é detectado, o PIR puxa o pino OUT para baixo. Para garantir que o sensor funcione corretamente, definimos o pino como uma entrada e, em seguida, puxamos o pino GPIO para cima.
pir = Pin(16, Pin.IN, Pin.PULL_UP)
4. Certifique-se de que o LED esteja desligado no início do projeto e aguarde três segundos antes de prosseguir. Essas duas linhas garantem que não vejamos um “gatilho falso” do LED e dão ao sensor algum tempo para se estabilizar antes de usar.
led.low() utime.sleep(3)
5. Dentro de um loop while True, um loop sem fim, use uma função de impressão para imprimir o valor atual do pino GPIO usado para o sensor PIR. Isso retornará 1 se não houver movimento e 0 se houver.
while True: print(pir.value())
6. Crie um teste condicional que verifique o valor armazenado em pir.value. Se o valor for 0, movimento detectado, em seguida, imprima uma mensagem para o Shell do Python. Em seguida, ligue o LED (alto) e faça uma pausa de cinco segundos, mantendo o LED aceso por esse tempo.
if pir.value() == 0: print("LED On") led.high() utime.sleep(5)
7. A última parte do teste condicional é ativada quando nenhum movimento é detectado. Use uma condição Else para imprimir uma mensagem no Python Shell, em seguida, adicione uma linha para desligar o LED (baixo) e pause por 0,2 segundos. Em seguida, o loop se repete e o teste condicional é executado novamente.
else: print("Esperando movimento") led.low() utime.sleep(0.2)
8. Clique em Salvar e escolha salvar o código no dispositivo MicroPython (Raspberry Pi Pico). Nomeie o arquivo PIR.py e clique em Ok para salvar. Seu código deve ser assim.
from machine import Pin import utime led = Pin(28, Pin.OUT) pir = Pin(16, Pin.IN, Pin.PULL_UP) led.low() utime.sleep(3) while True: print(pir.value()) if pir.value() == 0: print("LED On") led.high() utime.sleep(5) else: print("Esperando movimento") led.low() utime.sleep(0.2)
9. Para executar o código, clique no botão verde play/seta e o Python Shell será atualizado para dizer “Aguardando movimento” e “LED Ligado”. O sensor PIR é excepcionalmente sensível e, a princípio, você pode ver alguns gatilhos falsos, mas o sensor se estabilizará.