Inhaltsverzeichnis:

Einfaches Radarsystem von Magicbit - Gunook
Einfaches Radarsystem von Magicbit - Gunook

Video: Einfaches Radarsystem von Magicbit - Gunook

Video: Einfaches Radarsystem von Magicbit - Gunook
Video: Ohne Wecker aufwachen! - Schlaf Guide 2024, Juli
Anonim

Dieses Tutorial zeigt, wie Sie ein einfaches Radarsystem mit dem HC-SR04-Sensor und dem Microbit-Entwicklungsboard mit Verarbeitung und Arduino-IDEs erstellen.

Lieferungen:

  • SG90 Micro-Servomotor
  • Überbrückungsdrähte (allgemein)
  • Steckbrett (allgemein)
  • Magicbit
  • USB-A-zu-Micro-USB-Kabel
  • Ultraschallsensor - HC-SR04 (Generic)

Schritt 1: Geschichte

In diesem Tutorial erfahren Sie, wie Sie ein einfaches Radarsystem mit dem Magicbit-Kernentwicklungsboard erstellen. Zu diesem Zweck verwenden wir den Ultraschallsensor HC-SR04 und zum Anzeigen von Daten verwenden wir eine Verarbeitungsumgebung. Lass uns anfangen.

Schritt 2: Theorie und Methodik

Lassen Sie uns zunächst besprechen, wie das funktioniert. Das Prinzip ist ganz einfach. Zuerst drehen wir unseren Sensor kontinuierlich um die vertikale Achse im 180-Grad-Bereich. Während dieser Bewegung nehmen wir die Daten über die Entfernung zum nächsten Objekt vom Ultraschallsensor in jedem Winkel auf. Für diesen Prozess verwenden wir Magicbit Core Board. Danach müssen wir die Verbindung mit der Verarbeitungsumgebung herstellen, um unsere Daten anzuzeigen. Dafür verwenden wir ein serielles Kommunikationsprotokoll mit geeigneter Baudrate. Dann entwerfen wir unsere Radarsystemschnittstelle unter Verwendung von Verarbeitungs-IDE. In dieser IDE konfigurieren wir unsere serielle Kommunikation, um Echtzeitdaten über seriell zu erhalten. Wir kommunizieren also in Echtzeit mit Magicbit und zeigen die Daten an, die von Magicbit an die verarbeitende IDE gesendet werden.

Schritt 3: Hardware-Setup

Hardware-Setup
Hardware-Setup
Hardware-Setup
Hardware-Setup

Für dieses Projekt haben wir hauptsächlich drei Hardwarekomponenten verwendet. Sie sind Magicbit, Servomotor und Ultraschallsensor. Die Verbindung zwischen all diesen Teilen ist in der obigen Abbildung dargestellt.

Ultraschallsensor verwendet 3,3 V zum Einschalten. Dafür haben wir den rechten unteren Port des Magicbit-Boards verwendet, um den Ultraschallsensor an Magicbit anzuschließen. Der Servomotor wird jedoch mit 5 V für die ordnungsgemäße Funktion verwendet. Daher haben wir den linken unteren Port verwendet, um den Servomotor mit Magicbit zu verbinden. In diesem Fall verwenden wir das Magic Bit Servo-Anschlussmodul. Aber wenn Sie dieses Modul nicht haben, können Sie drei Überbrückungsdrähte verwenden, um 5V mit 5V, Gnd mit Gnd und Signalstift mit 26-Pin von Magicbit zu verbinden.

Nach dem Bau der Schaltung müssen wir ein kleines mechanisches Teil bauen. Setzen Sie den einseitigen Servostecker mit der kleinen Mutter auf den Servomotor. Befestigen Sie dann den Sensor an diesem Anschluss mit einer L-förmigen Halterung oder auf die richtige Weise. Nach dem ganzen System haben wir auf Steckbrett fixiert. Sie können jedoch auch andere Oberflächen verwenden, um Servo und Magicbit zu montieren.

Schritt 4: Software-Setup

Software-Setup
Software-Setup
Software-Setup
Software-Setup

