/Projekti/Reverzni GeoCaching - GeoGame v1
Ovo je moja verzija Reverznog GeoCaching-a nazvana GeoGame i bazirana je na Atmel AVR mikrokontroleru.
Izgled završenog uređaja
Svi projektni fajlovi su dostupni za download klikom na crveno "download" dugme na dnu stranice.
Mogućnosti ove igrice su:
- neograničen broj GeoPoint-a/Level-a (ustvari ograničen samo količinom EEPROM memorije izabranog AVR mikrokontrolera)
- USB konekcija na PC za upload GeoPoint-a
- PC aplikacija za generisanje GeoPoint-a
- interna Li-Ion baterija punjiva preko USB kabla
- alarm za praznu bateriju
- hitno otvaranje kutije unosom šifre
- "breathing" pozadinskog LCD osvjetljenja
- Level Kodovi - svaki GeoPoint ima 4-cifreni level-code
- samo jedno dugme (igranje, menu)
- open source hardware, AVR GCC
Ideja je bila da se napravi Reverzna GeoCaching kutija sa jeftinim dijelovima. Stoga, hardver se sastoji od slijedećih komponenti:
- grafički displej iz Nokia 3310 (ili 5110...) telefona sa pozadinskim osvjetljenjem (displej baziran na PCD8544 kontroleru)
- Li-Ion BL-5C baterija iz Nokia telefona (ili slična)
- MAX1811 Li-Ion punjač IC
- PC USB GPS prijemnik sa DealExtreme, koji takođe ima internu FLASH memoriju za snimanje/logiranje kretanja, takođe ima i USB-UART(TTL) konverter na pločici koji je iskorišten za spajanje cijelog uređaja na PC. Još jedan dodatak koji dođe uz ovaj GPS je punjač za auto sa USB kablom!
- ATmega328P (ATmega168 se takođe može koristiti kada se kod optimizuje)
- "Mini Servo" motor sa DealExtreme
- sve se napaja iz 3.7V baterije, čak i servo motor
- ostali sitni dijelovi
Mehanizam za zaključavanje
Mehanizam za zaključavanje kutije se sastoji iz minijaturnog servo motora koji je namontiran na donji dio kutije i metalnog dijela namontiranog na poklopac. Kada se kutija zatvori, jezičak servo motora uđe u metalni dio od poklopca i spriječava otvaranje kutije, odnosno zaključa je. Ovo možda nije najidealniji način pravljenja bravice ali radi odlično. Kutija nije napravljena da bude sigurna tako da se lako može otvoriti čekićem ili nekom drugom alatkom. Servo motor se kontroliše PWM signalom iz AVR mikrokontrolera, i iako na njemu piše da radi na 5V on bez problema radi i na naponu od 3,6V!
Servo na donjem dijelu kutije
Metalni dio namontiran na poklopac
Mehanizam za zaključavanje
LCD
Sve dosadašnje Reverzne GeoCaching kutije su imale 2x16 karakterne displeje. U ovoj verziji je korišten grafički LCD iz telefona iz tog razloga što mora raditi pri naponima nižim od 5V. Iz istog telefona je upotrijebljen još i konektor za bateriju i sama baterija. LCD panel je izvađen iz telefona ali mu je i dalje nedostajala "pozadinska" pločica sa LED-icama za pozadinsko osvjetljenje i konektorom. Iz tog razloga sam napravio slijedeću pločicu sa šest bijelih vrlo jakih LED-ica (takođe iz telefona) i elektrolitskim kondenzatorom koji je potreban LCD-u.
"Pozadinska" pločica za LCD
Tri LED-ice su spojene u seriju pa paralelno sa druge tri seriski spojene. Iz ovog razloga je za pozadinsko osvjetljenje potrebno nekih 8V. Taj napon je postignut sa "boosterom" koji generiše nekih 7,5-9V iz 3,7V baterije.
Shema "booster"-a za napajanje pozadinskog osvjetljenja
"Gate" MOSFET-a je spojen na izlaz hardverskog PWM-a od AVR mikrokontrolera i na ovaj način možemo vrlo lako regulisati intenzitet pozadinskog osvjetljenja LCD-a. Ovdje je korišten uPA1700 MOSFET sa matične ploče nekog starog laptopa, a može se koristiti bilo koji drugi sličan MOSFET koji se nađe pri ruci.
Pravljenje otvora za LCD
LCD montiran na poklopac
Slika LCD-a sa pozadinskim osvjetljenjem
Prikrivanje rupa sa malo crnog silikona
Finalni izgled kutije
GPS prijemnik
GPS prijemnik korišten u ovom uređaju je SkyTraq Venus i ima vrlo dobru osjetljivost. Ako se odlučite za kupovinu ovog GPS prijemnika za GeoGame, morati ćete odlemiti dva SMD otpornika veličine 0402 i jedan minijaturni 3,3V LDO regulator sa pločice. Postupak ove konverzije je opisan ovdje.
DATA i POWER konektori "preusmjereni" na GeoGame
Još treba zalemiti USB konektor...
Kompletirana GPS konverzija, sve smješteno u termo-bužir
Ideja kod ove konverzije je ta da se presretne komunikacija između GPS chip-a i USB-UART(TTL) konvertera (DATA konekcija), i prekine dovod napajanja za njegov 3,3V LDO regulator preko kojeg se napaja GPS chip (to ćemo zvati POWER konekcija).
1. Kod DATA konekcije nam treba TX linija iz GPS chip-a, i trebaju nam još TX & RX linije iz USB-UART(TTL) chip-a. TX linija iz GPS-a ide preko Schottky diode na RX pin Atmel AVR-a. TX linija iz USB-UART(TTL) chip-a ide na Drugu Schottky diodu pa onda takođe na RX pin Atmel AVR-a. Ovako možemo primati podatke u AVR iz GPS chip-a i USB-UART(TTL) konvertera istovremeno. Preostala RX linija od USB-UART(TTL) chip-a ide na TX liniju Atmel AVR-a i koristi se za slanje podataka na PC. Napomena: nije nam potrebna RX linija od GPS chip-a, tako da smo nju ostavili "otvorenu".
Konektor za serisku komunikaciju i eksterno napajanje za GPS
2. POWER konekciju GPS chip-a smo preusmjerili na MOSFET P-tipa (uPA1712) na našoj elektronici. Ovako jednostavno napajemo GPS-ov 3,3V LDO regulator sa našom Li-Ion baterijom preko MOSFET-a umjesto sa USB napajanjem kao što je to originalno bilo. Ovako možemo uključivati i isključivati GPS kad god želimo.
USB konektor koji se koristi za komunikaciju PC-a sa USB-UART(TTL) konverterom na GPS pločici
Sada kada želimo da AVR komunicira sa PC-jem jednostavno isključimo onaj MOSFET P-tipa i time prekinemo napajanje GPS-u. Ako ipak želimo da komuniciramo sa GPS-om (odnosno primamo podatak od njega) trebamo uključiti MOSFET P-tipa (uz predpostavku da uređaj nije spojen na PC). Zbog ove ideje sam imao sitnih problema, jer ovaj GPS chip svoju TX liniju zaključi na logičku nulu kada mu se prekine napajanje, umjesto da je postavi na stanje visoke impedance kao što je to slučaj sa većinom IC kola (primjer je USB-UART(TTL) chip koji je na pločici i koji radi baš to kao što je očekivano kada mu se ne dovede USB napajanje). Ovaj problem je riješen dodavanjem prekidača na TX liniju od GPS-a. Sada kad želimo da primamo podatke od PC-a, moramo prekinuti ovu TX liniju koristeći ovaj prekidač. Možda su drugi GPS prijemnici malo "normalniji" što se ovog tiče, posebno zbog toga što oni već imaju "enable" pin koji omogućuje/onemogućuje GPS prijemnik. Kod takvih GPS-ova, MOSFET P-tipa nam nebi ni trebao, jer je dovoljno postavljati logičku 0/1 na ovaj "enable" pin i time kontrolisati napajanje GPS-a.
AVR MCU & PCB
"Mozak" cijelog projekta je AVR Atmel mikrokontroler. Korišten je ATmega328P primarno zbog kapaciteta RAM-a kojim raspolaže. AVR obavlja cijeli posao: kontroliše LCD, provjerava napon baterije i javlja ako je baterija prazna, provjerava status punjenja, kontroliše zujalicu, GPS chip i servo motor, i takođe računa udaljenost od trenutne GPS lokacije sa onom memorisanom u GeoPoint-u. Napaja se na 3,3V koje dobija iz 3,3V LDO regulatora od AME Inc: AME880AEFTZ. Umjesto ovog LDO-a se može koristiti bilo koji drugi sličan jer je potrošnja struje minimalna.
AVR se može re-programirati preko ISP porta koji je na pločici. LCD i dugme su takođe spojeni na ovaj port i preko njega se kontrolišu.
Na pločici se nalazi i kristal od 32,768kHz koji se ne koristi. On se može iskoristiti za pravljenje RTC-a koji će se automatski podešavati kada se dobije signal od GPS-a. Pomoću njega se mogu dograditi neke nove opcije u igrici.
Izvorni kod je dostupan za download, i pisan je u AVR GCC C-u.
Dio sheme sa AVR-om
Pločica ima čudan oblik, zbog oblika izabrane kutije:
Pločica sa SMD komponentama - donja strana
Pločica sa DIP komponentama - gornja strana
Testiranje da li sve paše
Sve spojeno, treba namontirati nazad poklopac i dodati prekidač za GPS TX liniju
Stavljeno je i lažno dno od kartona (na slici se takođe vidi i "GPS TX" prekidač, lijevo od šarenih žica)
Programiranje GeoPoint-ova u igricu
Programiranje je vrlo jednostavno koristeći priloženu PC aplikaciju i neki terminalni program (npr.: HyperTerminal). Ova PC aplikacija jednostavno generiše GeoPoint string koji se pošalje GeoGame igrici u toku programiranja. Ovaj GeoPoint Maker je napravljen u Borland Delphi 7 i izgleda kao na slici:
GeoPoint Maker - screenshot
Svaki GeoPoint se sastoji iz nekoliko polja:
- setup dio: prvih osam nula/jedinica u GeoPoint-u se generišu automatski u zavisnosti od "check boxova" od zadnje tri opcije;
- latitude: o ovome se nema šta reći;
- longitude: o ovome se nema šta reći;
- threshold (u meterima): dopušteno odstupanje od tačne koordinate da bi se trenutni GeoPoint "riješio";
- presses: dopušteni broj pritisaka dugmeta prije nego što se kutija zaključa zauvijek;
- Level Code: ako je omogućeno, takozvani "level code" se prikaže na LCD-u trenutnog GeoPoint-a. Uz pomoć njega, korisnik može resetovati trenutni "level" ili ako zna "level code" od nekog narednog, može trenutni i preskočiti;
- Date/Time limitation: ako je omogućeno, ovaj GeoPoint se mora riješiti prije upisanog datuma, inače kutija ostaje zaključana zauvijek;
- Time Match (više od): ako je omogućeno, i ako se igrač nalazi na tačnoj geografskoj lokaciji, trenutni GeoPoint se ne može riješiti prije ovog "sata" u danu;
Ulazak u MENU za re-programiranje GeoPoint-ova se vrši dužim pritiskom na dugme kada je igrica u "standby" modu:
Menu mode
Surfanje kroz MENU se odvija kratkim pritiskom na dugme, a izbor dužim pritiskom. Nakon izbora "PC mode" opcije, potrebno je unijeti šifru koju ste izabrali prilikom prethodnog programiranja GeoPoint-ova i programiranje može započeti. Postupak programiranja pogledajte u video snimku.
Test uređaja u gradu
Programiranje dva GeoPoint-a
Autor (poslao): Trax
Broj download-a: 456
Ocjena: (2.31, glasova 5295)
Datum: 08-01-2011
English version of this page: Reverse GeoCaching - GeoGame v1
Tagovi: atmega328, atmega328p, atmel, avr, booster, geocache, geocaching, gps, lcd, li-ion, max1811, nokia, servo. +dodaj svoj tag
sličan sadržaj
- Minijaturni reverzni GeoCaching (16-09-2010) [@Novosti]
- GeoGame projekt objavljen (09-01-2011) [@Novosti]