Tutorial ESP32 31/55 - Projeto Faixa de LED com Afastamento de Obstáculos | Kit de Aprendizado IoT ESP32 da SunFounder
Neste tutorial, criaremos um projeto usando um microcontrolador ESP32 e uma fita de LED WS2812 que pode mudar sua direção com base na detecção de obstáculos. Quando a fita de LED estiver se movendo para frente, exibirá cores aleatórias e, ao detectar um obstáculo, mudará para uma cor predeterminada e reverterá a direção. Este projeto demonstra as capacidades do ESP32 em combinação com um sensor infravermelho de evitamento de obstáculos.
Ao longo deste tutorial, abordaremos os componentes de hardware necessários, as instruções de fiação e o código necessário para dar vida a este projeto. Para uma explicação mais visual, não deixe de conferir o vídeo linkado abaixo (no vídeo em :00).
Hardware Explicado
Este projeto requer vários componentes, incluindo o microcontrolador ESP32, uma fita de LED WS2812 e um sensor infravermelho de evasão de obstáculos. O ESP32 é um microcontrolador poderoso que possui Wi-Fi e Bluetooth integrados, tornando-o perfeito para aplicações de IoT. A fita de LED WS2812 é uma fita de LED RGB programável que permite o controle individual de cada LED, possibilitando a criação de efeitos de iluminação dinâmicos.
O sensor de detecção de obstáculos por infravermelho funciona emitindo luz infravermelha e detectando reflexos de objetos próximos. Quando um obstáculo é detectado, o sensor altere seu estado de saída, permitindo que o ESP32 responda de acordo, alterando o comportamento da fita de LED.
Detalhes da Ficha Técnica
| Fabricante | WS2812B |
|---|---|
| Número da peça | WS2812B |
| Tensão de Lógica/IO | 3,3 V (típ.) |
| Tensão de alimentação | 5 V (típ.) |
| Corrente de saída (por canal) | 20 mA (máx) |
| Corrente máxima (por canal) | 60 mA (máx) |
| Orientação sobre a frequência PWM | 400 Hz (típ.) |
| Limiares de lógica de entrada | 0,3 Vcc (alto), 0,1 Vcc (baixo) |
| Queda de tensão / RDS(ativo)/ saturação | 1,2 V (máx) |
| Limites térmicos | 85 °C (máx) |
| Pacote | Montagem em superfície |
| Notas / variantes | Disponível em várias comprimentos e densidades |
- Certifique-se de que a fita de LED esteja alimentada com 5 V para um desempenho ideal.
- Use um resistor adequado para o pino de dados para evitar problemas de integridade do sinal.
- Tenha cuidado com as limitações de corrente de saída para evitar superaquecimento.
- Desacople corretamente a fonte de alimentação para evitar picos de tensão.
- Ajuste o sensor infravermelho com cuidado para alcançar a faixa de detecção desejada.
Instruções de Cabeamento

Para conectar os componentes, comece com o sensor de избегание de obstáculos infravermelho. Conecte o pino de saída do sensor ao pino25no ESP32. O pino do meio deve ser conectado ao terra, e o último pino (VCC) deve ser conectado a uma fonte de alimentação de 3,3 V.
Em seguida, para a fita de LED WS2812, conecte o pino de dados (geralmente o fio amarelo) ao pino14no ESP32. O fio vermelho deve ser conectado a uma fonte de alimentação de 5 V, e o fio preto deve ser conectado ao terra. Certifique-se de conectar todos os fios corretamente para evitar qualquer fiação solta.
Exemplos de Código e Passo a Passo
Aqui está uma breve visão geral do código que executa este projeto. Primeiro, definimos o número de pixels na fita de LED e o pino de dados usado para comunicação:
#define NUM_PIXELS 8
#define DATA_PIN 14No textosetup()função, inicializamos a fita de LED e o sensor infravermelho:
void setup() {
pixels.begin();
pinMode(AVOID_PIN, INPUT_PULLUP);
uint32_t color = pixels.Color(random(256), random(256), random(256));
pixels.fill(color);
pixels.show();
}No textoloop()função, verificamos se um obstáculo é detectado e controlamos a faixa de LED de acordo:
if (avoid_value) {
for (int i = 0; i < NUM_PIXELS; i++) {
pixels.setPixelColor(i, color);
pixels.show();
pixels.setPixelColor(i, 0);
delay(100);
}
} else {
for (int i = NUM_PIXELS - 1; i >= 0; i--) {
pixels.setPixelColor(i, color);
pixels.show();
pixels.setPixelColor(i, 0);
delay(100);
}
}Este código permite que a fita de LED exiba cores aleatórias ao se mover para frente e mude de direção quando um obstáculo é detectado. O código completo é carregado abaixo do artigo, então não se esqueça de conferi-lo para todos os detalhes.
Demontração / O Que Esperar
Quando a configuração estiver completa e o código for carregado, a fita de LED deve começar a exibir cores aleatórias enquanto se move para frente. Quando um obstáculo é detectado, a fita mudará para uma cor predefinida (como verde) e inverterá a direção. Se o obstáculo for removido, a fita retomará o movimento para frente com cores aleatórias. Esteja ciente de que o alcance de detecção do sensor infravermelho pode variar com base na fonte de alimentação utilizada (no vídeo às 10:30).
Marcos do Vídeo
- 00:00 Iniciar
- 2:14 Introdução ao projeto
- 4:58 Explicação da fiação
- 7:41 Ajustando o Sensor de Evitação de Obstáculos
- 10:03 Código Arduino explicado
- 15:40 Selecionando a placa ESP32 e a porta COM no Arduino IDE
- 17:22 Projeto 1: Demonstração
- 18:17 Channing a cor da volta
#include <Adafruit_NeoPixel.h>
// Defina o número de pixels para a luz de corrida.
#define NUM_PIXELS 8
// Defina o pino de dados para a fita LED RGB
#define DATA_PIN 14
// Inicialize o objeto da fita LED RGB
Adafruit_NeoPixel pixels(NUM_PIXELS, DATA_PIN, NEO_GRB + NEO_KHZ800);
// Inicialize o sensor de evitação
#define AVOID_PIN 25
void setup() {
// Inicialize a fita de LED RGB
pixels.begin();
// Inicialize o sensor de evitação
pinMode(AVOID_PIN, INPUT_PULLUP);
// Defina a cor inicial do LED
uint32_t color = pixels.Color(random(256), random(256), random(256));
pixels.fill(color);
pixels.show();
}
void loop() {
// Leia a entrada do sensor infravermelho
bool avoid_value = digitalRead(AVOID_PIN);
// Gere uma cor aleatória para o pixel atual.
uint32_t color = pixels.Color(random(256), random(256), random(256));
// Se nenhum obstáculo for detectado
if (avoid_value) {
for (int i = 0; i < NUM_PIXELS; i++) {
// Acenda o pixel atual com a cor aleatória.
pixels.setPixelColor(i, color);
// Atualize a exibição da fita LED RGB
pixels.show();
// Desligue o pixel atual.
pixels.setPixelColor(i, 0);
delay(100);
}
}
// Se detectar um obstáculo, altere a direção da fita de LED.
else {
for (int i = NUM_PIXELS - 1; i >= 0; i--) {
pixels.setPixelColor(i, color);
pixels.show();
pixels.setPixelColor(i, 0);
delay(100);
}
}
}
Common Course Links
Common Course Files
Recursos e referências
-
DocumentaçãoTutorial ESP32 31/55 - Página do doc SunFounder para luz fluentedocs.sunfounder.com
Arquivos📁
Nenhum arquivo disponível.