Inhaltsverzeichnis:

Winken Sie mit der Hand, um den OWI-Roboterarm zu steuern ohne Schnürung - Gunook
Winken Sie mit der Hand, um den OWI-Roboterarm zu steuern ohne Schnürung - Gunook

Video: Winken Sie mit der Hand, um den OWI-Roboterarm zu steuern ohne Schnürung - Gunook

Video: Winken Sie mit der Hand, um den OWI-Roboterarm zu steuern ohne Schnürung - Gunook
Video: Christopher deCharms scannt das Gehirn in Echtzeit 2024, November
Anonim
Image
Image
Teile
Teile

DIE IDEE:

Auf Instructables.com (Stand 13. Mai 2015) gibt es mindestens 4 weitere Projekte zum Ändern oder Steuern des OWI-Roboterarms. Kein Wunder, da es sich um ein so großartiges und kostengünstiges Roboterset handelt, mit dem man spielen kann. Dieses Projekt ist im Geiste ähnlich (d. h. den Roboterarm mit Arduino steuern), unterscheidet sich jedoch im Ansatz. [Video]

Die Idee ist, den Roboterarm drahtlos mit Gesten steuern zu können. Außerdem habe ich versucht, die Modifikationen des Roboterarms auf ein Minimum zu beschränken, damit er weiterhin mit dem ursprünglichen Controller verwendet werden kann.

Klingt einfach.

Am Ende steht ein dreiteiliges Projekt:

  1. Ein Handschuh, der mit genügend Sensoren ausgestattet ist, um eine LED und 5 Motoren zu steuern
  2. Ein auf Arduino Nano basierendes Sendergerät, das Steuerbefehle vom Handschuh akzeptiert und drahtlos an das Arm-Controller-Gerät sendet
  3. Ein Arduino Uno-basierter drahtloser Empfänger und ein Motorsteuergerät, das am OWI-Roboterarm befestigt ist

MERKMALE

  1. Unterstützung für alle 5 Freiheitsgrade (DOF) und die LED
  2. Großer roter Knopf - um die Motoren am Arm sofort zu stoppen und Schäden zu vermeiden
  3. Tragbares modulares Design

Für mobile Nutzer: Das "Werbevideo" zu diesem Projekt gibt es hier auf YouTube.

Schritt 1: Teile

HANDSCHUH:

Sie benötigen Folgendes, um einen Handschuhcontroller zu bauen:

  1. Isotoner Smartouch Tech Stretch Stitched Handschuh (oder ähnlich) - auf Amazon.com
  2. Spectra Symboflex Sensor 2.2" - auf Amazon.de
  3. GY-521 6DOF MPU6050 3-Achsen-Gyroskop + Beschleunigungssensor-Modul - auf Fasttech.com
  4. 2X5 BOX HEADER GERADE - auf Phoenixent.com
  5. 2X5 IDC BUCHSE-BUCHSE - auf Phoenixent.com
  6. FLACHBANDKABEL 10 Leiter.050" Rastermaß - auf Phoenixent.com
  7. 2 x 5 mm LEDs - Grün und Gelb
  8. 2 x kleine Knöpfe
  9. Widerstände, Drähte, Nadel, schwarzer Faden, Klebepistole, Lötpistole, Lötzinn usw.

GETRIEBE-STRAP-ON-BOX:

  1. Arduino kompatibles Nano v3.0 ATmega328P-20AU Board - auf Fasttech.com
  2. nRF24L01+ 2,4 GHz Wireless Transceiver Arduino kompatibel - auf Amazon.com
  3. Gymboss ARMBAND - auf Amazon.com
  4. 9V Batteriehalter Box Case mit Drahtleitung EIN/AUS Schalter - auf Amazon.de
  5. 2X5 BOX HEADER GERADE - auf Phoenixent.com
  6. 9v Batterie
  7. 47uF (50V) Kondensator
  8. Widerstände, Drähte, Klebepistole, Lötpistole, Lötzinn usw.

