Inhaltsverzeichnis:

Boe-Bot mit Infrarotdetektoren - Gunook
Boe-Bot mit Infrarotdetektoren - Gunook

Video: Boe-Bot mit Infrarotdetektoren - Gunook

Video: Boe-Bot mit Infrarotdetektoren - Gunook
Video: Kingmaker - The Change of Destiny Episode 10 | Arabic, English, Turkish, Spanish Subtitles 2024, November
Anonim
Boe-Bot mit Infrarotdetektoren
Boe-Bot mit Infrarotdetektoren

Dieses anweisbare zeigt, wie man einen Boe-Bot baut und codiert, der ein Labyrinth mit Infrarotdetektoren navigieren kann, um Hindernisse zu vermeiden. Dies ist eine leicht verständliche Anleitung, die einfache Anpassungen an Ihre Bedürfnisse ermöglicht. Dies erfordert ein grundlegendes Verständnis von Schaltung und Programmierung. Für dieses Projekt benötigen Sie die BASIC Stamp IDE-Software. Hier kostenlos zum Download. Sowie der Boe-Bot-Roboter

Schritt 1: Ressourcen

Elektronische Bauteile

Boe-Bot mit Anschlusskabel Parallax Store - BoeBot Kit

5 Infrarot-LEDs Parallax Store - IR-Sender-Montagesatz

5 Infrarot-Schild-Baugruppen

5 Infrarot-Detektoren Parallax Store - BoeBot IR-Empfänger

Widerstände

  • (2) 4,7 kΩ ABRA-Elektronik - 4,7 kΩ
  • (5) 220 ABRA-Elektronik - 220
  • (2) 1 kΩ ABRA-Elektronik - 1 kΩ
  • (5) 2 k ABRA-Elektronik - 2 kΩ

Verschiedene Kabel ABRA Electronics - 22 Gauge Wire

3 LEDs ABRA Electronics - 5mm rote LED

Unterstützung

Rechner

BASIC Stempeleditor - (Freeware)

Werkzeuge

Drahtschneider ABRA Electronics - Drahtschneider (optional)

Abisolierzange ABRA Electronics - Abisolierzange

Sonstiges

Wände (um ein Labyrinth zu bauen)

Schritt 2: Funktionsweise der Infraroterkennung verstehen (optional)

Verstehen, wie die Infraroterkennung funktioniert (optional)
Verstehen, wie die Infraroterkennung funktioniert (optional)

Infrarot-Scheinwerfer

Das Infrarot-Objekterkennungssystem, das wir auf dem Boe-Bot aufbauen werden, ist in vielerlei Hinsicht wie die Scheinwerfer eines Autos. Wenn das Licht der Scheinwerfer eines Autos von Hindernissen reflektiert wird, erkennen Ihre Augen die Hindernisse und Ihr Gehirn verarbeitet sie und lässt Ihren Körper das Auto entsprechend steuern. Der Boe-Bot verwendet Infrarot-LEDs für Scheinwerfer. Sie senden Infrarot aus, und in einigen Fällen wird das Infrarot von Objekten reflektiert und in Richtung des Boe-Bot zurückgeworfen. Die Augen des Boe-Bot sind die Infrarotdetektoren. Die Infrarotdetektoren senden Signale, die anzeigen, ob sie von einem Objekt reflektiertes Infrarot erkennen oder nicht. Das Gehirn des Boe-Bot, die BASIC Stamp, trifft basierend auf diesem Sensoreingang Entscheidungen und steuert die Servomotoren an. Abbildung 7-1 Objekterkennung mit IR-Scheinwerfern Die IR-Detektoren verfügen über eingebaute optische Filter, die nur sehr wenig Licht zulassen, mit Ausnahme des 980-nm-Infrarots, das wir mit dem internen Fotodiodensensor erkennen möchten. Der Infrarotdetektor verfügt außerdem über einen elektronischen Filter, der nur Signale um 38,5 kHz durchlässt. Mit anderen Worten, der Detektor sucht nur nach Infrarot, das 38.500 Mal pro Sekunde ein- und ausgeschaltet wird. Dies verhindert IR-Interferenzen durch übliche Quellen wie Sonnenlicht und Innenbeleuchtung. Sonnenlicht ist eine Gleichstromstörung (0 Hz), und die Innenbeleuchtung neigt dazu, je nach Hauptstromquelle in der Region entweder mit 100 oder 120 Hz ein- und auszuschalten. Da 120 Hz außerhalb der 38,5 kHz Bandpassfrequenz des elektronischen Filters liegen, wird es von den IR-Detektoren vollständig ignoriert.

