Skip to content

Jacket Positioning System: JPS

April 8, 2012

Well, as titles go, I guess this one is strange. But I shall digress and jump right in anyway.

A while ago, one of my friends and I came up with a silly idea while night orienteering (challenging enough in the day). We couldn’t see anything, so we had a person walk out ahead of the compass man and wave around a chem stick like a silly person until they were properly aligned with the compass bearing. This spawned the concept of embedding a few LEDs into a jacket  for reading maps and showing position. Our minds didn’t stop there, however, and we quickly advanced to the idea of having an entire GPS system integrated into the jacket. Thus, the Jacket Positioning System, or the JPS.

It took me a while to get started on it, as my friend isn’t technologically gifted. I immediately knew where I was going to source my parts, from SparkFun.com (you will see their logo all over most of the stuff), however, it took me forever to compile a list. Finally, it came down to this:

You’ll quickly notice one thing about this list of parts. All things on this list can operate directly off the nominal voltage range of a LiPo battery. Why, you ask? Well, I didn’t want any of the stupid inefficientness of voltage boosters/regulators. As good as they have become, they aren’t 100% efficient. And since I was going for max battery life, I went for max efficiency. So, that’s the partslist, how’d I go about it?

Well, I hadn’t ever really done anything like this before (I had tinkered with Arduinos a bit, but that’s about it), so I just started building. I started with the Wombat proto-board (a wholly awesome product) by putting down the buttons and JST connector for the battery. It dawned on me right after that happened that my current soldering iron (a “wonderful” RadioShack iron) just wouldn’t cut it. So I fired more money at SparkFun and ordered their advanced tool kit. I don’t mean to sound all SparkFun fanboy-ish, but really, it is an awesome list of parts all of which you do need to get started.

BOOM! Funny side story time. Just about the most useful tool in there so far has been the pair of tweezers. They have literally saved me almost $100. They brought back an Arduino UNO from the dead by pulling out a 0.1″ pin from the RX header, and they saved my screen when a solid-core wire broke off in one of the terminals. Tangent done, back to the main story.

So, I got it all built, eventually, after discovering a few useful things about perfboards, like how awful solder trails look. Seriously, don’t do it. Anyway, the final result was actually quite interesting. I had a working little GPS thingy that could fit in a jacket (however the buttons cannot be reached at this point, it is still all on one board) and display Lat/Long, Speed/heading, Altitude, time/date, and RAM free (that was just for fun, the last one). Enough talking, Pics or it didn’t happen, right?

Right now, it’s pretty simple. It only does those functions, but with the help of the truly fantastic TinyGPS library, I have a destination function in the works. It goes for almost a week on one 6Ah LiPo battery… with the backlight on. If you were to turn off the backlight… It would probably run for almost  a month.

My future plans for this device are pretty simple, actually. I hope to design and manufacture a few PCBs for it, and get an actual case for the screen (waterproof, shock resistant, the whole 9 yards) and a 5 position joystick for the control input. I also want to build a solar charging station for it — a portable one, mind you. Then I hope people will buy them, but I doubt it.

Anyway, thanks for reading, I know it was long and rambling, but whatever — I do my best.

Eric

Advertisements

From → JPS, WIP

4 Comments
  1. Dan Z permalink

    Im trying to connect a Haicom HI-204III gps module to an Arduino duemilanove ATmega328P. the wiring is good, and i receive some data but its nothing like the Nmea string (i get numbers like 2031855020224337101101103511031021531542302002171531531531531531538951102166214020170110226190226178250782507858787815415415415415415411022619022614615451991545717913678121205154153511542302302301152432302041541532302433816623011521138230179267858627854344678863450203243166204154102166102511011541543020221411022619018220224278622646545862702630507816678787878787878544262385854787878198864650202214038148155787878155249217411022261150201701552491372012335721157211230115115115115115115115115179211166412141102261901822022427862264654585470263050781667878787878787854426238581541541544453153166214050701102261902261782507825078587878787878787878787878787878788658234202214110226190182202242786226465458507026305078166787878787878785442623858547878781988646622022140147501857878787878230192495078154250701102261902261782507825078587878787878787878787878787878788658234202214110226190226178166785078587858587854347854267854342678505878624278545878545854785826785438783046785450347878543078345078623054788634234202214110226190226178166785078547858587858427846547850624678786230784658786234587878583478545478585030787862267858627854344678863450202214110226190226178166785078507858587858307862267850544278267846624278347846624286302021101902027862465870307816678787854423854781984638214190230425038785442302462302302308650214015524913713723357243166204153511035052997623011511511511524323024323023011511583572431022432308357115243230230230102771534121411022619022617825078250785878787878787878787878787878787886582342022141102261901822022427862264654583870263050781667878787878787854426238585478787819886464220221403814820318522662102154421541567878198864646202214038148155787878155249217411022261150381481557878781552492174110222611505070110226190226178250782507858787878787878787878787878787878865823420221411022619022617816678507858785858785434785426785434267850587862427854587854585478546278543878304678545034787854307834507862305478863446202214110226190226178166785078547858587858427846547850624678786230784658786234587878583478545478585030787862267858627854344678863450202214110226190226178166785078507858587858307862267850544278587862785478623462783078463021422618224262265462265078787878784262587878864620201552491371372335724316620415351511035299762301151151151152432302432302301151158357243102243230835711524323023023010277153761586115524913720123357211572112301151151151151151151151151151151151151151151792111664121411022619018220224278622646545458702630507816678787878787878544262385854787878198864658202214110190178182230584258785078583826467858545850427862246230230382141007015524913720123357211572111981541541541541541541541541545310393121611552492174114511411511551891151021662140381481557878781552492174110222611507550185226190226501541541541541541102261901822022427862264654544670263050781667878787878787819811511501475018557787878782301924913773154195154672301482141102261581541533516623011521138230179102702041542302301793823023017919114192491372011535714723014723057243166204154102166230115211166204154230230243102166230115243202214110226782305122911511511511511511517916623010216610223011533814815578787815524921741102226115075501851924913720115415411419249507816678787878787878544262385819815537116545850535016622201701552491372012335721157211230115115115115115115115115179211166412141102261901822022427862264654543070263050781667878787878787854426238581541541544453153761586114750185226190226178250114115115115115115155249217412011532305122911511511511511511517916623010216610223011511551891151667615815070110226190226178250782507858787878787878787878787878787878865823420221411022619022617816678507858785858785434785426785434267850587862427854587854585478546278543878304678545034787854307834507862305478863446202214110226190226178166785078547858587858427846547850624678786230784658786234587878583478545478585030787862267858627854344678863450202214110226190226178166785078507858587858307862267850544278587862785478623462783078463021422618224262265462265078787878784262587878864620201552491371372335724316620415351102103529976230115115115115243230243230230115115835724310224323083571152432302302301027715376158611552491372012335721157211230115115115115115115115115115115115115115115179211166412141102261901822022427862264654505870263050781667878787878787854426238585478787819886466220221402017015524913720123357211572112301151151151151151151151151792111664121411022619018220224278622646545054702630507816678787878787878544262385815415415444531531662140381481557878781552492174110222611522019017818223074102166381022302432302002171531531531531531538951147501852261902261782501141151151151151151552492174120115323051229115115115115115115179166230102166102230115115518911516616622755018522619022650154154154154154110226190226178166785078587858587854347854267854342678505823017916610223021138100154154512022141103415433166104781557862511011541543876158611555710215442154154154154154154154038148155787878155249217411022261150147501857878787878230192495078154238148155787878155249217411022261150507011022619022617825078250785878787878787878787878787878787886582342022141102261901822022427862264654502670263050781667878787878787854426238585478787819886463020221411019017818223058425878507858382646785854585034786230230246230230230230230230863858202214050701102261902261782507825078587878787878787878787878787878788658234202214110226190226178166785078587858587854347854267854342678505878624278545878545854785846785438783046785450347878543078345078623054788634502022141102261902261781667850785478585878584278465478506246787862307846587862345878785834785454785850307878622678586278543446788634502022141102261902261781667850785078585878583078622678505442785878627854786234627830784630214226182242622654622650787878787842625878788646202035501855778787811022619018213823015678381481557878781552492174110222611505070155249137201233572115721123011511511511511511511511511511511511511511517921116641214110226190182202242786226465446507026305078166787878787878785442623858547878781988646422022140507015524913720123320318550202243371011011035110310215315423020021715315315315315315389511021662140201701102261902261782507825078587878154154154154154154110226190226146154519915457179136781212051541535115423023023011524323020415415323024338166230115211382301792678586278543446788634502032431662041541021661025110115415430202214110226190182202242786226465458627026305078166787878787878785442623858547878781988646502022140381481557878781552492174110222611502017015524913720123357211572112301151151151151151151151151792111664121411022619018220224278622646545854702630507816678787878787878544262385815415415444531531662140507011022619022617825078250785878787878787878787878787878787886582342022141102261901822022427862264654585070263050781667878787878787854426238585478787819886466220221401475018578787878782301924950781542507011022619022617825078250785878787878787878787878787878787886582342022141102261902261781667850785878585878543478542678543426785058786242785458785458547858267854387830467854503478785430783450786230547886342342022141102261902261781667850785478585878584278465478506246787862307846587862345878785834785454785850307878622678586278543446788634502022141102261902261781667850785078585878583078622678505442782678466242783478466242863020211019020278624658703078166787878544238547819846382141902304250387854423024623023023086502140155249137137233572431662041535110350529976230115115115115243230243230230115115835724310224323083571152432302302301027715341214110226190226178250782507858787878787878787878787878787878865823420221411022619018220224278622646545838702630507816678787878787878544262385854787878198864642202214038148203185226621021544215415678781988646462022140381481557878781552492174110222611503814815578787815524921741102226115050701102261902261782507825078587878787878787878787878787878788658234202214110226190226178166785078587858587854347854267854342678505878624278545878545854785462785438783046785450347878543078345078623054788634462022141102261902261781667850785478585878584278465478506246787862307846587862345878785834785454785850307878622678586278543446788634502022141102261902261781667850785078585878583078622678505442785878627854786234627830784630214226182242622654622650787878787842625878788646202015524913713723357243166204153515110352997623011511511511524323024323023011511583572431022432308357115243230230230102771537615861155249137201233572115721123011511511511511511511511511511511511511511517921116641214110226190182202242786226465454587026305078166787878787878785442623858547878781988646582022141101901781822305842587850785838264678585458504278622462302303821410070155249137201233572115721119815415415415415415415415415453103931216115524921741145114115115518911510216621403814815578787815524921741102226115075501852261902265015415415415415411022619018220224278622646545446702630507816678787878787878198115115014750185577878787823019249137731541951546723014821411022615815415335166230115211382301791027020415423023017938230230179191141924913720115357147230147230572431662041541021662301152111662041542302302431021662301152432022141102267823051229115115115115115115179166230102166102230115338148155787878155249217411022261150755018519249137201154154114192495078166787878787878785442623858198155371165458505350166222017015524913720123357211572112301151151151151151151151151792111664121411022619018220224278622646545430702630507816678787878787878544262385815415415444531537615861147501852261902261782501141151151151151151552492174120115323051229115115115115115115179166230102166102230115115518911516676158150701102261902261782507825078587878787878787878787878787878788658234202214110226190226178166785078587858587854347854267854342678505878624278545878545854785462785438783046785450347878543078345078623054788634462022141102261902261781667850785478585878584278465478506246787862307846587862345878785834785454785850307878622678586278543446788634502022141102261902261781667850785078585878583078622678505442785878627854786234627830784630214226182242622654622650787878787842625878788646202015524913713723357243166204153511021035299762301151151151152432302432302301151158357243102243230835711524323023023010277153761586115524913720123357211572112301151151151151151151151151151151151151151151792111664121411022619018220224278622646545058702630507816678787878787878544262385854787878198864662202214020170155249137201233572115721123011511511511511511511511517921116641214110226190182202242786226465450547026305078166787878787878785442623858154154154445315316621403814815578787815524921741102226115220190178182230741021663810223024323020021715315315315315315389511475018522619022617825011411511511511511515524921741201153230512291151151151151151151791662301021661022301151155189115166166227550185226190226501541541541541541102261902261781667850785878585878543478542678543426785058230179166102230211381001541545120221411034154331661047815578625110115415438761586115557102154421541541541541541541540381481557878781552492174110222611501475018578787878782301924950781542381481557878781552492174110222611505070110226190226178250782507858787878787878787878787878787878865823420221411022619018220224278622646545026702630507816678787878787878544262385854787878198864630202214110190178182230584258785078583826467858545850347862302302462302302302302302308638582022140507011022619022617825078250785878787878787878787878787878787886582342022141102261902261781667850785878585878543478542678543426785058786242785458785458547858467854387830467854503478785430783450786230547886345020221411022619022617816678507854785858785842784654785062467878623078465878623458787858347854547858503078786226785862785434467886345020221411022619022617816678507850785858785830786226785054427858786278547862346278307846302142261822426226546226507878787878426258787886462020355018557787878110226190182138230156783814815578787815524921741102226115050701552491372012335721157211230115115115115115115115115115115115115115115179211166

    I tried at different baud rates and i still get only numbers.
    I’m using the TinyGPS library but my code never gets passed the gps.encode(Serial.read()) line.

    I could use some help. Thnk you!

    • Hm. It isn’t a baud rate issue. It’s probably just the encoding. If you take a look at the last few numbers, it is 115 repeated many times. These are probably ASCII codes for letters. You are using the wrong print function to the terminal. There’s a function that sends the ASCII numbers over the serial line, then there’s a function that sends the letters themselves. You’re just using the wrong one.

      Could you send me your code? I’ll take a look at it.

      • Dan Z permalink

        Here is the code im using:

        #include
        #include
        #include “serLCD.h”
        #include “TinyGPS.h”
        TinyGPS gps;

        int rxPin = 0; // RX PIN
        int txPin = 1; // TX TX
        serLCD lcd(3);
        // SoftwareSerial nss(rxPin, txPin);
        float flat, flon;
        char buf[12];
        char buf2[12];
        unsigned long fix_age;

        void setup()
        {
        pinMode(rxPin, OUTPUT);
        pinMode(txPin, INPUT);
        Serial.begin(4800);
        // nss.begin (9600);
        lcd.clear();

        }

        void loop() {

        while (Serial.available())
        {
        int c=Serial.read();
        lcd.print(c);
        Serial.print(c);
        if (gps.encode(c))
        {
        {

        gps.f_get_position(&flat, &flon, &fix_age);

        //dtostrf(flat, 3, 7, buf);
        //dtostrf(flon, 3, 7, buf2);
        lcd.selectLine (1);
        lcd.print(flat);
        lcd.print(“N”);
        memset(buf,0,12);
        delay(2000);
        lcd.selectLine (2);
        lcd.print(flon);
        lcd.print(“E”);
        memset(buf2,0,12);
        delay(3000);
        lcd.clear();

        }
        }
        }
        }

      • Okay, there’s a few issues with your code. First I will mention the control flow issue. You have a delay within a loop that reads serial data — that’s bad practice because it can cause the serial buffer to overflow. Not a big issue in this application, it’s just a note for the future.

        As for the reason why you’re getting just numbers is this: you are reading the serial data in as an integer, rather than a byte or char. So, in order to fix the code so that it’ll work flawlessly (for the delay contained in the loop shouldn’t throw a wrench in anything) all you need to do is change “int c = Serial.read();” into “char c = Serial.read();”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: