Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Assistente Inteligente de Estacionamento na Garagem com Feedback de LED RGB

Componentes e Materiais

Componente Quantidade
Arduino Nano R3 1
Sensor Ultrassônico - HC-SR04 (Genérico) 1
Capacitor 1000 µF 1
1N4148 – Diodo de Comutação Rápida de Uso Geral 1
Resistor Passante, 470 ohm 1
Fita LED WS2812B 1M IP30 5VDC 1

Ferramentas e Máquinas Necessárias

Sobre o Projeto

Este é um sensor de estacionamento de garagem usando LEDs RGB endereçáveis para fornecer feedback ao motorista do veículo enquanto ele se aproxima e finalmente atinge a posição de parada (estacionamento). Veja o vídeo em ação:

Projetei isso em torno de algum material acrílico de meia polegada de diâmetro, meio redondo, que eu tinha em mãos (cortado a 20-7/16 polegadas de comprimento) para usar como uma lente que também serve para manter as seções de cauda de andorinha juntas. Isso pode ser facilmente comprado na internet por cerca de $0.66 por pé, no entanto, também incluí um modelo de lente que pode ser impresso em segmentos usando filamento transparente.

PASSO 1

Prepare a fita LED (fita LED WS2812b individualmente endereçável RGB Smart Pixel 30 LEDs, fita de 1 metro de comprimento). Corte a fita em dois (2) segmentos de 15 LEDs e solde os fios em cada segmento no início de cada fita. As setas na fita apontam 'PARA LONGE' de onde os fios são necessários.

PASSO 2

Monte todas as seções do trilho (um Trilho Externo e dois segmentos de Trilho Interno por lado) com o gabinete no meio.

PASSO 3

Passe os fios das fitas LED para dentro do gabinete em cada lado e fixe com fita adesiva. Nota: as fitas LED pararão cerca de 1/2 polegada de cada extremidade do Trilho Externo.

PASSO 4

Deslize a lente em cada extremidade até o fundo do gabinete para travar todas as caudas de andorinha no lugar. Se estiver usando lente impressa, serão 4 necessárias para cada lado. Elas destinam-se a cobrir as áreas de cauda de andorinha.

PASSO 5

Monte a montagem com tampas de extremidade em uma placa de apoio (usei MDF de 1/2" cortado a 2" de largura por 45-1/8" de comprimento). Fixe a montagem usando parafusos de cabeça pan ou chata pequenos (nota: não use cabeça redonda, caso contrário o cabo USB não caberá no slot depois, se necessário para reprogramar parâmetros.)

PASSO 6

Faça a fiação da eletrônica. Observe a localização do capacitor. O capacitor é necessário para evitar picos de tensão da fonte. Um resistor é usado no fio de sinal (pino 7) para LEDs, e um diodo é usado no Arduino (V+) para evitar retroalimentação de tensão no caso de USB ser inserido sem a fonte de alimentação ligada. Sem o diodo, o Arduino tentará fornecer tensão aos LEDs, causando corrente excessiva através do regulador de tensão onboard. Diodo e resistor são soldados em linha com a fiação e cobertos com tubo termorretrátil. O gabinete precisará ser furado do lado de fora perto da parte inferior sob o Arduino para passar os fios da fonte de alimentação. Não projetei isso no modelo, pois o tamanho dependerá do tipo de fio usado. Recomendo fio 18/2. Usei fio de campainha e coloquei um conector logo fora do gabinete.

Assistente Inteligente de Estacionamento na Garagem com Feedback de LED RGB

PASSO 7

Use parafuso de 2.5mm para fixar o Arduino e complete as conexões de fiação ao Arduino. As extremidades de fixação progridem em furos quadrados no gabinete. Removi os pinos mais externos do Arduino (não utilizados) para facilitar a instalação.

Assistente Inteligente de Estacionamento na Garagem com Feedback de LED RGB

PASSO 8

Use parafusos de 2.5mm para fixar o detector ultrassônico (HC-SR02) na tampa com fixação. Complete as conexões de solda ao sensor. NOTA: certifique-se de que os fios fiquem voltados para o centro do sensor para não interferir na parede lateral ao montar.

Assistente Inteligente de Estacionamento na Garagem com Feedback de LED RGB

PASSO 9

Instale a tampa no gabinete com parafusos de 3mm.

PASSO 10

Programe o Arduino usando o código abaixo. Atualize as bibliotecas da sua IDE com 'FastLED' e 'QuickStats' antes de compilar seu programa. Nota: Ajuste parâmetros para 'startdistance' (ponto onde o sensor detectará pela primeira vez a aproximação do veículo) e 'stopdistance' (posição final de estacionamento do veículo). O alcance do sensor é de 3 cm a 400 centímetros, então os parâmetros de início e parada precisam estar dentro desses limites.

PASSO 11

No abridor de porta da garagem, instale um adaptador de soquete de lâmpada com tomada embutida. Conecte sua fonte de alimentação 5VDC a esta linha e leve até a unidade de barra de luz. A barra de luz só ficará ligada desde o momento em que a porta abre até que a luz da porta expire. Isso evita que a barra de luz fique sempre ligada.

Código

Código Arduino Arduino
/* 
 * Sensor de Estacionamento de Garagem - Publicado por Bob Torrence 
 */
#include <FastLED.h>
#include <QuickStats.h>

QuickStats stats; //inicializa uma instância desta classe

// definindo os pinos
#define LED_PIN 7
#define NUM_LEDS 15

const int trigPin = 9;
const int echoPin = 10;

// definindo variáveis
CRGB leds[NUM_LEDS];
float duration;
float durationarray[15];
int distance;
int stopdistance=115; //posição de estacionamento a partir do sensor (CENTÍMETROS)
int startdistance=400; //distância do sensor para começar a varredura quando o carro entra (CENTÍMETROS)
int increment=((startdistance-stopdistance)/15);

void setup() {
  pinMode(trigPin, OUTPUT); // Define trigPin como Saída
  pinMode(echoPin, INPUT);  // Define echoPin como Entrada
  FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
  Serial.begin(9600); // Inicia comunicação serial
}

void loop() {
  for (int i=0;i<=14;i++){
    // Limpa o trigPin
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    // Define trigPin em HIGH por 10 microssegundos
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    // Lê o echoPin, retorna o tempo de viagem da onda sonora em microssegundos
    durationarray[i] = pulseIn(echoPin, HIGH);
    distance= durationarray[i]*0.034/2;
    Serial.print(distance);
    Serial.print(" ");
  }

  duration = (stats.median(durationarray,15)); // Calculando a distância (mediana de 15 leituras)
  distance= duration*0.034/2;

  // Imprime a distância no Monitor Serial
  Serial.print("Distance: ");
  Serial.println(distance);

  if (distance<stopdistance){
    for (int i = 0; i <= 14; i++) {
      leds[i] = CRGB ( 255, 0, 0); // Vermelho - posição de parada
    }
    FastLED.show();
  } 
  else if (distance<stopdistance+increment){
    for (int i = 1; i <= 14; i++) { leds[i] = CRGB ( 0, 0, 0); }
    for (int i = 0; i <= 0; i++) { leds[i] = CRGB ( 255, 255, 0); } // Amarelo - 1 LED
    FastLED.show(); delay(50);
  } 
  else if (distance<stopdistance+increment*2){
    for (int i = 2; i <= 14; i++) { leds[i] = CRGB ( 0, 0, 0); }
    for (int i = 0; i <= 1; i++) { leds[i] = CRGB ( 255, 255, 0); } // Amarelo - 2 LEDs
    FastLED.show(); delay(50);
  } 
  else if (distance<stopdistance+increment*3){
    for (int i = 3; i <= 14; i++) { leds[i] = CRGB ( 0, 0, 0); }
    for (int i = 0; i <= 2; i++) { leds[i] = CRGB ( 255, 255, 0); } // Amarelo - 3 LEDs
    FastLED.show(); delay(50);
  } 
  else if (distance<stopdistance+increment*4){
    for (int i = 4; i <= 14; i++) { leds[i] = CRGB ( 0, 0, 0); }
    for (int i = 0; i <= 3; i++) { leds[i] = CRGB ( 0, 255,0); } // Verde - 4 LEDs
    FastLED.show(); delay(50);
  } 
  else if (distance<stopdistance+increment*5){
    for (int i = 5; i <= 14; i++) { leds[i] = CRGB ( 0, 0, 0); }
    for (int i = 0; i <= 4; i++) { leds[i] = CRGB ( 0, 255,0); } // Verde - 5 LEDs
    FastLED.show(); delay(50);
  } 
  else if (distance<stopdistance+increment*6){
    for (int i = 6; i <= 14; i++) { leds[i] = CRGB ( 0, 0, 0); }
    for (int i = 0; i <= 5; i++) { leds[i] = CRGB ( 0, 255,0); } // Verde - 6 LEDs
    FastLED.show(); delay(50);
  } 
  else if (distance<stopdistance+increment*7){
    for (int i = 7; i <= 14; i++) { leds[i] = CRGB ( 0, 0, 0); }
    for (int i = 0; i <= 6; i++) { leds[i] = CRGB ( 0, 255,0); } // Verde - 7 LEDs
    FastLED.show(); delay(50);
  } 
  else if (distance<stopdistance+increment*8){
    for (int i = 8; i <= 14; i++) { leds[i] = CRGB ( 0, 0, 0); }
    for (int i = 0; i <= 7; i++) { leds[i] = CRGB ( 0, 255,0); } // Verde - 8 LEDs
    FastLED.show(); delay(50);
  } 
  else if (distance<stopdistance+increment*9){
    for (int i = 9; i <= 14; i++) { leds[i] = CRGB ( 0, 0, 0); }
    for (int i = 0; i <= 8; i++) { leds[i] = CRGB ( 0, 255,0); } // Verde - 9 LEDs
    FastLED.show(); delay(50);
  } 
  else if (distance<stopdistance+increment*10){
    for (int i = 10; i <= 14; i++) { leds[i] = CRGB ( 0, 0, 0); }
    for (int i = 0; i <= 9; i++) { leds[i] = CRGB ( 0, 255,0); } // Verde - 10 LEDs
    FastLED.show(); delay(50);
  } 
  else if (distance<stopdistance+increment*11){
    for (int i = 11; i <= 14; i++) { leds[i] = CRGB ( 0, 0, 0); }
    for (int i = 0; i <= 10; i++) { leds[i] = CRGB ( 0, 255,0); } // Verde - 11 LEDs
    FastLED.show(); delay(50);
  } 
  else if (distance<stopdistance+increment*12){
    for (int i = 12; i <= 14; i++) { leds[i] = CRGB ( 0, 0, 0); }
    for (int i = 0; i <= 11; i++) { leds[i] = CRGB ( 0, 255,0); } // Verde - 12 LEDs
    FastLED.show(); delay(50);
  } 
  else if (distance<stopdistance+increment*13){
    for (int i = 13; i <= 14; i++) { leds[i] = CRGB ( 0, 0, 0); }
    for (int i = 0; i <= 12; i++) { leds[i] = CRGB ( 0, 255,0); } // Verde - 13 LEDs
    FastLED.show(); delay(50);
  } 
  else if (distance<stopdistance+increment*14){
    for (int i = 14; i <= 14; i++) { leds[i] = CRGB ( 0, 0, 0); }
    for (int i = 0; i <= 13; i++) { leds[i] = CRGB ( 0, 255,0); } // Verde - 14 LEDs
    FastLED.show(); delay(50);
  } 
  else if (distance>=stopdistance+increment*14){
    for (int i = 0; i <= 14; i++) { leds[i] = CRGB ( 0, 255,0); } // Verde - todos 15 LEDs
    FastLED.show(); delay(50);
  }
}

Peças Personalizadas e Caixas

Modelos para impressão 3D disponíveis na seção de download.

Esquemáticos

Atualizado em 21-04-19 para corrigir direção do Diodo

Assistente Inteligente de Estacionamento na Garagem com Feedback de LED RGB

Processo de manufatura

  1. Detector de Idiomas TinyML com Edge Impulse no Arduino Nano 33 BLE Sense
  2. Construa um Jogo em Tempo Real com Giroscópio: Arduino Nano + Sensor MPU-6050
  3. Dados Digital com Arduino: Gere Números Aleatórios 1-6 em LCD 16x2
  4. Construa Seu Próprio Jogo de Roleta com 37 LEDs e Arduino Nano
  5. ATtiny85 Mini Arcade: Snake – Construa um Console Portátil de Jogos OLED
  6. Detector de Alcance Portátil – Kit DIY Arduino Nano com HC-SR04, Bateria 18650 e Gabinete 3D
  7. Lâmpada de Mesa Reativa a Áudio com Arduino Nano
  8. Assistente Pessoal de Saúde (PHA) – Solução IoT Inteligente para Saúde Comunitária
  9. Projeto de Galvanoplastia de Cobre: Construa um Sistema Inteligente com Arduino UNO
  10. Jogo Pong Neon em Matriz NeoPixel com Arduino Nano