HC-SR04 com CircuitPython
Aprenda a usar o sensor ultrassônico HC-SR04 com CircuitPython. Tutorial passo a passo com código e esquema de ligação.
2 de Janeiro de 2026
O sensor ultrassônico HC-SR04 é um dos componentes mais populares para medição de distância em projetos de robótica e automação. Sua simplicidade e baixo custo o tornam ideal para iniciantes e avançados. Neste tutorial, vamos explorar como integrá-lo de forma eficiente utilizando CircuitPython, testando o projeto em uma Raspberry Pi Pico.
A vantagem de usar CircuitPython aqui é a facilidade de leitura e a enorme quantidade de bibliotecas prontas, como a da Adafruit, que abstrai toda a complexidade dos pulsos de trigger e echo.
Materiais Necessários
Para seguir este tutorial, você precisará dos seguintes componentes:
- Placa de desenvolvimento: Raspberry Pi Pico (ou qualquer outra compatível com CircuitPython).
- Sensor Ultrassônico: HC-SR04 (versão padrão 5V) ou as versões modernas HC-SR04P / HC-SR04+ (que operam em 3.3V).
- Conversor de Nível Lógico: Obrigatório apenas se estiver usando o sensor padrão de 5V na Raspberry Pi Pico.
- Jumpers: 10 unidades (se usar conversor lógico) ou 4 unidades (conexão direta).
- Breadboard: 400 pontos (e uma auxiliar de 170 pontos se usar o conversor).
- Software:
circup(para bibliotecas) empremote(para execução).
Versões do HC-SR04: 3.3V vs 5V
Antes de conectarmos os fios, é crucial identificar qual versão do sensor você possui.
- HC-SR04 (Padrão Antigo): Opera estritamente com 5V. Como a Raspberry Pi Pico (e a maioria das placas modernas) trabalha com 3.3V nos pinos de GPIO, você não pode conectar o pino "Echo" do sensor diretamente na placa, pois o retorno de 5V pode queimar a porta do microcontrolador. Neste caso, é necessário usar um conversor de nível lógico ou um divisor de tensão.
- HC-SR04P ou HC-SR04+: Estas são versões atualizadas que operam em uma faixa de tensão maior (geralmente 3V a 5.5V). Se você tiver um destes, pode conectar diretamente aos pinos de 3.3V da Raspberry Pi Pico sem componentes adicionais.
Esquema de Ligação e Pinagem
Abaixo, descrevemos a pinagem para os dois cenários.
Cenário A: HC-SR04P / HC-SR04+ (3.3V)
Se o seu sensor for compatível com 3.3V, a conexão é direta:

- VCC: Conectar ao pino 3V3 (OUT) da Pico.
- GND: Conectar a qualquer GND da Pico.
- Trig: Conectar ao GP17.
- Echo: Conectar ao GP16.
Cenário B: HC-SR04 Padrão (5V) com Conversor de Nível
Se o seu sensor for o clássico de 5V, você deve alimentar o sensor com 5V (VBUS), mas converter os sinais de comunicação para 3.3V:

- Alimentação do Sensor: VCC no VBUS (5V) da Pico e GND no GND.
- Conversor Lógico (Lado HV - High Voltage): Conectar ao 5V (VBUS).
- Conversor Lógico (Lado LV - Low Voltage): Conectar ao 3V3 (OUT).
- Sinais (via Conversor):
- Trig: Pico GP17 -> LV3 -> HV3 -> Sensor Trig.
- Echo: Sensor Echo -> HV4 -> LV4 -> Pico GP16.
Configuração do Ambiente
Vamos utilizar duas ferramentas essenciais do ecossistema Python para microcontroladores: o circup para gerenciar pacotes e o mpremote para controlar a placa.
Instalando a Biblioteca
O CircuitPython possui uma biblioteca oficial da Adafruit específica para este sensor, o que facilita muito o trabalho. Conecte sua placa via USB e execute no terminal:
circup install adafruit_hcsr04
from time import sleep
from adafruit_hcsr04 import HCSR04
from board import GP16, GP17
with HCSR04(trigger_pin=GP17, echo_pin=GP16) as sonar:
while True:
print(f"{sonar.distance:.1f}cm")
sleep(0.5)
Entendendo o Script
- Importações: Importamos a classe
HCSR04da biblioteca que instalamos e definimos os pinosGP16eGP17através do móduloboard. - Gerenciador de Contexto (
with): Utilizamos a instruçãowithpara inicializar o sensor. Isso é uma boa prática no CircuitPython, pois garante que os recursos do hardware (os pinos utilizados) sejam liberados corretamente caso o código seja interrompido ou finalizado, evitando erros de "pino em uso" ao reiniciar o script. - Propriedade
.distance: A leitura é feita acessandosonar.distance. A biblioteca calcula automaticamente o tempo de voo do som e retorna o valor já convertido em centímetros (float). - Loop: O código lê a distância e imprime no console a cada 0.5 segundos.
Executando o Projeto
Com o código salvo e a placa conectada, utilize o mpremote para rodar o script diretamente:
mpremote run main.py
Você deverá ver no terminal as medidas de distância sendo atualizadas em tempo real.
Conclusão
Utilizar o HC-SR04 com CircuitPython é extremamente direto graças à abstração da biblioteca da Adafruit. Lembre-se sempre de verificar a voltagem de operação do seu sensor para proteger sua Raspberry Pi Pico.