OWI ROBOTERARM CONTROLLER BOX:

  1. Arduino kompatibles Uno R3 Rev3 Entwicklungsboard - auf Fasttech.com
  2. Prototype Shield DIY KIT für Arduino (oder ähnlich) - auf Amazon.com
  3. nRF24L01+ 2,4 GHz Wireless Transceiver Arduino kompatibel - auf Amazon.com
  4. 3 x L293D 16-poliger IC-Motortreiber mit integrierter Schaltung - auf Fasttech.com
  5. 1 x SN74HC595 74HC595 8-Bit-Schieberegister mit 3-State-Ausgangsregistern DIP16 - bei Amazon.de
  6. 47uF (50V) Kondensator
  7. Box für Arduino - auf Amazon.com
  8. Ein / Aus Schalter
  9. 2 x 13 mm Knöpfe (eine rote und eine grüne Kappe)
  10. 2 x 2X7 BOX HEADER GERADE - wie oben auf Phoenixent.com
  11. FLACHBANDKABEL 14 Leiter.050" Pitch - wie oben auf Phoenixent.com
  12. 9-V-Batterie + Clip-On-Anschluss
  13. Widerstände, Drähte, Klebepistole, Lötpistole, Lötzinn usw.

… und natürlich:

OWI Robotic Arm Edge - Roboterarm - OWI-535 - auf Adafruit.com

Schritt 2: PROTOTYPING

PROTOTYP ENTWICKELN
PROTOTYP ENTWICKELN
PROTOTYP ENTWICKELN
PROTOTYP ENTWICKELN

Ich empfehle dringend, jedes der Controller-Geräte zu prototypisieren, bevor Sie alle Komponenten zusammenlöten.

Dieses Projekt verwendet ein paar herausfordernde Hardware:

nRF24L01

Es hat eine Weile gedauert, bis die beiden nRF24 miteinander sprechen. Anscheinend bieten weder Nano noch Uno genug stabilisierte 3,3-V-Leistung, damit die Module konsistent arbeiten. Eine Lösung in meinem Fall war ein 47uF-Kondensator über den Strompins beider nRF24-Module. Es gibt auch ein paar Macken bei der Verwendung der RF24-Bibliothek im IRQ- und Nicht-IRQ-Modus, daher empfehle ich, die Beispiele wirklich sorgfältig zu studieren.

Ein paar tolle Ressourcen:

nRF24L01 Ultra Low Power 2,4 GHz RF Transceiver IC Produktseite

Seite der RF24-Treiberbibliothek

Wenn Sie nur nRF24 + arduino googeln, werden viele Links erstellt. Es lohnt sich zu recherchieren

74HC595 SCHALTREGISTER

Es überrascht nicht, dass ich 5 Motoren, eine LED, zwei Tasten und ein Wireless-Modul steuern musste, dass mir relativ schnell die Pins auf dem Uno ausgingen. Der bekannte Weg, Ihre Pinanzahl zu "erweitern", besteht darin, ein Schieberegister zu verwenden. Da nRF24 bereits die SPI-Schnittstelle verwendet, habe ich mich entschieden, SPI auch für die Schieberegisterprogrammierung (für Geschwindigkeit und um Pins zu sparen) anstelle der Funktion shiftout() zu verwenden. Zu meiner Überraschung funktionierte es von Anfang an wie ein Zauber. Sie können es in der Pinbelegung und in den Skizzen überprüfen.

Steckbrett und Überbrückungsdrähte sind deine Freunde.

Schritt 3: HANDSCHUH

HANDSCHUH
HANDSCHUH
HANDSCHUH
HANDSCHUH
HANDSCHUH
HANDSCHUH
HANDSCHUH
HANDSCHUH

OWI Robotic ARM hat 6 zu steuernde Elemente (OWI Robotic Arm Edge Picture)

  1. Eine LED am GRIPPER des Geräts
  2. EIN GREIFER
  3. EIN HANDGELENK
  4. Ein ELBOW - ist der Teil des Roboterarms, der am Handgelenk befestigt ist
  5. Eine SCHULTER ist der Teil des Roboterarms, der an der BASE befestigt ist
  6. EINE BASIS

