{"id":2575,"date":"2019-07-05T17:06:08","date_gmt":"2019-07-05T17:06:08","guid":{"rendered":"http:\/\/www.daveakerman.com\/?p=2575"},"modified":"2019-07-05T18:23:00","modified_gmt":"2019-07-05T18:23:00","slug":"gopro-ssdv-flight","status":"publish","type":"post","link":"https:\/\/www.daveakerman.com\/?p=2575","title":{"rendered":"GoPro SSDV Flight"},"content":{"rendered":"\n<p>Sometime last year I came across a Python library for controlling a GoPro camera, and was interested because this provides a means for a Raspberry Pi to capture photographs from a GoPro during a HAB flight, and then send those images to the ground via SSDV.  I happened to have some GoPro cameras one of which has the necessary WiFi ability.  It didn&#8217;t take long to have a script running that would take images and transfer to a Pi, and I then integrated this into my Pi In The Sky software.  I even wrote a <a href=\"http:\/\/www.daveakerman.com\/?p=2335\">blog post<\/a> about it, but held off publishing till I had a chance to test it in flight.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/scontent-lht6-1.xx.fbcdn.net\/v\/t1.0-9\/65971934_10156532932287654_3208491911874609152_o.jpg?_nc_cat=105&amp;_nc_oc=AQmcmxNmR_PUV_Q_hOMUHcmof5JlB3LxcuyLRQD2-EJykffBx1i4n-m3ra6ACOqyZxM&amp;_nc_ht=scontent-lht6-1.xx&amp;oh=8759426df2094fdcdfd8e39ce5e5c003&amp;oe=5DBC196F\" alt=\"Image may contain: sky and outdoor\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Planning<\/h2>\n\n\n\n<p>A week ago I noticed that predictions for this week looked good, with Wednesday having a good combination of nearby landing and low launch winds.  So on Friday I quickly put an application for Wednesday morning (I need to give the CAA 72 hours notice so Monday would technically have been too late).  I spent Tuesday preparing the payloads, receivers and the chase car, but when Wednesday morning came the launch winds were a bit high for a solo launch.  Since I had 3 payloads to launch (camera, backup radio tracker, GSM tracker) and needed to use a large balloon to avoid landing in the Severn or the Forest of Dean, I decided it was best to wait for another day.<\/p>\n\n\n\n<p>When I checked the predictions, I saw that predictions for the following morning were much better &#8211; half the launch winds, and I could use a small balloon to land safely.  I quickly sent an email to the CAA asking for the NOTAM to be changed or reissued, if possible.  Obviously this was within my 72 hour notice period, but that&#8217;s in place to stop people asking on a Sunday for a launch on Monday.  Also, my NOTAMS are generally issued within a couple of hours or so, so I felt positive that the CAA would respond positively, which thankfully they did.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Launch Delays<\/h2>\n\n\n\n<p>This was delayed for about an hour due to a couple of issues with my GoPro tracker.  First, it couldn&#8217;t get a GPS lock.  Often this kind of issue is to do with having a camera nearby, but this time it was actually a faulty GPS antenna; it looked fine &#8211; no breaks in the wire and the SMA plug was intact with no breaks or shorts &#8211; but it just didn&#8217;t work.  Swiftly replaced with a spare.<\/p>\n\n\n\n<p>Second problem was that the GoPro was showing a low battery.  This was very odd, as I&#8217;d left it charging for a few hours the previous day and hadn&#8217;t used it since (but more on that later &#8230;).  So I connected to a charger, added a powerbank to the payload to keep the camera charged in flight, and delayed the flight for an hour to allow the camera to partially charge.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Launch<\/h2>\n\n\n\n<p>The delay did mean that the flight would land a little further East, which gave me more margin in case the balloon burst late.  I ran various prediction scenarios and was satisfied that even a very late burst would be fine.  So with all trackers powered, transmitting and being decoded, I enlisted help from a neighbour, filled and launched the balloon.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"768\" src=\"http:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/GOPR1905-1024x768.jpg\" alt=\"\" class=\"wp-image-2579\" srcset=\"https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/GOPR1905-1024x768.jpg 1024w, https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/GOPR1905-300x225.jpg 300w, https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/GOPR1905-768x576.jpg 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>DCIM\\100GOPRO\\GOPR1905.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"768\" height=\"1024\" src=\"http:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/IMG_1950-1-768x1024.jpg\" alt=\"\" class=\"wp-image-2577\" srcset=\"https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/IMG_1950-1-768x1024.jpg 768w, https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/IMG_1950-1-225x300.jpg 225w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">The Chase<\/h2>\n\n\n\n<p>With a flight time of well over 2 hours, there was no rush in chasing.  I checked that all the receivers were running OK, enabled the packet-resend uplink (which requests that the payload re-sends any missing image packets), and then set off in the chase car.<\/p>\n\n\n\n<p>The prediction was for a landing near Yate, so I took the M5 south, stopping at the Gloucester Services to check the live map which, unfortunately, was running with a huge time lag as the database is still full of radiosonde data (it&#8217;s being cleared, but not soon enough for my flight).  Normally I wouldn&#8217;t be concerned, as my car has an Android head-unit with its own mapping, but a recent change to that and\/or something specific with the tracker configuration meant that the app kept crashing.<\/p>\n\n\n\n<p>Another problem was that the SSDV from the GoPro stopped at around 16km altitude.  I wondered if the battery had discharged (though it shouldn&#8217;t have, as there was a power-bank connected also), but again more on that later.  Anyway, the images so far were pretty good.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"768\" src=\"http:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/image-1024x768.png\" alt=\"\" class=\"wp-image-2580\" srcset=\"https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/image-1024x768.png 1024w, https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/image-300x225.png 300w, https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/image-768x576.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>From the M5 I took the M4 east, and made the mistake of using the online map which showed an expected landing south of the M4.  So I turned right towards Bath, and parked up to check more carefully.   With my head unit app unusable, I connected my phone to a USB OTG receiver, and used my phone app to show the balloon, car and predicted landing spot.  This worked great, and I saw that the landing prediction was north of the M4 (as I&#8217;d expected earlier), so I turned round and aimed for the prediction.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Landing<\/h2>\n\n\n\n<p>The closest road to the landing prediction had fields either side, with several places to park off the road.  It was on a hill so initially I drove to the top, hoping to get a signal from there till the flight landed, but after a while the landing prediction moved to be quite close to the road itself.  So I drove back down the hill and parked under the expected flight path.  I moved from the a couple of times as the balloon, and prediction, meandered.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"614\" src=\"http:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/Wiggle-Sat-1024x614.png\" alt=\"\" class=\"wp-image-2581\" srcset=\"https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/Wiggle-Sat-1024x614.png 1024w, https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/Wiggle-Sat-300x180.png 300w, https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/Wiggle-Sat-768x460.png 768w, https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/Wiggle-Sat.png 1466w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Initially the flight was tricky to see, coming out of the sun, but once it was north of me I saw it easily.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"768\" height=\"1024\" src=\"http:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/IMG_1955-1-768x1024.jpg\" alt=\"\" class=\"wp-image-2583\" srcset=\"https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/IMG_1955-1-768x1024.jpg 768w, https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/IMG_1955-1-225x300.jpg 225w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/><\/figure>\n\n\n\n<p>And I even managed to photograph it as it landed &#8211; you can see one white payload box (GSM tracker) about to hit the ground, and another (white with pink tape and containing the GoPro) stuck in a tree to the right.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"646\" src=\"http:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/Payloads-Landing-1024x646.jpg\" alt=\"\" class=\"wp-image-2584\" srcset=\"https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/Payloads-Landing-1024x646.jpg 1024w, https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/Payloads-Landing-300x189.jpg 300w, https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/Payloads-Landing-768x484.jpg 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Recovery<\/h2>\n\n\n\n<p>Coincidentally, the farmer was driving around the field.  I beckoned him over, explained about the parachute in his field, and he said to jump over the gate and go get it.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"576\" src=\"http:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/IMG_20190704_143036221-1024x576.jpg\" alt=\"\" class=\"wp-image-2585\" srcset=\"https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/IMG_20190704_143036221-1024x576.jpg 1024w, https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/IMG_20190704_143036221-300x169.jpg 300w, https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/IMG_20190704_143036221-768x432.jpg 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"576\" src=\"http:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/IMG_20190704_143148223-1024x576.jpg\" alt=\"\" class=\"wp-image-2586\" srcset=\"https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/IMG_20190704_143148223-1024x576.jpg 1024w, https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/IMG_20190704_143148223-300x169.jpg 300w, https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/IMG_20190704_143148223-768x432.jpg 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>On the way I passed a calf having a long afternoon nap.  That was the reason the farmer was there &#8211; to find out where the calf was hiding!<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"576\" src=\"http:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/IMG_20190704_143307527-1024x576.jpg\" alt=\"\" class=\"wp-image-2587\" srcset=\"https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/IMG_20190704_143307527-1024x576.jpg 1024w, https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/IMG_20190704_143307527-300x169.jpg 300w, https:\/\/www.daveakerman.com\/wp-content\/uploads\/2019\/07\/IMG_20190704_143307527-768x432.jpg 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">So, That GoPro &#8230;.<\/h2>\n\n\n\n<p>When I got the payloads back to the car, I checked the GoPro and it was still powered up, so power wasn&#8217;t why it stopped taking photos.  It was very very warm, as was the tracker (a Pi 3 A+), so maybe that was it.  Anyway I left both running so I could check them when I got home.<\/p>\n\n\n\n<p>Back home I hooked both the Pi and camera up to mains USB power adapters, connected the Pi to my LAN via USB-LAN adapter, and connected via ssh.  The camera script had stopped.  I ran the script again and it failed with a library error during the &#8220;take photo&#8221; function.  Odd.  I let the camera cool down and tried again, but same error.<\/p>\n\n\n\n<p>So I took the SD card out to copy the contents, and noticed that the card was full.  That was odd as I&#8217;d cleared it of all files the day before, when I charged the camera.  So I checked the files, and the majority of the card capacity was taken up with video files.  I opened them, and all just showed &#8230;.. video of my USB charger!  So, the reason the card was full, <strong>and<\/strong> the reason the GoPro battery was nearly discharged before flight, was that I&#8217;d accidentally touched the record button when I connected the camera to the charger.  Ooops!<\/p>\n\n\n\n<p>So that&#8217;s something to be careful of next time, and a reminder to check the SD card capacity when the payload is prepared on flight day, not just before.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sometime last year I came across a Python library for controlling a GoPro camera, and was interested because this provides a means for a Raspberry Pi to capture photographs from a GoPro during a HAB flight, and then send those images to the ground via SSDV. I happened to have [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"_links":{"self":[{"href":"https:\/\/www.daveakerman.com\/index.php?rest_route=\/wp\/v2\/posts\/2575"}],"collection":[{"href":"https:\/\/www.daveakerman.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.daveakerman.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.daveakerman.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.daveakerman.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2575"}],"version-history":[{"count":4,"href":"https:\/\/www.daveakerman.com\/index.php?rest_route=\/wp\/v2\/posts\/2575\/revisions"}],"predecessor-version":[{"id":2591,"href":"https:\/\/www.daveakerman.com\/index.php?rest_route=\/wp\/v2\/posts\/2575\/revisions\/2591"}],"wp:attachment":[{"href":"https:\/\/www.daveakerman.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2575"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.daveakerman.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2575"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.daveakerman.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2575"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}