-Paralax-Studentenführer

Schritt 3: Zusammenbau der IR-LEDs

Zusammenbau von IR-LEDs
Zusammenbau von IR-LEDs

Setzen Sie die IR-LED in den größeren Teil des Gehäuses ein

Umschließen Sie den klaren Teil der LED mit dem kleineren Teil des Gehäuses

Schritt 4: Infrarotpaare testen - Schaltung

Testen von Infrarotpaaren - Schaltung
Testen von Infrarotpaaren - Schaltung
Testen von Infrarotpaaren - Schaltung
Testen von Infrarotpaaren - Schaltung

Bevor wir zu tief ins Detail gehen, testen wir, ob das IR-Paar funktioniert (eine Infrarot-LED und ein Infrarot-Detektor).

Bauen Sie zunächst die obige Schaltung auf dem Steckbrett auf, das oben auf Ihrem Boe-Bot montiert ist

Schritt 5: Infrarotpaare testen - Basiscode

Natürlich müssen wir Code schreiben, damit unsere IR-Paare funktionieren

Dazu wird der FREQOUT-Befehl verwendet. Dieser Befehl wurde für Audiotöne entwickelt, kann jedoch verwendet werden, um Frequenzen im Infrarotbereich zu erzeugen. Für diesen Test verwenden wir den Befehl:

FREQOUT 8, 1, 38500

Dadurch wird eine Frequenz von 38,5 kHz mit einer Dauer von 1 ms an P8 gesendet. Die an P8 angeschlossene Infrarot-LED-Schaltung sendet diese Frequenz. Wenn das Infrarotlicht von einem Objekt in seinem Weg zum Boe-Bot zurückreflektiert wird, sendet der Infrarotdetektor der BASIC Stamp ein Signal, um ihn darüber zu informieren, dass das reflektierte Infrarotlicht erkannt wurde.

Der Schlüssel zum Funktionieren eines IR-Paares besteht darin, 1 ms von 38,5 kHz FREQOUT zu senden und die Ausgabe des IR-Detektors sofort in einer Variablen zu speichern.

Dieses Beispiel zeigt das Speichern des IR-Detektorwerts in einer Bitvariablen namens irDectectLeft

FREQOUT 8, 1, 38500

irDetectLeft = IN9

Der Ausgangszustand des IR-Detektors, wenn kein IR-Signal erkannt wird, ist hoch. Wenn der IR-Detektor die 38500-Hz-Oberschwingung sieht, die von einem Objekt reflektiert wird, ist seine Ausgabe niedrig. Der Ausgang des IR-Detektors bleibt nur für den Bruchteil einer Millisekunde niedrig, nachdem der FREQOUT-Befehl das Senden der Harmonischen abgeschlossen hat. Daher ist es wichtig, den Ausgang des IR-Detektors unmittelbar nach dem Senden des FREQOUT-Befehls in einer Variablen zu speichern. Der von der Variablen gespeicherte Wert kann dann im Debug Terminal angezeigt oder für Navigationsentscheidungen des Boe-Bot verwendet werden.

Schritt 6: Infrarotpaare testen - Hardware + Software

Testen von Infrarotpaaren - Hardware + Software
Testen von Infrarotpaaren - Hardware + Software

Nachdem Sie nun die Grundlagen kennen, können wir die Hardware und Software zusammenstellen, um ein Paar zusammen zu testen und Echtzeit-Feedback zu erhalten, was das IR-Paar erkennt

Sie können versuchen, den Code selbst zu erstellen, oder den folgenden Code verwenden

' {$STEMPEL BS2}

