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

Arduino-basiertes Sicherheitssystem

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
Ultraschallsensor - HC-SR04 (Generic)
× 1
Servos (Tower Pro MG996R)
× 1
Summer
× 1
Breadboard (generisch)
× 1
Überbrückungsdrähte männlich/weiblich
× 1
Kunststoffbox
× 1

Notwendige Werkzeuge und Maschinen

Messer

Apps und Onlinedienste

Arduino-IDE
IDE verarbeiten

Über dieses Projekt

Einführung

Dieses Projekt ist ein Arduino-basiertes Sicherheitssystem bestehend aus einem Arduino Uno, einem Servomotor, einem Ultraschallsensor und einem piezoelektrischen Summer.

Dabei erfasst der Ultraschallsensor ein Objekt, das sich in seiner Reichweite befindet, wodurch der Summer aktiviert wird. Diese Sensordaten werden auch in eine Processing IDE-Software eingespeist, die eine grafische Karte erstellt.

Der Servomotor wird verwendet, um den Ultraschallsensor zu drehen, um einen großen Bereich abzudecken.

Dies ist ein ziemlich einfaches Projekt und kann innerhalb einer Stunde durchgeführt werden.

Hier ist die Vorgehensweise für das Projekt -

  • Verbinde den Trigger-Pin des Sensors mit Pin 2 des Arduino
  • Verbinde den Echo Pin des Sensors mit Pin 3 des Arduino
  • Vcc und GND der Sensorversorgung bzw. Masse verbinden
  • Platziere den Summer auf dem Steckbrett
  • Verbinden Sie sein positives Ende mit Pin 10 des Arduino und verbinden Sie das negative Ende mit Masse
  • Schließen Sie das schwarze und das rote Kabel des Servomotors an Masse bzw. Versorgung an
  • Schließen Sie das gelbe Kabel des Servomotors an Pin 9 des Arduino an
  • Verbinden Sie den 5V-Anschluss des Arduino mit der Versorgung und den GND-Anschluss des Arduino mit Masse

Nachdem Sie diese Verbindungen fertiggestellt haben, platzieren Sie den gesamten Stromkreis wie in der Abbildung gezeigt in der Box.

Dann ist es Zeit zu codieren.

Code

  • Sicherheitssystem_IDE
  • Verarbeitung
