Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Assistant de Stationnement Garage Intelligent avec Rétroaction LED RGB

Composants et fournitures

Composant Quantité
Arduino Nano R3 1
Capteur à ultrasons HC-SR04 (générique) 1
Condensateur 1000 µF 1
Diode 1N4148 – Commutation rapide usage général 1
Résistance traversante 470 ohms 1
Bande LED WS2812B 1M IP30 5VDC (adressable individuellement) 1

Outils et machines nécessaires

À propos du projet

Ce capteur de stationnement pour garage utilise des LED RGB adressables pour fournir un retour visuel au conducteur lorsqu'il s'approche et atteint enfin la position d'arrêt (stationnement). Voir la vidéo en action :

J'ai conçu cela autour de demi-ronds en acrylique de 1/2" de diamètre (coupés à 20-7/16" de long) que j'avais sous la main, servant de lentille et maintenant les sections à queue d'aronde ensemble. Ce matériel s'achète facilement en ligne pour environ 0,66 $ le pied. J'ai aussi inclus un modèle de lentille imprimable en segments avec du filament transparent.

ÉTAPE 1

Préparez la bande LED (WS2812B, 30 LED/m, 1 m). Coupez-la en deux segments de 15 LED et soudez des fils au début de chaque segment. Les flèches sur la bande indiquent le sens loin de l'endroit où les fils sont nécessaires.

ÉTAPE 2

Assemblez toutes les sections de rail (un rail extérieur, deux segments de rail intérieur par côté) avec le boîtier central.

ÉTAPE 3

Passez les fils des bandes LED dans le boîtier de chaque côté et fixez-les avec le ruban adhésif au dos. Les bandes LED s'arrêtent à environ 1/2" de chaque extrémité du rail extérieur.

ÉTAPE 4

Glissez la lentille dans chaque extrémité jusqu'au fond du boîtier pour verrouiller toutes les queues d'aronde. Si vous utilisez une lentille imprimée, 4 segments sont requis par côté pour combler les zones à queue d'aronde.

ÉTAPE 5

Montez l'assemblage avec les bouchons d'extrémité sur une plaque de support (j'ai utilisé du MDF 1/2" coupé à 2" x 45-1/8"). Fixez avec de petites vis à tête plate ou bombée (pas de tête ronde, sinon le câble USB ne rentrera pas dans la fente pour une reprogrammation ultérieure).

ÉTAPE 6

Câblez l'électronique. Notez la position du condensateur : il évite les pics de tension de l'alimentation. Une résistance sur le fil de signal (broche 7) pour les LED, et une diode sur l'Arduino (V+) pour éviter le retour de tension si l'USB est branché sans l'alimentation. Sans la diode, l'Arduino tenterait d'alimenter les LED, causant un courant excessif dans le régulateur de tension embarqué. Diode et résistance sont soudées en ligne et gainées avec du thermorétractable. Le boîtier devra être percé depuis l'extérieur près du bas sous l'Arduino pour passer les fils d'alimentation. Je recommande du fil 18/2. J'ai utilisé du fil de sonnette avec un connecteur juste à l'extérieur du boîtier.

Assistant de Stationnement Garage Intelligent avec Rétroaction LED RGB

ÉTAPE 7

Utilisez une vis 2,5 mm pour fixer l'Arduino, et complétez les connexions. Les pattes de fixation dépassent dans les trous carrés du boîtier. J'ai retiré les broches extérieures inutilisées de l'Arduino pour faciliter l'installation.

Assistant de Stationnement Garage Intelligent avec Rétroaction LED RGB

ÉTAPE 8

Utilisez des vis 2,5 mm pour fixer le capteur à ultrasons (HC-SR04) au couvercle. Soudez les connexions. NOTE : assurez-vous que les fils font face au centre du capteur pour ne pas gêner le mur latéral lors de l'assemblage.

Assistant de Stationnement Garage Intelligent avec Rétroaction LED RGB

ÉTAPE 9

Installez le couvercle sur le boîtier avec des vis 3 mm.

ÉTAPE 10

Programmez l'Arduino avec le code ci-dessous. Mettez à jour vos bibliothèques IDE avec FastLED et QuickStats avant de compiler. Note : Ajustez les paramètres startdistance (détection d'approche du véhicule) et stopdistance (position finale de stationnement). La portée du capteur est de 3 cm à 400 cm, les paramètres doivent rester dans ces limites.

ÉTAPE 11

Sur l'ouvre-porte de garage, installez un adaptateur de douille de lampe avec prise intégrée. Branchez votre alimentation 5VDC sur cette ligne et tirez vers la barre lumineuse. La barre ne sera allumée que du moment où la porte s'ouvre jusqu'à l'extinction de la lumière de la porte, évitant qu'elle ne reste allumée en permanence.

Code

Arduino Code Arduino
/* 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);
  pinMode(echoPin, INPUT);
  FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
  Serial.begin(9600);
}

void loop() {
  for (int i = 0; i <= 14; i++) {
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    durationarray[i] = pulseIn(echoPin, HIGH);
    distance = durationarray[i] * 0.034 / 2;
    Serial.print(distance);
    Serial.print(" ");
  }
  duration = (stats.median(durationarray, 15));
  distance = duration * 0.034 / 2;
  Serial.print("Distance: ");
  Serial.println(distance);

  if (distance < stopdistance) {
    for (int i = 0; i <= 14; i++) {
      leds[i] = CRGB(255, 0, 0); // Rouge : stop
    }
    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); // Jaune
    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); // Vert
    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); // Tout vert : loin
    FastLED.show(); delay(50);
  }
}

Pièces personnalisées et boîtiers

Modèles 3D pour le boîtier, rails, lentilles et couvercles (fichiers STL/3MF).

Schémas

Mis à jour le 21-04-19 pour corriger le sens de la diode.

Assistant de Stationnement Garage Intelligent avec Rétroaction LED RGB

Processus de fabrication

  1. Détecteur de langue TinyML avec Edge Impulse sur Arduino Nano 33 BLE Sense
  2. Construire un jeu gyroscopique temps réel avec Arduino Nano et capteur MPU-6050
  3. Dé numérique Arduino sur écran LCD 16x2 – Générateur aléatoire à bouton poussoir
  4. Créer votre propre jeu de roulette à 37 LED avec Arduino Nano
  5. ATtiny85 Mini Arcade : Snake – Construire une console de jeu portable OLED
  6. Détecteur de distance portable – Kit DIY Arduino Nano avec HC-SR04, alimentation 18650 et boîtier imprimé 3D
  7. Construire une lampe de bureau réactive à l'audio avec Arduino Nano
  8. Assistant Santé Personnel (PHA) : Solution IoT connectée pour la santé communautaire
  9. Projet de galvanoplastie au cuivre : Construisez un système intelligent avec Arduino UNO