' {$PBASIC 2.5} irDetectLeft VAR Bit DO FREQOUT 8, 1, 38500 irDetectLeft = IN9 DEBUG HOME, "irDetectLeft = ", BIN1 irDetectLeft PAUSE 100 LOOP

  1. Lassen Sie den Boe-Bot am seriellen Kabel angeschlossen, da Sie das DEBUG-Terminal verwenden, um Ihr IR-Paar zu testen.
  2. Platzieren Sie einen Gegenstand, wie Ihre Hand oder ein Blatt Papier, etwa einen Zoll vom linken IR-Paar entfernt
  3. Stellen Sie sicher, dass das Debug Terminal eine 0 anzeigt, wenn Sie ein Objekt vor dem IR-Paar platzieren, und wenn Sie das Objekt vor dem IR-Paar entfernen, zeigt es eine 1 an.
  4. Wenn das Debug-Terminal nicht die erwarteten Werte anzeigt, versuchen Sie die Schritte im Schritt zur Fehlerbehebung.

Schritt 7: Fehlerbehebung (bei Problemen mit dem letzten Schritt)

DEBUG Terminal zeigt unerwartete Werte an

Überprüfen Sie den Stromkreis auf Kurzschlüsse, falsch platzierte oder fehlende Anschlüsse, beschädigte Komponenten, falsche Widerstände oder andere sichtbare Probleme

Überprüfen Sie das Programm auf logische oder Syntaxfehler - Wenn Sie im letzten Schritt Ihren eigenen Code verwendet haben, ziehen Sie in Betracht, den bereitgestellten Code zu verwenden

Immer 0, auch wenn sich keine Gegenstände vor dem Boe-Bot befinden

Überprüfen Sie, ob sich in der Nähe Objekte befinden, die das Infrarotsignal reflektieren. Der Tisch vor dem Boe-Bot könnte die Ursache sein. Bewegen Sie den Boe-Bot in einen offenen Raum, damit die IR-LED und der Detektor nicht von nahegelegenen Objekten reflektiert werden.

Lesen ist die meiste Zeit 1 wenn sich kein Objekt vor dem Boe-Bot befindet, flackert aber gelegentlich auf 0

Es kann zu Interferenzen durch eine nahegelegene Leuchtstoffröhre kommen; Schalten Sie alle Leuchtstofflampen in der Nähe aus und wiederholen Sie Ihre Tests. Wenn das Problem weiterhin besteht, kann Schritt 9 das Problem aufdecken

Schritt 8: Zweites IR-Paar

Zweites IR-Paar
Zweites IR-Paar

Jetzt, da Sie das Programm für das linke IR haben, sind Sie an der Reihe, die Schaltung zu erstellen und das rechte IR-Paar zu programmieren

  1. Ändern Sie die DEBUG-Anweisung, den Titel und die Kommentare so, dass sie auf das richtige IR-Paar verweisen.
  2. Ändern Sie den Variablennamen von irDetectLeft in irDetectRight. Sie müssen dies an vier Stellen im Programm tun.
  3. Ändern Sie das Pin-Argument des FREQOUT-Befehls von 8 auf 2.
  4. Ändern Sie das von der irDetectRight-Variablen überwachte Eingangsregister von IN9 auf IN0.
  5. Wiederholen Sie die Testschritte in dieser Aktivität für das rechte IR-Paar; mit der IR-LED-Schaltung an P2 und dem Detektor an P0 angeschlossen.

Schritt 9: Erkennen von Infrarotinterferenzen (optional)

Erkennen von Infrarotinterferenzen (optional)
Erkennen von Infrarotinterferenzen (optional)

Unabhängig davon, ob Sie Probleme mit der Erkennung von Signalen haben, die nicht erkannt werden sollten, oder ob Sie Ihre IR-Erkennung an einem anderen Ort demonstrieren möchten, sollten Sie auf Interferenzen testen.

Das Konzept dieses Testprogramms ist ziemlich einfach, Sie erkennen nach Infrarotsignalen, ohne welche auszusenden.

Sie können genau die gleiche Schaltung verwenden, müssen jedoch den Code ändern. Sie können Ihren eigenen Code schreiben, aber Sie können den folgenden Code verwenden:

' {$STEMPEL BS2}