Sicherheitssystem_IDEC9Search
#include . int tPin =2;int ePin =3;int buz =10;int d1,d2;int i =0;int sdistance;Servo myServo; Void setup () { Serial.begin (9600); pinMode (tPin, AUSGANG); pinMode (ePin, EINGANG); pinMode (buz, AUSGANG); myServo.attach(9); } ungültige Schleife () { for (i =0; i <=180; i + =10) { myServo.write (i); Verzögerung (30); d2 =berechneDistance(); Serial.print (i); Serial.print (","); Serial.print (d2); Serial.print("."); } for(i=180;i>0; i-=10){myServo.write(i); Verzögerung (30); d2 =berechneDistance(); Serial.print (i); Serial.print (","); Serial.print (d2); Serial.print("."); }}int berechneDistance () { DigitalWrite (tPin, HIGH); Verzögerung (1000); digitalWrite (tPin, LOW); d1 =pulseIn(ePin, HIGH); d2 =d1 * 0,0171821306; wenn (d2 <10) { digitalWrite (buz, HIGH); aufrechtzuerhalten. Sonst { DigitalWrite (buz, LOW); } d2 zurückgeben; }
VerarbeitungJava
import processing.serial.*; // importiert Bibliothek für serielle Kommunikationimport java.awt.event.KeyEvent; // importiert Bibliothek zum Lesen der Daten vom seriellen Portimport java.io.IOException;Serial myPort; // definiert Object Serial // defibes variablesString angle="";String distance="";String data="";String noObject;float pixsDistance;int iAngle, iDistance;int index1=0;int index2=0;PFont orcFont; Void setup () { Größe (1366, 768); // ***ÄNDERN SIE DIES ZU IHRER BILDSCHIRMAUFLÖSUNG*** smooth(); myPort =new Serial(this,"COM3", 9600); // startet die serielle Kommunikation myPort.bufferUntil('.'); // liest die Daten vom seriellen Port bis zum Zeichen '.'. Tatsächlich lautet es also:Winkel,Abstand.}void draw() { fill(98,245,31); // Bewegungsunschärfe und langsames Überblenden der bewegten Linie simulieren noStroke(); füllen(0,4); rect(0, 0, Breite, Höhe-Höhe*0.065); füllen (98,245,31); // grüne Farbe // ruft die Funktionen zum Zeichnen des Radars auf drawRadar(); drawLine(); drawObject(); drawText();}void serialEvent (Serial myPort) { // beginnt mit dem Lesen von Daten vom seriellen Port // liest die Daten vom seriellen Port bis zum Zeichen '.' und fügt es in die String-Variable "data" ein. data =myPort.readStringUntil('.'); data =data.substring(0,data.length()-1); index1 =data.indexOf(","); // finde das Zeichen ',' und lege es in die Variable "index1" angle=data.substring(0, index1); // Lesen Sie die Daten von Position "0" bis zur Position der Variablen index1 oder das ist der Wert des Winkels, den das Arduino-Board an den seriellen Port gesendet hat distance =data.substring (index1 + 1, data.length (); // die Daten von der Position "index1" bis zum Ende der Daten lesen pr das ist der Wert der Distanz // konvertiert die String-Variablen in Integer iAngle =int(angle); iDistance =int(distanz);}void drawRadar() { pushMatrix(); Übersetzen (Breite/2, Höhe-Höhe * 0,074); // verschiebt die Startkoordinaten an eine neue Position noFill(); Strichgewicht(2); Schlaganfall (98,245,31); // zeichnet die Bogenlinien arc(0,0,(width-width*0.0625),(width-width*0.0625),PI,TWO_PI); arc(0,0,(Breite-Breite*0,27),(Breite-Breite*0,27),PI,TWO_PI); arc(0,0,(Breite-Breite*0.479),(Breite-Breite*0.479),PI,TWO_PI); arc(0,0,(Breite-Breite*0,687),(Breite-Breite*0,687),PI,TWO_PI); // zeichnet die Winkellinien line(-width/2,0,width/2,0); line(0,0,(-Breite/2)*cos(Radiant (30)),(-Breite/2)*sin(Radiant (30))); line(0,0,(-Breite/2)*cos(Radiant(60)),(-Breite/2)*sin(Radiant(60))); line(0,0,(-Breite/2)*cos(Radiant(90)),(-Breite/2)*sin(Radiant(90))); line(0,0,(-Breite/2)*cos(Radiant(120)),(-Breite/2)*sin(Radiant(120))); line(0,0,(-Breite/2)*cos(Radiant(150)),(-Breite/2)*sin(Radiant(150))); line((-width/2)*cos(Radiant(30)),0,width/2,0); popMatrix();}void drawObject() { pushMatrix(); Übersetzen (Breite/2, Höhe-Höhe * 0,074); // verschiebt die Startkoordinaten an eine neue Position StrokeWeight(9); Strich(255,10,10); // rote Farbe pixsDistance =iDistance*((height-height*0.1666)*0.025); // deckt den Abstand vom Sensor von cm bis Pixel ab // Begrenzung des Bereichs auf 40 cm if(iDistance<10){ // zeichnet das Objekt entsprechend dem Winkel und der Distanzlinie(pixsDistance*cos(radians(iAngle)) ,-pixsDistance*sin(Radiant(iWinkel)),(Breite-Breite*0.505)*cos(Radiant(iWinkel)),-(Breite-Breite*0.505)*sin(Radiant(iWinkel))); } popMatrix();}void drawLine() { pushMatrix(); Strichgewicht(9); Hub (30,250,60); Übersetzen (Breite/2, Höhe-Höhe * 0,074); // verschiebt die Startkoordinaten an die neue Position line(0,0,(height-height*0.12)*cos(radians(iAngle)),-(height-height*0.12)*sin(radians(iAngle))); // zeichnet die Linie entsprechend dem Winkel popMatrix();}void drawText() { // zeichnet die Texte auf dem Bildschirm pushMatrix(); if(iDistance>10) { noObject ="Außerhalb des Bereichs"; } else { noObject ="In Range"; } füllen(0,0,0); noStroke(); rect(0, Höhe-Höhe*0.0648, Breite, Höhe); füllen (98,245,31); Textgröße (25); text("2cm",Breite-Breite*0,3854,Höhe-Höhe*0,0833); text("4cm",Breite-Breite*0.281,Höhe-Höhe*0.0833); text("6cm",Breite-Breite*0,177,Höhe-Höhe*0,0833); text("10cm",Breite-Breite*0.0729,Höhe-Höhe*0.0833); Textgröße(40); text("Akshay6766", Breite-Breite*0.875, Höhe-Höhe*0.0277); text("Winkel:" + iAngle +" ", width-width*0.48, height-height*0.0277); text("Abstand:", width-width*0.26, height-height*0.0277); if(iDistance<40) { text("" + iDistance +"cm", width-width*0.225, height-height*0.0277); } Textgröße (25); füllen (98,245,60); translate((Breite-Breite*0,4994)+Breite/2*cos(Radiant (30)),(Höhe-Höhe*0,0907)-Breite/2*sin(Radiant(30))); drehen (-Radiant (-60)); text("30",0,0); resetMatrix(); translate ((Breite-Breite * 0,503) + Breite / 2 * cos (Radiant (60)), (Höhe-Höhe * 0,0888) - Breite / 2 * Sin (Radiant (60))); drehen (-Radiant (-30)); text("60",0,0); resetMatrix(); translate((Breite-Breite*0,507)+Breite/2*cos(Radiant (90)),(Höhe-Höhe*0,0833)-Breite/2*sin(Radiant(90))); drehen (Radiant (0)); text("90",0,0); resetMatrix(); translate (Breite-Breite * 0,513 + Breite / 2 * cos (Radiant (120)), (Höhe-Höhe * 0,07129) - Breite / 2 * Sinus (Radiant (120))); drehen (Radiant (-30)); text("120",0,0); resetMatrix(); translate((Breite-Breite*0,5104)+Breite/2*cos(Radiant(150)),(Höhe-Höhe*0,0574)-Breite/2*sin(Radiant(150))); drehen (Radiant (-60)); text("150",0,0); popMatrix(); }

Schaltpläne


Herstellungsprozess

  1. TinyML-Spracherkennung basierend auf Edge Impulse &Arduino
  2. Arduino-Gyroskop-Spiel mit MPU-6050
  3. Arduino Digital Dice
  4. Iron Man
  5. Finde mich
  6. Arduino-Befeuchtersteuerung
  7. Sonar mit Arduino und Anzeige bei der Verarbeitung von IDE
  8. MobBob:DIY-Arduino-Roboter, der von einem Android-Smartphone gesteuert wird
  9. Arduino Audio Reactive Desk Light
  10. NeoMatrix Arduino Pong