Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino Laser-Lichtschranke: Einfacher Einbruchmelder selbst bauen

Komponenten und Zubehör

Komponente Beschreibung Anzahl
Arduino UNO Oder kompatibles Arduino Uno Board 1
Lötfreies Steckbrett (Halbgröße) Für Aufbau 1
Widerstand 10k Ohm Für Fotowiderstände und Taster 3
Jumper-Kabel (generic) Verbindungen 1
Fotowiderstand (LDR) Laser- und Umgebungslicht-Erkennung 2
Laser-Diode Lichtquelle für Lichtschranke 1
Taster 12mm Modus-Umschaltung (Setup/Armed) 1
Summer Alarmton 1

Apps und Online-Dienste

Über dieses Projekt

Laser-Lichtschranke bauen

Komponenten

Ich habe auch ein separates Steckbrett für den Laser-Erkennungsschaltkreis verwendet (erleichtert die Ausrichtung des Lasers auf den Fotowiderstand).

Laser-Detektor bauen

Zwei Jumper-Kabel in separate Terminalstreifen stecken. Einen Fotowiderstand an den roten Leiter und einen Terminalstreifen anschließen. Den anderen Fotowiderstand zwischen einen anderen Terminalstreifen und den roten Leiter verbinden. Einen 10k-Widerstand vom gelben Leiter zu einem Fotowiderstand und den anderen 10k-Widerstand zwischen den anderen Fotowiderstand und den gelben Leiter schalten. Zwei weitere Kabel an jede Kreuzung von Fotowiderstand und 10k-Widerstand anschließen (grün und orange).

Gelben Leiter an Minus-Schiene, roten an Plus-Schiene des Steckbretts anschließen. Orange an A0 (Laser-Detektor), Grün an A1 (Umgebungslicht-Detektor).

Summer anschließen

Summer auf Steckbrett platzieren. Minus-Schiene mit Summer-Minus verbinden. Summer-Plus an Arduino Pin 3.

Taster bauen

Taster zwischen zwei Terminalstreifen platzieren (Kontakt nur bei Druck). Letzten 10k-Widerstand an ein Taster-Ende und Minus-Pin anschließen (Jumper-Kabel an Masse-Schiene). Anderes Taster-Ende an Plus-Schiene. Kreuzung Taster/Widerstand an Arduino Pin 4.

Laser anschließen

Laser an Pin 2 und Masse anschließen. Billiglaser „gehackt“ durch Krokodilklemmen an Feder und Gehäuse mit Klettband, das den Taster gedrückt hält.

Programmablauf

Das Programm prüft kontinuierlich, ob der Taster gedrückt ist. Einmal gedrückt = Setup-Modus, zweimal = Armed-Modus.

Setup-Modus: Werte an Serial Port ausgeben. Bei hellem Licht auf Fotowiderstand leuchtet Pin 13 (Laser-Ausrichtung).

Armed-Modus: Alle 3 Sekunden Serial-Report. Prüft, ob Fotowiderstand-Wert durch Laserunterbrechung sinkt → Trip-Modus starten.

Trip-Modus: 3x piepen, Daten an Serial Port, zurück zu Armed-Modus.

Code

Laser Tripwire (Arduino)

// 5 pins trip wire
int mode = 1;
int ambiant;
int trip = 1000;
int minLight = 900;
int makeBeep = 1;
int atAverage;
long millisCount;
int laserPin = 2;
int ledPin = 13;
int buzzerPin = 3;
String modeNames[3] = {"SETTINGS","ARMED","TRIP"};
int modePin = 4;
int tripPin = A0;
int ambiantPin = A1;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(laserPin, OUTPUT);
  pinMode(buzzerPin, OUTPUT);
  pinMode(modePin, INPUT);
  Serial.begin(9600);
}

void loop() {
  if (digitalRead(modePin) == 1) {
    trip = analogRead(tripPin);
    mode = mode + 1;
    if (mode >= 2) mode = 0;
    beep(1);
    delay(300);
  }
  switch (mode) {
    case 0: // Kalibrierung
      digitalWrite(laserPin, HIGH);
      ambiant = analogRead(ambiantPin);
      trip = analogRead(tripPin);
      atAverage = ambiant + ((trip - ambiant)/2);
      stats();
      if (trip >= minLight) digitalWrite(ledPin, HIGH);
      else digitalWrite(ledPin, LOW);
      break;
    case 1: // Armed
      digitalWrite(laserPin, HIGH);
      digitalWrite(ledPin, LOW);
      ambiant = analogRead(ambiantPin);
      atAverage = ambiant + ((trip - ambiant)/2);
      if (analogRead(tripPin) < atAverage) mode = 2;
      if ((millis() - millisCount) >= 3000) {
        millisCount = millis();
        stats();
      }
      break;
    case 2: // Trip
      if ((millis() - millisCount) >= 1000) {
        millisCount = millis();
        stats();
        beep(3);
        mode = 1;
      }
      break;
  }
  delay(1);
}

void beep(int qty) {
  int count;
  if (makeBeep == 1) {
    for (count = 1; count <= qty; count++) {
      digitalWrite(buzzerPin, HIGH);
      delay(50);
      digitalWrite(buzzerPin, LOW);
      delay(50);
    }
  }
}

void stats() {
  Serial.print("A:"); Serial.print(ambiant);
  Serial.print(" T:"); Serial.print(trip);
  Serial.print(" AT:"); Serial.print(atAverage);
  Serial.print(" MODE:"); Serial.print(modeNames[mode]);
  Serial.println("");
}

Schaltpläne

Steckbrett-Ansicht und Schaltplan sind im Originalprojekt als Bilder enthalten.

Herstellungsprozess

  1. Squid Game Puppe mit Arduino UNO bauen – Interaktives DIY-Projekt
  2. Arduino Echtzeituhr für islamische Gebetszeiten bauen
  3. Arduino-Uno-Roboter zur Personenerkennung – Sensorintegration Schritt für Schritt
  4. Arduino UNO WiFi Webserver: LED per Browser steuern
  5. Einfacher Taschenrechner mit Arduino UNO – Einsteigerprojekt
  6. Bilder auf 1,17-Zoll-TFT-LCD mit Arduino UNO anzeigen
  7. Tragbares Persistence-of-Vision-Display mit Arduino UNO und ATtiny85 bauen
  8. 8×8 LED-Matrix mit Arduino Uno meistern: Schritt-für-Schritt-Anleitung
  9. Wi-Servo: Servomotoren per WLAN über Webbrowser steuern
  10. 25-kHz-4-Pin-PWM-Lüftersteuerung mit Arduino Uno – Bau, Code & Test