Der Handschuh wurde entwickelt, um die LED des Roboterarms und alle 5 Motoren (Freiheitsgrade) zu steuern.

Ich habe einzelne Sensoren auf den Bildern markiert sowie eine Beschreibung unten:

  1. Der GRIPPER wird über die Tasten am Mittelfinger und am kleinen Finger gesteuert. Greifer wird durch Zusammendrücken von Zeige- und Mittelfinger geschlossen. Der Greifer wird durch Zusammendrücken von Ring und kleinem Finger geöffnet.
  2. Das WRIST wird durch den flexiblen Widerstand des Indexfinders gesteuert. Wenn Sie den Finger zur Hälfte kräuseln, senkt sich das Handgelenk, und wenn Sie ihn ganz krümmen, geht das Handgelenk nach oben. Wenn Sie den Zeigefinger gerade halten, wird das Handgelenk gestoppt.
  3. Der Ellenbogen wird durch einen Beschleunigungsmesser gesteuert - das Kippen der Handfläche nach oben und unten bewegt den Ellenbogen nach oben bzw. nach unten
  4. Die SCHULTER wird durch einen Beschleunigungsmesser gesteuert - das Neigen der Handfläche nach rechts und links (jedoch nicht auf den Kopf gestellt!) bewegt die Schulter nach oben bzw. nach unten
  5. Die BASE wird ebenfalls über einen Beschleunigungsmesser gesteuert, ähnlich wie bei der Schulter - das Kippen der Handfläche nach rechts und links ganz nach oben (Handfläche zeigt nach oben) bewegt die Basis nach rechts bzw. links
  6. Die LED am Greifer wird durch gleichzeitiges Drücken beider Greifersteuertasten ein-/ausgeschaltet.

Alle Tastenreaktionen werden um 1/4 Sekunde verzögert, um Jitter zu vermeiden.

Das Zusammenbauen des Handschuhs erfordert etwas Löten und viel Nähen. Im Grunde werden nur 2 Tasten, ein flexibler Widerstand, ein Accel / Gyro-Modul am Stoff des Handschuhs befestigt und die Drähte zur Anschlussbox verlegt.

Zwei LEDs an der Anschlussbox sind:

  1. GRÜN - Einschalten
  2. GELB - blinkt, wenn Daten an die Armsteuerbox übertragen werden.

Schritt 4: SENDERBOX

SENDERBOX
SENDERBOX
SENDERBOX
SENDERBOX
SENDERBOX
SENDERBOX

Die Senderbox besteht im Wesentlichen aus Arduino Nano, nRF24-Funkmodul, flexiblem Kabelanschluss und 3 Widerständen: 2 Pulldown-Widerstände mit 10 kOhm für die Greifersteuertasten am Handschuh und einem Spannungsteiler mit 20 kOhm für den flexiblen Sensor, der das Handgelenk steuert.

Alles ist auf einer Vero-Platine zusammengelötet. Beachten Sie, dass nRF24 über Nano "hängt". Ich hatte Bedenken, dass dies Störungen verursachen könnte, aber es funktioniert.

Die Verwendung des 9-V-Akkus macht das Strap-On-Teil etwas sperrig, aber ich wollte nicht mit LiPo-Akkus herumspielen. Vielleicht später.

Anweisungen zum Löten finden Sie im Schritt zur Pinbelegung

Schritt 5: ARM CONTROL BOX

ARMSTEUERUNGSBOX
ARMSTEUERUNGSBOX
ARMSTEUERUNGSBOX
ARMSTEUERUNGSBOX
ARMSTEUERUNGSBOX
ARMSTEUERUNGSBOX
ARMSTEUERUNGSBOX
ARMSTEUERUNGSBOX

Die Armsteuerbox basiert auf Arduino Uno. Er empfängt drahtlos Befehle vom Handschuh über das nRF24-Modul und steuert den OWI Robotoc Arm über 3 L293D-Treiberchips.

Da fast alle Uno-Pins verwendet wurden, befinden sich viele Drähte in der Box - sie schließt kaum!

Die Box startet konstruktionsbedingt im OFF-Modus (als ob ein Redstop-Knopf gedrückt wird), sodass der Bediener Zeit hat, den Handschuh anzuziehen und sich vorzubereiten. Sobald dies abgeschlossen ist, drückt der Bediener die grüne Taste und die Verbindung zwischen Handschuh und Steuerkasten sollte sofort hergestellt werden (wie durch die gelbe LED am Handschuh und die rote LED am Steuerkasten angezeigt).

VERBINDUNG MIT OWI

Der Anschluss an den Roboterarm erfolgt über einen 14-poligen zweireihigen Header (gemäß obigem Bild) über ein 14-adriges Flachbandkabel.

  • LED-Anschlüsse sind über einen 220-Ohm-Widerstand mit Masse (-) und Arduino-Pin A0 verbunden
  • Alle Motorkabel sind mit den L293D-Pins 3/6 bzw. 11/14 (+/-) verbunden. Jeder L293D unterstützt 2 Motoren, also zwei Pinpaare.
  • OWI-Stromleitungen sind ganz links (+6V) und ganz rechts (GND) des 7-Pin-Anschlusses auf der Rückseite des gelben Oberteils. (Sie können die eingesteckten Drähte auf dem Bild oben sehen). Diese beiden sind an allen drei L293Ds mit den Pins 8 (+) und 4, 5, 12, 13 (GND) verbunden.

Bitte beachten Sie die restliche Pinbelegung im nächsten Schritt

Schritt 6: PIN-VERGABE

PIN-VERGABE
PIN-VERGABE
PIN-VERGABE
PIN-VERGABE
PIN-VERGABE
PIN-VERGABE

NANO:

  • 3,3 V - 3,3 V zu nRF24L01-Chip (Pin 2)
  • 5V - 5V zu Beschleunigungsmesserplatine, Tasten, flexibler Sensor
  • a0 - flexibler Widerstandseingang
  • a1 - gelbe "comms" LED-Steuerung
  • a4 - SDA zu Beschleunigungsmesser
  • a5 - SCL zu Beschleunigungsmesser
  • d02 - nRF24L01 Chip Interrupt-Pin (Pin 8)
  • d03 - Eingang Greifertaste öffnen
  • d04 - Eingang Greifertaste schließen
  • d09 - SPI CSN-Pin an nRF24L01-Chip (Pin 4)
  • d10 - SPI CS-Pin an nRF24L01-Chip (Pin 3)
  • d11 - SPI MOSI zu nRF24L01-Chip (Pin 6)
  • d12 - SPI MISO zu nRF24L01 Chip (Pin 7)
  • d13 - SPI SCK zu nRF24L01-Chip (Pin 5)
  • Vin - 9v +
  • GND - gemeinsame Masse

UNO:

  • 3,3 V - 3,3 V zu nRF24L01-Chip (Pin 2)
  • 5V - 5V zu Tasten
  • Vin - 9v +
  • GND - gemeinsame Masse
  • a0 - Handgelenk-LED +
  • a1 - SPI SS-Pin für Schieberegisterauswahl - an Pin 12 am Schieberegister
  • a2 - ROTER Tastereingang
  • a3 - GRÜNE Tasteneingabe
  • a4 - Richtung Basis rechts - Pin 15 auf L293D
  • a5 - Kommunikations-LED
  • d02 - nRF24L01 IRQ-Eingang (Pin 8)
  • d03 - Basisservo (pwm) Pin 1 oder 9 auf L293D aktivieren
  • d04 - Richtung Basis links - Pin 10 am jeweiligen L293D
  • d05 - Schulterservo (pwm) Pin 1 oder 9 auf L293D aktivieren
  • d06 - Ellbogenservo (pwm) Pin 1 oder 9 auf L293D aktivieren
  • d07 - SPI CSN-Pin an nRF24L01-Chip (Pin 4)
  • d08 - SPI CS-Pin an nRF24L01-Chip (Pin 3)
  • d09 - Aktivieren Sie Handgelenk-Servo (pwm) Pin 1 oder 9 auf L293D
  • d10 - Greiferservo (pwm) Pin 1 oder 9 auf L293D aktivieren
  • d11 - SPI MOSI zu nRF24L01 Chip (Pin 6) und Pin 14 am Schieberegister
  • d12 - SPI MISO zu nRF24L01 Chip (Pin 7)
  • d13 - SPI SCK an nRF24L01 Chip (Pin 5) und Pin 11 am Schieberegister

SHIFT REGISTER UND L293Ds:

  • Pin QA (15) von 74HC595 an Pin 2 von L293D #1
  • Pin QB (1) von 74HC595 an Pin 7 von L293D #1
  • Pin QC (2) von 74HC595 an Pin 10 von L293D #1
  • Pin QD (3) von 74HC595 an Pin 15 von L293D #1
  • Pin QE (4) von 74HC595 an Pin 2 von L293D #2
  • Pin QF (5) von 74HC595 an Pin 7 von L293D #2
  • Pin QG (6) von 74HC595 an Pin 10 von L293D #2
  • Pin QH (7) von 74HC595 an Pin 15 von L293D #2

Schritt 7: KOMMUNIKATION

KOMMUNIKATION
KOMMUNIKATION

Glove sendet 10 Mal pro Sekunde oder jedes Mal, wenn ein Signal von einem der Sensoren empfangen wird, 2 Byte Daten an die Steuerbox.

2 Bytes reichen für 6 Controls, da wir nur senden müssen:

  • EIN / AUS für LED (1 Bit) - Ich habe tatsächlich 2 Bit verwendet, um mit den Motoren konsistent zu sein, aber einer reicht aus
  • AUS/RECHTS/LINKS für 5 Motoren: je 2 Bit = 10 Bit

Insgesamt sind 11 oder 12 Bit ausreichend.

Richtungscodes:

  • AUS: 00
  • RECHTS: 01
  • LINKS: 10

Das Steuerwort sieht so aus (bitweise):

Byte 2 ---------------- Byte 1 ----------------

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 LED-- M5-- M4-- M3-- M2-- M1--

  • M1 - Greifer
  • M2 - Handgelenk
  • M3 - Ellbogen
  • M4 - Schulter
  • M5 - Basis

Byte 1 könnte bequem direkt in das Schieberegister eingespeist werden, da es die Rechts/Links-Richtung der Motoren 1 bis 4 steuert.

Für die Kommunikation ist ein Timeout von 2 Sekunden aktiviert. Tritt ein Timeout auf, werden alle Motoren gestoppt, als ob eine ROTE Taste gedrückt wurde.

Schritt 8: SKIZZEN und mehr…

SKIZZEN und mehr…
SKIZZEN und mehr…

HANDSCHUH

Handschuhskizze verwendet die folgenden Bibliotheken:

  • DirectIO - verfügbar auf Github
  • I2Cdev - verfügbar auf Github
  • Draht - Teil der Arduino IDE
  • MPU6050 - verfügbar auf Github
  • SPI - Teil der Arduino-IDE
  • RF24 - verfügbar auf Github

und drei von mir entwickelte Bibliotheken:

  • AvgFilter - verfügbar von Github
  • DhpFilter - verfügbar auf Github
  • TaskScheduler - verfügbar auf Github

Handschuhskizze ist hier verfügbar: Handschuhskizze v1.3

ARMSTEUERUNGSBOX

Die Armskizze verwendet die folgenden Bibliotheken:

  • DirectIO - verfügbar auf Github
  • PinChangeInt - verfügbar auf Github
  • SPI - Teil der Arduino-IDE
  • RF24 - verfügbar auf Github

und eine von mir entwickelte Bibliothek:

TaskScheduler - verfügbar auf Github

Armskizze ist hier verfügbar: Armskizze v1.3

Datenblätter für verwendete Hardware

  • 74HC595 Schieberegister - Datenblatt
  • L293D Motortreiber - Datenblatt
  • nRF24 Funkmodul - Datenblatt
  • MPU6050 Beschleunigungsmesser/Gyroskop-Modul - Datenblatt

