Lego NXT
Foto's hier: [1]
Introductie
Sinds 10 augustus 2009 is versie 2.0 van de Lego Mindstorms NXT te koop. Lego Productnummer : 8457
Deze kit is grotendeels gelijk aan de oorspronkelijke kit. Een paar verschillen zijn :
- Twee druksensoren
- Kleurensensor
- Geen geluidsensor
- Brick : enkele extra commando's maar verder ongewijzigd
- een 100-tal bouwstenen extra
Prijs : In de standaard winkel betaal je 324 euro, maar je kan het goedkoper vinden via Internet. Enkele voorbeelden : Te koop bij Outletplanet.nl voor 259 euro + transport, bij a-tembo.nl voor 265 euro + transport en bij Active Robots aan 185 UK Pound + 28 pond transport.
Met de handleiding kan je gauw alle sensoren testen en je eerste robot bouwen. Voor mij is het 20 jaar geleden dat ik met Lego Technics speelde. Ondertussen lijken er veel meer componenten te zijn en zijn de ontwerpen meer in 3D. Het zoeken van de juiste stukjes is echt tijdrovend. Alles in bakjes doen per soort is aangeraden.
De meegeleverde software is echt knap. Je kan er de instructies volgens en verschillende robots bouwen.
Ik heb tot hiertoe steeds de draadloze Bluetooth connectie gebruikt die prima werkt. Enkel voor het upgraden van de firmware gebruikte ik de meegeleverde USB kabel. Voor de Bluetooth connectie moet je PC dit wel ondersteunen of je moet een Bluetooth adaptertje kopen.
De software is gebasseerd op Labview van National Instruments. Het is een vereenvoudigde versie die er heel mooi uitziet. Mijn zoon Tijs (8 jaar) kon er na enige hulp alleen uren mee spelen en de verschillende stappen volgen. Enkele uren later hadden we reeds een robot (Tribot) die naar een bal gaat, met een bumper sensor stopt, na klappen in de handen de bal nemen en terug rijden tot aan de zwarte lijn. Dit laatste met lichtsensor.
Hier een filmpje: [2]
Programmeren
Er is reeds de mogelijkheid te programmeren in andere talen. De firmware is opensource en te downloaden via lego.mindstorms.com.
Volgende omgevingen zijn beschikbaar om de NXT brick te programmeren :
- BricxCC wat bestaat uit een IDE met NBC,next byte codes -een soort high level assembly, die de NXT brick verstaat en NXC,een C-compiler voor de NXT (gratis)
- RobotC, een C programmeer omgeving van Carnegie Mellon universiteit. (49$)
- Op de NXTasay site is er zeer actief forum.
Bij het gebruik van BricxCC is het mogelijk dat het opbouwen en afbreken van de Bluetooth verbinding tijdens het compilen 30-40 seconden kan duren. Dit is vanwege historische redenen en is met een aan kleine stappen te reduceren tot 4-5 seconden. Oplossing voor de trage BT verbinding in BricxCC.
Sensoren
Standaard meegeleverde sensoren
Volgens de hardware handleiding kan je ook met analoge ingangen, I2C en Fieldbus werken. De connectors zijn RJ12 en duidelijk beschreven. Wel is de RJ12 connector een beetje speciaal met een klipje uit het center. Het moet dus eenvoudig zijn zelf sensoren te bouwen. Wel is de voeding spanning 4.3V en is er voorlopig geen software ondersteuning om in de Labview je eigen sensoren te gebruiken.
De microcontroller is een ARM7 op 50 MHz en er is een Atmega co-processor. Het geheugen is redelijk beperkt als je veel geluiden gebruikt. Met 256 KB heb je natuurlijk geheugen genoeg voor je programma's.
Er zitten 3 motoren bij met vertraging en kwadratuur encoders. Je kan ze eenvoudig instellen per graad, omwenteling of tijd. Ook kan je ermee remmen of vrijlopen
Verder is er een lichtsensor, een contactsensor, een geluidsensor en een ultrasoon afstandsmeter.
Elke sensor of actuator kan je met drag-en-drop in de programmeeromgeving instellen. Telkens kan je alle parameters wijzigen. Door op één knop te duwen compileert hij en gaat de code naar de robot die alles dan uitvoert.
Je kan ook acties opnemen en opnieuw weergeven.
Contactsensor: [3]
Geluidsensor: [4]
Lichtsensor: [5]
Afstandmeter: [6]
Kleurensensor van Lego : Deze kan 7 kleuren herkennen en heeft een driekleuren LED ingebouwd. Hij kan dus ook als lamp gebruikt worden.
Motoren (servos): [7]
Software: [8]
NXT Brick: [9]
Op de lego website kan je je creaties posten in een blog. Er zijn mooie creaties te bekijken en hopelijk staan we daar binnenkort ook bij...
NXTLOG
Aansluitingen
De uitgangen zijn als volgt :
1 MA0 (PWM output moter)
2 MA1 (PWM output moter)
3 GND (aarde)
4 POWERMA (4,3V voeding)
5 TACHOA0 (input encoder A)
6 TACHOA1 (input encoder B)
Een motor kan je aansluiten op 1 en 2.
De ingangen zijn als volgt :
1 ANA (analoge input of stroommeeting)
2 GND (aarde)
3 GND (aarde)
4 IPOWERA (4,3V voeding)
5 DIGIAI0 (Digitale I/O aangsloten op ARM7)
6 DIGIAI1 (Digitale I/O aangsloten op ARM7)
Een LDR kan je aansluiten op 1 en gebruik maken van de voeding 3 en 4.
I2C gaat via 5 en 6.
I2C
Informatie op de site van Sivan Toledo:
I2C Interfacing Part 1: Adding Digital I/O Ports
I2C Interfacing Part 2: Analog-to-Digital, Pressure Sensing
I2C Interfacing Part 3: A Digital Temperature Sensor
I2C Interfacing Part 4: Controlling Extra Motors
I2C Interfacing Part 5: Acceleration Sensing
I2C Interfacing Part 6: Using Microcontrollers
HiTechnic sensoren
Elektronisch kompas: [10]
IRLink die toelaat om de nieuwe 'Power Function' motoren aan te sturen alsof je ze bestuurt met de IR afstandsbediening [11]
Homemade sensoren
NXT Plug (Patrick De Wachter)
Bij Mindsensors kan je voor 5 dollar een zakje met 5 NXT pluggen kopen en dus heeft het geen zin om aan zelfbouw te doen.
Deze plugs kan je mits wat goede wil in een standaard gaatjesbord solderen (je moet een aantal pootjes wat verplooien). Om ze ook te kunnen gebruiken op experimenteerborden besloot ik ze op een stukje gaatjesbord te solderen.
Pin Layout :
- pin 1 = wit = analoge ingang of 9V
- pin 2 = zwart = Ground
- pin 3 = rood = Ground
- pin 4 = groen = 4.3 V
- pin 5 = geel = Digital I/O = SCL
- pin 6 = blauw = Digital I/O = SDA
LDR (Patrick De Wachter)
In het boek 'LEGO Mindstorms Extreme NXT' kan je lezen je met de NXT zg. 'Resistive Sensors' kan maken. Een moeilijke naam om te zeggen dat de NXT alle interne electronica heeft om tussen de zwarte en witte draad een weerstand te kunnen plaatsen. De ene heeft intern een pull-up weerstand van 10K, de zwarte is aan massa verbonden. Als je nu een weerstand toevoegt dan kan je waarden tussen 0 en 1023 uitlezen. Dit hebben we gebruikt om een simpele lichtsensor te maken met exact 1 component : een LDR (en uiteraard een stekker). Om de sensor richtingsgevoelig te maken volstaat het hem in te bouwen tussen 2 zwarte latjes.
NXC code :
task main () { SetSensorLight (S1) ; SetSensorMode (S1, SENSOR_MODE_RAW) ; while (true) { ClearScreen () ; NumOut (0, LCD_LINE1, Sensor(S1)) ; Wait (250) ; } }
PCF 8574 interface (Patrick De Wachter)
Dit was m'n eerste echte interface en gebruikte ik om LEDjes aan en uit te zetten en knopjes uit te lezen. Het is een één op één kopie van de beschrijving van Sivan Toledo's I²C Interfacing part 1
Sharp IR interface (Patrick De Wachter)
Een veelgebruikte afstandssensor is de Sharp GP2Y0A21 of equivalenten. Voor 10 dollar kan je deze kopen. In vergelijking met 40-50 euro voor een Ultrasoon sensor een koopje. Om hem met de NXT te interfacen gebruiken we een MAX127 van Maxim : een 8 kanaals A/D converter met 10 bits resolutie. We kunnen dus met één MAX127 tot 8 sharps uitlezen. In mijn ontwerp heb ik me tot 3 beperkt. De belangrijkste reden is het stroomverbruik. De NXT kan maar 180 mA stroom leveren (op alle poorten samen !) en één sharp verbruikt al 40mA. ik heb wel de mogelijkheid voorzien om een externe voeding aan te sluiten (5V) zodat de poorten van de NXT ontlast worden
Polulu 8 kanaals lijnsensor (Patrick De Wachter)
Lijnvolgen is een typische robot-opdracht. Met de NXT wordt spijtig genoeg maar één lichtsensor meegeleverd. Door de MAX127 (8 kanalen A/D conversie, 10 bits resolutie) te combineren met de Polulu 8-kanaals lichtsensor krijg je een weelde van lichtsensoren voor een prikje.
Aparte voeding voor de sensoren (Patrick De Wachter)
Waar we wel moeten aan denken is dat de stroom die we mogen trekken via een poort van de NXT beperkt is tot 180 mA voor alle sensorpoorten samen. Met de MAX127 en de Polulu lichtsensor komen we aardig in de buurt. Daarom besloot ik met een 9V batterij en een spanningstabilisator een apart voeding te maken die alle 'homemade sensoren' van spanning kan voorzien, zodat de NXT niet overbelast wordt. Een schakelaar om af en aan te zetten, een LEDJe die toont of de spanning aan staat en een stukje velcro om de batterij op z'n plek te houden en klaar is kees !
Arduino (Patrick De Wachter)
Een Arduino is een open-source microcontroller bordje dat je voor 13 euro (Diecimila) tot 40 euro (Mega) kan kopen. De Diecimila is gebaseerd op een ATMEL168 en heeft 14 digitale I/O pinnen, 6 analoge, 6 poorten die PWM aankunnen. De Mega heeft zelfs 54 digitale I/O pinnen, 14 analoge en 14 PWM poorten. Een weelde aan uitbreidingsmogelijkheden dus. Dit alles is via USB te connecteren en programmeren op een PC of Mac zonder de nood aan een extra programmer. Ideaal dus om een intelligente uitbreiding te bouwen voor de NXT. De twee hebben I²C aan boord en kunnen probleemloos communiceren zonder extra componenten : gewoon een NXT plug en drie draadjes doorverbinden en klaar is kees ! De NXT is altijd master, de Arduino is dus de slave.
Connections: NXT: Arduino: Description: ------------------- ------------ ------------ 2 GND (black) <---> Gnd Ground 5 DIGIAI0 (yellow) <---> Analog In 5 SCL 6 DIGIAI1 (blue) <---> Analog In 4 SDA no pullup resistors required (these are handled by the Wire-Libray at the Arduino using the builtin resistors in the Atmega chip)
Voorbeeld software kan je hier downloaden
Robots van clubleden
- Ramacco maakte van een Lego Technics tractor en de Mindstorms NXT een autonome robot : de TractorNXT
- Ramacco bouwde Wall_E van Pixar na
- Elbekko / Ben is bezig aan een Lego Technics vrachtwagen met de Mindstorms NXT : NXTruck
- Mightor / Xander prutst er op los met zijn NXTs.
Weblinks
Projecten
Geavanceerde NXT-G code voorbeelden
Zelfbouwsensoren en voorbeelden
I2C experiment
NBC
RCX to NXT cable
Blogs
Blog Xander
Blog Thenxtstep
Blog Matthias Paul Scholz's
Blog Jim German
NXT bot
nxtasy.org