Die Softwareseite ist etwas komplex. Zum richtigen Verständnis können Sie auf die folgenden Links verweisen, bevor Sie mit dem nächsten Teil fortfahren.

magicbit-arduino.readthedocs.io/en/latest/

hello.processing.org/editor/

Schauen wir uns den Arduino IDE-Code an und wie dieser Code funktioniert.

Zum Antreiben von Servos verwenden wir die ESP32-Servobibliothek. Diese Bibliothek ist fast im Magic Bit Board Manager in der Arduino IDE enthalten. Für den Umgang mit Ultraschallsensoren verwenden wir die newPing-Bibliothek. Diese kann unter folgendem Link heruntergeladen werden.

bitbucket.org/teckel12/arduino-new-ping/do…

Laden Sie die Zip-Datei herunter und gehen Sie zu Tools> Bibliothek einschließen> Zip-Bibliothek in Arduino hinzufügen. Wählen Sie nun Ihre heruntergeladene Zip-Datei der neuen Pin-Bibliothek aus. Für die Kommunikation mit der Verarbeitung haben wir die serielle Kommunikation mit 115200 Baudrate verwendet. Dies ist die am besten geeignete Frequenz für ESP32. In jedem Winkel senden wir unsere Daten mit diesem Protokoll an den Computer. In diesen Daten sind Entfernung zum nächsten vorderen Objekt vom Sensor, Drehrichtung und Drehwinkel enthalten. Mit zwei for-Schleifen drehen wir unser Servo in zwei Richtungen. Während einer Drehung um einen Grad haben wir viermal serielle Daten gesendet. Den Grund dafür können Sie in der Erläuterung des Verarbeitungsteils verstehen.

Jetzt ist es an der Zeit, sich die Verarbeitungsumgebung anzusehen. Dies ist eine Java-basierte Programmiersoftware. Wir können eine Skizze unseres Programms in dieser Skizze in der Verarbeitungs-IDE schreiben. Wir können auch visuelle Ergebnisse aus der Ausführung unseres Programms generieren. Sie können auch die Ausgabe als 2D- und 3D-Objekte vornehmen. Nicht nur das, dies kann für die Bildbearbeitung und vieles mehr verwendet werden.

In der Verarbeitungsskizze gestalten wir zunächst unsere Datenanzeigeoberfläche mit einfachen grafischen Funktionen. Zu Beginn des Codes bauen wir unsere serielle Kommunikation auf, indem wir serielle Bibliotheken einbinden. In der Setup-Funktion müssen Sie etwas ändern, je nachdem, welchen USB-Port Sie verwendet haben, um Magicbit mit dem Computer zu verbinden. Sie können Ihren Port mit der Arduino IDE überprüfen, wenn Sie die Arduino IDE zum Hochladen des Codes einrichten. Ändern Sie dann den Com-Port-Namen im Setup-Teil in der Verarbeitungsskizze. Wenn die seriellen Daten verfügbar sind, wird die Serialevent-Funktion automatisch ausgelöst. Daher besteht die Hauptlogik des Codes darin, in serielle Ereignisse einzubeziehen, um zu verhindern, dass Winkel und Daten fehlen. Wenn neue Daten verfügbar sind, zeichnen wir entsprechend unserem Winkel eine Linie auf dem Bildschirm. Wenn zu diesem Zeitpunkt keine Objekterkennung vorhanden ist, ist die vollständige Linie grün. Wenn nicht, wird ein Teil der Linie entsprechend der Entfernung vom Sensor zum Objekt rot. Auch in der entsprechenden Drehrichtung zeichnen wir weitere 200 Linien in der Nähe dieser Linie mit abnehmendem Grünanteil. zwischen jedem Main haben wir 0,25 Grad Unterschied. Daher erhalten wir bei jeder Graddrehung 4 Messwerte gleichzeitig von Magicbit. Aus diesem Grund können wir schöne suchende Hand-in-Bildschirme erstellen.

Nachdem Sie den Code erfolgreich in Magic hochgeladen und den Hardwareteil erfolgreich eingestellt haben, öffnen Sie die Verarbeitungs-IDE und führen Sie den Code aus, indem Sie auf die Schaltfläche Ausführen klicken. Jetzt haben Sie ein sehr einfaches Radarsystem.

Sie können die Codes nach Belieben anpassen, was Sie anzeigen möchten.

Schritt 5: Fehlerbehebung

Die Verarbeitungsskizze wird nicht ausgeführt.

  • Warten Sie einige Zeit. Die Startzeit hängt von der Leistung Ihres PCs und Ihrer GPU ab.
  • Überprüfen Sie, ob die Seriennummer der seriellen Schnittstelle in der Verarbeitungsskizze korrekt ist.
  • Überprüfen Sie, ob die USB-Verbindung richtig befestigt ist.
  • Überprüfen Sie die Verbindung zwischen Ultraschallsensor und Magicbit.
  • Öffnen Sie den seriellen Monitor und überprüfen Sie, ob die Daten von Arduino stammen. Wenn nicht, liegt das Problem an Ihrem Arduino-Code oder an Ihrer USB-Verbindung.

Servo funktioniert nicht.

  • Überprüfen Sie, ob die USB-Verbindung richtig befestigt ist.
  • Überprüfen Sie die Verkabelung.
  • Überprüfen Sie, ob das Servo in gutem Zustand ist.

Schritt 6: Arduino-Code

#enthalten

#define TRIGGER_PIN 21 #define ECHO_PIN 22 #define MAX_DISTANCE 200 NewPing Sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); #include // Servobibliothek einbeziehen Int Distance; Servo-RadarServo; Void setup () { Serial.begin (115200); RadarServo.attach(26); // Definiert, an welchem Pin sich die Verzögerung des Servomotors befindet (3000); aufrechtzuerhalten. Void Schleife () {// dreht den Servomotor von 15 auf 165 Grad für (int i = 0; i < = 180; i ++) { RadarServo.write (i); Verzögerung (50); distance = sonar.ping_cm(); // Ruft eine Funktion zur Berechnung der vom Ultraschallsensor gemessenen Entfernung für jeden Grad auf for(int j=0;j0){ break; } Serial.print (i); // Sendet den aktuellen Grad an den Serial Port Serial.print (", "); // Sendet ein Additionszeichen direkt neben dem vorherigen Wert, der später in der Verarbeitungs-IDE für die Indizierung von Serial.print(j) benötigt wird; // Sendet den aktuellen Grad an den Serial Port Serial.print ("*"); Seriendruck (1); // Sendet den Distanzwert an den Serial Port Serial.print ("/"); // Sendet ein Additionszeichen direkt neben dem vorherigen Wert, der später in der Verarbeitungs-IDE für die Indizierung von Serial.print (Abstand) benötigt wird; // Sendet den Distanzwert an den Serial Port Serial.print ("."); // Sendet ein Additionszeichen direkt neben dem vorherigen Wert, der später in der Verarbeitungs-IDE für die Indizierung benötigt wird } } // Wiederholt die vorherigen Zeilen von 165 bis 15 Grad for(int i=180;i>=0;i--){ RadarServo.schreibe ich); Verzögerung (50); Entfernung = sonar.ping_cm(); for(int j=75;j>=0;j-=25){ if(i==180 && (j==75 ||j==50 ||j==25)){ weiter; } Serial.print (i); // Sendet den aktuellen Grad an den Serial Port Serial.print (", "); // Sendet ein Additionszeichen direkt neben dem vorherigen Wert, der später in der Verarbeitungs-IDE für die Indizierung von Serial.print(j) benötigt wird; // Sendet den aktuellen Grad an den Serial Port Serial.print ("*"); Serial.print (-1); // Sendet den Distanzwert an den Serial Port Serial.print ("/"); // Sendet ein Additionszeichen direkt neben dem vorherigen Wert, der später in der Verarbeitungs-IDE für die Indizierung von Serial.print (Abstand) benötigt wird; // Sendet den Distanzwert an den Serial Port Serial.print ("."); // Sendet ein Additionszeichen direkt neben dem vorherigen Wert, der später in der Verarbeitungs-IDE für die Indizierung benötigt wird } }

}

Empfohlen: