univerzitet crne gore elektrotehniČki fakultet kovačević - govorni automat... · 2011-10-24 ·...

35
Govorni automat sa GSM modemom Kandidat: Jovan Kovačević Mentor: Prof. dr Zoran Mijanović UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Podgorica, jun 2011. godine

Upload: others

Post on 20-Jul-2020

3 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Govorni automat sa GSM modemom

Kandidat: Jovan Kovačević

Mentor: Prof. dr Zoran Mijanović

UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET

Podgorica, jun 2011. godine

Page 2: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKUTET Broj: _____________ Podgorica, _____________ 2011. godine Kandidat: Jovan Kovačević Broj indeksa: 2/10

Naziv rada:

Govorni automat sa GSM modemom na MCB2140 razvojnoj ploči

Datum izdavanja rada :

Datum predaje rada :

Mentor:

Kandidat:

Prof. Dr. Zoran Mijanović

Jovan Kovačević

Page 3: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

IZJAVA O SAMOSTALNOM RADU

Ovim izjavljujem da sam diplomski rad uradio samostalno uz pomoć konsultacija sa mentorom i navedene literature.

_______________________

Jovan Kovačević

Rad odbranjen dana: ___. ___. 2011. godine pred Komisijom u sastavu:

1. ___________________________ (Predsjednik)

2. ___________________________ (Mentor)

3. ___________________________ (Član)

sa ocjenom _____ (__________).

Page 4: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

Sadržaj

1. UVOD ........................................................................................................................................... 1

2. PRINCIP RADA I HARDVERSKA POZADINA SISTEMA ..................................................... 2

PRINCIP RADA GOVORNOG AUTOMATA ....................................................................................................................... 2

MCB2140 RAZVOJNA PLOČA SA MIKROKONTROLEROM LPC2148 ................................................................... 4

PRISTUP MEMORIJSKOJ KARTICI ................................................................................................................................... 6

Načini prenosa podataka ...................................................................................................................................... 7

FAT Fajl sistem ........................................................................................................................................................... 7

Dizajn FAT sistema ................................................................................................................................................... 8

Alokaciona tabela fajlova (FAT) ........................................................................................................................ 8

Razlika između FAT12/16 i FAT32 .................................................................................................................. 9

Iscjepkanost fajlova - Fragmentacija .............................................................................................................. 9

FAT u integrisanim sistemima ......................................................................................................................... 10 Karakteristike ..................................................................................................................................... 10

Real-Time Library Flash File System ............................................................................................................ 11

Pregled rutina za komunikaciju ..................................................................................................................... 12 Rutine za SPI komunikaciju ............................................................................................................... 12 I/O rutine........................................................................................................................................... 12 Rutine za manipulaciju fajlovima ....................................................................................................... 12

3. SOFTVERSKO RJEŠENJE GOVORNOG AUTOMATA ......................................................... 13

KONVERZIJA IZ WAVEFORM AUDIO U TEKSTUALNI FORMAT .............................................................................. 13

4. KOMUNIKACIJA SA MODEMOM I EKRANOM ................................................................... 15

UART INTERFEJS ............................................................................................................................................................ 15

AT KOMANDE NA MODEMU TELIT GE863 .............................................................................................................. 15

“Hayes” komandni set .......................................................................................................................................... 16

GSM AT komande ................................................................................................................................................... 17 Automatsko podešavanje baudrate-a ................................................................................................. 17 Omogućavanje slanja proširenih izvještaja o grešci ........................................................................... 17 Provjera postojanja kartice i ispitivanje statusa ................................................................................. 17 Upis novog PIN-a ............................................................................................................................... 18 Provjera statusa mreže ....................................................................................................................... 18 Identifikacija na mreži ....................................................................................................................... 19 Postavljanje uređaja u glasovni režim ................................................................................................ 19 Pozivanje željenog broja ..................................................................................................................... 19 Prekid glasovnog poziva .................................................................................................................... 20 Javljanje na glasovni poziv ................................................................................................................ 20 Ostale funkcionalnosti GSM modema ............................................................................................... 20

PODEŠAVANJE MODEMA ................................................................................................................................................ 20

UPRAVLJAČKA APLIKACIJA NA RAČUNARU ............................................................................................................... 21

5. ZAKLJUČAK .............................................................................................................................. 22

6. PRILOG ...................................................................................................................................... 23

Page 5: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

7. DODATAK A – FORMAT KOMUNIKACIJE SA MODEMOM ............................................. 24

Globalna sintaksa AT komandi kog GSM modema ................................................................................. 24

Očekivana vremena čekanja na odgovor za određene GSM komande od interesa ................. 24

8. DODATAK B – ZNAČAJNIJE RUTINE FAJL SISTEMA ....................................................... 25

9. LITERATURA ........................................................................................................................... 27

Page 6: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

Popis tabela:

Tabela 1 – Karakteristike razvojne ploče Keil MCB2140 ............................................................................................. 4

Tabela 2 -Standardne vrijednosti unosa koje opisuju određeni sektor na disku, kao i njihovo poređenje između različitih tipova FAT sistema .............................................................................................................. 9

Tabela 3 – Fajlovi značajni za rad RL-Flash fajl sistema (integrisanog modula fajl sistema) ................. 11

Tabela 4 - Struktura Waveform zvučnog fajla sa oznakama i veličinama njegovih sektora, kao i podrazumijevanim vrijednostima veličina. ....................................................................................................................... 14

Tabela 5 – Značajnije AT komande iz osnovnog komandnog seta kompanije Hayes ................................. 16

Tabela 6 – Očekivani odgovori od interesa, pri ispitivanju statusa SIM kartice ............................................ 18

Tabela 7 – Spisak nekih od mogućih odgovora na AT+CREG komandu ............................................................. 19

Tabela 8 – Očekivana vremena čekanja odgovora za komande od interesa .................................................... 24

Tabela 9 – Spisak i opis rutina za upravljanje serijskim vanjskim interfejsom mikrokontrolera ........ 25

Tabela 10 - Spisak i opis rutina za upravljanje fajl sistemom ................................................................................. 26

Page 7: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

II

Popis skraćenica:

3GPP 3rd Generation Partnership Project ADC Analog to Digital Converter

ANSI American National Standards Institute API Application Programming Interface

ARM7TDMI Generacija procesora zasnovanih na ARM7 arhitekturi BPS Bits Per Second CLI Caller Line Identification CR Carriage Return

DAC (D/A) Digital to Analog Converter EOC End Of Cluster

ETSI European Telecommunications Standards Institute GPIO General Purpose Input Output GSM Global System for Mobile Communications

I/O Input/Output I²C Inter-Integrated Circuit

IDE Integrated Development Environment JTAG Joint Test Action Group

LED Light Emitting Diode LF Line Feed

MCU MicroController Unit MMC Multi-Media Card PCM Pulse Code Modulation PIN Personal Identification Number

PWM Pulse Width Modulation RAM Random Access Memory RIFF Resource Interchange File Format

RTOS Real-Time Operating System SDC Secure Digital Card

SDSC Secure Digital Standard Capacity SDHC Secure Digital High Capacity SDXC Secure Digital eXtended Capacity

SIM Subscriber Identification Module SMS Short Message Service SPI Serial Peripheral Interface

SRAM Static Random Access Memory SSP Synchronous Serial Port

UART Universal Asynchronous Receiver/Transmitter USB Universal Serial Bus

WAV Waveform Audio File

Page 8: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

III

Sažetak:

U radu se prezentuju opšti principi i primjer realizacije govornog automata u integrisanom sistemu. Drugi dio rada je posvećen interfejsu i integrisanom fajl sistemu za upravljanje memorijskom karticom koja služi kao baza zvučnih fajlova za rad govornog automata. Akcenat je stavljen i na mikrokontrolerskom upravljanju GSM modemom uz detaljan opis konfiguracije i praktičan primjer upotrebe. Kao polazna osnova za praktičnu realizaciju poslužila je razvojna ploča MCB2140, dok je korišćen GSM modem oznake GE863, prozvođača Telit. Ovaj rad je dio projekta za automatsku kontrolu reda čekanja. Drugi dio tog projekta je LED ekran koji služi za prikaz informacija o radu sistema.

