{"id":358,"date":"2007-03-11T12:41:24","date_gmt":"2007-03-11T11:41:24","guid":{"rendered":"http:\/\/majek.mamy.to\/?p=358"},"modified":"2012-09-23T14:16:12","modified_gmt":"2012-09-23T12:16:12","slug":"gps","status":"publish","type":"post","link":"https:\/\/majek.sh\/pl\/gps\/","title":{"rendered":"GPS logger do samodzielnego z\u0142o\u017cenia"},"content":{"rendered":"<p><\/p>\n<h1>Troch\u0119 historii<\/h1>\n<p>Na grupie <i>pl.misc.elektronika<\/i> kto\u015b wspomia\u0142 o tanich modu\u0142ach gps firmy Axiom z Allegro. Jak grzyby po deszczu zacz\u0119\u0142y nap\u0142ywa\u0107 raporty kolejnych ludzi, kt\u00f3rzy kupili i uruchomili. Mi r\u00f3wnie\u017c uda\u0142o si\u0119 za\u0142apa\u0107 na promocyjn\u0105 cen\u0119 i r\u00f3wnie\u017c zacz\u0105\u0142em d\u0142uba\u0107.<br \/>\nOpr\u00f3cz polutowania mikroskopijnego z\u0142\u0105cza, to reszta ju\u017c by\u0142a banalna. Na pocz\u0105tek MAX232, zasilanie +5V wzi\u0119te wtyczki PS\/2 komputera i co\u015b wypluwa: znaczy si\u0119 dobry.<br \/>\nKolej na anten\u0119. Chwilowo w finansowym do\u0142ku decyduj\u0119 si\u0119 na zrobienie w\u0142asnej. Google d\u0142ugo nie wyrzucaj\u0105 nic ciekawego, a\u017c w ko\u0144cu trafiam na <a href=\"http:\/\/www.arrl.org\/tis\/info\/pdf\/0210036.pdf\">artyku\u0142 (pdf)<\/a> z jakiej\u015b gazety, kt\u00f3ry wygl\u0105da zach\u0119caj\u0105co i bior\u0119 si\u0119 do roboty. P\u00f3\u017aniej jeszcze znajduj\u0119 ze dwa projekty, ale ten jest z nich najlepszy (stosunkowo ma\u0142a antena i niez\u0142y zysk).<br \/>\nPierwsze odczyty prawdziwej pozycji! Kilka reset\u00f3w i sporo czasu ponownego szukania satelit\u00f3w i pozycji od nowa sk\u0142aniaj\u0105 mnie od razu do domontowania bateryjki podtrzymuj\u0105cej pami\u0119\u0107 (CR2032 z p\u0142yty g\u0142\u00f3wnej). Elektronika l\u0105duje w pude\u0142ku od zapa\u0142ek:-)<br \/>\nPierwsze \u015blady zrobione na rowerze z laptopem&#8230;<br \/>\nNiestety, przerwy w \u015bladzie (lu\u017ana wtyczka zasilania), waga laptopa i spos\u00f3b jazdy z<br \/>\njednak dosy\u0107 delikatnym \u0142adunkiem nie pozwalaj\u0105 spocz\u0105\u0107 na laurach &#8211; trzeba kombinowa\u0107 dalej.<\/p>\n<p><b>CEL: urz\u0105dzenie rejestruj\u0105ce \u015blady, najlepiej w postaci 'czarnej skrzynki&#8217;.<\/b><br \/>\nA najlepiej jakby potrafi\u0142o zarejestrowa\u0107 ca\u0142y wyjazd Harpaganowy (3-4 dni)&#8230;<\/p>\n<p>Maj\u0105c kilka z\u0142omowatych baterii od DELL-a mam pomys\u0142, \u017ceby wsadzi\u0107 ca\u0142o\u015b\u0107 w\u0142a\u015bnie do takiej baterii. Idea by\u0142a taka, \u017ceby na wyjazdach z laptopem nie zajmowa\u0142o to dodatkowego miejsca, \u0142atwo si\u0119 \u0142adowa\u0142o (z laptopa) i awaryjnie r\u00f3wnie\u017c zasila\u0142o laptopa. Po za\u0142adowaniu do baterii czterech 'nowych&#8217; ogniw Li-Ion (zamiast 8 jak jest orginalnie) upad\u0142o ju\u017c jedno za\u0142o\u017cenie: elektronika baterii dalej my\u015bli, \u017ce ogniwa maj\u0105 3.6Ah i \u0142aduje je za du\u017cym pr\u0105dem \ud83d\ude41<br \/>\nPo pierwszych testach i padzie dw\u00f3ch ogniw (by\u0142y wadliwe) elektronika baterii wog\u00f3le fiksuje i nie chce nawet oddawa\u0107 pr\u0105du do laptopa -> \u015bmietnik.<\/p>\n<h1>Hardware<\/h1>\n<p>Chwilowo wygl\u0105da to tak:<\/p>\n<table>\n<tr>\n<td><a href=\"\/gps\/zdjecia\/gps3.jpg\"><img decoding=\"async\" src=\"\/gps\/zdjecia\/gps3m.jpg\"><\/a><\/td>\n<td><a href=\"\/gps\/zdjecia\/gps4.jpg\"><img decoding=\"async\" src=\"\/gps\/zdjecia\/gps4m.jpg\"><\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=\"\/gps\/zdjecia\/gps1.jpg\"><img decoding=\"async\" src=\"\/gps\/zdjecia\/gps1m.jpg\"><\/a><\/td>\n<td><a href=\"\/gps\/zdjecia\/gps2.jpg\"><img decoding=\"async\" src=\"\/gps\/zdjecia\/gps2m.jpg\"><\/a><\/td>\n<\/tr>\n<\/table>\n<p>Mo\u017cna to nazwa\u0107 wersj\u0105 1.0, bo dzia\u0142a tak jak trzeba, ale w miar\u0119 jedzenia apetyt ro\u015bnie \ud83d\ude42<br \/>\nJest to wersja prototypowa (procesor w DIL, p\u0142ytka uniwersalna itp).<\/p>\n<p>Co wida\u0107 i z czego w ko\u0144cu to si\u0119 sk\u0142ada:<\/p>\n<ul>\n<li>2 akumulatorki Li-Ion (docelowo 4, ale po padzie dw\u00f3ch musz\u0119 odrobi\u0107 straty)\n<li>przetworniczka do 3.3V na LM2675 (za rad\u0105 RoMana), przy 4 ogniwach sprawno\u015b\u0107 jej wynosi\u0142a 78%. Zielona p\u0142ytka widoczna w lewym dolnym rogu. Z braku kondensator\u00f3w low ESR na napi\u0119cie ok. 20-25V da\u0142em dwa zwyk\u0142e r\u00f3wnolegle. Dla por\u00f3wnania najpierw zrobi\u0142em przetwornic\u0119 na MAX832, ale tamta mia\u0142a sprawno\u015b\u0107 71%\n<li>modu\u0142 GPS Axiom zamontowany na p\u0142ytce 'do g\u00f3ry nogami&#8217;. Pod nim wkomponowana bateria CR2032 (ekran modu\u0142u 'umasiony&#8217; robi od razu za ujemny styk baterii).\n<li>Procesor ATMEGA8L z zewn\u0119trznym kwarcem 8Mhz\n<li>kieszonka na kart\u0119 pami\u0119ci SD\/MMC\n<li>pod kieszonk\u0105 na kart\u0119 zamontowanych kilka element\u00f3w biernych, jeden tranzystor, kwarc itp\n<li>2 prze\u0142\u0105czniki bistabilne (jeden do w\u0142\u0105czania zasilania, drugi do prze\u0142\u0105czania wyj\u015bcia rs232 procesor&lt;&gt;gps, jeden mikroswitch (jeszcze nie wiem po co:-))\n<li>z\u0142\u0105czka do pod\u0142\u0105czenia wy\u015bwietlacza (w planach). S\u0142u\u017cy r\u00f3wnie\u017c do \u0142adowania akumulator\u00f3w.\n<li>wykastrowany kabel od kom\u00f3rki (Siemens) robi\u0105cy z powodzeniem za max3232, taniej i nie zabieraj\u0105c miejsca na p\u0142ytce\n<li>z\u0142\u0105czka SMA z kr\u00f3tkim kabelkiem i wtyczk\u0105 MMCX do GPS-a\n<li>dwie diody \u015bwiec\u0105ce (czerwona i \u017c\u00f3\u0142ta)\n<\/ul>\n<p>Schemat:<br \/>\n<img decoding=\"async\" src=\"\/gps\/zdjecia\/gps.png\"><br \/>\nJak wida\u0107 jest to wersja beta (mo\u017cnaby wywali\u0107 kilka opornik\u00f3w podci\u0105gaj\u0105cych, pozmienia\u0107 troch\u0119 warto\u015bci kondensator\u00f3w, bo da\u0142em jakie mia\u0142em:-)). JP1 dodany 'z musu&#8217; po stracie dw\u00f3ch ogniw i obni\u017ceniu napi\u0119cia zasilania.<\/p>\n<h1>Robi w tej chwili<\/h1>\n<ul>\n<li>procesor odbiera po rs-ie dane nmea z gps-a i zapisuje sobie w buforze w pami\u0119ci (na przerwaniach)\n<li>po uzbieraniu si\u0119 co najmniej 512 bajt\u00f3w zapisuje dane na kart\u0119 SD\n<li>zapami\u0119tuje ostatni sektor zapisany w eepromie, \u017ceby mo\u017cna by\u0142o p\u00f3\u017aniej dalej nagrywa\u0107 na kart\u0119 od przerwanego miejsca (nawet po wy\u0142\u0105czeniu zasilania)\n<li>dzia\u0142a hot-swap karty (sprawdzanie obecno\u015bci i inicjalizacja przy w\u0142o\u017ceniu, nie zapisywanie danych w ciemno)\n<li>mierzone jest napi\u0119cie baterii przez wewn\u0119trzny ADC, wypluwany status co 10s na wyj\u015bcie mikroprocesora (rs) oraz zapisywane na karcie pomi\u0119dzy komunikatami nmea (inteligentnie &#8211; czeka z zapisem do cr\/lf)\n<li>czerwona dioda: \u015bwieci gdy brak karty lub by\u0142 b\u0142\u0105d w zapisie, miga kr\u00f3tko podczas zapisu sektora\n<li>\u017c\u00f3\u0142ta dioda: miga kr\u00f3tko przy ka\u017cdym odebranym bajcie po interfejscie szeregowym z gps-a\n<li>zrobione proste cli umo\u017cliwiaj\u0105ce resetowanie licznika sektor\u00f3w karty, pokazanie aktualnego  stanu licznika oraz stanu baterii, kr\u00f3tki help.\n<\/ul>\n<h1>Software<\/H1><br \/>\n\u015aci\u0105gnij: <a href=\"http:\/\/sourceforge.net\/project\/showfiles.php?group_id=159626\">pliki na sourceforge.net<\/a><\/p>\n<ul>\n<li>Licencja GPL\n<li>Asembler\n<li>Do kompilacji u\u017cywam <a href=\"http:\/\/avra.sf.net\">avra<\/a> &#8211; nie gwarantuj\u0119, \u017ce czymkolwiek innym si\u0119 to skompiluje\n<li>Poniewa\u017c kod na chwil\u0119 obecn\u0105 zajmuje ok 1kB, a pami\u0119ci jest tam a\u017c 8KB, to nie jest on specjalnie optymalizowany pod k\u0105tem zaj\u0119to\u015bci pami\u0119ci. G\u0142\u00f3wnym priorytetem jest<br \/>\nna razie jego czytelno\u015b\u0107 i sp\u00f3jno\u015b\u0107 logiczna. Je\u017celi masz jakie\u015b uwago do kodu, to nie obra\u017caj si\u0119 jak odpowiem 'tak ma by\u0107, bo tak jest \u0142adniej&#8217;. S\u0142aba optymalizacja pod wzgl\u0119dem obj\u0119to\u015bci nie oznacza to oczywi\u015bcie niechlujstwa i stosowania makr bezsensownie powi\u0119kszaj\u0105cych kod.<\/p>\n<li>Obs\u0142uga karty SD\/MMC przeklepana z Yampp-a z dodaniem timeoutu przy zapisie, bo by\u0142a p\u0119tla niesko\u0144czona w pewnych warunkach (brak odpowiedzi karty po wys\u0142aniu danych do zapisu).\n<li>Jak na razie mo\u017cna doszuka\u0107 si\u0119 tam kilku regu\u0142:\n<ul>\n<li>definicje rejestr\u00f3w, bit\u00f3w wraz z opisami na pocz\u0105tku\n<li>wszystkie rejestry maj\u0105 swoje nazwy robocze, wi\u0119c nie u\u017cywam nazw nic nieznacz\u0105cych typu r18 itp. Wyj\u0105tkiem mo\u017ce by\u0107 r0, bo czasem jest to jedyny rejestr na kt\u00f3rym co\u015b dzia\u0142a\n<li>makra\n<li>wektory przerwa\u0144\n<li>g\u0142owny program\n<li>procedury obs\u0142ugi przerwa\u0144\n<li>inne pomocnicze procedury\n<li>sta\u0142e (dane)\n<li>zmienne (ram i eeprom)\n<li>procedury dotycz\u0105ce karty sd zaczynaj\u0105 si\u0119 na sd_, obs\u0142ugi rs232-a na rs_, og\u00f3lne spi na spi_ itp.\n<\/ul>\n<li>w sofcie mo\u017ce by\u0107 troch\u0119 \u015bmieci, bo jest to wersja robocza i opr\u00f3cz tego co dzia\u0142a ju\u017c s\u0105 zacz\u0105tki innych rzeczy (niekoniecznie b\u0119dzie to docelowo tak wygl\u0105da\u0107)\n<\/ul>\n<p><b>UWAGA!: poniewa\u017c soft nagrywa dane sektor po sektorze, wi\u0119c prawdopodobie\u0144stwo odczytania takiej karty pod windowsem jest mizerne. Pod Linuksem i innymi systemami, kt\u00f3re nie maj\u0105 problem\u00f3w z dost\u0119pem do urz\u0105dze\u0144 bez filesystemu i partycji w wi\u0119kszo\u015bci wypadk\u00f3w wystarczy u\u017cy\u0107 komendy<\/p>\n<div class=\"codecolorer-container text railscasts\" style=\"overflow:auto;white-space:nowrap;width:550px;\"><div class=\"text codecolorer\">dd if=\/dev\/sda of=plik<\/div><\/div>\n<p>i ewentualnie wyci\u0105\u0107 z ko\u0144ca pliku \u015bmieci<\/b><\/p>\n<h1>TO DO<\/H1><\/p>\n<ul>\n<li>obs\u0142uga jakiego\u015b filesystemu na karcie zamiast zapisu '\u017cywych&#8217; sektor\u00f3w\n<li>wi\u0119cej logiki i sterowania do procesora\n<ul>\n<li>kalibracja napi\u0119cia baterii poprzez cli\n<\/ul>\n<li>rozpoznawania r\u00f3\u017cnych kart (a przynajmniej wielko\u015bci)\n<li>oprogramowanie mikroswitcha\n<li>pod\u0142\u0105czenie wy\u015bwietlacza od Siemensa S65\n<li>oprogramowanie wy\u015bwietlacza (wy\u015bwietlanie map???)\n<li>czujnik ruchu roweru (kontraktron + magnes na kole) i automatyczne zaznaczanie waypoint\u00f3w\n<li>troch\u0119 elektroniki dla baterii (mo\u017ce \u0142adowarka 'zewsz\u0105d&#8217; ze step-up sterowana prockiem?)\n<li>wersja angielska i ewentualne przenosiny na avrgps.sourceforge.net\n<\/ul>\n<p>Do wersji 2.0 elektroniki:<\/p>\n<ul>\n<li>zmiana sposobu zasilania pozwalaj\u0105ca procesorowi odci\u0105\u0107 zasilanie dla modu\u0142u gps-a\n<li>zmiana po\u0142\u0105czenia ogniw na daj\u0105ce 7.2V (teraz 14.4V) -&gt; wi\u0119ksza sprawno\u015b\u0107 przetwornicy, \u0142atwiejsze \u0142adowanie i kontrola baterii, ale do pod\u015bwietlenia wy\u015bwietlacza trzeba b\u0119dzie dorobi\u0107 przetworniczk\u0119 step-up\n<li>zmiana procka na ATMEGA128, ATMEGA162 lub inny z 2xUART, bo to zwi\u0119kszy elastyczno\u015b\u0107\n<li>dodanie jakiego\u015b multipleksera zamiast prze\u0142\u0105cznika wej\u015b\u0107 (pewnie b\u0119dzie CPLD Xilinxa)\n<li>czujnik przy\u015bpieszenia do wykrywania stanu nieruchomego i u\u015brednianie pozycji przy bezruchu\n<li>lepsze zasilanie przetwornika ADC, pomiar napi\u0119cia poszczeg\u00f3lnych ogniw (?)\n<li>pod\u0142\u0105czenie kamerki MCA-25 od Ericssona\n<li>zintegrowanie wy\u015bwietlacza\n<\/ul>\n<h1>ChangeLog<\/h1>\n<ul>\n<li>2006.02.27: dodane D2, D3, C7 i R9 dla mo\u017cliwo\u015bci wy\u0142\u0105czenia przetwornicy i samoodci\u0119cia zasilania przez procesor w przypadku zbytniego roz\u0142adowania baterii (trzeba uaktualni\u0107 soft!).\n<li>2006.02.27: strona i kod ju\u017c w subversion\n<li>2006.03.02: pliki na sourceforge.net. Migracja strony chyba te\u017c wkr\u00f3tce\n<li>2006.03.02: poprawiony troche hardware, w sofcie ju\u017c autowy\u0142\u0105czanie przy za niskim stanie baterii, troch\u0119 drobnych poprawek w kodzie\n<li>2006.03.19: interpreter komend (cli). Mo\u017cna teraz przez konsol\u0119 po rs-ie zresetowa\u0107 licznik sektor\u00f3w, odczyta\u0107 aktualny sektor, w\u0142\u0105cza\u0107\/wy\u0142\u0105cza\u0107 raportowanie statusu baterii na konsol\u0119, kr\u00f3tki help. Dodatkowo dolny poziom stanu baterii przy kt\u00f3rym wy\u0142\u0105czana jest przetwornica jest zapisany w eepromie zamiast na sta\u0142e z kodzie.\n<li>2006.04.06: uzupe\u0142nienie www\n<li>2006.07.10: dodanie buzzera piszcz\u0105cego przy niskim stanie baterii (pod PB0)\n<\/ul>\n<p><H1>Pomocne linki<\/H1><\/p>\n<ul>\n<li><a href=\"http:\/\/www.arrl.org\/files\/file\/Technology\/tis\/info\/pdf\/0210036.pdf\">http:\/\/www.arrl.org\/files\/file\/Technology\/tis\/info\/pdf\/0210036.pdf<\/a> &#8211; An Inexpensive External GPS Antenna\n<li><a href=\"http:\/\/www.ggrweb.com\/article\/gulley.html\">http:\/\/www.ggrweb.com\/article\/gulley.html<\/a> &#8211; GPS Helix Antenna\n<li><a href=\"http:\/\/www.sp2swj.sp-qrp.pl\/gps\/gps_Axiom_Swift_B2.htm\">http:\/\/www.sp2swj.sp-qrp.pl\/gps\/gps_Axiom_Swift_B2.htm<\/a> &#8211; duuu\u017co materia\u0142u o module GPS Axiom Swift\n<li><a href=\"http:\/\/www.laptop.net.pl\/gps_swift\/\">http:\/\/www.laptop.net.pl\/gps_swift\/<\/a> &#8211; pakiet softu i specyfikacja modu\u0142u GPS Axiom Swift\n<\/ul>\n<h1>AVRGPS 2.0<\/h1>\n<p>Work is still in progress&#8230;<\/p>\n<p>2007.02.13, first LCD code:<br \/>\n<img decoding=\"async\" src=\"\/gps\/zdjecia\/lcd.jpg\"><\/p>\n<p>2007.02.20, parse GPRMC and display some basic data, LCD library done:<br \/>\n<img decoding=\"async\" src=\"\/gps\/zdjecia\/lcd2.jpg\"><\/p>\n<p>2007.03.06, parse GPGSA and GPGSV, math library done, added flying sats:<br \/>\n<img decoding=\"async\" src=\"\/gps\/zdjecia\/lcd3.jpg\"><\/p>\n<p><strong>Update 2012.08.25<\/strong><br \/>\nStrona przeniesiona do bloga, data wpisu ustawiona ostatni\u0105 dat\u0119 modyfikacji.<br \/>\nProjekt nie jest ju\u017c wspierany od dawna, chocia\u017c sprz\u0119t nadal dzia\u0142a i jest u\u017cywany.<br \/>\nPewnie nied\u0142ugo dorzuc\u0119 tu lub na SourceForge \u017cr\u00f3d\u0142a softu w wersji z wy\u015bwietlaczem&#8230;<\/p>","protected":false},"excerpt":{"rendered":"<p>Troch\u0119 historii Na grupie pl.misc.elektronika kto\u015b wspomia\u0142 o tanich modu\u0142ach gps firmy Axiom z Allegro. Jak grzyby po deszczu zacz\u0119\u0142y nap\u0142ywa\u0107 raporty kolejnych ludzi, kt\u00f3rzy kupili i uruchomili. Mi r\u00f3wnie\u017c uda\u0142o si\u0119 za\u0142apa\u0107 na promocyjn\u0105 cen\u0119 i r\u00f3wnie\u017c zacz\u0105\u0142em d\u0142uba\u0107. <span class=\"excerpt-dots\">&hellip;<\/span> <a class=\"more-link\" href=\"https:\/\/majek.sh\/pl\/gps\/\"><span class=\"more-msg\">Czytaj dalej &rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[24,29],"_links":{"self":[{"href":"https:\/\/majek.sh\/pl\/wp-json\/wp\/v2\/posts\/358"}],"collection":[{"href":"https:\/\/majek.sh\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/majek.sh\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/majek.sh\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/majek.sh\/pl\/wp-json\/wp\/v2\/comments?post=358"}],"version-history":[{"count":26,"href":"https:\/\/majek.sh\/pl\/wp-json\/wp\/v2\/posts\/358\/revisions"}],"predecessor-version":[{"id":374,"href":"https:\/\/majek.sh\/pl\/wp-json\/wp\/v2\/posts\/358\/revisions\/374"}],"wp:attachment":[{"href":"https:\/\/majek.sh\/pl\/wp-json\/wp\/v2\/media?parent=358"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/majek.sh\/pl\/wp-json\/wp\/v2\/categories?post=358"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/majek.sh\/pl\/wp-json\/wp\/v2\/tags?post=358"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}