' {$PBASIC 2.5} irDetectLeft VAR Bit DO irDetectLeft = IN9 irDetectRight = IN0 IF IN9 = 0 ODER IN0 = 0 THEN DEBUG "Störung erkannt" PAUSE 100 LOOP

Wenn Störungen auftreten, ermitteln Sie die wahrscheinliche Quelle und schalten Sie sie aus/beseitigen Sie sie oder verlegen Sie Ihren Boe-Bot an einen anderen Ort.

Schritt 10: Hinzufügen weiterer IR-Paare

Hinzufügen weiterer IR-Paare
Hinzufügen weiterer IR-Paare

Wenn Sie mehr Genauigkeit bei der Bewegung Ihres Boe-Bots wünschen, können Sie weitere IR-Paare hinzufügen. 3 Verbessert die Leistung erheblich im Vergleich zu zwei; Sie können ein mittleres Paar verwenden, um nach einem direkten Hindernis zu suchen, und zwei seitliche IRs verwenden, um zu bestimmen, wie weit Sie sich wenden müssen. Der Nachteil des 3-IR-Paar-Designs besteht jedoch darin, dass Sie möglicherweise wissen, wann Sie gegen eine Wand rutschen, da das mittlere IR-Paar verwendet wird, um Hindernisse zu erkennen. Um dieses Problem zu lösen, können Sie jeder Seite ein IR-Paar mit einem hohen Widerstandswert hinzufügen - daher wird das Infrarotsignal nur erkannt, wenn sich der Boe-Bot in einem sanften Winkel an einer Seite oder einer Wand befindet.

Schritt 11: Fünf IR-Paare - Schaltung

Fünf IR-Paare - Schaltung
Fünf IR-Paare - Schaltung

Seien Sie vorsichtig, wenn Sie die beiden IR-LEDs auf die Seite richten, da ein Verdrehen dazu führen kann, dass sich die Kabel berühren und einen Kurzschluss verursachen.

Schritt 12: Fünf IR-Paare - Code

Fünf IR-Paare - Code
Fünf IR-Paare - Code

Sie können versuchen, Ihren Boe-Bot zu programmieren, bevor Sie diesen Code verwenden:

' {$STAMP BS2}' {$PBASIC 2.5} 'Fünf IR-Paar-Deatection-Code 'Matthew Shaw '8. Mai 2019 (Version 7) 'Erkennung von Objekten und grundlegende logische Verarbeitung zum Lösen von Labyrinthen

irDetectLeft VAR Bit 'Variable für links

irDetectCentre VAR Bit 'Variable für Mitte irDetectRight VAR Bit 'Variable für rechte Seite irDetectLSide VAR Bit 'Variable für linke Seite irDetectRSide VAR Bit 'Variable für rechte Seite irDetectLSideFar VAR Bit 'Variable für linke Seite niederohmig irDetectRSideFar VAR Bit 'Variable für rechte Seite 'VariVariable für linke Seite

mloop VAR-Wort

Lmotor PIN 15 'Der linke Motor ist an Pin 14 angeschlossen, Impulse gehen hier durch

Rmotor PIN 14 'rechts = 15

'Geschwindigkeiten sind -> 650-750-850

LFast CON 850 'Konstant für linken Motor bei voller Geschwindigkeit RFast CON 650 'Konstant für rechten Motor bei voller Geschwindigkeit

LStop CON 750 'Konstant für linken Motor bei voller Geschwindigkeit

RStop CON 650 'Konstant für rechten Motor bei voller Geschwindigkeit

LMid CON 830 'Konstant für linken Motor bei mittlerer Geschwindigkeit

RMid CON 700 'Konstant für rechten Motor bei mittlerer Geschwindigkeit

LSlow CON 770 'Konstant für linken Motor bei minimaler Drehzahl

RSlow CON 730 'Konstant für rechten Motor bei minimaler Drehzahl

LRev CON 650 'Konstant für linken Motor bei voller Geschwindigkeit im Rückwärtsgang

RRev CON 850 'Konstant für linken Motor bei voller Geschwindigkeit im Rückwärtsgang

FREQOUT 7, 1, 38500 'linke Seite

irDetectLeft = IN8

FREQOUT 6, 1, 38500 'Mitte

irDetectCenter = IN5