31. Mai 2015 UPDATE:

Eine neue Version von Handschuh- und Armsteuerkastenskizzen ist hier verfügbar: Handschuh- und Armskizzen v1.5

Sie befinden sich auch hier auf github.

Änderungen

  • Zwei weitere Bytes zur Kommunikationsstruktur hinzugefügt, um die angeforderte Motorgeschwindigkeit für Handgelenk-, Ellenbogen-, Schulter- und Basismotoren als 5-Bit-Wert (0.. 31) vom Handschuh proportional zum Winkel der Steuergeste zu senden (siehe unten). Die Arm Control Box ordnet die Werte [0.. 31] den jeweiligen PWM-Werten für jeden der Motoren zu. Dies ermöglicht eine schrittweise Geschwindigkeitssteuerung durch den Bediener und eine präzisere Armhandhabung.
  • Neue Gesten:

1. LED: Tastensteuerungs-LED - Mittelfingertaste - EIN, Kleinfingertaste - AUS

2. GRIPPER: Flexible Streifensteuerungen Greifer - halb gebogener Finger - OFFEN, vollständig gebogener Finger - SCHLIESSEN

3. HANDGELENK: Das Handgelenk wird durch Kippen der Handfläche aus der vollständig horizontalen Position nach OBEN bzw. UNTEN gesteuert. Mehr Neigung erzeugt mehr Geschwindigkeit

4. ARM: Der Arm wird durch Neigen der Handfläche aus der vollständig horizontalen Position LINKS und RECHTS gesteuert. Mehr Neigung erzeugt mehr Geschwindigkeit

5. SCHULTER: Die Schulter wird durch Drehen der Handfläche nach RECHTS und LINKS von der gerade nach oben zeigenden Handfläche gesteuert. Handfläche wird entlang der Ellenbogenachse gedreht (wie beim Winken mit der Hand)

6. BASE: Die Base wird genauso gesteuert wie die Schulter, wobei die Handfläche gerade nach unten zeigt.

Schritt 9: WAS NOCH?

WAS SONST?
WAS SONST?

FANTASIE BEI DER ARBEIT

Wie bei solchen Systemen üblich, könnten sie so programmiert werden, dass sie noch viel mehr können.

Zum Beispiel enthält das aktuelle Design bereits zusätzliche Fähigkeiten, die mit der Standard-Fernbedienung nicht möglich sind:

  • Schrittweise Geschwindigkeitserhöhung: Jede Motorbewegung wird mit einer vordefinierten Minimalgeschwindigkeit eingeleitet, die alle 1 Sekunde schrittweise erhöht wird, bis eine Maximalgeschwindigkeit erreicht ist. Dies ermöglicht eine genauere Steuerung jedes der Motoren (insbesondere des Handgelenks und des Greifers)
  • Schnellere Bewegungsabbruch: Wenn die Arm Box den Befehl zum Stoppen eines Motors empfängt, dreht sie den Motor kurzzeitig für etwa 50 ms um, wodurch die Bewegung "unterbrochen" wird und eine genauere Steuerung ermöglicht wird.

WAS SONST?

Vielleicht könnten aufwendigere Steuergesten implementiert werden. Oder simultane Gesten könnten für aufwendige Steuerungen verwendet werden. Kann der Arm tanzen?

Wenn Sie eine Idee haben, wie Sie den Handschuh neu programmieren können, oder eine Version einer Skizze haben, die ich testen soll - lassen Sie es mich bitte wissen: [email protected]

Schritt 10: *** WIR GEWONNEN !!! ***

*** WIR HABEN GEWONNEN !!! ***
*** WIR HABEN GEWONNEN !!! ***

Dieses Projekt gewann den ersten Preis im von Microsoft gesponserten Wettbewerb Coded Creations.

Hör zu! WOO-HOO!!!

Codierte Kreationen
Codierte Kreationen
Codierte Kreationen
Codierte Kreationen

Zweiter Preis in den codierten Kreationen

Empfohlen: