Código de Pesquisa

Tutorial ESP32 31/55 - Projeto Faixa de LED com Afastamento de Obstáculos | Kit de Aprendizado IoT ESP32 da SunFounder

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.

ESP32-31-luz-fluente-principal2

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

ESP32-31-flowing-light-wiring

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.

ESP32-31-esquema-de-luz-fluida

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 14

No 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

Imagens

ESP32-31-flowing-light-main2
ESP32-31-flowing-light-main2
ESP32-31-flowing-light-main
ESP32-31-flowing-light-main
ESP32-31-flowing-light-schematic
ESP32-31-flowing-light-schematic
ESP32-31-flowing-light-wiring
ESP32-31-flowing-light-wiring
832-ESP32 Tutorial 31/55- Arduino code flowing light
Idioma: C++
#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);
    }
  }
}

Recursos e referências

Arquivos📁

Nenhum arquivo disponível.