FREQOUT 3, 1, 38500 'rechte Seite

irDetectRight = IN2

FREQOUT 10, 1, 38500 'Links schließen

irDetectLside = IN11

FREQOUT 1, 1, 38500 'rechts Schließen

irDetectRside = IN0

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'rechte Seite

irDetectRSideFar = IN0

WENN irDetectLSide = 0 AND irDetectRSide = 0 DANN Haupt-'STARTBEFEHL winken Sie mit den Händen an den beiden seitlichen Detektoren vorbei, um das Programm zu starten

Hauptsächlich:

PAUSE 1000 DO

PULSOUT Lmotor, LFast 'linker Motor läuft mit voller Geschwindigkeit

PULSOUT Rmotor, RFast 'Rechter Motor läuft auf Hochtouren

FREQOUT 6, 1, 38500 'Mitte

irDetectCenter = IN5

FREQOUT 10, 1, 38500 'Links schließen

irDetectLside = IN11

FREQOUT 1, 1, 38500 'rechte Seite

irDetectRside = IN0

WENN irDetectLSide = 0 UND irDetectRside = 1 DANN

DO PULSOUT Lmotor, LFast

FREQOUT 6, 1, 38500 'Mitte

irDetectCentre = IN5 WENN irDetectCentre = 0 DANN Cent

FREQOUT 10, 1, 38500 'Links schließen

irDetectLside = IN11

FREQOUT 3, 1, 38500 'rechte Seite

irDetectRight = IN2

SCHLEIFE BIS irDetectLSide = 1 ODER irDetectRSide = 0

ELSEIF irDetectLSide = 1 UND irDetectRSide = 0 THEN

DO PULSOUT Rmotor, RFast

FREQOUT 6, 1, 38500 'Mitte

irDetectCentre = IN5 WENN irDetectCentre = 0 DANN Cent

FREQOUT 10, 1, 38500 'Links schließen

irDetectLside = IN11

FREQOUT 3, 1, 38500 'rechte Seite

irDetectRight = IN2

SCHLEIFE BIS irDetectLSide = 0 ODER irDetectRSide = 1

'ENDIF

WENN irDetectCentre = 0 DANN 'START

FREQOUT 7, 1, 38500 'linke Seite irDetectLeft = IN8

FREQOUT 6, 1, 38500 'Mitte

irDetectCenter = IN5

FREQOUT 3, 1, 38500

irDetectRight = IN2

PAUSE 1000 'Pause, um das erkannte Signal anzuzeigen

WENN (irDetectLeft = 1 AND irDetectRight = 0) THEN ' Dauer auswerten

GOSUB links abbiegen

ELSEIF (irDetectLeft = 0 UND irDetectRight = 1) DANN

GOSUB drehenRechts

ELSEIF (irDetectLeft = 1 UND irDetectRight = 1) DANN

GOSUB turnEntscheiden

ANDERS

GOSUB turnReverse

ENDIF

ENDIF 'ENDE

SCHLEIFE

ENDE

Biegen Sie links ab:

DO PULSOUT Lmotor, LRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP BIS IN0 = 1 RETURN

Biegen Sie rechts ab:

DO PULSOUT Rmotor, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP BIS IN9 = 1

RÜCKKEHR

drehenUmkehren:

FOR mLoop = 0 TO 50 PULSOUT Rmotor, RRev PULSOUT Lmotor, LRev PAUSE 20 PULSOUT Lmotor, LRev PAUSE 20 NEXT DO PULSOUT Rmotor, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP BIS IN9 = 1

RÜCKKEHR

turnDecide: 'braucht einen geringeren Widerstand, um weiter zu sehen

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'rechte Seite

irDetectRSideFar = IN0

WENN (irDetectLSideFar = 1 AND irDetectRSideFar = 0) THEN ' Dauer auswerten

GOSUB links abbiegen

ELSEIF (irDetectLSideFar = 0 UND irDetectRSideFar = 1) DANN

GOSUB drehenRechts

ELSEIF (irDetectLSideFar = 1 UND irDetectRSideFar = 1) DANN

GOSUB links abbiegen

ANDERS

GOSUB turnReverse

ENDIF

RÜCKKEHR

Empfohlen: