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

Ultraschall-Map-Maker mit einem Arduino Yun

Komponenten und Verbrauchsmaterialien

Arduino Yun
× 1
Ultraschallsensor
× 1
Servos (Tower Pro MG996R)
× 1
Jumper (generisch)
× 10

Apps und Onlinedienste

Arduino-IDE
MATLAB

Über dieses Projekt

Schritt 1:Theorie

In diesem Projekt verwenden wir einen Ultraschall-Distanzsensor. Es erzeugt Schallwellen jenseits des menschlichen Gehörs und misst die Entfernung, indem es die Zeit berechnet, die diese Wellen benötigen, um auf ein Hindernis zu treffen und zurückzulaufen. Dies ähnelt dem Prinzip, das von Fledermäusen und Kreuzfahrtschiffen verwendet wird.

Eine weitere Komponente, die wir verwenden werden, ist ein Servomotor. Er unterscheidet sich vom üblichen Gleichstrommotor dadurch, dass er sich sehr genau in eine vorgegebene Winkelposition drehen und dort seinen Zustand halten kann. Wenn ein Servomotor Impulse einer bestimmten Dauer erhält, bewegt er sich in die entsprechende Winkelposition.

Wir werden diese beiden Komponenten verwenden, um ein 180-Grad-Sichtfeld für unseren Roboter zu erhalten.

Schritt 2:Materialien sammeln

Dieses Projekt verwendet die folgende Hardware

  • Arduino Uno/Yun (Bitte beachten Sie, dass jedes Arduino-Footprint-Board anstelle von Uno oder Yun verwendet werden kann)
  • Arduino-Prototyping-Schild
  • Ein HC-04 Ultraschallsensor
  • Ein Servomotor (ich habe den Tower Pro SG90 verwendet, weil er sehr kompakt ist)
  • Softwareseitig verwenden wir folgende Programme
  • Die Arduino-IDE zum Hochladen von Steuercode auf den Arduino, um das Servo zu drehen und Abstandsdaten vom Ultraschallsensor zu erhalten und ihn auch an den seriellen Port zu schieben.
  • Mathworks MatLab, um Daten von der seriellen Leitung zu empfangen, zu verarbeiten und in einem Diagramm zu visualisieren.

Schritt 3:Mechanische Montage

Machen Sie aus einem kleinen Stück Allzweck-PCB einen kleinen Header für den HC-04 und befestigen Sie ihn mit einem Stück doppelseitigem Klebeband an einem Servohorn.

Dieser Schritt ist optional, aber um das System kompakter zu machen, habe ich das Servo auch mit doppelseitigem Klebeband am hervorstehenden Teil des Protoboard-Schildes befestigt.

Das Endergebnis sollte wie der Bauch von Wall-E aussehen.

Schritt 4:Der Arduino-Code

Der Arduino-Code steuert die Bewegung des Servomotors und wann und wie oft die Messwerte des Ultraschallsensors erfasst werden. Es überträgt auch die Sensordaten an den seriellen Port.

  • Bibliotheken importieren
  • Variablen und Pins initialisieren.
  • Servoobjekt initialisieren
  • Serielle Kommunikation initialisieren
  • Warten Sie 3 Sekunden
  • Zähler auf 0 initialisieren
  • Servo um 1 Grad drehen
  • Erhalte 10 Mal Ultraschallsensordaten (standardmäßig eingestellt)
  • Durchschnitt der Daten
  • Durchschnitt an serielle Schnittstelle senden
  • Zurück zu Schritt 7

Schritt 5:Der MatLab-Code

Der MatLab-Code befasst sich mehr mit Daten als mit der eigentlichen Steuerung des Boards, daher werden alle Sensordaten seriell zum PC übertragen, wo sie von MatLab gelesen werden.

Nun, die Daten, die wir vom Arduino erhalten, sagen uns zwei Dinge. Der Grad der Drehung des Servos und die Entfernung eines Hindernisses in dieser Richtung. Daher befinden sich die Daten, die wir zu diesem Zeitpunkt haben, im Polarkoordinatensystem. Damit es bei der Visualisierung für das menschliche Auge sinnvoll ist, muss es in das kartesische oder X-Y-Koordinatensystem umgerechnet werden.

Der MatLab-Code macht genau dies. Es holt Daten seriell vom COM-Port, speichert sie in einer Matrix mit dem Drehwinkel und wandelt sie dann mit der oben angegebenen Formel in kartesische Koordinaten um.

Sobald dies erledigt ist, gibt es eine Ausgabe aus, indem die Punkte in einem Diagramm aufgetragen werden. Ich habe das Brett in die Schachtel gelegt und das folgende Ergebnis erhalten.

Schritt 6:Fazit

Obwohl das System nicht perfekt ist, erledigt es die Arbeit. Es kann eine grobe Schätzung der Boxbreite und -länge erhalten und die Daten genau senden.

Die einzigen Fehler, die ich im Moment sehen kann, sind auf das Wackeln des Sensors während der Servobewegung und fehlerhafte Messwerte vom Sensor selbst zurückzuführen.

Abgesehen davon funktioniert das System gut und kann für Tiefenwahrnehmungsexperimente sowie grundlegende Computer-Vision-Projekte verwendet werden.

Code

  • matlab_code_to_run_on_pc.m
  • Arduino-Code
matlab_code_to_run_on_pc.mMATLAB
MatLab-Code, der auf dem PC kompiliert und ausgeführt werden soll
theta =0:(pi/180):pi;s =serial('COM10');s.BaudRate=9600fopen(s)i =0;inc =1;während i<180 A =fgets(s); num(i+1) =str2num(A); i =i+1;endfclose(s)j =1während j<181 tab(j,1) =(j-1)*inc tab(j,2) =num(j) tab(j,3) =num( j)*cosd((j-1)*inc) tab(j,4) =num(j)*sind((j-1)*inc) j =j+1end%figure%polar(theta,num)plot (tab(:,3),tab(:,4))
Arduino-CodeArduino
Arduino-Code zum Hochladen auf Arduino Yun
#include #include #define TRIGGER_PIN 12 #define ECHO_PIN 11 #define MAX_DISTANCE 200 NewPing Sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); Servo-Myservo; int pos =0; int it =10;void setup () { myservo.attach (9); Serial.begin (9600); Verzögerung (3000);} ungültige Schleife () { int i =0; intt =0; int a =0; für (i =0; i <180; i ++) { unsigned int uS =sonar.ping (); myservo.write(i); Verzögerung (20); für (t =0; t  

Schaltpläne

Fritzing-Datei für Servo- und Ultraschallsensorverbindungen YunConfig.fzz

Herstellungsprozess

  1. Erstellen von Monitor-Ambilight mit Arduino
  2. Robotersystem zur Erkennung von Menschen mit Arduino Uno
  3. ULTRASCHALLLEVITATION-Maschine mit ARDUINO
  4. FlickMote
  5. DIY-Voltmeter mit Arduino und Smartphone
  6. Herzfrequenzmesser mit IoT
  7. Android-gesteuertes Spielzeug mit Raspberry Motor Shield
  8. IOT - Smart Jar mit ESP8266, Arduino und Ultraschallsensor
  9. WebServerBlink mit Arduino Uno WiFi
  10. Linienfolger-Roboter