Lego NXT: verschil tussen versies

Uit RobotMC.be
Ga naar: navigatie, zoeken
Geen bewerkingssamenvatting
Geen bewerkingssamenvatting
 
Regel 1: Regel 1:
[[Category:robot]]
[[Category:sensor_motor]]
[[Afbeelding:NXT_ICON.gif]]<BR><BR>
[[Afbeelding:NXT_ICON.gif]]<BR><BR>
Foto's hier: [http://www.robotmc.org/legontx20061028/]<BR><BR>
Foto's hier: [http://www.robotmc.org/legontx20061028/]<BR><BR>

Huidige versie van 30 dec 2017 om 10:43

NXT ICON.gif

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.

Lego ntx v2.jpgLego ntx v2 robots.jpg


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.

Lego ntx 017.jpg

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.

Lego ntx 003.jpg

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.

TRIBOT.gif 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.

TOUCH SENSOR.gif Contactsensor: [3]
SOUND SENSOR.gif Geluidsensor: [4]
LIGHT SENSOR.gif Lichtsensor: [5]
SONIC SENSOR.gif Afstandmeter: [6]
COLOR SENSOR.jpg Kleurensensor van Lego : Deze kan 7 kleuren herkennen en heeft een driekleuren LED ingebouwd. Hij kan dus ook als lamp gebruikt worden.
SERVO MOTOR.gif Motoren (servos): [7]
Software: [8]
NXT.gif 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

HTCompass.jpg Elektronisch kompas: [10]
HTIRLink.jpg 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.

Nxt mindsensors plugs2.jpg Nxt mindsensors plugs.jpg


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.

NXT plug.jpg NXT plug2.jpg


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.

NXT resistive network.jpg NXT LDR connection.jpg NXT LDR sensor.jpg
LDR breadbord 1.jpg LDR breadbord 2.jpg


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

Nxt pcf8574.jpg

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

Nxt max127 SharpIR.jpg

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.

Nxt max127 polulu.jpg Nxt max127 polulu 2.jpg

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 !

Nxt max127 polulu 3.jpg

Arduino (Patrick De Wachter)

Nxt arduino.jpg

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

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