GPS

Introducere

Proiectul determina pozitia pe glob a utilizatorului, calculeaza distanta pe care o acesta o parcurge, si ii indica directia generala pe care ar trebui s-o urmeze pentru a ajunge la anumite coordonate. Ideea a venit de la receptoarele GPS comerciale, care prezinta aceste functii (pe langa multe altele). El poate fi folosit in diferite moduri, de exemplu pentru calcularea lungimii unui traseu, pentru a masura usor o distanta lunga (>100), si pentru navigatia simpla. Deoarece produsul nu detecteaza obstacole si nu urmareste drumuri, el poate fi folosit doar in aplicatii de genul aviatie de agrement (se seteaza coordonatele aeroportului de destiantie, si apoi se urmareste directia), navigatie pe suprafete acvatice de forma convexa, sau pentru deplasare off-road (“pe aratura”).

Descriere generală

Proiectul foloseste un modul GPS (si o antena activa pentru acesta), pentru a capta semnalul de pozitionare globala transmis de sateliti, precum si cel de calibrarea transmis de statiile terestre. Deoarece modulul GPS si antena functioneaza la 3V, am folosit un translator de nivel ajustabil (MAX3002) pentru a ma asigura de functionarea corecta a modulului. Comunicatia cu GPS-ul se face serial, prin protocul NMEA. Modulul se conecteaza deci pe portul D al microcontrolerului.

Datele de la GPS, cele calculate de AVR, precum si un indicator grafic al directiei se face pe un LCD grafic de Nokia 3310. Si pentru acesta a fost nevoie de un translator de nivel (efectiv aceeasi componenta, MAX3002 avand 8 canale la dispozitie). Comunicatia se face prin SPI, pe portul B al microcontrolerului.

Pentru input-ul utilizatorului (pentru functia dorita si pentru indicarea coordonatei finale), se foloseste o tastatura matriciala cu 16 taste. Aceasta e legata la portul C

Utilizatorul alimenteaza schema, se deplaseaza intr-o zona exterioara unei cladiri (masina, vapor, avion, sub cerul liber) asteapta aprox 40 de sec pentru initializarea GPS-ului, care ii arata pozitia curenta. Apoi, cu ajutorul butoanelor A-E selecteaza functia dorita (A-functionare normala, B- calcul lungime traseu, C-calcul distanta in linie dreapta de la punctul in care s-a apasat B, D-introducere coordonate, E-afisare directie pana la coord introduse la D).

Hardware Design

Componente hardware folosite:

  • Placa standard
  • Keypad 16 taste
  • Pentru GPS:
    • modul GPS Trimble Copernicus
    • antena GPS activa Phycomp 1.575GHZ
    • adaptare antena: 1 inductor 100nH, 1 capacitate 0.1uF, 1 capacitate 18pF
  • Pentru LCD:
    • LCD Nokia 3310
    • cablu panglica 10 fire + conector
    • 1 capacitate 10uF, pentru Vout
  • Interfata LCD si GPS:
    • translator de nivel ajustabil MAX3002 cu 8 porturi, insotit de 2 capacitati pe intarile de tensiune
    • pentru stabilirea nivelului pe partea cu LCD si GPS folosesc 3 diode in serie sau un LM 1084 IT-3.3 (cu protectia necesara)

Schema GPS + LCD (pe o singura placa)

Explicatii:

  • Deoarece am folosit placuta imprimata si nu am avut ocazia sa testez inainte de imprimare, am decis sa fac doua scheme de coborare de la 5V (VCC AVR mega) la ~3 V ( VCC GPS si VDD LCD). Prima foloseste un stabilizator LM 1084 IT-3.3 (cu 2 capacitati pe intrari, conform datasheet), a doua foloseste 3 diode 1n4148. Selectia se face cu doi jumperi. In final varianta cu diode scadea numai la 4V, de aceea am ales varianta cu stabilizator, care cobora la 3.3V).
  • Pentru antena, am implementat circuitul cerut in specificatiile specificatiilor GPS: 1 inductor in serie si doua capacitati in paralel pe intrarea de tensiune. Antena se conecteaza la GPS printr-un conector coaxial U.FL de 50 Ohmi.
  • Pentru a traduce semnalele AVR (5V) la nivelul GPS si LCD (3V), am folosit un integrat MAX 3002, cu 8 canale (datasheet), din care 2 sunt folosite pentru comunicatia seriala intre GPS si AVR mega, si 5 canale pentru comunicatia intre LCD si AVR mega.

Schema keypad

Software Design

Mediu de dezvoltare

  • Editor: vim ( F9 - Build, F5 - Prog + Run )
  • Build: make build: (avr-gcc + avr-objcopy + avr-size)
  • Programare: make prog ( avrusbboot )

Librarii 3-rd party

  • Driver pentru LCD
    • Bun pentru ca NU are pixel buffer care ocupa memorie.
    • Ciudat pentru ca implementeaza protocolul SPI 'by hand'

Rezultate Obţinute

Am obtinut produsul hardware urmator:

Am avut dificultati in realizarea hardware datorita componentelor SMD pe care am fost nevoit sa le folosesc (GPS, MAX3002, conector coaxial). Aceasta, impreuna cu realizarea schemei in Eagle si imprimarea propriu-zisa, mi-a ocupat foarte mult timp. Cel mai greu de lipit totusi a fost LCD-ul de Nokia. Din aceasta cauza nu am avut timp suficient sa implementez complet partea software.

Concluzii

Am avut de ales intre 2 varianta: sa cumpar componente scumpe, DIP, care se lipesc usor, sau componente SMD mai iefitine si mai greu de lipit. Din motive pecuniare, am fost nevoit sa aleg varianta a 2-a. Aceasta alegere nu s-a dovedit foarte inspirata, avand in vedere numarul de mare de zile pe care a trebuit sa le aloc exclusiv proiectarii si lipirii placutei. Un sfat pentru viitori studenti: Verificati atent preturile, precum si posibilitatile de lipire ale componentelor necesara inainte de a alege proiectul. Daca nu aveti experienta in lipit, nu alegeti circuite integrate SIMD (rezistentele si capacitatile SMD se pot lipi relativ usor, insa pentru diferitele modele SMD de circuite integrate, cel mai adesea este foarte greu).

Desi as fi dorit sa duc la bun sfarsit acest proiect, din motivele aratate mai sus am fost nevoit sa abandonez implemntarea completa a firmware-ului.

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

pm/prj2010/pgp/gps.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0