Bluetooth med NXT-G

Lego Mindstorms är bra! Men ibland kan NXT kännas en en aning begränsad, med sina fyra sensoringångar och tre motorer.

För Rescue A behöver roboten kunna lyfta burken och placera den på en plattform. Det kan vara svårt att åstadkomma med endast en motor. Det skulle vara bra att ha tillgång till fler!

I Dance kan man behöva synkronisera rörelserna mellan flera enheter. Det vore bra om flera robotar kunde prata med varandra!

Lego har tänkt på det här! Innuti NXTn finns en Bluetooth enhet gör att flera NXT kan prata med varandra. Då kan du använda flera NXTer i samma konstruktion och utnyttja portarna i de andra, då får du enkelt 8 ingångar och möjlighet att använda 6 motorer.

Kommunikationen byggs upp med hjälp av ett system av meddelanden. Du kan se varje meddelande som ett brev. Meddelandena skickas till en NXT som läser brevet. Sen är det upp till ditt program i NXTn om den ska skicka tillbaka ett meddelande eller utföra någon speciell handling. Varje NXT har postlådor som du kan använda för att sortera breven (fast jag brukar aldrig använda dem, jag skickar alltid till postlåda 1). Mer om dessa nedan.

Meddelanden kräver lite planering för att de ska fungera tillsammans. Oftast strukturerar man programmet så att en NXT är master, det betyder att det är den som tar alla beslut och bestämmer vad roboten ska göra. De andra NXTerna är slavar och lyder bara order från master. För att göra detta behöver du planera vilka order / meddelanden som master ska kunna skicka till vilken slav, och hur de ska reagera på de olika orderna.

Låta NXTs "lära känna" varandra

Innan några trådlösa meddelanden kan skickas eller tas emot måste de inblandade NXT enheterna "lära känna" (även känt som "para sig med") varandra. Då hittar de varandras adresser och vet att de går att lita på.

Starta de NXTs som du vill koppla ihop. På den NXT som du vill använda som master går du in på Bluetooth menyn och väljer "Sök". Välj en adress för anslutningen (1, 2 eller 3), som du kommer använda för att identifiera slaven.
Första gången två NXTer ser varandra måste du ange ett lösenord för att verifiera att du verkligen vill ansluta dem till varandra. Annars skulle man kunna ansluta till konkurrerande lag och skicka fel meddelanden.

När anslutningen är upprättad bör slaven synas med sitt namn vid motsvarande adress. På slav-NXTn kommer Master synas med adress 0 (Master enheten får alltid adress 0, och om datorn ansluts till NXT via Bluetooth kommer datorn få adress 0).

Nu är master NXTn redo att starta en anslutning till slaven.

Om mastern ska kommunicera med flera NXTs (dock maximalt 3) så måste du upprepa ovanstående för alla slavar.
Observera dock att NXTn är långsam på att byta bluetooth kanal, så mellan byten av adressen som mastern ska prata med, bör det finnas minst en sekunds fördröjning.

Att para två NXTs kan även göras med NXT-G programmering (med Bluetooth Anslutning Blocket). Men jag kan inte se något anledning till att göra det, då du bara behöver para enheterna en gång.

Adress
Varje NXT har en specifik adress i den trådlösa världen. Den används för att veta var meddelanden ska skickas när flera NXTs pratar med varandra.

Postlådor
Varje NXT har 10 postlådor dit meddelanden kan skickas. Varje postlåda kan innehålla maximalt 5 meddelanden. Om postlådan redan har 5 meddelanden när det kommer ett nytt, kommer det äldsta att raderas.

Skicka ett meddelande

För att skicka ett meddelande (efter att alla inblandade NXTs har lärt känna varandra), använder man "Skicka meddelande" blocket från "Action" panelen/paletten. Välj rätt anslutnings adress till den NXT som du vill skicka data till. Sen får du välja ett dataformat (Text, Nummer eller Logik). Skriv in det meddelande du vill skicka. Till slut så väljer du vilken postlåda som meddelandet ska lagras i hos mottagaren.

Om du vill skicka meddelanden från slav till master så ska du ange adress 0.

Kolla postlådor efter meddelanden?

Det finns flera block för att kolla om det har inkommit några meddelanden i en postlåda.

Vänta på speciellt meddelande
Om du väljer "sensor" på vänta blocket kan du sen välja "ta emot meddelande".
Ditt program kommer stå still vid detta block tills NXTn tar emot ett speciellt meddelande. Du ställer in vilken sorts meddelande du väntar på, och exakt vilket värde som ska få programmet att fortsätta frammåt. Dessutom måste du ange vilken postlåda som blocket ska övervaka.

Hämta senaste meddelande från postlåda
Under sensor-paletten finns "Ta emot meddelande"-blocket.
Du anger vilket dataformat du ska läsa, och vilken postlåda du vill kolla i.
Blockets datahub kommer ge värdet som låg i postlådan.

Om du anger ett jämförelsevärde kommer blocket antingen returnera sant eller falskt på sin datahub (Ja/Nej). Det är bra eftersom man oftast vill jämföra det inkomna värdet med ett villkor och nu slipper du ha ett extra jämförelseblock.

Switch blocket / Loop blocket
Om du väljer "Sensor" och "Receive Message" på Switch eller Loop blocket kan även dessa användas med bluetooth kommunikation.

Om du använder Switch blocket kommer programmet välja den övre sekvensen om ett speciellt meddelande finns i angiven postlåda.

Om du använder Loop blocket kommer sekvensen upprepas tills NXTn tar emot ett speciellt meddelande. Då kommer loopen avslutas och programmet forsätter efter den.

glqxz9283 sfy39587stf02 mnesdcuix8
sfy39587stf03
sfy39587stf04