Abstract:

This paper presents general principles and examples of interactive voice response (IVR) units in embedded systems. Second part of the thesis is dedicated to explaining memory card interface and it's embedded file system application. Use of microcontrollers in application with GSM modem is also shown. Detailed configuration is explained, along with practical example of use. Portable memory card is used as audio files storing device and is essential part of IVR unit. MCB2140 development board is used as hardware foundation of the system, while Telit's GE863 GSM modem is used. Thesis is part of "Automatic queue control" project, of which second part is LED display used for showing system specific information

Page 9: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

1

1. Uvod

U radu se prezentuju opšti principi i primjeri realizacije govornih automata u integrisanim sistemima. Drugi dio rada je posvećen interfejsu i integrisanom fajl sistemu za upravljanje memorijskom karticom koja služi kao baza zvučnih fajlova za govorni automat. Akcenat je stavljen i na mikrokontrolerskom upravljanju GSM modemom uz detaljan opis konfiguracije i praktičan primjer upotrebe.

Veliki problem kako u javnim, tako i u privatnim ustanovama predstavljaju dugi i naporni redovi za čekanje.. To vrijeme se nepovratno gubi iako ga je moguće mnogo kvalitetnije iskoristiti. Najidealnije bi bilo da korisnik bude uslužen po dolasku u datu ustanovu. Međutim, čak i kada se zakaže sastanak/pregled, uvijek dolazi do nepredviđenih kašnjenja. U nekim ustanovama je uspostavljen sistem podjele rednih brojeva što donekle doprinosi uređivanju ove oblasti. Kada se korisnik prijavi za pregled, sastanak ili neku drugu uslugu, dobija redni broj. Stoga, biće uslužen nakon svih korisnika koji su došli prije njega. To neminovno znači čekanje. Korisnici se najčešće opredjeljuju da to vrijeme provedu u čekaonici jer nije uvijek poznato trajanje pregleda/usluge, pa je teško i procijeniti kada će neko doći na red. Međutim, uvođenjem automatskog sistema preko kojeg bi korisnik mogao u bilo kom trenutku da sazna redni broj stranke koja se tada uslužuje, kao i prosječno vrijeme čekanja na uslugu, naše vrijeme bi se moglo mnogo kvalitetnije isplanirati i iskoristiti. Korisnik ne bi bio primoran da svoje vrijeme provodi u čekaonici, što bi bila i najveća prednost takvog sistema.

Ovaj rad je dio projekta za automatsku kontrolu reda čekanja. Projekat je osmišljen da očitava redni broj stranke koja se uslužuje i da računa prosječno vrijeme čekanja za datu uslugu. Korisnik može pozivom na broj telefona dobiti tu informaciju, preko govornog automata. Sistem je primjenjiv u velikom broju institucija, kako javnim tako i privatnim, gdje god ima nekog vida čekanja na uslugu. Njegova primjena bi olakšala obavljanje mnogih radnji koje sada neopravdano dugo traju.

Osnovni dio sistema je razvojna ploča MCB2140, sa LPC2148 mikrokontrolerom ARM7 arhitekture. Njena prednost je postojanje ugrađenog hardverskog interfejsa za memorijske (MMC/SD) kartice pa se time olakšava pristup velikim količinama podataka koje su potrebne za rad cijelog sistema. Tu je takođe prisutan i audio interfejs sa zvučnikom što olakšava inicijalni proces pravljenja govornog automata. Sljedeći segment sistema je GSM modem GE863 sa interfejsom za serijsku komunikaciju i audio ulazom. Tu je i segment sa LED ekranom koji prikazuje redni broj stranke koja se uslužuje u tom trenutku. Modem i ekran se povezuju na mikrokontrolersku ploču preko dva serijska porta koja se nalaze na njoj. Sistem je pripremljen i za rad sa računarom.

Page 10: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

2

2. Princip rada i hardverska pozadina sistema

Postoji više pristupa izradi govornog automata. Koji će biti odabran najviše zavisi od potreba i dostupnog hardvera za tu namjenu. Već je pomenuto da je razvojna ploča MCB2140 odabrana zbog velikog spektra mogućnosti koje pruža, među kojima je s ovog aspekta najznačaniji interfejs za pristup Secure Digital kartici. Za rad govornog automata je potrebna baza zvučnih snimaka tako da je memorijska SD kartica poslužila kao pogodan medijum za njihovo skladištenje. Kod tog pristupa nailazi se na nekoliko izazova od kojih je najznačajniji obezbjeđivanje pristupa podacima na kartici, i sa mikrokontrolera i sa računara. Odnosno, računar, koji služi i kao sredstvo za snimanje zvučnih zapisa, mora biti u mogućnosti da podatke smiješta na kartici u formatu koji poznaje. S druge strane, potrebno je omogućiti i mikrokontroleru da učitava podatke u tom istom formatu. Kod prilagođavanja mikrokontrolerske jedinice za rad sa interfejsom SD kartice, najlakši pristup je realizovanje upisa i čitanja u “sirovom” formatu (čitanje blok po blok sa kartice). Taj pristup sam isprobao u seminarskom radu iz predmeta Mikrokontroleri. Kao što je bilo i očekivano, tu sam naišao na nepremostiv problem. Radi se o nekompatibilnosti formata koji koristi mikrokontroler, sa onima koje koristi računar. Naime, da bi računar mogao pristupiti podacima na nekom prenosnom medijumu, potrebno je da memorija bude pravilno podijeljena i da podaci o mjestu skladištenja fajlova budu uredno upisani u alokacionu tabelu fajlova (princip kod fajl sistema FAT). Kod prostog načina upisa i čitanja sa kartice, to se nije moglo obezbijediti. Stoga sam se odlučio za primjenu integrisanog (embedded) modula FAT fajl sistema. U ovom poglavlju će taj pristup biti malo podrobnije opisan. Pored osvrta na strukturu FAT sistema, biće opisani i njegovi moduli za primjenu u integrisanim sistemima: FatFs, PetitFs i RL-FlashFS. FatFs i PetitFs su najpodobniji za primjenu na drugim mikrokontrolerskim platformama, dok je RL-FlashFS modul napravljen i optimizovan za ARM arhitekturu pa je stoga i iskorišćen u ovom projektu.

Princip rada govornog automata

Govorni automati (engl. Interactive Voice Response) predstavljaju rješenje računarske telefonije koje omogućava korisnicima da putem telefona, glasom ili preko telefonske tastature, pristupe velikoj količini informacija ili da iniciraju određene radnje. Informacije koje se daju mogu biti prethodno snimljene ili se mogu pomoću sinteze govora dinamički generisati (dakle i ovdje su informacije prethodno snimljene ali u vidu sekvenci čijom se kombinacijom dobija značajno veći broj mogućih odgovora). Tehnologije koje se koriste u ovu svrhu mogu omogućiti dvosmjernu komunikaciju između korisnika i automata. Ovakvi sistemi uglavnom se koriste da bi se obezbijedila 24-časovna dostupnost nekog servisa i da bi se značajno povećao broj opsluženih poziva. Na taj način se redukuju troškovi telefonskog servisa i povećava zadovoljstvo korisnika. Primjeri gdje se koriste govorni automati su: banke, pošte, aerodromi, autobuske i željezničke stanice, zdravstvene ustanove itd.

Page 11: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

3

Tehnologija govornih automata se takođe uvodi u automobilske sisteme za hands-free usluge. Trend kod ovih sistema je satelitska navigacija, audio i sistemi povezani sa mobilnim telefonima.

Call centri koriste govorne automate kako bi identifikovali i pojedinačno obradili svakog korisnika. Mogućnost identifikovanja korisnika dozvoljava da se svaki servis prilagodi pojedincu. Korisniku se daje opcija da čeka u redu, da izabere automatizovani servis ili da zatraži pozivanje od strane operatera u vremenu koje njemu odgovara. Autentifikacija i identifikacija se vrši uz pomoć mrežnog servisa CLI (Caller Line Identification) [1]. Ova usluga je trenutno dostupna za oko 80% dolaznih poziva. Dodatni autentifikacioni podaci bi mogli uključivati broj računa, šifru i biometrijske podatke (glasovno prepoznavanje na primjer).

Govorni automati takođe omogućavaju prioritetizaciju korisnika. U sistemima gdje individualni korisnici mogu imati različit status, servis će se pobrinuti da oni korisnici većeg prioriteta ranije dođu na red i budu usluženi.

Ovi sistemi su u velikoj mjeri povezani sa bazama podataka čime se dobija na funkcionalnosti. Sistem koji već radi sa korisničkim podacima i bazama podataka će skladištiti dodatne podatke u internu bazu podataka zbog revizije, redovnih kontrola performansi i budućih unaprijeđenja sistema.

Govorni automati su takođe našli primjenu i kod sprovođenja anketa. Naime, na taj način je moguće postaviti osjetljivija pitanja. Ove sisteme koriste i farmaceutske kompanije za sprovođenje kliničkih ispitivanja i upravljanje velikim količinama podataka. Korisnik će odgovoriti na pitanje i njegov odgovor će biti zabilježen u bazu podataka i po mogućnosti snimljen kako bi se kasnije utvrdila vjerodostojnost iskaza. Ovdje se uvode i funkcionalnosti nasumičnog odabira pacijenata i raspodjele lijekova. Takođe se koriste za snimanje pacijentovog audio dnevnika i odgovora na dodatne upitnike.

Napredniji sistemi govornih automata mogu biti korišćeni i za pozivanje (tzv. outbound calling). Pri tome su dodate funkcionalnosti za prepoznavanje situacija kao što su: korisnik se javio (pri čemu će automat zatražiti od korisnika da sačeka operatera), javila se govorna sekretarica (pri čemu će automat ostaviti poruku za korisnika), zvuk za primanje faksa (pri čemu će automat ostaviti poruku u obliku TIFF slike), preusmjeravanje i nema odgovora (u obije situacije automat će pokušati ponovo u najvećem broju izvedbi).

Sistem govornog automata razvijen za ovaj projekat daje osnovne funkcionalnosti koje se očekuju za pouzdan rad u svakodnevnim uslovima. Želio sam da napravim i dobru osnovu za unaprijeđenje sistema. Stoga će biti jednostavno implementiranje novih funkcionalnosti, kao što je automatski odgovor na poruku i sl.

Page 12: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

MCB2140 razvojna ploča

Keil MCB2140 razvojna plofamilije procesora i obezbjeđuje širok spektar interfejsa računarom pomoću JTAG interfejsaadapter i µVision IDE – razvojno okruženjeserijska interfejsa, zvučnik, analogni ulaz

LPC2148 mikrokontroleripodrškom za embedded-trace iserijsku komunikaciju, počevši od posjeduju SRAM veličine od 40 pogodnim u komunikacijskim primjenama, za modema, prepoznavanje glasa i rad sa slikama na niskom buffer kao i zavidnu procesorsku moćDAC, kanale za PWM i 45 brzihrezervisanih za eksterne prekide što čini ove mikrokontrolere pogodnimedicinskim sistemima.

Svojstva Ploča MCU Kristalni oscilator ARM procesor MCU Clock Dimenzije (mm) Memorija RAM FLASH I/O Tasteri LED Analogni ulaz Analogni izlaz Serijski portovi USB interfejs SD Card interfejs Interfejs za debugovanje JTAG interfejs 20-pinski JTAG konektorNapajanje Priključak Napon napajanja Prosječna vrijednost struje napajanja Maksimalna vrijednost struje napajanjaTabela 1 – Karakteristike razvojne ploče Keil MCB2140

Jovan Kovačević - Govorni automat sa GSM modemom

MCB2140 razvojna ploča sa mikrokontrolerom LPC2148

razvojna ploča zasnovana je na NXP (Philips) LPC2140i obezbjeđuje širok spektar interfejsa za različite primjene

JTAG interfejsa (za debagovanje programa se koristirazvojno okruženje). Na ploči se, između ostalog, nalaze

serijska interfejsa, zvučnik, analogni ulaz (preko potenciometra) i osam LED.mikrokontroleri su bazirani na 32-bitnoj ARM7TDMI-S procesorskoj arhitekturi

trace i high-speed flash memorijom od 512 KB. Posjeduju interfejse za serijsku komunikaciju, počevši od USB 2.0, preko dva UART-a, SPI, SSP do I²C interfejsa. Takođe

veličine od 40 KB (32KB + 8KB). Ova svojstva čine uređaje LPC214x serije pogodnim u komunikacijskim primjenama, za realizaciju konvertera protokola

prepoznavanje glasa i rad sa slikama na niskom nivou jer obezbjeđuje i prilično veliki buffer kao i zavidnu procesorsku moć. Posjeduje dva 32-bitna tajmera, jedan

i 45 brzih GPIO pinova sa devet “edge sensitive” ili “level sensitive” pinova erne prekide što čini ove mikrokontrolere pogodnim za primjenu u industriji i

Interfejs za debugovanje

pinski JTAG konektor

Prosječna vrijednost struje napajanja Maksimalna vrijednost struje napajanja

Karakteristike razvojne ploče Keil MCB2140

Govorni automat sa GSM modemom

4

NXP (Philips) LPC2140 kontroleru iz ARM za različite primjene. Ploča je povezana sa

se koristi Keil ULINK USB-JTAG nalaze i USB interfejs, dva

. procesorskoj arhitekturi sa

Posjeduju interfejse za o I²C interfejsa. Takođe

Ova svojstva čine uređaje LPC214x serije realizaciju konvertera protokola, softverskih

nivou jer obezbjeđuje i prilično veliki jedan 10-bitni ADC, 10-bitni

pinova sa devet “edge sensitive” ili “level sensitive” pinova za primjenu u industriji i

LPC2148 12 MHz

ARM7TDMI 60 MHz

100 x 110

32K + 8K 512K

2 8

2

USB

5VDC ≈ 65 mA

≈ 120 mA

Page 13: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

5

Slika 1 – Keil MCB2140 razvojna ploča – pogled odozgo

Page 14: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

6

Pristup memorijskoj kartici

Secure Digital Memory Card (SDC) je de facto standard kod mobilnih uređaja. SDC je razvijen kao nadogradnja Multi Media Card (MMC) sistema. Postoji nekoliko široko rasprostranjenih standarda, od kojih su najkorišćeniji microSD i miniSD, kao i RS-MMC iz MMC familije.

Memorijske kartice SD formata koristi preko 400 brendova na oko 8000 modela. Postoje 3 najveće grupe SD kartica i to: SDSC, SDHC i SDXC. SDSC (Standard-Capacity) familija, koju najčešće zovu kratko – SD, ima oficijelni kapacitet do 2GB, međutim na tržištu su se pojavljivale i kartice do 4GB. SDHC (High-Capacity) može da smjesti između 4GB i 32GB podataka, dok SDXC (eXtended Capacity) familija obuhvata kartice kapaciteta do 2TB [2].

SD kartice u sebi sadrže mikrokontroler koji upravlja nekim osnovnim funkcijama, kao što su: upis, čitanje, brisanje, kontrola grešaka i provjera istrošenosti ćelija (wearleveling). Podaci se prenose između kartice i host kontrolera u blokovima od 512 bajta. To je minimalna količina podataka koju možemo čitati. Da bi se ubrzao rad i poboljšala efikasnost, koriste se fajl sistemi. Njihova glavna odlika je pristup memoriji u sektorima (jedan sektor čini više blokova – sektor od 4 KiB čini 8 blokova), kao i automatsko označavanje loših sektora čime se poboljšava efikasnost i sigurnost podataka. Napomena: kao prevod engleske riječi “cluster” je iskorišćena riječ “sektor”.

Na slici je prikazana kontaktna površina SD i MM kartica. MMC ima sedam kontakata (pad-ova), dok SDC ima 2 kontakta više. Tri kontakta su opredijeljena za napajanje, tako da je broj korisnih signala 4 (za MMC) i 6 (za SDC). To znači da se prenos podataka između hosta i kartice obavlja sinhronim serijskim interfejsom.

Radni napon je od 2.7 do 3.3 V (neke starije kartice zahtijevaju i do 3.6V, zavisno od

proizvođača). Ovo čini SDC savršenom za primjenu sa mikrokontrolerom LPC2148, čiji je radni napon 3.3V.

