Asistente de estacionamiento casero

asistente de estacionamiento en garaje

asistente de estacionamiento en garaje © GPL3+

Sensor de estacionamiento en garaje que utiliza LED RGB direccionables para proporcionar información al conductor del vehículo a medida que se acerca y alcanza la posición de parada (estacionamiento).

 

Componentes y Suministros

ard nano
arduino nano r3
× 1
51gzz5eu9pl. sx425
Sensor ultrasónico – HC-SR04 (Genérico)
× 1
panasonic eca1em102
Condensador de 1000 µF
× 1
Imagen Fairchild semiconductor 1n4148
1N4148 – Interruptor rápido de uso general
× 1
4415447
Resistencia de orificio pasante, 470 ohmios
× 1
WS2812B Tira LED 1M IP30 5VDC
× 1

Herramientas y máquinas necesarias.

3 arrastrar
impresora 3D (genérica)
09507 01
Soldador (genérico)

Acerca de este proyecto

Este es un sensor de estacionamiento en el garaje que utiliza LED RGB direccionables para proporcionar información al conductor del vehículo a medida que se acerca y finalmente llega a la posición de parada (estacionamiento). Vea el video en acción:

Diseñé esto alrededor de un material acrílico semicircular de 1/2″ de diámetro que tenía a mano (cortado a 20-7/16″ de largo) para usarlo como una lente que también sirve para mantener unidas las secciones de cola de milano. Esto se puede comprar fácilmente en Internet por alrededor de $ 0,66 por pie, sin embargo, también he incluido un modelo de lente que se puede imprimir en segmentos usando filamento transparente.

ETAPA 1

Prepare la tira de LED (WS2812b tira de LED de píxel inteligente RGB direccionable individualmente de 30 LED de 1 metro de largo). Corte la tira en dos (2) segmentos de 15 LED y suelde los cables a cada segmento al comienzo de cada tira. Las flechas en la cinta señalan ‘LEJOS’ de donde se necesitan los cables.

2DO PASO

Ensamble todas las secciones del riel (un riel exterior y dos segmentos del riel interior en cada lado) con la caja en el medio.

PASO 3

Inserte los cables de las tiras de LED en la carcasa de cada lado y péguelos con cinta adhesiva. Nota Las tiras de LED se detendrán aproximadamente a 1/2″ de cada extremo del riel exterior

PASO 4

Deslice la lente en cada extremo hasta el fondo de la caja para bloquear todas las colas de milano en su lugar. Si está utilizando una lente impresa, se necesitarán 4 para cada lado. Están destinados a rellenar áreas de cola de milano.

PASO 5

Monte el conjunto con las tapas de los extremos en una tabla de respaldo (utilicé MDF de 1/2″ que se cortó a 2″ de ancho por 45-1/8″ de largo). Fije el conjunto con tornillos pequeños de cabeza troncocónica o de cabeza plana ( nota: no use cabeza redonda, de lo contrario, el cable USB no encajará en la ranura más adelante si es necesario reprogramar la configuración).

PASO 6

Cablea la electrónica. Tenga en cuenta la ubicación del condensador. Se requiere un condensador para evitar picos de voltaje de la fuente de alimentación. Se usa una resistencia en el cable de señal (pin 7) para los LED, y se usa un diodo en el Arduino (V+) para evitar la retroalimentación de voltaje en caso de que el USB se inserte sin la fuente de alimentación. Sin el diodo, Arduino intentará suministrar voltaje a los LED, lo que provocará una corriente excesiva a través del voltaje integrado regulado. El diodo y la resistencia se sueldan en línea con el cableado y se cubren con un tubo termorretráctil. La carcasa deberá perforarse desde el exterior cerca de la parte inferior debajo de Arduino para alimentar los cables de la fuente de alimentación. No diseñé esto en el patrón, ya que el tamaño dependerá del tipo de hilo utilizado. Recomiendo usar hilo 18/2. Usé un cable de campana y puse un conector justo fuera de la caja.

PASO 7

Utilice un tornillo de 2,5 mm para sujetar el Arduino y realice las conexiones de cableado al Arduino. Los extremos de retención sobresalen en agujeros cuadrados en la carcasa. Quité los pines más externos de Arduino (sin usar) para facilitar la instalación.

PASO 8

Utilice tornillos de 2,5 mm para asegurar el sensor ultrasónico (HC-SR02) a la cubierta con sujeción. Complete las conexiones de soldadura al sensor. NOTA: Asegúrese de que los cables estén orientados hacia el centro del sensor para que no interfieran con la pared lateral durante el montaje.

 

PASO 9

Instale la cubierta a la caja con tornillos de 3 mm.

PASO 10

Programa Arduino usando el siguiente código. Actualice sus bibliotecas IDE con ‘FastLED’ y ‘QuickStats’ antes de compilar su programa. Nota: Establezca los parámetros para la «distancia de inicio» (punto en el que el sensor detectará por primera vez la aproximación del vehículo), así como la «distancia de parada» (punto de estacionamiento final del vehículo). El rango del sensor es 3 cm a 400 cm, por lo que los parámetros de inicio y parada deben estar entre estos límites.

PASO 11

En el abridor de puerta de garaje, instale un adaptador de portalámparas con enchufe incorporado. Enchufe su fuente de alimentación de 5 V CC en esta línea y diríjase a la barra de luces. La barra de luces solo se enciende desde el momento en que se abre la puerta hasta que se apaga la luz de la puerta. Esto evita que la barra de luces esté siempre encendida.

codificado

codigo arduinoarduino
/*
* Garage Parking Sensor - Published By Bob Torrence
*/
#include <FastLED.h>
#include <QuickStats.h>
QuickStats stats; //initialize an instance of this class
// defining the pins
#define LED_PIN     7
#define NUM_LEDS    15
const int trigPin = 9;
const int echoPin = 10;
// defining variables
CRGB leds[NUM_LEDS];
float duration;
float durationarray[15];
int distance;
int stopdistance=115; //parking position from sensor (CENTIMETERS)
int startdistance=400; //distance from sensor to begin scan as car pulls in(CENTIMETERS) 
int increment=((startdistance-stopdistance)/15);
void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
Serial.begin(9600); // Starts the serial communication
}
void loop() {
  for (int i=0;i<=14;i++){
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
durationarray[i] = pulseIn(echoPin, HIGH);
distance= durationarray[i]*0.034/2;
Serial.print(distance);
Serial.print(" ");
  }
 duration = (stats.median(durationarray,15));
// Calculating the distance
distance= duration*0.034/2;
// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);
  
if (distance<stopdistance){
  for (int i = 0; i <= 14; i++) {
    leds[i] = CRGB ( 255, 0, 0);
    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);
  }
  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);
  }
  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);
  }
  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);
  }
  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);
  }
  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);
  }
  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);
  }
  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);
  }
  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);
  }
  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);
  }
  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);
  }
  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);
  }
  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);
  }
  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);
  }
  FastLED.show();
  delay(50);
}
else
if (distance>=stopdistance+increment*14){
 for (int i = 0; i <= 14; i++) {
   leds[i] = CRGB ( 0, 255,0);
  }
  FastLED.show();
  delay(50);
}
}

Partes y estuches personalizados

Cubrir
Pista exterior
pista interior
Retener
Consejo
Lente
Retención ultrasónica

diagramas

esquemas de cables
– Actualizado el 21/04/19 para corregir la dirección del diodo
Cableado actualizado swgvvavdvr

Fuente Arduino.cc