Shop OBEX P1 Docs P2 Docs Learn Events
Case change for GPS data logger — Parallax Forums

Case change for GPS data logger

RagtopRagtop Posts: 406
edited 2012-10-11 17:13 in Robotics
Ok. not much of a project, just changing cases, but I don't remember putting this project up here so in the process of
changing it over I thought I would go over the details of this GPS data logger that writes a KML track file to use with Google Earth.

[video=youtube_share;5Bp0cpiBj5s]

Comments

  • RagtopRagtop Posts: 406
    edited 2012-04-12 06:18
    My casing skills may not be stellar, but they are improved from where I started. I have got to work with the table saw and sander, as I am now trying to squeeze
    all the electronics into the lid of the new case.

    IMG_8011.jpg
    1024 x 591 - 83K
  • RagtopRagtop Posts: 406
    edited 2012-05-08 11:30
    Did I say "Not much of a project"? A month ago?

    I ran into a snag as I butchered my microSD adapter, but finally got all the hardware
    working again and hope to go over some software updates in the next video.
  • RagtopRagtop Posts: 406
    edited 2012-05-15 10:54
    Umm, video of me editing my program makes my past videos seem as exciting as Bourne Identity in comparison.

    So until I get finished with that here is a kml file that it kicked out today and a clip of it on Google Earth. Didn't get
    good readings with the GPS as I had unit in pants pocket. Usually does better in backpack.
    <?xml version='1.0' encoding='UTF-8'?>
    <kml xmlns='http://www.opengis.net/kml/2.2'
    xmlns:gx='http://www.google.com/kml/ext/2.2'>
      <Document>
    <description>This is track #2 that was started on 5/15/2012</description>
    <Placemark>
    <TimeSpan>
    <begin>2012-05-15T12:10:27Z</begin><end>2012-05-15T12:10:37Z</end></TimeSpan>
    <name>Start</name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04507</longitude>
    <latitude>29.18678</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04507</longitude>
    <latitude>29.18678</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>270</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:10:28Z</begin><end>2012-05-15T12:10:38Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04508</longitude>
    <latitude>29.18678</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>270</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:10:29Z</begin><end>2012-05-15T12:10:39Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04508</longitude>
    <latitude>29.18679</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>270</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:10:34Z</begin><end>2012-05-15T12:10:44Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04507</longitude>
    <latitude>29.18681</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>270</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:10:39Z</begin><end>2012-05-15T12:10:49Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04505</longitude>
    <latitude>29.18678</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>0</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:10:44Z</begin><end>2012-05-15T12:10:54Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04503</longitude>
    <latitude>29.18675</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>0</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:10:49Z</begin><end>2012-05-15T12:10:59Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04501</longitude>
    <latitude>29.18672</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>0</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:10:54Z</begin><end>2012-05-15T12:11:04Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04499</longitude>
    <latitude>29.18669</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>0</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:11:04Z</begin><end>2012-05-15T12:11:14Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04495</longitude>
    <latitude>29.18666</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>0</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:11:04Z</begin><end>2012-05-15T12:11:14Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.0449</longitude>
    <latitude>29.18664</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>315</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:11:09Z</begin><end>2012-05-15T12:11:19Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04472</longitude>
    <latitude>29.1867</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>315</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:11:18Z</begin><end>2012-05-15T12:11:28Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04454</longitude>
    <latitude>29.18671</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>315</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:11:18Z</begin><end>2012-05-15T12:11:28Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04445</longitude>
    <latitude>29.1867</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>270</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:11:23Z</begin><end>2012-05-15T12:11:33Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04445</longitude>
    <latitude>29.1867</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>270</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:11:28Z</begin><end>2012-05-15T12:11:38Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.0445</longitude>
    <latitude>29.18691</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>225</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:11:33Z</begin><end>2012-05-15T12:11:43Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.0445</longitude>
    <latitude>29.18691</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>225</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:11:38Z</begin><end>2012-05-15T12:11:48Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.0445</longitude>
    <latitude>29.18691</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>225</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:11:43Z</begin><end>2012-05-15T12:11:53Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.0445</longitude>
    <latitude>29.18691</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>225</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:11:48Z</begin><end>2012-05-15T12:11:58Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.0445</longitude>
    <latitude>29.18691</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>225</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:11:58Z</begin><end>2012-05-15T12:12:08Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.0445</longitude>
    <latitude>29.18691</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>225</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:11:58Z</begin><end>2012-05-15T12:12:08Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04466</longitude>
    <latitude>29.18714</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>315</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:12:03Z</begin><end>2012-05-15T12:12:13Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04441</longitude>
    <latitude>29.18678</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>225</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:12:08Z</begin><end>2012-05-15T12:12:18Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04421</longitude>
    <latitude>29.18669</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>270</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:12:13Z</begin><end>2012-05-15T12:12:23Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04411</longitude>
    <latitude>29.18669</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>270</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:12:18Z</begin><end>2012-05-15T12:12:28Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04402</longitude>
    <latitude>29.18669</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>270</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:12:27Z</begin><end>2012-05-15T12:12:37Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04399</longitude>
    <latitude>29.1867</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>0</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:12:32Z</begin><end>2012-05-15T12:12:42Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04392</longitude>
    <latitude>29.18666</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>270</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:12:33Z</begin><end>2012-05-15T12:12:43Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04375</longitude>
    <latitude>29.18665</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>270</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:12:42Z</begin><end>2012-05-15T12:12:52Z</end></TimeSpan>
    </Placemark>
    <Placemark>
    <name></name>
    <Model id='hike'>
    <altitudeMode>relativeToGround</altitudeMode>
    <Location>
    <longitude>-82.04367</longitude>
    <latitude>29.18667</latitude>
    <altitude>0</altitude>
    </Location>
    <Orientation>
    <heading>270</heading>
    <tilt>0</tilt>
    <roll>0</roll>
    </Orientation>
    <Scale>
    <x>1</x>
    <y>1</y>
    <z>1</z>
    </Scale>
    <Link>
    <href>hike.dae</href> 
    </Link>
    </Model>
    <TimeSpan>
    <begin>2012-05-15T12:12:42Z</begin><end>2012-05-15T12:12:52Z</end></TimeSpan>
    </Placemark>
     </Document>
    </kml>
    
  • Duane DegnDuane Degn Posts: 10,588
    edited 2012-05-15 11:25
    Thomas,

    How are your regulating the voltage in your logger?

    I had a GPS logger that was working pretty well until I added a switching regulator in order to use the battery power more efficiently. The switching regulator seriously interfered with the GPS reception.

    A had a similar problem when I tried to use a LCD with a backlight. The backlight voltage booster, interfered with the GPS signal.

    Apparently there are ways of shield these noisy items but I haven't learned how to do it yet.

    I did purchase some copper tape from SparkFun in hopes of making a metal cage for the noisy items. I haven't tried using it yet.
  • RagtopRagtop Posts: 406
    edited 2012-05-15 11:39
    With a 3.3v zener diode. The 3.7v lipo battery didn't give me any drop-out room for a regulator. Used it for a year like that without a problem on the Propeller Proto Board bypassing the regs on it.

    Does make me wonder if I could get more interference now from the other components as I now have everything crammed together. Copper tape going on the wish list.
  • RagtopRagtop Posts: 406
    edited 2012-05-17 12:32
    I got my 3d models for the hiker, bike, and car from various free places to get 3d studio max .3ds models online and then imported them into Google's Sketchup and exported them as .dae files.
    I store the .dae files in the main directory of the micro SD card that I write the tracks to. The flag pole for when the placemark button is pressed I made in 3d studio max.

    gps models.jpg
    1024 x 529 - 83K
  • WBA ConsultingWBA Consulting Posts: 2,933
    edited 2012-05-17 16:50
    Ragtop, Nice setup, I really like the portability of the case you are using. I have a similar setup in a Polycase VM-36 enclosure that uses a Gadget Gangster USB (non-uSD) board (prototype predecessor to the Gadget Gangster PP-USB), the same GPS, and the uOLED-128-G1 display. After seeing this, I think I will change to a PP-USB board to add uSD, and then do some KML logging as well. Do you have the code you are using posted anywhere?

    On a side note, if you wanted to reduce your size a bit more, you could take one of my M44D40+ modules and my micro-microSD adapter to get a PCB footprint about the size of a DIP40 chip.
  • RagtopRagtop Posts: 406
    edited 2012-05-17 17:08
    Ragtop, Nice setup, I really like the portability of the case you are using. I have a similar setup in a Polycase VM-36 enclosure that uses a Gadget Gangster USB (non-uSD) board (prototype predecessor to the Gadget Gangster PP-USB), the same GPS, and the uOLED-128-G1 display. After seeing this, I think I will change to a PP-USB board to add uSD, and then do some KML logging as well. Do you have the code you are using posted anywhere?

    On a side note, if you wanted to reduce your size a bit more, you could take one of my M44D40+ modules and my micro-microSD adapter to get a PCB footprint about the size of a DIP40 chip.

    OMG, I would have room for all sorts of stuff using your M44D40+ board.

    Code is coming soon. It is really nasty, but working. With the change, I wanted to fix some of the things I was doing.
    1. Now it checks to see if file exist, so as not to overwrite previous tracks.
    2. It now closes and appends to file, which gives me a better chance to recover data if something crashes. I was leaving file open for the whole write
    3. Not a fix, but added a new placemark function for the the added button that plants the flag.

    I am working on the last addition. I wanted a larger clock as I am using this for video and the small time numbers on the animation slider don't show up. So I am overlaying a flip-number clock
    to the bottom right of the window.

    flip clock.jpg
    1024 x 643 - 144K
  • RagtopRagtop Posts: 406
    edited 2012-05-18 11:48

    Got a lot of movement considering it sit on my computer desk the whole time, but the clock overlay is working!
  • RagtopRagtop Posts: 406
    edited 2012-05-19 15:34

    The propeller code so far. I have to package up everything in a zip file as I modified GPS Float with some extra methods.
    CON
      _CLKMODE = XTAL1 + PLL16X
      _XINFREQ = 5_000_000
      
      carbutton = 9
      bikebutton = 7
      hikebutton = 10
      carLED = 8
      bikeLED = 6
      hikeLED = 11
      Placemarkbutton = 12
      orangeLED = 14
      greenLED = 13
    
      'gps is pin 5
      'MicroSD card adapter is on pins 16,17,18,19
    obj
       sdcard: "fsrw"
       gps   : "GPS_Float"
       FS    : "FloatString"
     
    
    var
       long latold, latnew, longold, longnew, distance
       long x, filenum, open, oldelevation, newelevation
       long Stack[32], carpressed, bikepressed, hikepressed, placemark, firstloopcheck
       long model
       long year, month, day, hour, minute, second, endhour,endminute,endsecond
       long count 'for counting every 8th icon to fly map over to new position
       long Elcheck,rtcheck 'elevation and rotation changes
       long writing 'is one if writing to card
       long getout 'to get out of findnewfile nest
       long OLhour,OLminute
    pub Startup                              '900 coordinate updates an hour / every 4 seconds
     
           gps.init             ' 4 cogs
           initButtons         ' 1 cog
           sdcard.mount    ' 1 cog       
           dira[orangeLED]~~         'card writing LED indicator
           outa[orangeLED] := 0
           dira[greenLED]~~         'sat fix LED indicator
           outa[greenLED] := 0
           filenum := 0
           open := 0
           model := 0
           carpressed := 0
           bikepressed := 0
           hikepressed := 0
           placemark := 0
           writing := 0
           getout := 0
           Mainprogram
           
    Pub Mainprogram
           firstloopcheck := 0     
           repeat
              repeat while carpressed == 0 and bikepressed == 0 and hikepressed == 0  'just wait until button pressed first time
                CheckSatFix 
              ShortBlink
      
              if open == 1       'if file open and button pressed, close file.
                 firstloopcheck := 0
                 writing := 0
                 Endfile
    
              else
                 distance := 0   'start new file using filenum to increment filenames
                 if carpressed == 1 
                    model := 1
                 if bikepressed == 1
                    model := 2
                 if hikepressed == 1
                    model := 3                          
                 carpressed := 0
                 bikepressed := 0
                 hikepressed := 0
                 Openfile
                 writing := 1
    
    Pub Openfile
              filenum++ 
              FindNewFile   'find a track# that has not been used
              WriteFileHeader
     
              open := 1
              count := 1
              getout := 0
              WriteIcons
    
    Pub FindNewFile
         if getout == 0     'dont do again if already opened a file     
              case filenum
                 1:   if sdcard.popen(string("track1.kml"),"r")== -1    'file doesn't exist
                            sdcard.popen(string("track1.kml"),"w")
                            getout := 1
                      else
                          filenum++
                          FindNewFile       
                 2:   if sdcard.popen(string("track2.kml"),"r")== -1    'file doesn't exist
                            sdcard.popen(string("track2.kml"),"w")
                            getout := 1 
                      else
                          filenum++
                          FindNewFile   
                 3:   if sdcard.popen(string("track3.kml"),"r")== -1    'file doesn't exist
                            sdcard.popen(string("track3.kml"),"w")
                            getout := 1
                      else
                          filenum++
                          FindNewFile   
                 4:   if sdcard.popen(string("track4.kml"),"r")== -1    'file doesn't exist
                            sdcard.popen(string("track4.kml"),"w")
                            getout := 1
                      else
                          filenum++
                          FindNewFile   
                 5:   if sdcard.popen(string("track5.kml"),"r")== -1    'file doesn't exist
                            sdcard.popen(string("track5.kml"),"w")
                            getout := 1
                      else
                          filenum++
                          FindNewFile   
                 6:   if sdcard.popen(string("track6.kml"),"r")== -1    'file doesn't exist
                            sdcard.popen(string("track6.kml"),"w")
                            getout := 1
                      else
                          filenum++
                          FindNewFile   
                 7:   if sdcard.popen(string("track7.kml"),"r")== -1    'file doesn't exist
                            sdcard.popen(string("track7.kml"),"w")
                            getout := 1
                      else
                          filenum++
                          FindNewFile   
                 8:   if sdcard.popen(string("track8.kml"),"r")== -1    'file doesn't exist
                            sdcard.popen(string("track8.kml"),"w")
                            getout := 1
                      else
                          filenum++
                          FindNewFile   
                 9:   if sdcard.popen(string("track9.kml"),"r")== -1    'file doesn't exist
                            sdcard.popen(string("track9.kml"),"w")
                            getout := 1
                      else
                          filenum++
                          FindNewFile   
                 10:  if sdcard.popen(string("track10.kml"),"r")== -1    'file doesn't exist
                            sdcard.popen(string("track10.kml"),"w")
                            getout := 1
                      else
                          filenum++
                          FindNewFile   
                 11:  if sdcard.popen(string("track11.kml"),"r")== -1    'file doesn't exist
                            sdcard.popen(string("track11.kml"),"w")
                            getout := 1
                      else
                          filenum++
                          FindNewFile 
                 12:  if sdcard.popen(string("track12.kml"),"r")== -1    'file doesn't exist
                            sdcard.popen(string("track12.kml"),"w")
                            getout := 1
                      else
                          filenum++
                          FindNewFile 
                 13:  if sdcard.popen(string("track13.kml"),"r")== -1    'file doesn't exist
                            sdcard.popen(string("track13.kml"),"w")
                            getout := 1
                      else
                          filenum++
                          FindNewFile  
                 14:  if sdcard.popen(string("track14.kml"),"r")== -1    'file doesn't exist
                            sdcard.popen(string("track14.kml"),"w")
                            getout := 1
                      else
                          filenum++
                          FindNewFile  
                 15:  if sdcard.popen(string("track15.kml"),"r")== -1    'file doesn't exist
                            sdcard.popen(string("track15.kml"),"w")
                            getout := 1
                      else
                          filenum++
                          FindNewFile  
                 16:  if sdcard.popen(string("track16.kml"),"r")== -1    'file doesn't exist
                            sdcard.popen(string("track16.kml"),"w")
                            getout := 1
                      else
                          filenum++
                          FindNewFile 
                 17:  if sdcard.popen(string("track17.kml"),"r")== -1    'file doesn't exist
                            sdcard.popen(string("track17.kml"),"w")
                            getout := 1
                      else
                          filenum++
                          FindNewFile  
                 18:  if sdcard.popen(string("track18.kml"),"r")== -1    'file doesn't exist
                            sdcard.popen(string("track18.kml"),"w")
                            getout := 1
                      else
                          filenum++
                          FindNewFile  
                 19:  if sdcard.popen(string("track19.kml"),"r")== -1    'file doesn't exist
                            sdcard.popen(string("track19.kml"),"w")
                            getout := 1
                      else
                          filenum++
                          FindNewFile 
                 20:  if sdcard.popen(string("track20.kml"),"r")== -1    'file doesn't exist
                            sdcard.popen(string("track20.kml"),"w")
                            getout := 1
                      else
                          filenum++
                          FindNewFile  
    
    Pub EndFile
            Shortblink
            'CheckSatFix
            TakeReading
            AppendFile
            sdcard.SDStr(string("<Placemark>",13,10))
            TimeStamp  
            sdcard.SDStr(string("<name>Finished. Distance traveled is "))
            sdcard.sddec(distance)
            sdcard.SDStr(string(" ft "))
            sdcard.sdstr(fs.floattostring(gps.miles))
            sdcard.SDStr(string(" miles </name>",13,10))    
    
            elcheck := gps.ElevationCheck
            rtcheck := gps.rotation 
            WriteModel
    
            sdcard.SDStr(string("</Placemark>",13,10))
    
            sdcard.SDStr(string(" </Document>",13,10))
     
            sdcard.SDStr(string("</kml>",13,10)) 
            sdcard.pclose
            LongBlink
            open := 0
            carpressed := 0
            bikepressed := 0
            hikepressed := 0
                 
    PUB InitButtons
       cognew(button(@carpressed,@bikepressed,@hikepresse  d,@placemark,@writing), @stack)
    
    Pub button(cp,bp,hp,pm,wrt)             'three buttons to start hike, bike, or car track
       dira[carbutton]~   'car
       dira[bikebutton]~   'bike
       dira[hikebutton]~  'hike
       dira[placemarkbutton]~
       dira[carLED]~~
       dira[bikeLED]~~
       dira[hikeLED]~~  
       outa[carLED] := 0
       outa[bikeLED] := 0
       outa[hikeLED] := 0
    
            
       long[cp] := 0        'car press
       long[bp] := 0        'bike press
       long[hp] := 0        'hike press
       long[pm] := 0
       repeat
         if ina[placemarkbutton] == 1
            long[pm] := 1
         if long[wrt] == 0    'if starting file
             if ina[carbutton] == 1       'stores a button press until an action is done in main program to remove timing issues.
                long[cp] := 1
                outa[carLED] := 1
                outa[bikeLED] := 0
                outa[hikeLED] := 0         
             if ina[bikebutton] == 1  
                long[bp] := 1
                outa[carLED] := 0
                outa[bikeLED] := 1
                outa[hikeLED] := 0            
             if ina[hikebutton] == 1       
                long[hp] := 1
                outa[carLED] := 0
                outa[bikeLED] := 0
                outa[hikeLED] := 1
         else                        'if ending file turn all button lights off
                outa[carLED] := 0
                outa[bikeLED] := 0
                outa[hikeLED] := 0                
            
    Pub CheckSatFix
        repeat while gps.Long_Fix_Quality < 1 or gps.Long_Fix_Quality > 8
           FixIndicatoroff
           if open == 1
              if carpressed == 1 or bikepressed == 1  or hikepressed == 1 
                 endfile
                 main2
        FixIndicatorOn   
        
    Pub FixIndicatorOn
        outa[greenLED] := 1
    Pub FixIndicatorOff
        outa[greenLED] := 0    
    
    Pub WriteFileHeader
                sdcard.SDStr(string("<?xml version='1.0' encoding='UTF-8'?>",13,10))
                sdcard.SDStr(string("<kml xmlns='http://www.opengis.net/kml/2.2'",13,10))
                sdcard.SDStr(string("xmlns:gx='http://www.google.com/kml/ext/2.2'>",13,10))
                'sdcard.SDStr(string("<Feature id='Ragtops path'>",13,10))
                 
                sdcard.SDStr(string("  <Document>",13,10))
                sdcard.SDStr(string("<description>This is track #"))
                sdcard.SDDec(filenum)
                sdcard.SDStr(string(" that was started on "))
                sdcard.sddec(gps.Long_Month)
                sdcard.SDStr(string("/"))
                sdcard.sddec(gps.Long_Day) 
                sdcard.SDStr(string("/"))
                sdcard.sddec(gps.Long_year)
                sdcard.SDStr(string("</description>",13,10))
             '-------------colon for Time Overlay ----- 
                sdcard.SDStr(string("<ScreenOverlay>",13,10))
                sdcard.SDStr(string("colon",13,10))
                sdcard.SDStr(string("<Icon>",13,10))
                sdcard.SDStr(string("<href>colon.png</href> ",13,10))
                sdcard.SDStr(string("</Icon>",13,10))  
                sdcard.SDStr(string("<overlayXY x='0' y='0' xunits='fraction' yunits='fraction'/> ",13,10))
                sdcard.SDStr(string("<screenXY x='.11' y='.1' xunits='fraction' yunits='fraction'/> ",13,10))   
                sdcard.SDStr(string("<rotationXY x='0' y='0' xunits='fraction' yunits='fraction'/> ",13,10))  
                sdcard.SDStr(string("<size x='0' y='0' xunits='fraction' yunits='fraction'/> ",13,10))  
                sdcard.SDStr(string("</ScreenOverlay> ",13,10))
                
                TakeReading
    
                sdcard.SDStr(string("<Placemark>",13,10))
                TimeStamp            
                sdcard.SDStr(string("<name>Start</name>",13,10))
    
                WriteModel
                   
                sdcard.SDStr(string("</Placemark>",13,10))
                firstloopcheck := 1              
    
    PUB WriteModel
       case model
           1:  sdcard.SDStr(string("<Model id='car'>",13,10)) 
           2:  sdcard.SDStr(string("<Model id='bike'>",13,10))
           3:  sdcard.SDStr(string("<Model id='hike'>",13,10))
       sdcard.SDStr(string("<altitudeMode>relativeToGround</altitudeMode>",13,10))
       sdcard.SDStr(string("<Location>",13,10))
       sdcard.SDStr(string("<longitude>"))
       sdcard.sdstr(fs.floattostring(longnew))
       sdcard.SDStr(string("</longitude>",13,10)) 
       sdcard.SDStr(string("<latitude>"))
       sdcard.sdstr(fs.floattostring(latnew))
       sdcard.SDStr(string("</latitude>",13,10)) 
       sdcard.SDStr(string("<altitude>0</altitude>",13,10))    
       sdcard.SDStr(string("</Location>",13,10))
       sdcard.SDStr(string("<Orientation>",13,10))
       if model == 2
              case rtcheck
                         1:  sdcard.SDStr(string("<heading>270</heading>",13,10))               'north
                         2:  sdcard.SDStr(string("<heading>315</heading>",13,10))             'north east 
                         3:  sdcard.SDStr(string("<heading>0</heading>",13,10))  'east
                         4:  sdcard.SDStr(string("<heading>45</heading>",13,10)) 'southeast
                         5:  sdcard.SDStr(string("<heading>90</heading>",13,10))   'south
                         6:  sdcard.SDStr(string("<heading>135</heading>",13,10))   ' southwest 
                         7:  sdcard.SDStr(string("<heading>180</heading>",13,10))    'west
                         8:  sdcard.SDStr(string("<heading>225</heading>",13,10))   'northwest
       else
              case rtcheck
                         1:  sdcard.SDStr(string("<heading>180</heading>",13,10))               'north
                         2:  sdcard.SDStr(string("<heading>225</heading>",13,10))             'north east 
                         3:  sdcard.SDStr(string("<heading>270</heading>",13,10))  'east
                         4:  sdcard.SDStr(string("<heading>315</heading>",13,10)) 'southeast
                         5:  sdcard.SDStr(string("<heading>0</heading>",13,10))   'south
                         6:  sdcard.SDStr(string("<heading>45</heading>",13,10))   ' southwest 
                         7:  sdcard.SDStr(string("<heading>90</heading>",13,10))    'west
                         8:  sdcard.SDStr(string("<heading>135</heading>",13,10))   'northwest
                                         
       sdcard.SDStr(string("<tilt>0</tilt>",13,10))  
       sdcard.SDStr(string("<roll>0</roll>",13,10))    
       sdcard.SDStr(string("</Orientation>",13,10))   
       sdcard.SDStr(string("<Scale>",13,10)) 
       sdcard.SDStr(string("<x>1</x>",13,10))  
       sdcard.SDStr(string("<y>1</y>",13,10))
       sdcard.SDStr(string("<z>1</z>",13,10))   
       sdcard.SDStr(string("</Scale>",13,10)) 
       sdcard.SDStr(string("<Link>",13,10))
       case model
         1:  sdcard.SDStr(string("<href>car.dae</href> ",13,10))
         2:  sdcard.SDStr(string("<href>bike.dae</href> ",13,10))
         3:  sdcard.SDStr(string("<href>hike.dae</href> ",13,10))
        
       sdcard.SDStr(string("</Link>",13,10))
    
    
       sdcard.SDStr(string("</Model>",13,10)) 
    
    
    Pub WriteIcons
    
                 repeat while carpressed == 0 and bikepressed == 0 and hikepressed == 0
                    Shortblink
                    CheckSatFix
                    TakeReading
                    AppendFile
                    TimeOverlay          
                    if placemark == 1
                       PlaceFlag
                       placemark := 0
                    count++
                    elcheck := gps.ElevationCheck
                    rtcheck := gps.rotation
    
                  sdcard.SDStr(string("<Placemark>",13,10))  
                  sdcard.SDStr(string("<name>"))
                    'sdcard.sddec(gps.Long_Hour)
                    'sdcard.SDStr(string(":"))
                    'sdcard.sddec(gps.Long_minute)
                    {sdcard.SDStr(string(" *E* "))
                    sdcard.SDDec(Elcheck)
                    sdcard.SDStr(string(" *R* "))
                    sdcard.SDDec(rtcheck)}                  
                  sdcard.SDStr(string("</name>",13,10))
                    ' check for being stopped.  only want one icon, so need to check if still stopped.
                  WriteModel
                  TimeStamp 
                  sdcard.SDStr(string("</Placemark>",13,10))
                    
                  sdcard.pclose
                        
                   waitcnt (clkfreq * 4 + cnt)
    
    Pub PlaceFlag
        sdcard.SDStr(string("<Placemark>",13,10))  
        sdcard.SDStr(string("<name>Placemark"))   
        sdcard.SDStr(string("</name>",13,10))
        'WriteModel
        sdcard.SDStr(string("<Model id='flag'>",13,10))
        sdcard.SDStr(string("<altitudeMode>relativeToGround</altitudeMode>",13,10))
        'sdcard.SDStr(string("<size x='-1' y='-1' xunits='fraction' yunits='fraction'/>",13,10)) was suppose to keep size 
        sdcard.SDStr(string("<Location>",13,10))
        sdcard.SDStr(string("<longitude>"))
        sdcard.sdstr(fs.floattostring(longnew))
        sdcard.SDStr(string("</longitude>",13,10)) 
        sdcard.SDStr(string("<latitude>"))
        sdcard.sdstr(fs.floattostring(latnew))
        sdcard.SDStr(string("</latitude>",13,10)) 
        sdcard.SDStr(string("<altitude>0</altitude>",13,10))    
        sdcard.SDStr(string("</Location>",13,10))
        sdcard.SDStr(string("<Link>",13,10))
        sdcard.SDStr(string("<href>flag.dae</href> ",13,10))
        sdcard.SDStr(string("</Link>",13,10))
        sdcard.SDStr(string("</Model>",13,10)) 
        sdcard.SDStr(string("</Placemark>",13,10))
    
    Pub AppendFile
            case filenum
                    1: sdcard.popen(string("track1.kml"),"a")      
                    2: sdcard.popen(string("track2.kml"),"a")  
                    3: sdcard.popen(string("track3.kml"),"a")
                    4: sdcard.popen(string("track4.kml"),"a")
                    5: sdcard.popen(string("track5.kml"),"a")
                    6: sdcard.popen(string("track6.kml"),"a")
                    7: sdcard.popen(string("track7.kml"),"a")
                    8: sdcard.popen(string("track8.kml"),"a")
                    9: sdcard.popen(string("track9.kml"),"a")
                   10: sdcard.popen(string("track10.kml"),"a")
                   11: sdcard.popen(string("track11.kml"),"a")
                   12: sdcard.popen(string("track12.kml"),"a")
                   13: sdcard.popen(string("track13.kml"),"a")
                   14: sdcard.popen(string("track14.kml"),"a")
                   15: sdcard.popen(string("track15.kml"),"a")
                   16: sdcard.popen(string("track16.kml"),"a")
                   17: sdcard.popen(string("track17.kml"),"a")
                   18: sdcard.popen(string("track18.kml"),"a")
                   19: sdcard.popen(string("track19.kml"),"a")
                   20: sdcard.popen(string("track20.kml"),"a")
           
    Pub ShortBlink
          outa[greenLED] := 0
           repeat 8
              !outa[orangeLED]
              waitcnt(9000_000 + cnt)
          outa[greenLED] := 1    
          
              
    Pub LongBlink
          outa[greenLED] := 0
          outa[orangeLED] := 1
          waitcnt(clkfreq * 4 + cnt)
          outa[orangeLED] := 0
          outa[greenLED] := 1
    Pub RecordOn
        outa[14] := 1
    
    Pub RecordOff
        outa[14] := 0               
    
    PUB TakeReading
        CheckSatFix
        longold := longnew
        latold := latnew
        longnew := gps.Float_Longitude_Deg
        latnew :=  gps.Float_Latitude_Deg
        if firstloopcheck <> 0
            gps.distance(latold,longold,latnew,longnew)
            distance := gps.final
    
    Pub TimeStamp
    
         sdcard.SDStr(string("<TimeSpan>",13,10))
         sdcard.SDStr(string("<begin>"))
         year:=gps.Long_year
         month:=gps.long_month
         day:=gps.long_day
         hour:=gps.long_hour - 4
         minute:=gps.long_minute
         second:=gps.long_second
         
         sdcard.sddec(gps.Long_year)
         sdcard.SDStr(string("-"))
         if month < 10
            sdcard.SDStr(string("0"))
            sdcard.sddec(month)
         else
            sdcard.sddec(month)    
       
         sdcard.SDStr(string("-"))
         
         if day < 10
            sdcard.SDStr(string("0"))
            sdcard.sddec(day)
         else
            sdcard.sddec(day)
            
         sdcard.SDStr(string("T"))
            
         if hour < 10
            sdcard.SDStr(string("0"))
            sdcard.sddec(hour)
         else
            sdcard.sddec(hour)
            
         sdcard.SDStr(string(":"))
            
         if minute < 10
            sdcard.SDStr(string("0"))
            sdcard.sddec(minute)
         else
            sdcard.sddec(minute)
            
         sdcard.SDStr(string(":"))
            
         if second < 10
            sdcard.SDStr(string("0"))
            sdcard.sddec(second)
         else
            sdcard.sddec(second)
    
         sdcard.SDStr(string("Z</begin>"))
    
         sdcard.SDStr(string("<end>"))
         CalculateEndTime
         sdcard.sddec(gps.Long_year)
         sdcard.SDStr(string("-"))
         if month < 10
            sdcard.SDStr(string("0"))
            sdcard.sddec(month)
         else
            sdcard.sddec(month)    
       
         sdcard.SDStr(string("-"))
         
         if day < 10
            sdcard.SDStr(string("0"))
            sdcard.sddec(day)
         else
            sdcard.sddec(day)
            
         sdcard.SDStr(string("T"))
            
         if endhour < 10
            sdcard.SDStr(string("0"))
            sdcard.sddec(endhour)
         else
            sdcard.sddec(endhour)
            
         sdcard.SDStr(string(":"))
            
         if endminute < 10
            sdcard.SDStr(string("0"))
            sdcard.sddec(endminute)
         else
            sdcard.sddec(endminute)
            
         sdcard.SDStr(string(":"))
            
         if endsecond < 10
            sdcard.SDStr(string("0"))
            sdcard.sddec(endsecond)
         else
            sdcard.sddec(endsecond)
    
         sdcard.SDStr(string("Z</end>"))
              
         sdcard.SDStr(string("</TimeSpan>",13,10))
    
    Pub CalculateEndTime
         if (second + 10) > 60
             if (minute + 1) > 60
                endhour := hour + 1
                endminute := 0
                endsecond := (second + 10) - 60  
             else
                endhour := hour
                endminute := minute + 1
                endsecond := (second + 10) - 60
         else
           endhour := hour
           endminute := minute
           endsecond := second + 10            
    
    PUB TimeOverlay
      '-------------hour 1 -------- hour:=gps.long_hour have to separate into two digits  argh 24 hour plus need -4 for this time
                OLhour := gps.long_hour - 4   'eastern time
                OLminute := gps.long_minute
                sdcard.SDStr(string("<ScreenOverlay>",13,10))
                sdcard.SDStr(string("<name>hour 1st digit</name>",13,10))
                sdcard.SDStr(string("<Icon>",13,10))
                case OLhour                                                      'convert to 12 hour clock
                    0..9:   sdcard.SDStr(string("<href>zero.png</href> ",13,10))  
                  10..12:   sdcard.SDStr(string("<href>one.png</href> ",13,10))
                  13..21:   sdcard.SDStr(string("<href>zero.png</href> ",13,10))  '1 to 9
                  22..24:   sdcard.SDStr(string("<href>one.png</href> ",13,10))  '10 to 12
    
                sdcard.SDStr(string("</Icon>",13,10))  
                sdcard.SDStr(string("<overlayXY x='0' y='0' xunits='fraction' yunits='fraction'/> ",13,10))
                sdcard.SDStr(string("<screenXY x='.01' y='.1' xunits='fraction' yunits='fraction'/> ",13,10))   
                sdcard.SDStr(string("<rotationXY x='0' y='0' xunits='fraction' yunits='fraction'/> ",13,10))  
                sdcard.SDStr(string("<size x='0' y='0' xunits='fraction' yunits='fraction'/> ",13,10))
                OverlayTimeStamp  'special time stamp with no end time
                sdcard.SDStr(string("</ScreenOverlay> ",13,10)) 
        
              '-------------hour 2 ------------------------
                sdcard.SDStr(string("<ScreenOverlay>",13,10))
                sdcard.SDStr(string("<name>hour 2nd digit</name>",13,10))
                sdcard.SDStr(string("<Icon>",13,10))
                case OLhour
                    1:  sdcard.SDStr(string("<href>one.png</href> ",13,10))
                    2:  sdcard.SDStr(string("<href>two.png</href> ",13,10))
                    3:  sdcard.SDStr(string("<href>three.png</href> ",13,10))
                    4:  sdcard.SDStr(string("<href>four.png</href> ",13,10))
                    5:  sdcard.SDStr(string("<href>five.png</href> ",13,10))
                    6:  sdcard.SDStr(string("<href>six.png</href> ",13,10))
                    7:  sdcard.SDStr(string("<href>seven.png</href> ",13,10))
                    8:  sdcard.SDStr(string("<href>eight.png</href> ",13,10))
                    9:  sdcard.SDStr(string("<href>nine.png</href> ",13,10))
                   10:  sdcard.SDStr(string("<href>zero.png</href> ",13,10))
                   11:  sdcard.SDStr(string("<href>one.png</href> ",13,10))
                   12:  sdcard.SDStr(string("<href>two.png</href> ",13,10))
                   13:  sdcard.SDStr(string("<href>one.png</href> ",13,10))
                   14:  sdcard.SDStr(string("<href>two.png</href> ",13,10))
                   15:  sdcard.SDStr(string("<href>three.png</href> ",13,10))
                   16:  sdcard.SDStr(string("<href>four.png</href> ",13,10))
                   17:  sdcard.SDStr(string("<href>five.png</href> ",13,10))
                   18:  sdcard.SDStr(string("<href>six.png</href> ",13,10))
                   19:  sdcard.SDStr(string("<href>seven.png</href> ",13,10))
                   20:  sdcard.SDStr(string("<href>eight.png</href> ",13,10))
                   21:  sdcard.SDStr(string("<href>nine.png</href> ",13,10))
                   22:  sdcard.SDStr(string("<href>zero.png</href> ",13,10))
                   23:  sdcard.SDStr(string("<href>one.png</href> ",13,10))
                   24:  sdcard.SDStr(string("<href>two.png</href> ",13,10)) 
                   
                sdcard.SDStr(string("</Icon>",13,10))  
                sdcard.SDStr(string("<overlayXY x='0' y='0' xunits='fraction' yunits='fraction'/> ",13,10))
                sdcard.SDStr(string("<screenXY x='.06' y='.1' xunits='fraction' yunits='fraction'/> ",13,10))   
                sdcard.SDStr(string("<rotationXY x='0' y='0' xunits='fraction' yunits='fraction'/> ",13,10))  
                sdcard.SDStr(string("<size x='0' y='0' xunits='fraction' yunits='fraction'/> ",13,10))
                OverlayTimeStamp  'special time stamp with no end time   
                sdcard.SDStr(string("</ScreenOverlay> ",13,10))
    
    
    
                '-------------minute 1 -------- minute:=gps.long_minute separate into two digits
                sdcard.SDStr(string("<ScreenOverlay>",13,10))
                sdcard.SDStr(string("<name>minute 1st digit</name>",13,10))
                sdcard.SDStr(string("<Icon>",13,10))
                case OLminute
                    0..9:  sdcard.SDStr(string("<href>zero.png</href> ",13,10))
                  10..19:  sdcard.SDStr(string("<href>one.png</href> ",13,10))
                          OLminute := OLminute - 10
                  20..29:  sdcard.SDStr(string("<href>two.png</href> ",13,10))
                          OLminute := OLminute - 20
                  30..39:  sdcard.SDStr(string("<href>three.png</href> ",13,10))
                          OLminute := OLminute - 30
                  40..49:  sdcard.SDStr(string("<href>four.png</href> ",13,10))
                          OLminute := OLminute - 40
                  50..59:  sdcard.SDStr(string("<href>five.png</href> ",13,10))
                          OLminute := OLminute - 50
                
                sdcard.SDStr(string("</Icon>",13,10))  
                sdcard.SDStr(string("<overlayXY x='0' y='0' xunits='fraction' yunits='fraction'/> ",13,10))
                sdcard.SDStr(string("<screenXY x='.16' y='.1' xunits='fraction' yunits='fraction'/> ",13,10))   
                sdcard.SDStr(string("<rotationXY x='0' y='0' xunits='fraction' yunits='fraction'/> ",13,10))  
                sdcard.SDStr(string("<size x='0' y='0' xunits='fraction' yunits='fraction'/> ",13,10))
                OverlayTimeStamp  'special time stamp with no end time  
                sdcard.SDStr(string("</ScreenOverlay> ",13,10))
    
                '-------------minute 2 ------------------------
                sdcard.SDStr(string("<ScreenOverlay>",13,10))
                sdcard.SDStr(string("<name>minute 2nd digit</name>",13,10))
                sdcard.SDStr(string("<Icon>",13,10))
                case OLminute
                     0: sdcard.SDStr(string("<href>zero.png</href> ",13,10))
                     1: sdcard.SDStr(string("<href>one.png</href> ",13,10)) 
                     2: sdcard.SDStr(string("<href>two.png</href> ",13,10))
                     3: sdcard.SDStr(string("<href>three.png</href> ",13,10))
                     4: sdcard.SDStr(string("<href>four.png</href> ",13,10))
                     5: sdcard.SDStr(string("<href>five.png</href> ",13,10))
                     6: sdcard.SDStr(string("<href>six.png</href> ",13,10))
                     7: sdcard.SDStr(string("<href>seven.png</href> ",13,10))
                     8: sdcard.SDStr(string("<href>eight.png</href> ",13,10))
                     9: sdcard.SDStr(string("<href>nine.png</href> ",13,10))
         
                sdcard.SDStr(string("</Icon>",13,10))  
                sdcard.SDStr(string("<overlayXY x='0' y='0' xunits='fraction' yunits='fraction'/> ",13,10))
                sdcard.SDStr(string("<screenXY x='.21' y='.1' xunits='fraction' yunits='fraction'/> ",13,10))   
                sdcard.SDStr(string("<rotationXY x='0' y='0' xunits='fraction' yunits='fraction'/> ",13,10))  
                sdcard.SDStr(string("<size x='0' y='0' xunits='fraction' yunits='fraction'/> ",13,10))
                OverlayTimeStamp  'special time stamp with no end time   
                sdcard.SDStr(string("</ScreenOverlay> ",13,10))
    
    Pub OverlayTimeStamp
    
         sdcard.SDStr(string("<TimeSpan>",13,10))
         sdcard.SDStr(string("<begin>"))
         year:=gps.Long_year
         month:=gps.long_month
         day:=gps.long_day
         hour:=gps.long_hour - 4
         minute:=gps.long_minute
         second:=gps.long_second
         
         sdcard.sddec(gps.Long_year)
         sdcard.SDStr(string("-"))
         if month < 10
            sdcard.SDStr(string("0"))
            sdcard.sddec(month)
         else
            sdcard.sddec(month)    
       
         sdcard.SDStr(string("-"))
         
         if day < 10
            sdcard.SDStr(string("0"))
            sdcard.sddec(day)
         else
            sdcard.sddec(day)
            
         sdcard.SDStr(string("T"))
            
         if hour < 10
            sdcard.SDStr(string("0"))
            sdcard.sddec(hour)
         else
            sdcard.sddec(hour)
            
         sdcard.SDStr(string(":"))
            
         if minute < 10
            sdcard.SDStr(string("0"))
            sdcard.sddec(minute)
         else
            sdcard.sddec(minute)
            
         sdcard.SDStr(string(":"))
            
         if second < 10
            sdcard.SDStr(string("0"))
            sdcard.sddec(second)
         else
            sdcard.sddec(second)
    
         sdcard.SDStr(string("Z</begin>"))       
         sdcard.SDStr(string("</TimeSpan>",13,10))
    
  • RagtopRagtop Posts: 406
    edited 2012-05-20 06:19
    This is a zip file of the four models and clock number images. They need to be in main directory of micro SD or if you move the track files to hard drive, you need to copy these files to the same directory.

    graphics.zip
  • RagtopRagtop Posts: 406
    edited 2012-05-20 06:44
    This is the zip file for my prop program and all the included objects.

    GPS Datalogger.zip
  • RagtopRagtop Posts: 406
    edited 2012-05-23 06:32
    Only problem with a custom build of a case that you have one of is breaking said case. I broke the hinge that I have been able to fix with a zip tie (third line of defense behind duct tape and hot glue).

    But it got me searching the internet for the cases and I finally found a source for them. Beach floats

    I still got to find a place to just get a few.
  • Duane DegnDuane Degn Posts: 10,588
    edited 2012-05-23 08:49
    Thomas,

    Sorry to hear about the broken case. It's a pain when something like that happens.

    I found a place on ebay that will sell just one. I think $12.50 shipped is a bit excessive.

    I just requested a quote from the place you linked to for unprinted totes. I also asked if they'd sell just 100.

    If I buy some, I'll sell you part of my order if you want.
  • RagtopRagtop Posts: 406
    edited 2012-05-23 11:33
    Yeah, now knowing what to call them, I found this one for ~10 which is a bit high. http://www.ebay.com/itm/120689791985?_trksid=p5197.c0.m619#ht_1082wt_1135

    I think I might could get a used otter box for that range which would be a stronger box.

    Getting a few of these at around the wholesale price would be great!
  • WBA ConsultingWBA Consulting Posts: 2,933
    edited 2012-05-23 14:54
    If you have an REI store nearby, check them out. They have a pretty good selection in a few different departments in their stores for waterproof cases.
  • RagtopRagtop Posts: 406
    edited 2012-06-26 18:18
    Not sure if it is the same size, but it looks like the same case. Electronic Goldmine is giving them away for free with 25 dollar order.

    http://www.goldmine-elec-products.com/prodinfo.asp?number=25JULY12
  • hover1hover1 Posts: 1,929
    edited 2012-07-11 10:02
    Ragtop,

    I was trying to compile the code you posted on 5-20-2012, but I get an error on line 295. Tried it with PropTool and BST.

    Datalogger Error.jpg


    Thanks!

    Jim

    PS Nice Work on all the extras!
    766 x 402 - 185K
  • Duane DegnDuane Degn Posts: 10,588
    edited 2012-07-11 10:27
    Thomas, I don't suppose I could talk you into making another video showing off your completed project?

    I'd really like to see how it turned out.

    BTW, after you mentioned OtterBoxes, I ordered a several different sizes. They're really nice little water tight boxes. I might move my GPS project into the smallest one.
  • RagtopRagtop Posts: 406
    edited 2012-07-11 17:02
    hover1 wrote: »
    Ragtop,

    I was trying to compile the code you posted on 5-20-2012, but I get an error on line 295. Tried it with PropTool and BST.

    Datalogger Error.jpg


    Thanks!

    Jim

    PS Nice Work on all the extras!

    That should be method call mainprogram. I must of not saved it after changing it.
  • RagtopRagtop Posts: 406
    edited 2012-07-11 17:03
    Duane Degn wrote: »
    Thomas, I don't suppose I could talk you into making another video showing off your completed project?

    I'd really like to see how it turned out.

    BTW, after you mentioned OtterBoxes, I ordered a several different sizes. They're really nice little water tight boxes. I might move my GPS project into the smallest one.


    Can do.
  • hover1hover1 Posts: 1,929
    edited 2012-07-11 17:11
    Ragtop wrote: »
    That should be method call mainprogram. I must of not saved it after changing it.

    @Ragtop

    Kinda what if figured. I had replace main2 with main program before and it complied correctly.

    Now to build the hardware!

    Thanks!

    Jim
  • RagtopRagtop Posts: 406
    edited 2012-10-01 09:45
    Video of the datalogger in action. Promised this one a while back but haven't been
    getting out to put it to use, so was waiting on next 24 hour scenario paintball game
    to do this video.

    [video=youtube_share;QhyoDmMpV4o]
  • TMAC1TMAC1 Posts: 24
    edited 2012-10-02 06:11
    or you could try aluminum foil, I think that works too (plus it's cheaper)
  • RagtopRagtop Posts: 406
    edited 2012-10-02 09:41
    I goofed up the last video. The device doesn't make a video it makes an animated KML file for Google Earth.
    I convert that to video using a screen capture program called FastStone.
  • TMAC1TMAC1 Posts: 24
    edited 2012-10-11 17:13
    I'm having issues getting mine to use a 4GB SDHC card
Sign In or Register to comment.