Slika 2 – Izgled memorijskih kartica SD i MMC tipa

Slika 3 – Izgled i funkcije kontakata SC i MMC memorijskih kartica

Page 15: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

7

Načini prenosa podataka

Postoje nekoliko prenosnih protokola koji se najčešće pojavljuju kod SD kartica. SPI i one-bit SD protokol su obavezni za kartice svih SD familija. Zastupljeni su još i four-bit SD i USB protokoli.

SPI (Serial Peripheral Interface) se primarno koristi kod integrisanih mikrokontrolerskih sistema. Ovaj interfejs je jedan od takozvanih “on-board inter IC” komunikacionih interfejsa, tj to je ugrađeni sistem za komunikaciju sa ostalim integrisanim kolima na ploči. Podržava brzinu prenosa i do 20 Mbps, ponekad i više, zavisno od mogućnosti uređajá. Zbog jednostavnosti pristupa, ovaj protokol sam koristio za komunikaciju sa SD karticom.

LPC2148 može da koristi 2 SPI porta. Jedan je ugrađeni SPI port (SPI0), dok se drugi dobija konfigurisanjem SSI (tj. SSP – Sinchronus Serial Port) za upotrebu u SPI režimu (SPI1). U našem slučaju, potrebno je koristiti baš taj SPI1 port zbog načina na koji je povezana SD kartica na ploči MCB2140. Upotrebu ovog načina pristupa sam testirao sa Nokia karticama (RS-MMC 1GB, MicroSD 1GB i MiniSD 512MB).

Slika 4 – Način na koji je povezan adapter za SD karticu na MCB2140 razvojnoj ploči

FAT Fajl sistem

FAT (File Allocation Table) fajl sistem potiče sa kraja 1970-ih i početka 1980-ih godina i bio je podržan od strane MS DOS operativnog sistema. Na početku je bio zamišljen kao jednostavni fajl sistem pogodan za flopi diskete veličine ispod 500 KB. Vremenom je nadograđivan kako bi podržao veće memorijske medijume. Trenutno postoje tri tipa FAT sistema: FAT12, FAT16 i FAT32. Osnovna razlika između ovih pod-tipova kao i razlog ovakvog imenovanja je maksimalna veličina, u bitima, adrese podataka na disku. Adrese su 12-bitne kod FAT12 sistema, 16-bitne kod FAT16 sistema i 32-bitne kod FAT32 sistema (ovdje su, međutim, četiri najveća bita rezervisana pa se za adresiranje zapravo koristi 28 bita) [3].

Page 16: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

8

Dizajn FAT sistema

FAT fajl sistem se sastoji iz tri oblasti na disku:

- Rezervisani sektori, koji se nalaze na samom početku strukture. Prvi je Boot Sektor i sadrži neke osnovne informacije o fajl sistemu, kao što su njegov tip i pokazivač na lokacije ostalih sektora. Takođe sadrži i bootloader kod operativnog sistema. Zatim slijedi izvjestan broj rezervisanih sektora čiji se broj mijenja kod novijih FAT sistema.

- FAT region. Ovdje se nalaze dvije kopije alokacijske tabele fajlova (druga se koristi za provjeru grešaka). Ovo su mape Data regiona i pokazuju koje sektore koriste fajlovi i direktorijumi.

- Data Region je sekcija u kojoj se zapravo smiještaju fajlovi i direktorijumi. Zauzima najveći dio particije. Veličina fajlova i direktorijuma se može povećati naknadno (sve dok postoje slobodni sektori) jednostavnim dodavanjem veza u lanac fajlova u alokacionoj tabeli fajlova (FAT). Problem kod ovog pristupa je kada se radi o fajlu veličine 1 KB koji se smiješta u sektor od 32 KB. Time se ne iskorišćava 31 KB.

Alokaciona tabela fajlova (FAT)

Particija je podijeljena u sektore identične veličine, tj. male grupisane blokove memorije na disku. Veličina sektora varira zavisno o tipu FAT fajl sistema. Tipične vrijednostu su između 2 KB i 32 KB. Svaki fajl zauzima jedan ili više ovakvih sektora. To zavisi od veličine fajla. Stoga, fajl je reprezentovan lancem ovih sektora (ponekad se to naziva i povezana lista). Sektori međutim nijesu načelno smješteni jedan pored drugoga na disku već su razbacani po raznim njegovim djelovima što dovodi do fragmentacije (iscjepkanosti podataka) diska.

FAT je zapravo alokaciona tabela fajlova koja „mapira” svaki sektor na particiji. Svaki unos u tabelu sadrži jednu od sljedećih pet stavki:

- broj sljedećeg sektora u lancu

- EOC karakter koji indicira kraj lanca sektora

- unos koji označava loš sektor

- unos koji označava rezervisani sektor

- nula koja označava da sektor nije korišćen

Page 17: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

9

FAT12 FAT16 FAT32 Opis unosa

0x000 0x0000 0x00000000 Sektor je slobodan

0x001 0x0001 0x00000001 Rezervisan

0x002–0xFEF 0x0002–0xFFEF 0x00000002–0x0FFFFFEF

Sektor je iskorišćen-

Pokazivač na sljedeći sektor

0xFF0–0xFF6 0xFFF0–0xFFF6 0x0FFFFFF0–0x0FFFFFF6 Rezervisan

0xFF7 0xFFF7 0x0FFFFFF7 Loš dio u sektoru

0xFF8–0xFFF 0xFFF8–0xFFFF 0x0FFFFFF8–0x0FFFFFFF Posljednji sektor u fajlu (EOC) Tabela 2 -Standardne vrijednosti unosa koje opisuju određeni sektor na disku, kao i njihovo poređenje između različitih tipova FAT sistema

Razlika između FAT12/16 i FAT32

Kod FAT12/16 postoji sekcija na disku pod nazivom „Root Directory Region”. Ovo je jedna od tabela koja čuva informacije o fajlovima i direktorijumima koji se nalaze u korijenom direktorijumu diska. Sa sobom nosi i ograničenje u vidu maksimalne veličine podataka koji se mogu smjestiti u korijenom direktorijumu. Kod FAT32 ova tabela kao takva ne postoji već je integrisana u “Data Region”, pa stoga ne postoji ni ograničenje u veličini podataka koji se mogu smjestiti u korijenom direktorijumu.

Iscjepkanost fajlova - Fragmentacija

FAT sistem nema metode za suzbijanje fragmentacije diska, kao što imaju neki napredniji fajl sistemi. HPFS koristi bitmape slobodnog prostora koje indiciraju slobodne i iskorišćene sektore. Takve mape se mogu brzo pretražiti ("look up") kako bi se pronašle neprekidne oblasti slobodnog prostora na disku. Ovo je uvedeno i kod exFAT sistema. Drugo rješenje je povezivanje svih slobodnih sektora u jednu ili više lista, što se radi na Unix sistemima. Kod FAT sistema je, međutim, potrebno pretražiti cijelu tabelu alokacija kao jedan niz, kako bi se pronašli slobodni sektori. To može dovesti do ozbiljnih problema sa performansama kada je riječ o diskovima većeg kapaciteta.

Page 18: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

10

FAT u integrisanim sistemima

Postoje takozvani generički moduli FAT fajl sistema

za primjenu u malim, integrisanim izvedbama. Jedan od jednostavnijih i popularnijih sistema je FatFs. Napisan u saglasnosti sa ANSI C standardom i u potpunosti je odvojen od I/O nivoa komunikacije sa diskovnom jedinicom. Stoga je nezavisan od hardverske arhitekture. Moguće ga je primijeniti kod jeftinih mikrokontrolera kao što su AVR, 8051, PIC, ARM, Z80, 68k itd. bez ikakvih promjena. Potrebno je, međutim, obezbijediti I/O funkcije pristupa hardveru na niskom nivou u skladu sa zahtjevima ovog FatFs modula. Međutim, nije potrebno realizovati sve funkcije ako u našoj primjeni ne koristimo sve mogućnosti ovog modula što smanjuje njegovu veličinu i omogućava primjenu na slabijim sistemima (npr. nije potrebno realizovati funkcije za upis u memoriju ako se koristi samo isčitavanje i sl.) [4].

Karakteristike

• FAT fajl sistem kompatibilan sa Windows platformom. • Nezavisan od mikrokontrolerske platforme. Jednostavno portovanje. • Relativno mala veličina koda. Postoji i Petit FatFs koji zauzima samo 2-4KB koda, zavisno od

platforme. • Nudi različite opcije konfiguracije:

o Nekoliko diskovnih jedinica (fizički odvojenih i particionisanih). o Podrška za dugačke nazive fajlova u ANSI ili Unicode-u. o Promjena veličine sektora. o Read-only atributi, umanjen API, I/O buffer itd...

Slika 5 – Mjesto FatFs modula u nivoima integrisane aplikacije

Page 19: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

11

Real-Time Library Flash File System

Real-Time Library Flash File System (RL-FlashFS) je softverska biblioteka koja obezbjeđuje zajedničke API funkcije za manipulaciju fajlovima na prenosivoj memoriji. Biblioteka nudi okolinu za stvaranje, upis i čitanje fajlova, a obezbjeđuje i sve funkcije nižeg nivoa potrebne za te operacije. Skladno tome, programeru ostaje da se posveti razvoju svog dizajna koji će koristiti sve resurse obezbijeđene implementacijom fajl sistema. RL-FlashFS radi sa nekoliko uređaja baziranih na ARM i Cortex-M familiji procesora. Moguća je upotreba zasebno ili sa RTX-RTOS (operativnim sistemom) [5]. Napomena: RL-FlashFS se ne može koristiti sa MicroLIB bibliotekom. Programi bazirani na RL-FlashFS sistemu se obično pišu u standardnom C jeziku, dok je razvoj baziran na ARM kompajleru. RL-FlashFS modul fajl sistema je upotrijebljen u ovom projektu zato što je to već testirana cjelina, rađena za ovu arhitekturu i prilagođena ploči MCB2140. Projekat sa ovim modulom je osnova projekta govornog automata i u nastavku će biti ukratko opisane neke njegove cjeline.

Fajl sistem zavisi od memorijskog uređaja korišćenog u datoj izvedbi i automatski ga odabira RL-FlashFS biblioteka. Podržane su sve tri verzije FAT fajl sistema (FAT12, FAT16 i FAT32).

I u ovom projektu, kao i u ostalim pokaznim primjerima rađenim za uVision razvojni sistem, koristi se dobar princip dijeljenja koda u zasebne cjeline kak bi se isti mogao bez izmjena uključiti i u druge projekte. Značajniji fajlovi su opisani u sljedećoj tabeli:

Naziv fajla Tip Putanja Opis File_Config.h zaglavlje \ARM\RV31\INC Zaglavlje sa uobičajenim

definicijama funkcija i sistemskih varijabli.

File_Config.c modul \ARM\RL\FlashFS\Config Konfiguracioni fajl programa i uređaja.

File_lib.c modul \ARM\RV31\INC Sistemski konfiguracioni fajl sa konceptom funkcija glavne biblioteke.

FS_ARM_L.lib biblioteka \ARM\RV31\LIB RL-FlashFS biblioteka za ARM7 i ARM9 uređaje.

SPI_LPC214x.c modul \ARM\RL\FlashFS\Drivers Fajl sa drajverom za serijski vanjski interfejs (SPI).

Retarget.c modul \ARM\RL\FlashFS\Config Modul sa funkcijama za upis i čitanje na niskom nivou.

Tabela 3 – Fajlovi značajni za rad RL-Flash fajl sistema (integrisanog modula fajl sistema)

Page 20: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

12

Pregled rutina za komunikaciju

Real Time (RT) biblioteka obezbjeđuje širok opseg funkcija za komunikaciju sa periferijama, realizovanim kroz različite nivoe. Od interesa su rutine za komunikaciju preko serijskog vanjskog interfejsa (SPI), rutine za upis i čitanje podataka iz fajlova (I/O rutine) kao i rutine za manipulaciju fajlovima. Pored ovih, RT-biblioteka obezbjeđuje i drajvere za komunikaciju na drugim interfejsima, kao i veliki broj sistemskih, rutina za upravljanje vremenom i slično.

Rutine za SPI komunikaciju

SPI rutine su funkcije za komunikaciju sa memorijskom karticom na serijskom vanjskom interfejsu. Tu su realizovane funkcije za inicijalizaciju komunikacije, za slanje i primanje bajta podataka, za slanje i primanje bloka podataka, provjeru postojanja kartice na interfejsu i slično. U dodatku je data puna lista funkcija sa opisom rada.

I/O rutine

Ulazno/Izlazne rutine obezbjeđuju funkcije za upis i čitanje podataka iz fajlova Flash fajl sistema. Uglavnom su realizovane na osnovu već postojećih metoda za rad sa standardnim ulazno/izlaznim tokom podataka, definisanim u stdio.h zaglavlju (“tok” je iskorišćen kao prevod engleske riječi “stream”). Stoga je upotreba ovih rutina intuitivna ako smo upoznati sa ulazno/izlaznim rutinama u osnovnom C jeziku. Neke od značajnijih rutina su fopen, fclose, fseek, rewind i druge. Puni spisak sa opisom rada je dat u dodatku.

Rutine za manipulaciju fajlovima

Rutine za upravljanje fajlovima obavljaju menadžment fajlova u skladu sa standardom fajl sistema. Tu su definisane rutine za pretraživanje fajlova, formatiranje, računanje slobodnog prostora, brisanje i promjenu imena fajla. Korišćenje svake od datih komandi je takođe intuitivno i jednostavno.

Page 21: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

13

3. Softversko rješenje govornog automata

Ovaj sistem zahtijeva automatski odgovor po primljenom pozivu. U praksi se to realizuje na jednostavan način. Poslije početnog podešavanja modema, pozove se funkcija koja čeka da stignu podaci od modema (putem UART interfejsa). Čim stigne karakter “R”, koji označava početak stringa “RING”, to znači da je primljen poziv. Zadatak govornog automata je da prihvati taj poziv i pusti odgovarajuću zvučnu poruku. Zbog nevelikih potreba ovoga sistema, nijesam primijenio govorni automat složenijeg tipa. Rješenje u ovom projektu ima sve potrebne funkcionalnosti, a nevelika složenost ga čini i pouzdanim u radu.

Govorni automat sam radio na principu dinamičkog generisanja odgovora na upit korisnika. Ulazni podatak ovog automata je informacija o rednom broju korisnika koji se trenutno uslužuje kao i podatak o prosječnom vremenu koje je potrebno za usluživanje jednog korisnika. Redni broj korisnika je zapravo vrijednost brojača koji se inkrementira na pritisak tastera (u trenutku kada započne usluživanje korisnika). Pritisak tastera vrši nadležno lice. Ako se radi o ljekarskoj praksi, za taj posao će biti odgovorna medicinska sestra koja radi na prijemu pacijenata. Taster je priključen na ulaz vanjskog prekida mikrokontrolera, pa inkrementaciju brojača vršim u prekidnoj rutini. U istoj funkciji sam implementirao i računanje srednje vrijednosti vremena koje protekne između usluživanja dva korisnika.

Program treba da prosljeđuje zvučne snimke na D/A konverter u zavisnosti od trenutnog stanja brojača. Na SD kartici sam napravio bazu zvučnih fajlova u tekstualnom formatu, ukupno 28 fajlova koji predstavljaju cifre od 0 do 20 te cifre 30, 40 … 90. Konkatenaciju tih zvučnih fajlova i proslijeđivanje D/A konvertoru vršim u zasebnoj funkciji. Time je omogućeno da se sa relativno malim brojem snimaka pokrije opseg od 100 brojeva.

Pozadina ovog principa su Waveform Audio snimci pohranjeni u tekstualnom formatu. Svaki fajl sam imenovao cifrom koju predstavlja („1.jk“, „2.jk“ itd.). Fajl sadrži osmobitne odbirke u decimalnom formatu, međusobno odvojene zarezom. Snimanje i konverzija u tekstualni format se obavljaju u upravljačkoj aplikaciji koju sam za potrebe ovog projekta napravio na računaru. Između ostalog, aplikacija ima mogućnost i zasebnog konvertovanja vanjski snimljenih wave fajlova.

Konverzija iz Waveform Audio u tekstualni format Waveform Audio je široko korišćeni fajl format na Windows platformama i predstavlja

najjednostavniji način smiještanja audio podataka. To je podskup formata RIFF u kojem se smiještaju zaglavlja (header-i) i podaci, u blokovima promjenjive dužine [6]. Podaci su zapravo odbirci dobijeni upotrebom PCM (Pulse Code Modulation). Skoro uvijek wave fajl ne kompresuje PCM odbirke što ga čini fizički većim na disku ali i bržim za čitanje.

Struktura wave fajla je prilično elegantnta i intuitivna. U njemu postoje tri bloka ili sekcije podataka. Prva je “RIFF” sekcija koja počinje tom ključnom riječju. Zatim slijedi veličina fajla u

Page 22: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

14

bajtima, a poslije nje identifikacija formata. Ovaj podatak je uvijek veličine 4 bajta i kod waveform audio formata njegova vrijednost je “WAVE”.

Slijedi tzv. “fmt ” blok. Ovaj blok sadrži informacije o formatu i upotrijebljenom PCM kodiranju. Stoga, sljedećih 4 bajta poslije “WAVE” moraju biti “fmt “. Slijedi podatak o veličini sljedeće strukture. Informacije o formatu završavaju ovaj blok.

Posljednji blok sadrži podatke, tj odbirke zvučnog zapisa. Započinje sa 4 bajta “data” za kojim slijedi vrijednost koja predstavlja veličinu podataka koju sadrži fajl. Nakon toga dolaze podaci, tj odbirci.

Struktura Waveform zvučnog fajla Tip Veličina Upisana vrijednost

ID prvog bloka 4 bajta (char[4]) "RIFF" Veličina fajla 4 bajta (long) Veličina fajla u bajtima ID formata 4 bajta (char[4]) "WAVE"

ID drugog bloka 4 bajta (char[4]) "fmt " Dužina wave formata 4 bajta (long) Dužina info bloka koji slijedi Informacije o formatu Dužina wave formata Informacije o formatu PCM

podataka ID trećeg bloka 4 bajta (char[4]) "data"

Veličina podataka 4 bajta (long) Dužina PCM podataka u bajtima

Podaci Veličina podataka PCM podaci (odbirci) Tabela 4 - Struktura Waveform zvučnog fajla sa oznakama i veličinama njegovih sektora, kao i podrazumijevanim vrijednostima veličina.

Potrebno je dobiti odbirke u tekstualnom fajlu kako bi se olakšala manipulacija podacima na samom mikrokontroleru. To sam uradio uz pomoć prostog algoritma implementiranog u upravljačkom programu i napisanog u C++ jeziku [7]. U programu snimam zvučni fajl u wav formatu. Zatim primijenjeni algoritam uzima sve podatke iz zvučnog zapisa, počevši od bajta broj 44, i smiješta ih u tekstualni fajl. Pri upisu se svaki odbirak odvaja zarezom zbog preglednosti i lakše manipulacije. Bajt broj 44 je odabran kao početak zbog neistovjetnog korišćenja wave formata kod različitih programa za snimanje. Naime, sirovi odbirci su kod nekih programa smješteni od bajta broj 40, dok je kod drugih riječ o bajtu broj 44. Time se osigurava da će dobijeni podatak sigurno predstavljati odbirak signala. Snimci su odabrani frekvencijom od 8 KHz i kodirani sa 8 bita čime se dobijaju vrijednosti odbiraka od 0 do 255 [8]. Mikrokontroler ima 10-bitni D/A konvertor, pa nad odbircima vršim operaciju binarnog pomijeranja u lijevo za 2, da bi se dobila puna jačina zvuka.

Page 23: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

15

4. Komunikacija sa modemom i ekranom

U ovoj sekciji je opisan drugi dio projekta gdje se razvojna ploča povezuje sa GSM modemom i LED ekranom. Kao što je već naglašeno, na ploči postoje dva ugrađena interfejsa za serijsku komunikaciju (označeni sa COM0 i COM1). Interfejs COM0 smo iskoristili za priključivanje GSM modema, dok se COM1 koristi za komunikaciju sa LED ekranom.

UART interfejs

Postavke oba interfejsa su:

- Baudrate 9600 bps - Bez provjere parnosti - Osam bita u paketu - Jedan stop bit.

Podaci se šalju pomoću višeslojnih funkcija koje dati string prosljeđuju UART interfejsu karakter po karakter, upisujuću njihove vrijednosti u za to predviđene registre. Prijem je realizovan na principu čekanja, pri čemu data funkcija (“getkey” ili “getkeyU0”) čeka dok ne stigne podatak na prijemnu liniju UART interfejsa (tj dok se ne promijeni vrijednost određenog registra).

Interfejs COM1 je moguće koristiti i za komunikaciju sa računarom što je prilično korisno pri otklanjanju grešaka. Nije potrebna nikakva izmjena u kodu, jer je LED ekran programiran da filtrira sve podatke koji nisu u odgovarajućem formatu. Stoga je zanimljivo pomenuti da je uspješno testirana i postavka u kojoj su i računar i ekran spojeni istovremeno na COM1 interfejs.

AT komande na modemu Telit GE863

AT komande su poznate i pod nativom “Hayes AT command set”. Najčešće značenje skraćenice “AT” je “Attention Telephone”, iako se ponegdje pojavljuje i “Attention Terminal” što takođe ima smisla.

AT komande omogućavaju davanje instrukcija kako mobilnim tako i fiksnim telefonima. Komande se šalju telefonskom modemu, tj. GSM ili PC modemu. Komande se razlikuju od proizvođača do proizvođača, međutim veliki je broj istih.

AT komande se mogu koristiti za operacije koje se u uobičajenim situacijama odrađuju pomoću tastature, npr. pozivanje određenog broja, slanje, primanje i brisanje SMS poruke, postavljanje SMS servisnog centra, traženje GPRS pristupne tačke, čitanje i brisanje podataka iz

Page 24: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

16

imenika, očitavanje stanja baterije (zavisno od tipa napajanja i aplikacije modema), očitavanje snage signala itd. Kada se želi napraviti aplikacija bazirana na PC-u, koja se preko USB, IR ili Bluetooth interfejsa spaja sa mobilnim telefonom, ove komande su neophodne za komunikaciju sa telefonskim modemom.

“Hayes” komandni set

AT komande je osmislila firma Hayes , pa se zovu i "Hayes AT command set". “Hayes” komande su osmišljene još 1977. godine. Ovaj komandni set se može podijeliti u četiri grupe [9]:

1. Osnovni komandni set – Veliko slovo za kojim slijedi broj. Npr. M1. 2. Prošireni komandni set - “&” (ampersand) i veliko slovo za kojim slijedi broj. Ovo

proširuje osnovni set. Npr. &M1. Primijetimo da je M1 različito od &M1. 3. Vlasnički komandni set – Obično počinje sa karakterom “\” (backslash) ili sa znakom za

procenat “%”.Ove komande se u mnogome razlikuju zavisno od proizvođača. 4. Registarske komande - Sr=n gdje je “r” broj registra koji se mijenja, dok je “n”nova

vrijednost koja se dodjeljuje.

Zanimljivo je pomenuti izlaznu sekvencu, koja se koristi kada želimo iz “data” načina rada preći u komandni režim. Ovo je uobičajena izlazna sekvenca: "+++", a da bi se razlikovala od ostalih primljenih podataka, koristi se tajmer čuvar na sljedeći način: prije ove sekvence mora biti pauza, između ova tri znaka ne smije biti pauze i na kraju dolazi pauza. Određeno je da pauza traje jedan sekund a sve ostalo traje kraće.

Od gore pomenutih setova komandi najinteresantniji je osnovni komandni set jer je podržan kod svih modema, nezavisno od proizvođača i modela. U sljedećoj tabeli su date neke korisne i često upotrebljavane komande. Napomena: komande se završavaju CR karakterom (“\r”).

