• No results found

Anslutning till datorn

In document Aktivt balanserad cykel (Page 157-162)

Innehållsförteckning

3.2 Genomförande

3.2.1 Anslutning till datorn

För att bekanta sig med de tre ingående komponenterna och säkerhetsställa att dessa fungerade som de skulle upprättades anslutningar mellan respektive komponent och en dator. Sedan användes ett terminalprogram (HyperTerminal och Zterm) för att lyssna efter och skicka data via serieporten.

Men då en dator använder RS-232-standard med en annan spänningsnivå för att definiera logiska 1:or och 0:or krävdes en spänningsomvandlingskrets. Denna fanns inbyggd i ATMELs utvecklingskort STK500 varför denna användes. Vidare har STK500 även lättåtkomliga anslutningar, LEDs och andra finesser som kan vara till stor hjälp vid utvecklandet av ett fungerande program.

Det är även värt att här notera att blåtandsmodulens arbetsspänning är lägre än ATMega16:s vanliga 5 V. Således ställdes hela STK500-kortets spänning om till 3 V. Även den färdiga prototypen drivs med 3 V spänningsmatning.

Notera även att kommunikationen emellan de ingående komponenterna och datorn sker vi UART, dvs. asynkront med stoppbitar istället för synkront som emellan två blåtandsmoduler som har tillgång till en masterklocka att rätta sig efter.

Parani ESD-210 ⇔ Dator

Figur 14. Uppkopplingsschema över anslutningen mellan Parani ESD-210 och MacBook med hjälp av STK500.

För att bekanta sig med blåtandsmodulen Parani ESD-210 anslöts den till STK500-kortets UART-ingångar (RXD och TXD, se figur 15) samt GND och VCC. STK500 kopplades sedan samman med datorns USB-uttag via en USB-dongel och sitt eget RS-232-uttag (se figur 16).

Figur 16. STK500-kortets RS-232portar som datorn anslöts till via USB-dongel.

Figur 15. STK500-kortets RXD och TXD-pins.

Bluetooth - Fördjupningsarbete i Mekatronik Kim Öberg

Därefter startades programmet HyperTerminal för att kontrollera modulens funktionalitet och hur den svarade på AT-kommandon (se Bilaga 1). Nedan, i figur 17, följer ett exempel på hur en sådan ”konversation” kunde se ut.

Figur 17. Samtal mellan Parani ESD-210 och MacBook med hjälp av AT-kommandon.

I det här exemplet ombeds modulen att redogöra för sin generella status (AT+BTINFO?), att söka efter andra blåtandsenheter i närheten (AT+BTINQ?) samt att ansluta till en av enheterna (ATD[blåtandsadress]). Modulen visade sig alltså fungera helt korrekt.

ATMega16 ⇔ Dator

Figur 18. Uppkopplingsschema över anslutningen mellan ATMega16 och MacBook med hjälp av STK500.

Efter att blåtandsmodulen testats och visat sig svara korrekt på skickade AT-kommandon återstod att testa och ställa in mikrokontrollern för att säkerhetsställa att den skulle återge de programmerade AT-kommandona korrekt till blåtandsmodulen.

För att testa detta användes ett C-program skrivet av Dean Camera som låter mikrokontrollern skicka tillbaka de kommandon som skickats till den (fungerar som ett eko). Detta program flashades till mikrokontrollern med hjälp av AVR Studio 4, se Bilaga 6.

PD.0 och PD.1 på STK500 kopplades därefter till RXD och TXD för att kunna ”lyssna” och tala med mikrokontrollern vida HyperTerminal. Från datorn skickades sedan imiterade AT-kommandon för att kontrollera att mikrokontrollern tog emot och skickade tillbaka dessa oförvrängda.

Bluetooth - Fördjupningsarbete i Mekatronik Kim Öberg

19

För att denna seriella kommunikation, UART, skulle fungera korrekt krävdes ett antal grundinställningar i olika register utöver inställning av klockfrekvens och baudrate (antalet skickade symboler per sekund), nämligen de som återfinns nedan i tabell 2.

Vad det gäller klockfrekvens och baudrate hade det optimala varit att använda multiplar av klockfrekvensen 1,8432 MHz då denna enligt tabeller i ATMega16:s datablad ger 0,00 % fel men för det krävs en extern kristall. Istället användes samma tabell för att hitta andra klockfrekvens- och baudrate-inställningar vars fel var mycket nära noll. Dessa inställningar återfinns även dem i tabell 2.

Tabell 2. Inställningar för upprättandet av en fungerande UART-kommunikation.

Klockfrekvens Baudrate UBRR Antal bitar Paritet Stopbitar

4 MHz 9600 25 8 st Ingen 1 st

Nedan, i figur 19, följer ett exempel där datorn skickar AT-kommandon till mikrokontrollern som agerar eko och skickar tillbaka dessa oförvrängda.

Figur 19. Imiterad konversation med AT-kommandon mellan dator och ATMega16.

När detta väl kontrollerats återstod endast att kontrollera mobilen K750i, bestämma önskad funktionalitet och motsvarande AT-kommandon och sedan implementera detta i ett C-program för mikrokontrollern.

Bluetooth - Fördjupningsarbete i Mekatronik Kim Öberg

K750i ⇔ Dator

Figur 20. Uppkopplingsschema över anslutningen mellan K750i och MacBook med hjälp av en emulerad serieport.

Efter att både Parani ESD-210:s och ATMega16:s beteende verifierats undersöktes K750i samt vilka AT-kommandon som den stödde. Tyvärr visade sig dokumentationen på detta område vara ytterst bristfällig och mycket arbete gick därför åt till research, att sammanställa den information som fanns samt att testa alla AT-kommandon. Nedan, i tabell 3, följer några korta exempel. För en utförligare lista av tillgängliga AT-kommandon, se Bilaga 2.

Tabell 3. Exempel på AT-kommandon som stödjs av K750i.

AT command Förklaring Svar

AT+GMI Skriver ut tillverkaren Sony Ericsson

AT+GMM Skriver ut

tillverkare/modell Sony Ericsson K750i

AT+CGMR Skriver ut mjukvaruversion R1DB001 R1DB001

prgCXC125952_EU_1_CL

AT+CGSN Skriver ut IMEI 356551000332710

Testningen skedde i terminalprogrammet Zterm som är Mac-motsvarigheten till HyperTerminal. Detta då det uppstod problem när den Virtualbox-installerade Windowsdatorn skulle försöka ansluta till K750i. Således användes istället hostdatorn MacBook vid terminalprogramtestningen av K750i.

Själva kopplingen skedde genom att aktivera blåtand på båda enheterna och sedan parkoppla dessa. I och med detta skapades en virtuell emulerad RS-232-port med stöd i profilen Serial Port Profile (se figur 20). Via denna kunde datorn sedan med hjälp av terminalprogrammet Zterm ”prata” med mobilen. Se exempel på en sådan konversation till höger i figur 21.

Här har mobilen med AT-kommandon ombetts att redogöra för sin tillverkare, nuvarande batteriladdning samt

de telefonboksposter som börjar på bokstaven K. Figur 21. Konversation mellan dator och K750i i programmet Zterm.

Bluetooth - Fördjupningsarbete i Mekatronik Kim Öberg

21

3.2.2 Programidé

När väl alla ingående komponenter testats och visat sig fungera korrekt var det dags att skriva det program som med hjälp av mikrokontrollern skulle skicka AT-kommandon till blåtandsmodulen som i sin tur skulle skicka dessa vidare till mobilen. Detta gjordes genom att initiera UART kommunikationen med den byggda funktionen

void init_uart(unsigned int UBRR)

som när den ropas på i main-programmet ställer in alla de register som behövs för att initiera seriekommunikationen.

För att sedan kunna skicka AT-kommandon till blåtanden konstruerades en funktion

void send_data(unsigned char sent_byte)

som först, genom pollning, kontrollerar att UDRE-flaggan (data register empty) är hög, dvs. att det inte finns någon risk att skriva över data vid fortsatt sändning. När detta är kontrollerat skickar funktionen AT-kommandot bit för bit tills den nått slutet, d.v.s. \0 (null-sign) dyker upp, vilket avbryter sändningen. Funktionen send_data triggas genom knapptryckningar, där olika AT-kommandon skickas beroende på nedtryckt knapp (se flödesschema nedan i figur 22).

Figur 22. Hur programmet beter sig beroende på knapptryckningar.

För att ta emot data (inkommande svar på skickade AT-kommandon) användes interrupt-vektorn

USART_RXC_vect, dvs. ett interrupt som triggas när mottagningen av data är slutförd och RXC-flaggan är satt till hög. Programmet lägger då över den inlästa biten (flaggan triggas för varje mottagen bit) i variablen received_byte. Denna läggs sedan på den första platsen i UART-bufferten receive_buffer[bit_count] varefter platsindikatorn bit_count räknas upp.

När mottagningen av data är klar, dvs. null-sign har dykt upp, sätts indikatorn end_of_line till hög varefter funktionen strstr letar efter lämpliga substrings i bufferten. Hittas CONNECT 000FDE9BCB42 anropas funktionen lights_on som tänder LED-lampan för att indikera att blåtanden är ansluten till mobilen.

Bluetooth - Fördjupningsarbete i Mekatronik Kim Öberg

3.2.3 Prototyp v1.0 – STK500

In document Aktivt balanserad cykel (Page 157-162)

Related documents