Faculteit Ingenieurswetenschappen
Academiejaar 2007–2008
Vakoverschrijdend project afstandssensoren voor de e-puck robot
Evelyne Markey Jørgen Trauwaen Christophe Van Helleputte Nicholas Vergeylen 3e bachelor in de ingenieurswetenschappen optie elektrotechniek
Titularis prof. dr. ir. Peter Bienstman Promotor prof. dr. ir. Dirk Stroobandt Begeleiders dr. ir. Benjamin Schrauwen ir. Michiel D’Haene ir. Francis wyffels
Voorwoord Dit verslag kadert in het be¨eindigen van de bacheloropleiding ingenieurswetenschappen. Het vakoverschrijdend project is er om een aantal vaardigheden bij te brengen zoals werken in teamverband, project management en degelijke verslaggeving. Maar het is ook de bedoeling te bewijzen een ingenieursprobleem te kunnen aanpakken en op een effici¨ente manier op te lossen. Dit verslag bespreekt de resultaten van het uitgevoerde project. We houden er aan om enkele mensen in het bijzonder te danken voor hun begeleiding doorheen het project. Prof. dr. ir. Peter Bienstman voor de algemene organisatie van het vak en de tussentijdse presentaties. Onze promotor Prof. dr. ir. Dirk Stroobandt. De begeleiders van het project dr. ir. Benjamin Schrauwen, ir. Francis wyffels en ir. Michiel D’Haene voor hun geduld en uitstekende begeleiding bij het ontwerp van de hardware, het bestellen van de componenten en de hulp bij het schrijven van de software. Ing. Bjorn Vandecasteele, CMSTIMEC, voor de hulp bij het bestukken van de printplaat en de rondleiding in de cleanrooms te Zwijnaarde.
Inhoudsopgave I
Inleiding
4
1 Globale probleemstelling project
4
2 Globale analyse van het probleem
5
II
6
Hardware gedeelte
3 Specifieke probleemstelling en oplossing 3.1 Sensoren . . . . . . . . . . . . . . . . . . 3.1.1 Selectie . . . . . . . . . . . . . . 3.1.2 Werking . . . . . . . . . . . . . . 3.2 E-puck specificaties . . . . . . . . . . . . 3.3 Connectoren . . . . . . . . . . . . . . . . 3.4 Microprocessor . . . . . . . . . . . . . .
. . . . . .
. . . . . .
4 Schema- en bordontwerp met de CAD-tool 4.1 Eagle: Libraries . . . . . . . . . . . . . . . . 4.2 Eagle: Schema . . . . . . . . . . . . . . . . 4.3 Eagle: Board . . . . . . . . . . . . . . . . .
. . . . . .
6 6 6 7 9 10 10
EAGLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12 12 12 13
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
5 Bestukken van de printplaat
15
III
15
Software
6 Specifieke probleemstelling 6.1 Bestaande code . . . . . . 6.1.1 I 2 C . . . . . . . . 6.1.2 Sercom . . . . . . 6.2 Programma’s . . . . . . . 6.2.1 MPlab IDE . . . . 6.2.2 XWisp32 . . . . . 6.2.3 Webots 5.9.0 . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
17 17 17 17 17 18 18 18
7 Ontwerpkeuzes 7.1 Werken met experimenteerbord . 7.2 Software op het uitbreidingsbord 7.2.1 Aansturen van aparte leds 7.2.2 Patroon van leds . . . . . 7.2.3 Uiteindelijke code . . . . 7.3 De e-puck robot . . . . . . . . . . 7.3.1 Het Y-commando . . . . . 7.3.2 De sercom-firmware . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
18 18 19 19 20 20 22 23 23
. . . . . . .
. . . . . . .
. . . . . . .
2
7.3.3
Problemen
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
8 Planning
24
Referenties
26
IV
26
Appendices
A Bestukken in cleanroom
27
B Manual for the sensor extension turret B.1 Installing the turret . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.2 Using the turret . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28 28 28
3
Deel I
Inleiding 1
Globale probleemstelling project
Het probleem dat gesteld wordt, handelt over de e-puck[1], figuur 1. De e-puck is een kleine robot die werd ontwikkeld uit een project aan de Ecole Polytechnique F´ed´erale de Lausanne, een technische universiteit in Zwitserland. Het hoofddoel van dat project was een miniatuurrobot te ontwikkelen die verder gebruikt kon worden in onderwijs en onderzoek. De robot is relatief klein: ze heeft slechts een diameter van 70 mm. Het voordeel van de robot is dat ze reeds heel wat basisfuncties bezit en ook mogelijkheden biedt om uitbreidingen onder de vorm van uitbreidingsborden toe te voegen. De basismodule van de robot bevat reeds 8 afstandssensoren die in staat zijn om obstakels te detecteren en een signaal te geven naar de processor zodat deze van koers kan veranderen. Het probleem bij deze afstandssensoren is dat hun bereik te beperkt is. Ze detecteren volgens de specificaties slechts objecten op maximaal 6 cm afstand. In realiteit blijkt deze afstand nog kleiner te zijn, waardoor de robot tijdens het ontwijken van een obstakel, er toch tegenaan botst. Voor de noden van de PARIS† onderzoeksgroep aan onze faculteit is dit te weinig. Een aantal scriptiestudenten zouden ook gebruik kunnen maken van de verbetering aan de afstandssensoren. Zij zijn momenteel aangewezen op simulaties met het programma Webots voor het uitvoeren van enkele tests.
Figuur 1: De e-puck robot
Het doel van dit project is een uitbreidingsbord te ontwikkelen met meer gevoelige sensoren. Hierbij wordt gedacht aan sensoren die een bereik hebben tot 80 cm. Om de flexibiliteit †
Parallelle informatie systemen
4
van het ontwerp voor verdere toepassingen groot genoeg te maken, dienen we rekening te houden met het feit dat er verschillende types sensoren gebruikt kunnen worden. Verder moet de robot ook meerdere uitbreidingsborden kunnen bevatten, daarom moeten de nodige connectoren voorzien worden.
2
Globale analyse van het probleem
Het probleem wordt eerst opgedeeld in deelproblemen om zo een overzicht te krijgen van wat er moet worden gedaan in het project. Hierboven werd al vermeld dat het een uitbreidingsbord voor de e-puck betreft. Er zal dus een systeem gevonden moeten worden dat ervoor zorgt dat een afstandssensor uitgelezen kan worden en dat deze informatie doorgegeven wordt naar de robot. Aangezien de processor van de e-puck allerhande taken heeft zoals onder andere de aansturing van de motor, de camera en zijn eigen afstandssensoren kan er best een aparte microprocessor op het bord voorzien worden. Op die manier worden de tussenkomsten van de robot beperkt tot enkel het aanduiden van de sensoren die moeten werken en het opvragen van de gegevens. Hieruit volgt dan een eerste opdeling van het probleem: Een hardwaregedeelte. Een softwaregedeelte.
In het hardwaregedeelte moet er voor gezorgd worden dat aan alle elektrische specificaties voldaan wordt. Een elektrisch schema moet worden gemaakt en de concrete implementatie, ook wel de “routering” genaamd, valt ook onder dit gedeelte. Onder het softwaregedeelte valt de uitlezing van de afstandssensoren, de AD-conversie, en de communicatie met de robot. De communicatie met de robot gebeurt over een bus aan de hand van het I 2 C communicatie protocol. Er zal eventueel ook een soort prioriteitslus moeten voorzien worden in de software die ervoor zorgt dat de meest relevante sensoren, bvb vooraan, meer uitgelezen zullen worden dan de andere. De noodzaak van deze laatste specificatie is er om de maximale effici¨entie te bereiken met een minimaal stroomverbruik. Al deze delen gaan gepaard met een grondige studie van de datasheets.
5
Deel II
Hardware gedeelte 3
Specifieke probleemstelling en oplossing
Het hardware ontwerp moet voldoen aan een aantal specificaties opgelegd door enerzijds de eisen van het project en anderzijds door de restricties opgelegd door het elektronicaplatform. Deze zijn de spanning en stroom die de e-puck robot levert, de voorzieningen voor communicatie over I 2 C en de beperkte omvang van de robot.
3.1 3.1.1
Sensoren Selectie
Wat betreft de selectie van de sensoren is er vrijheid. De datasheets van een aantal sensoren zijn bestudeerd om al een eerste selectie door te voeren. De sensoren worden beoordeeld op bereik, kostprijs, grootte en functionaliteit voor dit project. De uiteindelijke kandidaten zijn de GP2D12 sensoren, de GP2Y0A21 sensoren en de GP2y3a001k0F 5-beams sensoren. Deze sensoren van het merk Sharp zijn allen te bestellen bij FARNELL. De 5-beams sensoren, figuur 2 en figuur 3, zijn redelijk groot en relatief duur. Door haar kostprijs en het feit dat de sensor op een iets complexere wijze wordt aangestuurd en reageert in vergelijking met de andere twee zal er in de mate van het mogelijke een afzonderlijke connector worden voorzien. De gebruiker zal bijgevolg zelf kunnen kiezen of er al dan niet gebruik van gemaakt wordt. De sensoren werken allen optimaal voor spanningen tussen 4.5 V en 5.5 V en ze verbruiken gemiddeld een stroom van 33 mA per stuk. Om uitsluitsel te geven voor de andere twee sensoren heeft een kleine test plaatsgevonden. De sensoren worden in 3 contactpinnen gestoken en de uitgang wordt verbonden met een analoge oscilloscoop. Er wordt een blad, dat fungeert als generiek object, verplaatst vanuit een grote hoek tot wanneer de uitgangsspanning van de sensor merkbaar stijgt. Een spanning van 5 V wordt aangelegd, aangezien dit het midden van het interval is waarbinnen de sensoren optimaal werken. Het blad bevindt zich op ± 20 cm.
Figuur 2: Sharp 5 beams sensor
6
Figuur 3: dimensies sharp 5-beams sensor
(a) GP2D12
(b) GP2Y0A21YK
Figuur 4: Opstelling en resultaat test
Het resultaat van de test is te zien op figuur 4(a) en figuur 4(b). De GP2D12 sensor meet nauwer dan de GP2Y0A21YK sensor. De eerste is ook duurder. Aangezien het beter is voor deze toepassing om zo breed mogelijk te kunnen meten, wordt er gekozen om de goedkopere GP2Y0A21YK sensor te gebruiken. 3.1.2
Werking
GP2Y0A21YK : Deze sensoren hebben drie pinnen, figuur 5. De pin met het label “VCC ” is aangesloten op de voedingsspanning. De pin met het label “GND” hangt aan de massa. De laatste pin met label “VO ” hangt aan een I/O pin van een microprocessor of een oscilloscoop zoals bij de testopstelling. Het spanning-afstand verband van de sensor, zoals gevonden in de datasheet, wordt weergegeven in figuur 6.
7
Figuur 5: contactpinnen van de GP2Y0A21YK sensor
GP2y3a001k0F 5-beam sensoren: Deze sensoren hebben 9 pinnen. Er zitten 5 IREDs † in die sequentieel gestuurd worden. Dit wordt gedaan om zowel breed als precies te kunnen meten. Pin 1 tot pin 5 dienen om de IREDs te kunnen aansturen. Pin 6 is de uitgangspin en er is een analoog spanningafstandsverband als de GP20A21YK sensor. Pin 7 is de “GND”-pin en is verbonden met de massa. Pin 8 is de voedingspin en over pin 9 staat de input spanning. Deze spanning stelt een reset signaal voor. Behalve het signaal dat een IRED activeert, moet het signaal op pin 9, dat standaard op “hoog” staat, op “laag” gezet worden. Deze transitie van het signaal zorgt voor het activeren van de afstandsmeting. Bij het routeren blijkt het niet zo evident alle componenten op een effici¨ente manier te plaatsen. De ruimte is beperkt. Aanvankelijk was het de bedoeling om de behuizing aan te passen, nl. de boorgaten te verwijderen. Zo zou enerzijds de werking van de sensoren niet gestoord worden en anderzijds acht nauw aansluitende sensoren op het bord passen. Dit plan moest gewijzigd worden aangezien er een condensator en een mosfet te dicht tegen de rand staan. Op figuur 11(a) is het de condensator boven de onderste sensor en de mosfet aan de sensor links ervan die voor de problemen zorgen. Door deze kleine complicatie wordt er besloten om de sensoren langs onder door te verbinden met de gaten waar eigenlijk een socket of iets dergelijks moest in passen. Dit blijkt uiteindelijk een verbetering te zijn voor het systeem aangezien het nu compacter is. Om deze sectie te besluiten wordt nog opgemerkt dat er moet rekening gehouden worden dat de stroom die per sensor geleverd moet worden relatief hoog is. Deze overweging heeft ertoe geleid een schakelsysteem te introduceren waarbij de sensoren die simultaan werken kunnen gekozen worden. De werking van dit systeem wordt verder uitgediept in sectie 4.2. †
infrared emitting diodes
8
Figuur 6: Spanning-afstand verband GP2Y0A21YK sensor
3.2
E-puck specificaties
Voeding: De sensoren vereisen een voedingsspanning van minimum 4.5 V. De specificaties van de epuck spreekt echter over een voedingsspanning van 3.3 V die geleverd kan worden via de connectoren. In deze situatie zal de robot nooit genoeg spanning kunnen leveren aan de sensoren. Bij het verder bestuderen van reeds bestaande uitbreidingsborden blijkt dat er gebruik gemaakt wordt van een andere connectorpin als voeding. De geleverde spanning aan die pin is volgens de elektrische schema’s de batterijspanning. Voor alle zekerheid wordt er gekozen om een “DCDC converter” in te voegen. De converter die in dit project wordt gebruikt, is de 3.3 V-5 V step-up MAX856 DCDC converter van MAXIM. Het gebruik van de DCDC converter brengt een aantal verplichtingen met zich mee. Op figuur 7 is te zien dat er een aantal condensatoren, een spoel en een diode gebruikt worden om de correcte werking van deze component te verzekeren. Om zeker te zijn dat het bord gevoed kan worden met de juiste spanning, zijn er een aantal soldeerjumpers ingevoegd. Deze laten aan de gebruiker de mogelijkheid open om te kiezen welke connectorpin afkomstig van de e-puck gebruikt wordt om de voedingsspanning te leveren aan het uitbreidingsbord. Communicatie: De communicatie tussen de e-puck en een uitbreidingsbord verloopt door het I 2 C communicatieprotocol. Meer detail omtrent het I 2 C protocol wordt gegeven in sectie 6.1.1. 9
Figuur 7: DCDC converter met verplichte componenten
3.3
Connectoren
De connectoren die de verbinding maken tussen de e-puck robot en het uitbreidingsbord zijn reeds door de ontwerpers van de robot vastgelegd. Het is noodzakelijk dat het uitbreidingsbord connectoren bevat die exact gepositioneerd zijn, zodat deze passen in de connectoren van de robot. Deze zijn de BSE connector (mannetje) en de BTE connector (vrouwtje) van Samtec[4]. Via deze connectoren zal de voedingsspanning en -stroom geleverd worden. Ook de I 2 C bus zal hierlangs passeren. Aangezien we willen verzekeren dat er andere uitbreidingsborden bovenop het te ontwikkelen bord gestapeld kunnen worden, zullen beide types connectoren gebruikt worden. Een paar aan de onderkant en een paar aan de bovenkant.
3.4
Microprocessor
De verwerking van de data zal worden uitgevoerd door een PIC† processor omwille van het feit dat we de processor van de e-puck robot niet willen overbelasten. Deze moet, zoals reeds vermeld, eventueel communiceren met andere borden, de motors aansturen en eventueel andere taken die in de firmware ge¨ımplementeerd zijn. Hier wordt de PIC18F4550 44-pins gebruikt. Het betreft hier een SMD‡ microcontroller met een stabiele interne oscillator. Gezien we geen al te zware applicaties draaien op deze PIC was dit een belangrijk argument bij de keuze van de PIC. De hoofdtaken van de PIC microcontroller in deze toepassing worden als volgt samengevat: † ‡
programmable interface controller surface mounted device
10
inlezen van de outputspanning van de sensoren en de analoog-digitaal conversie van deze data aansturing van de I 2 C bus voor de communicatie met de e-puck robot de verschillende sensoren afzonderlijk aansturen; eventueel met een prioriteit afhankelijk van de sensor
De laatste taak van de PIC is noodzakelijk, omdat niet alle sensoren tegelijk aangestuurd kunnen worden. Ze verbruiken immers gemiddeld 33 mA per stuk. Dit zou moordend zijn voor de batterij van de e-puck. De controle over de pinnen wordt gegarandeerd door I/O pinnen te verbinden met P-kanaal mosfets. Zoals reeds opgemerkt in sectie 3.1.2 dienen deze als kleine schakelaars voor de sensoren die aangestuurd worden door de PIC, zie ook sectie 4.2. Teneinde de PIC processor te kunnen programmeren moet er een connector op het bord voorzien worden die kan aangesloten worden met de programmeerinterface en de computer.
Tot slot van dit onderdeel nog iets over de N-kanaal mosfets die op het bord staan. De bedenking dat de e-puck een systeem is dat gedeeltelijk op een beduidend lager spanningsniveau dan het uitbreidingsbord werkt, heeft ertoe geleid een veiligheid in te bouwen om de correcte communicatie tussen beide systemen te garanderen, figuur 8. De N-kanaal mosfets zorgen ervoor dat een laag of een hoog signaal op het ene bord geconverteerd wordt naar de overeenkomstige spanningswaarden van het andere bord, zodat het signaal propageert zonder het systeem te beschadigen [5]. Er moeten ook 2 veiligheidsweerstanden gebruikt worden om te vermijden dat voeding en de massa met elkaar kortgesloten kunnen worden. Dit is dus eigenlijk een soort elektrische interface tussen de robot en het uitbreidingsbord.
Figuur 8: opvang spanningsverschil voor I 2 C protocol
11
4
Schema- en bordontwerp met de CAD-tool EAGLE
Om heden ten dage een realistisch en degelijk hardware ontwerp te maken is een CAD programma onontbeerlijk. De precisie waarmee de componenten moeten ontworpen worden varieert tussen 0.1 mm tot 0.01 mm. Voor SMD padjes kan dit zelfs al een iets te grote marge zijn. Het programma dat gebruikt wordt in dit project is Eagle. Dit programma bevat drie onderdelen: Libraries Schema Board
Deze onderdelen worden in de volgende secties besproken.
4.1
Eagle: Libraries
Een library in Eagle bevat de informatie over een package van een elektronische component. Veel van de componenten hebben al een ontwikkelde library in Eagle. Voor dit project moesten echter een aantal libraries ontwikkeld worden die nog niet bestonden, ofwel niet te vinden zijn op het internet. Deze libraries zijn: de BSE connector, de BTE connector, de DCDC converter en de behuizing van de sensoren. Een library bestaat uit een “device”, een “package” en een “symbol ”. Een symbol is hetgeen zichtbaar zal zijn in het elektrisch schema. Het is de bedoeling dit zo suggestief mogelijk te maken zodat het schema zo overzichtelijk mogelijk blijft. De package, of de behuizing, is de fysische voorstelling van de component. Als het gaat over SMD componenten zullen de SMD padjes met de correcte afstanden geplaatst worden. Ook boorgaten, via’s en andere relevante fysische informatie worden hier opgeslagen. Het grid van het werkvenster kan zo worden ingesteld dat met een minimum aan inspanning de correcte afstanden verkregen kunnen worden. Het device is hetgeen de verbinding vormt tussen het symbool en de behuizing. Als een elektrisch schema wordt gemaakt met symbolen, kan Eagle via het device deze verbindingen interpreteren als fysische verbindingen tussen de componenten. Hiertoe moet het device expliciet gemaakt worden door pinnen van de behuizing te “verbinden” met de pinnen van het overeenkomstig symbool. Figuur 9 geeft de afbeeldingen van de voor dit project ontworpen behuizingen weer.
4.2
Eagle: Schema
Het schema bevat de elektrische verbindingen tussen de verschillende componenten. De scheiding tussen schema en bord steunt op het idee dat het veel eenvoudiger is om onafhankelijk van de plaatsing van de componenten eerst de elektrische verbindingen aan te brengen. Het schema van het uitbreidingsbord is te zien op figuur 10. Hierop is te zien dat de centraal gepositioneerde PIC in verbinding staat met de gates van de P-kanaal mosfets om de sensoren aan te sturen, de DCDC converter bovenaan, de programmeercomponent onderaan en de connectoren links. De keuze tussen de verschillende componenten uit de bibliotheek van Eagle wordt doordacht gemaakt in functie van de beschikbare componenten voor het solderen. Hierbij wordt vooral aandacht besteed aan de types van de behuizingen en de afmetingen van 12
(a) BSE connector
(b) BTE connector
(c) DCDC converter
(d) inductor
(e) GP2Y0A21YK sensor
(f) Tyco programmeercomponent
Figuur 9: zelfontworpen Eagle bibliotheekcomponenten
de soldeerpadjes. Om het geheel overzichtelijk te houden, wordt aan de belangrijkste verbindingen een naam gegeven. Indien de verbindingen fysisch met elkaar verbonden dienen te worden, maar dit zou impliceren dat het schema een stuk complexer en onoverzichtelijker wordt, kan gekozen worden om verschillende afzonderlijke verbindingen dezelfde netname te geven. In figuur 10 worden bvb de grondpinnen onderling virtueel met elkaar verbonden. Hetzelfde principe wordt gehanteerd voor de connectie tussen de verschillende connectoren. Bij de routeringsstap zal het programma zelf de virtuele verbindingen omzetten in re¨ele connecties. Bij deze manier van werken kan er ook ´e´en bepaalde verbinding van een net aangeklikt worden, waarna alle verbindingen die dezelde netname dragen mee oplichten. Dit blijkt zeer handig te zijn indien fouten opgespoord moeten worden.
4.3
Eagle: Board
Het bord dat te zien is na het maken van het elektrisch schema is aanvankelijk leeg. De componenten die erop moeten met hun onderlinge verbinding staan aan de zijkant. In figuren 11(a) en 11(b) is te zien hoe het resultaat eruit ziet. De plaatsing van de componenten en verbindingen, ofwel de “routering”, is de laatste stap in het hardwareontwerp. De enige zorg die er nu nog is, is de beste positionering van de componenten te vinden. De positie van de connectoren en de gaatjes voor de bevestiging met de robot liggen reeds vast. Deze worden dan ook met uiterste precisie overgenomen zodat het extensiebord en de robot compatibel zijn. Verder moet in acht genomen worden dat de condensatoren, spoel en diode zoals gespecifieerd in de datasheet van de DCDC converter zo dicht mogelijk tegen de DCDC converter zitten. Dit is noodzakelijk voor de goede en stabiele werking ervan. 13
Figuur 10: schema van het uitbreidingsbord
14 17/03/2008 23:52:10 f=0.50 C:\Documents and Settings\Georgeboy\Mijn documenten\2007-2008\Vakoverschrijdend project\eagle
Een ontwerpsbeslissing die genomen wordt, is om te werken met een massavlak. De onderkant van het bord wordt de massa. Op de plaatsen in het massavlak waar een via zit met bijhorende baan, worden beide indien nodig van elkaar ge¨ısoleerd. Een andere belangrijke ontwerpsbeslissing was de diameter van het bord naar 80 mm te brengen, in plaats van de 70 mm van de robot te gebruiken. Zo zullen er enerzijds acht sensoren in plaats van zeven gebruikt kunnen worden en zullen de sensoren anderzijds minder in de weg van andere uitbreidingsborden zitten. Het laat uiteraard ook toe om met iets meer vrijheid de componentjes op het oppervlak van het bord te plaatsen. Nadat alle componenten hun plaats gekregen hebben op het bord, dienen de onderlinge verbindingen gelegd te worden. Deze worden voor de feitelijke routering aangegeven met een dunne lijn afkomstig van de verbinding die reeds voorzien is in het elektrische schema. Een eerste functie die uitgeprobeerd wordt, is de automatische routering. Hierbij laat de ontwerper aan het programma over om te beslissen hoe de baantjes moeten lopen. Dit blijkt minder vlot te werken dan gehoopt, waardoor beslist wordt om de routering volledig manueel uit te voeren. Eerst wordt de voedingslijn gelegd met een dikte van 0.04 inch om zeker te zijn dat er geen problemen zullen ontstaan om voldoende stroom naar de sensoren te voeren. De volgende stap in het ontwerp is de verbinding leggen tussen de andere componenten met baantjes van dikte 0.016 inch. Er wordt zoveel mogelijk geprobeerd om alle verbindingen op de bovenkant van het bord te laten lopen, maar dit is echter niet mogelijk vermits sommige verbindingen gekruist dienen te worden met andere. Om andere verbindingen te kruisen wordt er even verder gerouteerd op de onderkant van het bord. Voor de connectie tussen boven- en onderzijde wordt een via gelegd. Wanneer alle connecties volgens die werkwijze gemaakt zijn, wordt de design rule check of kortweg DRC uitgevoerd. Dit is een test waarbij het programma onder andere nagaat of er genoeg ruimte aanwezig is tussen de verschillende componenten, baantjes, via’s en gaten. Een DRC is noodzakelijk om zeker te zijn dat er geen fouten ge¨ıntroduceerd worden bij het produceren van het bord.
5
Bestukken van de printplaat
Het bestukken van de printplaat vindt plaats in de cleanrooms te Zwijnaarde omdat daar de nodige reflow oven staat. Alle manuele bewerkingen dienen te gebeuren onder een microscoop. Eerst wordt er op de soldeerpadjes een pasta gelegd, zodat de SMD componenten beter gepositioneerd zijn bij het plaatsen van andere componenten en bij het transporteren van de werktafel naar de reflow oven. Daarna wordt met uiterste precisie en met behulp van een pincet elke SMD-component op haar plaats gezet. De BTE-connectoren, die aan de onderzijde moeten komen, worden nog even aan de kant gehouden. Deze componenten zouden eigenlijk eerst moeten geplaatst worden, maar ze zijn te groot en te zwaar om een tweede maal in de reflow oven te zitten waardoor ze er opnieuw zouden kunnen afvallen, in de kokende vloeistof terecht komen en verloren zijn. Nadat alle componenten geplaatst zijn wordt het bord in de reflow oven gestopt. Het bord komt enkele minuten boven een vat kokende vloeistof te hangen met kookpunt van ongeveer 240◦ C. Hierdoor vloeit het soldeersel aan de poten van de SMD componenten open en vormt het ´e´en geheel met de soldeerpadjes. Figuur 12 toont een beeld voor en na de bewerking in de reflow oven. In appendix A staan nog enkele extra foto’s van het werk in de cleanrooms.
15
(a) bovenste laag
(b) onderste laag
Figuur 11: lay-out van het bord
(a) voor reflow
(b) na reflow
Figuur 12: Deel van de printplaat, foto genomen door microscoop
16
Deel III
Software 6
Specifieke probleemstelling
Het bord moet op 2 verschillende manieren bestuurbaar zijn. Enerzijds moet de e-puck met uitbreidingsbord op zichzelf een programma kunnen aflopen en gebruik kunnen maken van de sensors. Daarvoor moeten er enkele functies ge¨ımplementeerd worden die op de PIC van het uitbreidingsbord terecht komen. Anderzijds moet het mogelijk zijn om de robot via een terminal op een pc commando’s door te geven. Voor de reeds bestaande functionaliteiten is dit ge¨ımplementeerd in een file, BTcom.c genaamd. Hier moet een uitbreiding voor geschreven worden.
6.1
Bestaande code
Veel van de te implementeren code is op veel vlakken gelijkaardig aan code die reeds geprogrammeerd werd voor andere implementaties en kan in grote mate overgenomen worden. Een grondige studie van code voor gelijkaardige extensies is dus een grote hulp bij het schrijven van functies. Daarnaast hoort ook een studie van voorgeprogrammeerde functionaliteiten voor de e-puck. Voor dit project wordt gebruik gemaakt van I 2 C, sectie 6.1.1, en Sercom, sectie 6.1.2. Alle benodigde files voor deze protocols zijn terug te vinden op de e-puck website [1]. 6.1.1
I 2C
I 2 C is een protocol dat zorgt voor de communicatie tussen de e-puck robot en een uitbreidingsbord. Er is een mastermodule, deze bevindt zich op de dsPIC van de e-puck waar de informatie verwerkt wordt. Dit zijn functies om informatie op te vragen van de borden en om de borden aan te sturen. Elk bord bevat een slavemodule. Hier staan functies om de commando’s van de mastermodule te verwerken. Indien een slavemodule een opdracht doorgegeven krijgt, genereert deze een interrupt. Zodat onmiddellijk gehoorzaamd wordt aan de mastermodule. 6.1.2
Sercom
Het protocol dat gebruikt wordt om via een terminal rechtstreeks de robot te bedienen, heet Sercom. De volledige implementatie bevindt zich in de BTcom.c file. Er wordt een oneindige lus doorlopen, waarin gekeken wordt of er iets wordt doorgegeven via Bluetooth. Het eerste teken dat moet worden doorgegeven, is een letter, die overeenkomt met een functionaliteit. Voor elke functie van de e-puckrobot is een afzonderlijke letter voorzien. Na deze letter horen een aantal bits, waarbij het aantal wordt bepaald door de gekozen functionaliteit.
6.2
Programma’s
Om het bordje te programmeren wordt gebruik gemaakt van heel wat programma’s. MPlab, Xwisp, Webots.
17
6.2.1
MPlab IDE
MPlab geeft de mogelijkheid om C-code te compileren als hex-code. MPlab wordt ter beschikking gesteld op de website van Microchip [2], die ook microprocessoren leveren. MPlab bevat dan ook de source-code die nodig is om hun microprocessor te programmeren. De files, gecompileerd door MPlab, zijn klaar om op de microprocessor te plaatsen. 6.2.2
XWisp32
Het schrijven naar een microprocessor, via een seri¨ele programmer en de programmeerpinnen op een PCB† , verloopt met het programma XWisp. Met een lijncommando wordt de programmer geactiveerd en wordt naar de PCB geschreven. 6.2.3
Webots 5.9.0
Dit is een programma van Cyberbotics[7]. Er is een gratis trialversie beschikbaar op hun website. Webots is speciaal gemaakt om met robots, zoals de e-puck, te werken. Een ander voorbeeld is de Kephera. Geschreven source-code kan gesimuleerd worden, er kan code naar de e-puck overgezet worden via Bluetooth en er kan informatie opgevraagd worden van de e-puck, bvb camerabeelden.
7
Ontwerpkeuzes
Aangezien het niet verantwoord is om alle sensoren, die elk 33 mA verbruiken, constant metingen te laten uitvoeren, worden de sensoren sequentieel aangestuurd. In deze lus worden de sensoren een voor een aangezet en terug uitgezet, waarbij een meetwaarde wordt opgeslagen. Indien niet alle sensoren gewenst zijn kunnen de niet-gewenste op niet-actief gezet worden. Initieel worden alle sensoren op niet-actief gezet zodat de sensoren niet nodeloos stroom verbruiken. Ook zullen de waarden van de nuttige sensoren vlugger ge¨ update worden indien er minder sensoren metingen uitvoeren. Het hoofdprogramma doorloopt een oneindige lus, waarin enkel de laatste meetwaarden van de actieve sensoren worden opgeslagen. De sensoren hebben een opstarttijd van 52, 9 ms, voordat er een stabiele output wordt gegenereerd. Gedurende deze opstarttijd wordt de processor van het uitbreidingsbord beziggehouden in een wachtlus. Deze processor heeft toch geen andere taken en er gaat geen belangrijke rekentijd verloren. Indien er een opdracht binnenkomt van de e-puckrobot, over I 2 C wordt er een interrupt gegeneerd. Eerst wordt de opdracht verwerkt en dan wordt er verder gegaan met het hoofdprogramma. Er zijn 2 opdrachten voorzien die de e-puckrobot kan doorgeven aan het uitbreidingsbord. Er kunnen sensoren geactiveerd/gedeactiveerd worden en er kunnen waarden opgevraagd worden van een aantal sensoren. De waarden die worden teruggegeven zijn deze die werden opgeslagen bij de laatste meting met de sensor in kwestie.
7.1
Werken met experimenteerbord
Om de software te kunnen testen voor het uitbreidingsbord was bestukt, was er een experimenteerbord van Welek ter beschikking. Dit bordje heeft als microprocessor de PIC18F4550, †
Printed Circuit Board
18
welke op bijna alle vlakken gelijk is met de PIC18F4455, die gebruikt wordt voor het extensiebord. Een eerste kennismaking met het programmeren van microprocessoren was het aansturen van een led. Dit gebeurt door de TRISbits horend bij de pin van de processor, die verbonden is met het ledje in kwestie, op output in te stellen en de uitgang hoog te zetten. Hiermee gaat ook de eerste kennismaking met MPlab en XWisp gepaard. Bij het gebruik van MPlab is de handleiding, die gevonden kan worden op de site van Microchip [2], heel handig. De volgende stap is de software die ´e´en voor ´e´en de sensors hoort aan en uit te zetten, te laten lopen. Om de sensors aan te zetten op het uiteindelijke bord moeten schakelaars aangezet worden. Op dit experimenteerbord komt dit overeen met het laten branden van leds. Na wat zoekwerk verloopt het laten branden van de leds vlot.
7.2
Software op het uitbreidingsbord
Nadat het aan- en uitsturen van leds op het experimenteerbord succesvol is verlopen, wordt het tijd om het ontworpen bord zelf te testen. Op het bord komen echter sensoren en geen leds. Om toch snel te controleren of alles goed werkt, worden er aan de pinnen voor de sensoren leds geschakeld. De middelste van de 3 pinnen wordt eerst omwikkeld met isolatie om zeker geen kortsluiting te veroorzaken, en vervolgens worden leds, waar een weerstand aan wordt gesoldeerd, tussen de voedings- en de grondpin geschakeld, zie figuur 15.
Figuur 13: Sensoren zijn vervangen door leds
7.2.1
Aansturen van aparte leds
Allereerst worden de leds ´e´en voor ´e´en aan- en afgeschakeld, om te kijken of alles weldegelijk goed werkt. Dit is analoog aan het testen op het experimenteerbord. Het verschil houdt in dat er andere pinnen moeten geselecteerd worden op de pic en deze pinnen moeten laag i.p.v. hoog gebracht worden om een led aan te schakelen. Er worden namelijk p-type transistoren tussengeschakeld. Uit de tests bleek dat elke led goed reageerde, behalve degene die wordt 19
aangestuurd door pin RA6. Pin RA6: Uit de datasheet blijkt dat pin RA6 verschillende functies bezit. Naast I/O-pin kan deze pin ook gebruikt worden om een externe oscillator aan te sturen. Er moeten eerst enkele oscillatorinstellingen gewijzigd worden, vooraleer deze pin kan gebruikt als I/O-pin. De functies die we willen instellen zijn: gebruik van de interne oscillator als klok gebruik van RA6 als I/O-pin
In de datasheet staat dat dit verwezenlijkt wordt door de pic in INTIO-mode te zetten. Deze mode wordt ingesteld door de waarde van de FOSC-bits op 1000 te plaatsen. De FOSC-bits zijn een onderdeel van het configuratieregister CONFIG1H, dat te vinden is op adres 300001h. Configuratieregisters zijn niet zoals bvb de poortregisters. De FOSC-bits kunnnen niet rechtstreeks worden gezet, daarvoor moeten eerst andere bits worden aangezet die toelaten configuratiebits te veranderen. Dit zou heel gecompliceerd en onoverzichtelijk worden. Gelukkig zijn er andere mogelijkheden voorzien: Configure: in MPLab bestaat er een mogelijkheid om configuratiebits te zetten. Dit is te vinden onder Configure-Configuration Bits..., figuur 14. Er moet wel een setting aangezet worden dat de configuratiebits niet rechtstreeks in de code kunnen worden aangepast. Er was echter nog altijd geen resultaat. Pragma’s: de configuratieinstellingen kunnen ook gezet worden in pragmadirectives. Dit geeft hetvolgende:
# pragma config FOSC = INTIO Dit geeft nog steeds geen werkend resultaat. Een helpbestand voor configuratieinstellingen onder de installatiedirectory van MPLab (hlpPIC18ConfigSet) brengt echter de oplossing. Als INTOSCIO-EC gebruikt wordt en niet INTIO, zoals in de datasheet staat, wordt RA6 een I/O-pin.
7.2.2
Patroon van leds
De sensoren op ons bord kunnen niet allemaal tegelijkertijd aanstaan, zie sectie 3.4. De sensor heeft maximaal 52, 9 ms nodig om tot een eerste waarde te komen en er moet telkens minstens zolang gewacht worden, vooraleer de sensor opnieuw uit te schakelen. Omdat het later de bedoeling is bepaalde sensoren te laten afwisselen, wordt er eerst getest of alle leds in een cirkel kunnen lopen. 7.2.3
Uiteindelijke code
Met de wetenschap dat de sensoren correct kunnen worden aangestuurd, kan de code voor het uitbreidingsbord nu afgewerkt worden. Er moeten nog 3 functies ge¨ımplementeerd worden:
20
Figuur 14: Configuratiebits
ADC I 2C selectie van sensoren
ADC : De waarde van de sensoren uitlezen gebeurt via analoog-naar-digitaal-conversie. De sensoren geven een bepaald voltage terug waaruit kan bepaald worden hoever het obstakel zich van de sensor bevindt. Dit voltage moet echter eerst omgezet worden naar een digitale waarde om door de pic te kunnen begrepen worden. De code om een sensor uit te lezen is hieronder te vinden. Hierbij wordt gebruik gemaakt van functies uit de standaard header-file: < adc.h >. SetChanADC (ADC CH0 ) ; ConvertADC ( ) ; w h i l e (BusyADC ( ) ) ; r e t u r n v o l t a g e = ReadADC ( ) ; Allereerst moet de pin geselecteerd worden, waar de ADC zal gebeuren. In dit geval is dit AN0 Vervolgens wordt de conversie opgestart, er wordt gewacht tot deze klaar is en het resultaat wordt teruggegeven. De pic beschikt over een 10-bit ADC-conversie. Dit betekent dat de hoogste waarde die kan worden teruggegeven (5 V) overeenkomt met 1024. I 2 C: Om I 2 C te implementeren wordt er ook gebruik gemaakt van een standaard header-file, < i2c.h >. De master is de e-puck. Deze zal steeds de communicatie opstarten en opdrachten geven. Het uitbreidingsbord is de slave, die de instructies uitvoert. Er wordt dus een I 2 Cslave-headerfile en een I 2 C-slave-cfile aangemaakt voor het bord. Allereerst moet de I 2 C ge¨ınitialiseerd worden. Een aantal instellingen worden ingesteld en het adres wordt toegekend. Dit gebeurt allemaal in de functie init I2C, die uitgevoerd wordt in de main-functie. 21
Figuur 15: De extensie-turret
Vervolgens gaat het bord verder met zijn hoofdprogramma, maar telkens wanneer de master de slave contacteert, wordt er een interrupt gegenereerd en gaat de besturing over naar de functie I2C isr. Dit gebeurt in onderstaande code. # pragma code h i g h v e c t o r = 0 x08 void h i g h i n t e r r u p t ( void ) { asm GOTO I 2 C i s r endasm } # pragma code De functie I2C-isr zal de waarden die de master in SSPBUF zet, overzetten naar een buffer bij een schrijfactie. Bij een leesactie zal deze functie waarden uit de buffer in SSPBUF plaatsen. Selectie van sensoren: Zoals reeds vermeld in de probleemstelling, moet een gebruiker kunnen beslissen welke sensoren hij wil gebruiken. In de main-functie worden telkens alle sensoren afgelopen tot er een interrupt binnenkomt. Voor een sensor wordt aangezet, wordt eerst de bijhorende positie in de buffer (van 8 tot 15) gecontroleerd. Indien dit op 1 staat, wordt de sensor aangezet, de bijhorende waarde uitgelezen en op bijhorende positie (van 0 tot 7) in de buffer geplaatst en daarna wordt de sensor weer uitgezet. Hierna wordt overgeschakeld naar de volgende sensor in de kring. Op deze manier zullen alleen de geselecteerde sensoren aangestuurd worden. Voor het uitlezen van sensoren zal men enkel deze waarden teruggeven die in de buffer op de posities zitten die horen bij de geselecteerde sensoren.
7.3
De e-puck robot
Men kan met de e-puck communiceren via het serieel communicatieprotocol sercom over Bluetooth. Hiervoor is het nodig om sercom-firmware op de robot te laden. In deze firmware worden een groot aantal commando’s gedefinieerd, die dienen om de robot vanop de computer te kunnen besturen. Elk commando bestaat uit een letter, eventueel gevolgd door een aantal variabelen. De commando’s worden overgedragen via speciale communicatiesoftware zoals Hyperterminal. Hyperterminal is software die standaard in Windows ge¨ınstalleerd is en toelaat verbindingen te maken met andere computers. Het main-programma van de sercomfirmware zal constant de data inlezen die verstuurd wordt via Hyperterminal en deze data 22
opslaan in een buffer. Vervolgens wordt het eerste karakter van de buffer gelezen en, naargelang deze letter, springt men in de code naar het juiste commando. Om de turret te besturen, is er gekozen voor het commando ’Y’, een letter die nog niet door andere commando’s wordt gebruikt. 7.3.1
Het Y-commando
Het commando werkt als volgt: men geeft in Hyperterminal een ’Y’ in, gevolgd door een komma en daarna 9 bits, elk ook gescheiden door een komma. De eerste bit staat voor de actie die men wil uitvoeren: data opvragen of sensoren instellen. Met de volgende 8 bits kan men beslissen welke sensoren men wil selecteren. Elk van deze bits wordt in een aparte variabele geplaatst via de functie sscanf. Vervolgens wordt de 1e bit bekeken. Als deze op 1 staat wordt is het een leescommando. De robot zal via I 2 C de juiste posities van de buffer op het bord lezen, dit zijn posities 0-7. Hij stuurt dan ’Y’ terug, gevolgd door de opgevraagde waarden. Als deze bit op 0 staat, is het een schrijfcommando. De 8 laatste bits van het commando worden geschreven naar registers 8 tot 15 van de buffer op het bord. De robot stuurt hierna het commando terug naar de terminal, om te laten weten dat dit commando is uitgevoerd. 7.3.2
De sercom-firmware
De sercom-file die wordt aangepast met het extra commando, is te vinden in de installatiemap van Webots, via Webots-transfer-e-puck-firmware. Hier bevindt zich de file firmware.c. In deze file worden een groot aantal standaardcommando’s gedefinieerd die kunnen gebruikt worden om te robot te besturen. Om de aangepaste firmware te compileren wordt gebruikt gemaakt van het bestand Makefile, dat zich in dezelfde map bevindt. Dit is een uitvoerbaar bestand dat kan worden uitgevoerd met een lijncommando. Nadat de file gecompileerd is, kan men deze ook via Webots op de robot laden. In de werkbalk van het programma bevindt zich namelijk de functie Tools-upload to e-puck robot... Vervolgens moet men de hex-file selecteren en de virtuele poort die gebruikt wordt voor de Bluetooth-verbinding en de robot kan geladen worden. 7.3.3
Problemen
Bij het laden van de firmware zijn er echter problemen opgedoken. Zolang het uitbreidingsbord niet op de robot werd geplaatst, was er geen enkel probleem en konden er commando’s uitgevoerd worden via de Hyperterminal. Wanneer deze er echter werd op geplaatst, kon de robot niet meer bestuurd worden. Er kon ook geen software op geladen worden, alsof de bootloader was overschreven. Daarom was het nodig om de hele robot opnieuw te programmeren en alle oorspronkelijke software, inclusief de bootloader, opnieuw op de robot te zetten. Dit ging niet meer via Bluetooth, omdat de bootloader was overschreven. Het ging ook niet via de normale programmer, want die ondersteunt de pic van de e-puckrobot niet. Daarom was er nood aan een ander programming device: ICD2. Dit is een programmer en debugger, die ook dsPic’s kan programmeren, zoals de pic van de e-puckrobot. Hiermee werd de robot weer in zijn oorspronkelijke staat herstelt en kon het testen hervat worden. Het bleek dat het probleem lag bij een extra luidspreker uitbreidingsbord, dat standaard bovenop de e-puck robot zit. Deze moet bovenop elk uitbreidingsbord worden geplaatst om een goede werking te verzekeren. 23
8
Planning
Bij de aanvang van het project werd een gedetailleerde planning opgesteld, figuur 16. Aanvankelijk was het de bedoeling dat elk groepslid even veel inbreng zou geven in zowel de hardware als in de software. Tijdens de uitvoering bleek dit praktisch niet haalbaar. Om sneller vooruitgang te boeken, splitsten we het project op in een hardwaregedeelte en een softwaregedeelte. Beide konden dankzij het experimenteerbordje van Welek parallel uitgevoerd worden. Zodoende hebben Nicholas en Jørgen zich verdiept in het hardwaregedeelte, terwijl Evelyne en Christophe de software voor hun rekening namen. Ten opzichte van de oorspronkelijke tijdsplanning zijn een aantal wijzigingen doorgevoerd. Zo heeft het ontwerp van de hardware iets meer tijd in beslag genomen dan verwacht. Er doken enkele problemen op omtrent het vinden van de exacte positie van de connectoren en de boorgaten voor de bevestigingspunten met de e-puck. Het ontwerp van de printplaat was klaar net voor de paasvakantie, met bijna twee weken vertraging. Deze vertraging heeft nooit voor problemen gezorgd in de planning omdat voor het hardwareontwerp een ruime marge voorzien was met de paasvakantie. Tijdens de paasvakantie is het bordje gemaakt door een extern bedrijf. Het bestukken is om organisatorische redenen een week uitgesteld moeten worden doordat de begeleider niet aanwezig kon zijn in de voorziene week. In eerste instantie is ´e´en van de drie borden bestukt geworden. Enerzijds omdat de begeleiders er zeker van wilden zijn dat het hardwareontwerp foutloos was en anderzijds kost het ook wat tijd om het werken onder een microscoop onder de knie te krijgen. Na een succesvol eerste bord, hebben Nicholas en Jørgen de andere twee borden bestukt in week 13. Ook deze borden werken zoals vooropgesteld, zodat de vakgroep op dit moment over drie uitbreidingsborden beschikt. Ook het schrijven van de software heeft iets meer tijd in beslag genomen dan oorspronkelijk voorzien. Maar ook hier werd bij het opstellen van de planning nog een kleine marge in rekening gebracht tot de deadline van het verslag.
24
"
#
$
!
%#&
'
(
*
$ "
) (
Figuur 16: Vooropgestelde planning
25
Referenties [1] E-puck, http://www.e-puck.org 4, 17 [2] Microcontroller, http://www.microchip.com, 18, 19 [3] Datasheets elektronische componenten, http://be.farnell.com, [4] Samtecconnectoren, http://www.samtec.com, 10 [5] Beveiliging I 2 C bus, “levelshift”, http://delphys.net/d.holmes/hardware/levelshift.html, 11 [6] WELEK, http://ieeesb.elis.ugent.be/welek, [7] Webots, http://www.cyberbotics.com, 18
26
Deel IV
Appendices A
Bestukken in cleanroom
(a) microscoop
(b) component plaatsen
(c) voor reflow
(d) na reflow
(e) mosfet na reflow
(f) groepsfoto
Figuur 17: bestukken van de printplaat in de cleanrooms te Zwijnaarde
27
B
Manual for the sensor extension turret
B.1
Installing the turret
Remove the speaker extension board from the e-puck robot Mount the sensor turret on the robot Place the speaker extension turret back on top of the sensor turret
It is very important to place the speaker extension turret on top of every extension that you place on the robot !! Otherwise, the extension will fail !!
B.2
Using the turret
To communicate with the turret from your computer over Bluetooth, you will have to use a Terminal program like TeraTerm Pro or HyperTerminal. Make a connection with Bluetooth on your computer. Make sure to remember the outgoing COM-port that is assigned. Start TeraTerm Pro. Choose ‘Serial’ and the COM-port number you remembered earlier. Click ‘OK’. Verify that the orange led of the e-puck is turned on. Now you can start sending commando’s to the robot. To view the characters you typed on your screen, open ‘Setup’, ‘Terminal’, then click on ‘Local echo’. The commando used for the sensor turret is ‘Y’. Type ‘Y’, followed by 9 bits, spaced by comma’s. The first bit you type will define a write- or readcommando: ‘1’ to write, ‘0’ to read. The following 8 bits will define which sensors you select. The first sensor is situated after transistor Q2. The others follow clockwise. Type ‘1’ for each sensor you choose, and ‘0’ for the others. For example, if you want to read the data from sensors 1, 3, 5, and 7, type: Y,0,1,0,1,0,1,0,1,0. If you want to make sensors 1,3,5 and 7 active, type: Y,1,1,0,1,0,1,0,1,0. After the commando is typed, ‘Y’ is returned, eventually followed by the data you asked for.
28