hallo und ein frohes Neues Jahr an alle!
Hier eine kurze Projekt-Vorstellung meines Multi-I/O-Multiplexers für Arduino Mega und Due am Lego NXT:
Leider besitzt der Lego NXT viel zu wenige "native" Motor- und Sensor-Ports, um aufwändigere Roboter-Steuerungen zu bauen. Außerdem sind die Möglichkeiten für verschiedene Sensortypen sehr eingeschränkt, selbst die ge-bitbang-ten I2C-Ports.
Andererseits ist er mit seinem ARM 7 und 64KB RAM recht leistungsstark, extrem einfach zu programmieren, bietet preemptives Multitasking mit super-einfachsten Kommandos, hat ein eingebautes (schnelles) Display, einen recht großen einfach zu beschreibenden 256KB Flash-Speicher, der auch nach Programm-Upload erhalten bleibt (i.P. stdio.h-kompatible Befehle), Buttons, Sound, Bluetooth, und er ist sehr handlich und kompakt.
Um nun sowohl Standard- wie auch Lego-kompatible Sensoren (ADC, I2C, SPI, UART) und Motoren mit Rotations-Encodern an Arduinos (Mega, Due) anzuschließen, zu steuern, und entspr. Werte an einen Lego NXT zu übertragen, habe ich einen I2C-Multiplexer auf der Basis von Arduinos gebaut, um die Möglichkeiten für NXT-Benutzer deutlich zu erweitern.
Es können jetzt vom NXT am Arduino 8 Motoren, 8 Rotationsencoder, 24 Sensorwerte (16 Touch- Sensoren plus 8 weitere ADC oder auch I2C etc., inkl. Geräte wie PixyCam oder PC-Keyboard) gesteuert/gelesen und übermittelt werden (auf dem Foto unten noch nicht sichtbar: die 16 anschließbaren Touch-Sensoren oder Schalter).
Direkt auf dem Arduino sind natürlich noch restliche, weitere Pins (auch über Erweiterungs-Shields) lokal nutzbar:
http://www.mindstormsforum.de/viewtopic.php?f=70&t=8624
Ausblick:
Im Augenblick übernimmt der NXT die führende Rolle zur Roboter-Steuerung. Das lag zunächst daran, dass der Arduino Mega u.a. zuwenig Speicher hat und keine einfachen Multitasking-Möglichkeiten bietet.
Mit dem Due ist das schon deutlich besser, doch hier fehlen weiterhin schnelle Displays und dann hat man plötzlich keinen häufig beschreibbaren Flash mehr im Gegensatz zum Mega - also auch nicht optimal.
Ich hoffe allerdings, dass sich die Sache mit dem Tre verbessert, und dann könnte der die programmtechnische Hauptrolle künftig spielen - und der NXT dient dann künftig als Schnittstelle zu speziellen Lego-Features, die sonst schlecht oder nur extrem aufwändig nachzubilden sind.
Auf dem Foto unten zu sehen:
links NXT mit eigenen 3 Encoder-Motoren und 3 Sensoren, alternativ auch lokale Multiplexer
Mitte rechts: Arduino Due mit 6 Lego-Encoder-Motoren, 4 Lego-Sensoren und 4 Sharp-IR-Distanz-Sensoren (plus weitere 16 Touch-Sensoren an Dpins leider nicht abgebildet)
rechts oben: Motor-Leistungstreiberplatine; jeder der 6 Motor-Anschlüsse kann leistungsmäßig jeweils 10 Lego-Motoren antreiben !
zwischen NXT und Arduino Due: PixyCam (cmuCam 5), am Arduino per SPI, UART oder I2C angeschlossen (hier: per UART)
Share and enjoy!
Lesezeichen