Komanda Opis A0 or A Primanje dolaznog poziva A/ Ponavljanje prethodne komande D Pozivanje broja koji slijedi E0 ili E Gašenje ehoa, tj vraćanja upisanih komandi. E1 Uključivanje ehoa. Korisno pri upotrebi terminalnog programa. H0 Prekida bilo koji trenutno aktivni poziv H1 Preuzimanje poziva (kada je prethodno bio aktivan poziv na čekanju). O Povratak u normalni režim. Šalje se poslije izlazne sekvence kako bi modem nastavio

rad. Q0 ili Q Ugašen tihi režim. Svi odgovori se šalju u punom obliku Q1 Uključen tihi režim. Modem ne šalje odgovore po izvršavanju komandi. V0 ili V Isključen režim opširnih odgovora. Odgovori se šalju u numeričkom obliku V1 Uključen režim opširnih odgovora. Odgovori su oblika CONNECT, BUSY, NO CARRIER Z0 ili Z Reset modema na fabričke postavke. Tabela 5 – Značajnije AT komande iz osnovnog komandnog seta kompanije Hayes

Page 25: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

17

GSM AT komande

Standard ETSI GSM 07.07 (takođe poznat kao 3GPP TS 27.007) specificira komande zasnovane na AT standardu, prilagođene kontroli GSM modema i telefona, dok ETSI GSM 07.05 (tj. 3GPP TS 27.005) specificira komande zasnovane na AT stadardu za kontrolu funkcija vezanih za SMS poruke [10]. U nastavku su opisane neke osnovne AT komande kompatibilne sa modemom GE863 proizvođača Telit [11]. Napomena: globalna sintaksa, kao i maksimalna vremena čekanja odgovora za određene komande korišćene u ovom projektu, dati su u dodatku.

Automatsko podešavanje baudrate-a

Na početku je potrebno poslati AT komandu za postavljanje uređaja na odgovarajući baudrate, kao i odabir pravilnog formata karaktera, za serijsku komunikaciju. Po slanju ove komande, uređaj šalje odgovor “OK”. Ako nema odgovora u vremenu od 200ms, treba pokušati ponovo.

• Šalje se komanda AT<CR> • čeka se odgovor OK

Poslije ove početne komande, savjetuje se “ručno” postavljanje baudrate-a kako bi se izbjegle potencijalne greške u detekciji brzine slanja impulsa. To se radi na sljedeći način:

• Šalje se komanda AT+IPR=<brzina><CR> • čeka se odgovor OK

gdje brzina može biti: 300,1200,2400,4800,9600,19200,38400,57600,115200 bps.

Omogućavanje slanja proširenih izvještaja o grešci

Ovu opciju je preporučljivo podesiti na početku, kako bi bili sigurni kakve poruke da očekujemo kao odgovor modema. Numerički format izvještaja se uključuje na sljedeći način:

• šalje se komanda AT+CMEE=1<CR> • čeka se odgovor OK

Za uključivanje opširnih odgovora (objašnjeno kod opšteg opisa AT komandi): • šalje se komanda AT+CMEE=2<CR> • čeka se odgovor OK Provjera postojanja kartice i ispitivanje statusa

Ovo je prvi primjer komande koja ima veći broj mogućih odgovora modema. Sintaksa izgleda ovako:

Page 26: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

18

• šalje se komanda AT+CPIN<CR> • čeka se odgovor:

Upis novog PIN-a

Ovo se zahtijeva samo u nekim situacijama. Sintaksa je sljedeća:

• šalje se komanda AT+CPIN=****<CR> gdje je **** PIN kod SIM kartice (npr. 1234)

• čeka se odgovor OK ili ERROR ako nije uspjelo

Provjera statusa mreže

I ovu komandu je preporučljivo uvijek koristiti pri inicijalizaciji. Sintaksa je sljedeća:

• šalje se komanda AT+CREG<CR> • čeka se odgovor:

Odgovor Objašnjenje Slijedi +CME ERROR: 10 SIM kartica nije prisutna ili je

oštećena Provjeriti ili zamijeniti SIM karticu

+CREG: 0,0 ili +CREG: 1,0

Nije pronađena GSM mreža Provjeriti vezu sa antenskim kablom ili promijeniti poziciju antene

+CREG: 0,1 ili +CREG: 1,1

Registrovan je na domaćoj mreži

Nastaviti dalje. Modem spreman za pozive

Odgovor Objašnjenje Slijedi

+CPIN: SIM PIN SIM kartica je prisutna i PIN je neophodan za nastavak

Unos PIN-a

+CPIN: SIM PUK

SIM kartica je prisutna. 3 pokušaja pokretanja sa datim PIN-om nijesu uspjela. Zahtijeva se unos PUK-a.

Slanje komande AT+CPIN=<SIM PUK>

+CPIN READY SIM kartica je prisutna i PIN nije potreban Nastavlja se dalje

+CME ERROR: 10 SIM kartica nije prisutna Umetnuti SIM

karticu +CME ERROR: 13 SIM kartica oštećena Provjeriti ili

zamijeniti SIM karticu +CME ERROR: 15

SIM kartica je pogrešnog tipa

Tabela 6 – Očekivani odgovori od interesa, pri ispitivanju statusa SIM kartice

Page 27: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

19

+CREG: 0,2 ili +CREG: 1,2

Nije trenutno registrovan ali je pretraga za povoljnom mrežom i dalje u toku

Ponoviti provjeru statusa mreže

Tabela 7 – Spisak nekih od mogućih odgovora na AT+CREG komandu

Identifikacija na mreži

Kada se jednom modem registruje na mreži, moguće je ispitati imena identifikacionih kodova specifičnih za dostupne mreže:

• šalje se komanda AT+COPS=?<cr> • čeka se odgovor u formatu:

+COPS: ( <status>,"<op.ime>","","op.kod") +COPS: ( <status>,"< op.ime >","","op.kod") …… OK gdje je: <status> je broj koji predstavlja status mrežnog operatora:

0 – NEPOZNAT 1 – DOSTUPAN 2 – REGISTROVAN NA TOJ MREŽI 3 – ZABRANJEN

<op.ime> je string od maksimalno 16 karaktera sa alfanumeričkim kodom operatora <op.kod> je petocifreni broj koji predstavlja kod operatora:

-prve tri cifre: kod zemlje -zadnje dvije cifre: kod operatora

Postavljanje uređaja u glasovni režim

• šalje se komanda AT+FCLASS=8<CR> • čeka se odgovor OK

Napomena: Ova komanda se može preskočiti ako se na kraju komande ATD doda i operator ";" (nakon unosa broja koji se poziva).

Pozivanje željenog broja

• šalje se komanda ATD <tel.br.><CR> gdje je: <tel.br.> telefonski broj koji se poziva

• čeka se odgovor: OK, BUSY, NO RESPONSE, NO CARRIER.

Page 28: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

20

Prekid glasovnog poziva

• šalje se komanda ATH<CR> • čeka se odgovor OK

Javljanje na glasovni poziv

• šalje se komanda ATA<CR> • čeka se odgovor: OK

Ostale funkcionalnosti GSM modema

Ovaj modem ima i drugih, naprednih funkcionalnosti. Neke od njih su uspostavljanja tzv. “data poziva”, tj režima za prenos podataka, zatim mogućnosti naprednog upravljanja servisom SMS poruka (u tekstualnom ili PDU režimu), pristup imeniku, upravljanje mogućnostima kao što su poziv na čekanju itd. Režim za prenos podataka i upravljanje SMS porukama pruža veliki broj mogućnosti i biće predmet daljeg rada na proširenju funkcionalnosti sistema.

Podešavanje modema

Prije upotrebe GSM modem je potrebno pravilno konfigurisati kako bi ga osposobili za rad u režimu koji mi želimo. To se radi slanjem odgovarajućih AT komandi određenim redosljedom. U praksi se pravi mašina stanja koja uzima u obzir sve moguće situacije. Princip komunikacije sa modemom je sljedeći: pošalje se određena komanda (na kraju svake komande je obavezan CR karakter) i prijemna linija čeka odgovor određeni interval vremena koji se kontroliše tajmerom. Treba napomenuti da je taj interval posebno definisan za svaku komandu od strane proizvođača.

Podešavanje modema za pravilan rad se obavlja u nekolike faze. Preporučljivo je na početku odraditi softverski restart modema kako bi znali na koji način će biti primijenjene buduće komande (konfiguracija započeta od nule).

Poslije određenog (kratkog) vremena čekanja potrebno je poslati komandu za autobauding (automatsko podešavanje brzine prenosa podataka). Poželjno je da se nakon toga pošalje komanda za podešavanje baudrate-a na željenu vrijednost, kako bi izbjegle moguće greške kod automatskog određivanja brzine na strani modema. U ovom projektu baudrate postavljamo na 9600 bps. Takođe je poželjno i ugasiti eho kako bi se uprostio rad sa primljenim podacima na serijskoj liniji.

Page 29: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

21

Sljedeći korak je vezan za PIN kod kartice. Zavisno od podešavanja odrađenih ranije na samoj kartici, kod nekih SIM kartica je potrebno unijeti lični identifikacioni broj, takozvani PIN. Modem će to signalizirati. Ako nije potrebno unositi PIN, sljedeći korak je provjera mrežnog pristupa. Ako je modem registrovan na izvornoj mreži SIM kartice, proces inicijalizacije je završen. Modem je spreman da prima pozive. Ako ne postoji pokrivenost mrežom u trenutku ispitivanja, potrebno je sačekati dok se to ne promijeni.

Zanimljivo je pomenuti da sam implementirao tajmer koji svakih 60 sekundi ispituje da li postoji mrežna pokrivenost. Ako se u tri uzastopna ispitivanja desi da GSM modem nije registrovan na mreži, pokrenuće se rutine za svježi start modema. Time se neće izgubiti podaci o trenutnom broju korisnika koji se uslužuje kao i o srednjem vremenu čekanja na tu uslugu pa neće biti ometen rad govornog automata.

Upravljačka aplikacija na računaru

Zbog svrhe testiranja i bržeg razvoja sistema, napisao sam i upravljačku aplikaciju na računaru. Tu je objedinjen proces snimanja zvučnih zapisa za potrebe govornog automata, sa terminalnom funkcijom programa, tj. serijskom komunikacijom sa modemom. To se ostvaruje direktnim povezivanjem modema sa računarom. Cjelokupan izvorni kod ove aplikacije, kao i kod kojim je programiran mikrokontroler, dostupni su na disku koji prilažem uz ovaj rad.

Slika 6 – Izgled kontrolne aplikacije na računaru, sa objedinjenim funkcionalnostima potrebnim za govorni automat i GSM modem

Page 30: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

22

5. Zaključak

U radu je predstavljen upotrebljiv sistem govornog automata. Za realizaciju i testiranje

je bilo potrebno, osim pomenutog hardvera, poznavanje programiranja, razvojnog okruženja, kao i kreiranje pomoćnih alata. Na osnovu praktičnih rezultata, može se zaključiti da je ideja uspješno realizovana.

Uz malu doradu algoritma, na način da se poveća kvalitet zvučnih zapisa, ovaj sistem ima praktičnu primjenu. U budućem radu planirano je unaprijeđenje sistema dodavanjem novih funkcionalnosti kao što je rad sa SMS porukama i drugim specifičnim modemskim režimima za prenos podataka.

Page 31: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

23

6. Prilog

Prilog radu je CD koji sadrži:

• Elektronsku verziju rada

• Izvorne kodove

• Bazu zvučnih fajlova govornog automata

• Slike i video snimak sistema

Page 32: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

24

7. DODATAK A – format komunikacije sa modemom

Globalna sintaksa AT komandi kog GSM modema

Sintaksa je definisana na sljedeći način:

• <CR> “Carriage return” karakter je terminalni karakter kod komandnih aplikacija, čija decimalna vrijednost u ASCII tabeli iznosi 13. To važi za ASCII tabelu sa vrijednostima od 0 do 255.

• <LF> “Linefeed” karakter znači prelazak u novu liniju, čija decimalna vrijednost u ASCII tabeli iznosi 13. To važi za ASCII tabelu sa vrijednostima od 0 do 255. Ako se koristi “Verbose result code” (tj. detaljni odgovor – uključena opcija V1), ovaj karakter se šalje poslije <CR> karaktera. Ako je uključen numerički format odgovora (V0), ovaj karakter se neće pojavljivati u odgovoru.

• <...> Ove zagrade se koriste da se naznači očekivani element u sintaksi. To se koristi samo u dokumentaciji i ne šalje se prema modemu.

• [...] Uglaste zagrade se koriste za predstavljanje opcionih parametara komande (u dokumentaciji).

Očekivana vremena čekanja na odgovor za određene GSM komande od interesa

Globalno vrijeme čekanja na odgovor komande je 100 ms i to važi za sve komande koje nemaju interakciju sa mrežom. U nastavku su date neke komande od interesa čije je vrijeme čekanja na odgovor drugačije.

Komanda Vrijeme čekanja na odgovor (u sekundama) ATH 20 AT+CREG 5 AT+CLIP (prikazivanje broja pozivaoca) 180 AT+CLIR (slanje svog broja) 180 AT+CPIN 20 AT+CSQ (provjera jačine signala) 5 Tabela 8 – Očekivana vremena čekanja odgovora za komande od interesa

Page 33: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

25

8. DODATAK B – značajnije rutine fajl sistema

Rutina Opis

Init Uključivanje SPI kontrolera.

UnInit Isključivanje SPI kontrolera.

Send Slanje i primanje bajta podataka preko SPI interfejsa.

SendBuf Slanje bloka podataka preko SPI interfejsa.

RecBuf Primanje bloka podataka preko SPI interfejsa.

BusSpeed Postavljanje željene baudrate brzine za SPI interfejs.

SetSS Uključivanje ili isključivanje SPI Slave Select signala.

CheckMediaProvjerava status memorijske kartice (da li je u ležištu i da li je zabranjen upis).

Tabela 9 – Spisak i opis rutina za upravljanje serijskim vanjskim interfejsom mikrokontrolera

Page 34: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

26

Rutina Opis

fclose Zatvara tok podataka.

feof Daje informaciju da li je dostignut kraj ulaznog toka podataka.

ferror Vraće informaciju da li je došlo do greške u prenosu.

fflush Forsira slanje informacija na standardni tok podataka.

fgetc Čita jedan karakter sa standardnog toka podataka.

fgets Čita string sa standardnog toka podataka.

fopen Otvara standardni tok podataka.

fprintf Upisuje formatirani string u standardni tok podataka.

fputc Upisuje karakter u standardni tok podataka.

fputs Upisuje string u standardni tok podataka.

fread Čita određeni broj bajtova sa ulaznog toka podataka.

fscanf Čita formatirani string sa ulaznog toka podataka.

fseek

Pomijera pokazivač unutar toka podataka (fajla) na drugu lokaciju.

ftell

Vraće trenutnu poziciju pokazivača unutar standardnog toka podataka.

fwrite Upisuje određeni broj bajtova na ulazni tok podataka.

rewind Pomijera pokazivač na početak fajla.

ungetc Pohranjuje karakter u izlazni tok podataka.

Tabela 10 - Spisak i opis rutina za upravljanje fajl sistemom

Page 35: UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Kovačević - Govorni automat... · 2011-10-24 · API Application Programming Interface ARM7TDMI Generacija procesora zasnovanih na

Jovan Kovačević - Govorni automat sa GSM modemom

27

9. Literatura

[1] http://en.wikipedia.org/wiki/Interactive_voice_response

[2] http://en.wikipedia.org/wiki/Secure_Digital

[3] http://en.wikipedia.org/wiki/File_Allocation_Table

[4] http://elm-chan.org/fsw/ff/00index_e.html

[5] http://www.keil.com/support/man/docs/rlarm/rlarm_fs_flashfs.htm

[6] http://en.wikipedia.org/wiki/WAV

[7] http://darkfader.net/ngpc

[8] http://msdn.microsoft.com/en-us/library/dd757715%28v=VS.85%29.aspx

[9] http://en.wikipedia.org/wiki/Hayes_command_set

[10] http://wiki.forum.nokia.com/index.php/AT_Commands

[11] http://www.telit.com/en/products/gsm-gprs.php?p_id=12&p_ac=show&p=45