tag:blogger.com,1999:blog-22693514778102121312024-03-18T14:22:45.926-07:00Copasetic Flowantigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.comBlogger1011125tag:blogger.com,1999:blog-2269351477810212131.post-85500068692553550782024-03-17T12:07:00.000-07:002024-03-17T12:11:33.580-07:00Things I Learned: Tarred Twine<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCeih8hmeinjwq0lcgEWWsOtyZ-0pbxbcPRqd3djWUV0zTgHD46nU-5gIcWdE3VrjgwXLZiQ645VaCLKZw6JPY4xGmP_-naZhtFaFkXyEmUAPnm9dw3XUoNrXYfGpIS-qPOd8sE1D3FceotmtY7OmlUYYwSUzY0r_3IQCZrXuBmYaAr1tDg5VZhQjCWcA/s4032/PXL_20240214_164750552.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCeih8hmeinjwq0lcgEWWsOtyZ-0pbxbcPRqd3djWUV0zTgHD46nU-5gIcWdE3VrjgwXLZiQ645VaCLKZw6JPY4xGmP_-naZhtFaFkXyEmUAPnm9dw3XUoNrXYfGpIS-qPOd8sE1D3FceotmtY7OmlUYYwSUzY0r_3IQCZrXuBmYaAr1tDg5VZhQjCWcA/w300-h400/PXL_20240214_164750552.jpg" width="300" /></a></div>Powered TouCans is heavy. <p></p><p>The <a href="https://www.amazon.com/External-imuto-Portable-Charging-Compatible/dp/B0B2W82T6R/ref=sr_1_1_sspa?crid=1CBN81V17S9SP&dib=eyJ2IjoiMSJ9.gdxZvRGecpiJf9n8UTnbItMpco2-3BlpjcLZIFAHf7f3U1jbLBUlv_fhe3i2J1SQkDTF3doRJLGy2tnPzBHxykJMk4ZI2zU9sbGjENVvUyL7zQ9rGm4Sib_LONB01vypTpQ0vacNqHLBZ1AgW5rr4edkReOEfPdq-ql-6ysiM8GSyPi3Hew68ObRUlddPiyCuMfhDm4zRfcK5SWOnRaEOH9csHaihlVNSJT-uLnLntA.OR1290tWAyZJOZIgVpMk_7W-7GxA1OikA8kmcx6qKiM&dib_tag=se&keywords=imuto%2Bpower%2Bbank&qid=1710700676&sprefix=imuto%2B%2Caps%2C190&sr=8-1-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&th=1">Imuto battery pack</a> it uses weighs in at about a pound, making it the heaviest component of the antenna-borne rig. I've always enjoyed using butcher twine to support the rig, but it looked—and felt—very much like butchers twine was not going to support Powered TouCans, (aka Wireless TouCans.) Butchers twine has always had a bit of an issue getting a bit jammed up on the sap of various trees. This has led to be being able to feel when the twine is about to break. With the extra weight of the battery pack, I've been having this feeling a lot more often. I needed a different way to suspend the radio, but didn't want to resort to rope if I could avoid it.</p><p>Enter <a href="https://www.amazon.com/SGT-KNOTS-Tarred-Twine-Bank/dp/B00F1YJ9B6/ref=sr_1_1_sspa?crid=39ETEGYAIET2R&dib=eyJ2IjoiMSJ9.Rw1VoxhqMKHy_RIg2trXRdZdwC464V-nglFaxlqOo38IMCYTdKNJ8DdstF4l4SViEEIQnAyuAdK-xOPCUs89iq1QEiq4_lF62VIoMyY22T4MDc0cCTgkbrAq06hkYRTeiAbCgvZ_BH1K3ahC4GxzoJ5JwI9cQlRwKaRLefXL5dzv1pqlkzhFtNMWcurEk5PTtFktPBcMTLcBcyijXu3snBFijOHIvdKwiwQPQ8Y3tA7Z2jJpdXr0cb5ev9MiKNUSMQ9PwDMySORgkiFn-p1MMH_QMLdmTNNafnEJKpzZdpk.sDM61kO4JXKcATsbPgnkFIDZ-86WfuD2ZBiMGc7sfD0&dib_tag=se&keywords=tarred%2Btwine&qid=1710700086&sprefix=tarred%2Btwine%2Caps%2C177&sr=8-1-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&th=1">tarred twine</a>. I'd never heard of this stuff before it on Amazon, but wow! It's tensile strenght is higher, it can be about the same weight, and it doesn't hang up on tree limbs as much. The tar reduces the friction of the string overall. This led to no limb jams over the last weekend during all three POTAs across New Mexico! The tar makes the twine weigh a bit more per foot which gives it more of a rope feel in terms of sturdiness, but without the awkward width of a rope. The rig didn't fall once, nor did it once feel like the twine was going to break!</p><p>Here's evidence of the twine in action from the Lincoln National Forest POTA (I was on Monjeau Peak.)</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeG25DSeHAnqX8bcBIV2kk-1wta9JzgjIcEj8qE5AgOrgtad7QKUUBjZxXnpEI0jSJ3GM6rNgoEtzUo84so8VDlBRpg-NRiwzb0oBKugCFO3cvD_IW-iY3zIXRORBHkpd0esR9TpHmQBC1AveeyLw_MZIhYmMxpOqyeLKd368nENyo431I1G4WJZXRpnI/s4000/IMG_20240316_122514240.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4000" data-original-width="3000" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeG25DSeHAnqX8bcBIV2kk-1wta9JzgjIcEj8qE5AgOrgtad7QKUUBjZxXnpEI0jSJ3GM6rNgoEtzUo84so8VDlBRpg-NRiwzb0oBKugCFO3cvD_IW-iY3zIXRORBHkpd0esR9TpHmQBC1AveeyLw_MZIhYmMxpOqyeLKd368nENyo431I1G4WJZXRpnI/w480-h640/IMG_20240316_122514240.jpg" width="480" /></a></div><br /><p>One more twine trick before I go. I also learned over the last two weekends, that one can insert a rock into the end of the twine tube to add weight to roll of twine making it heft a bit farther when launched by an <a href="https://copaseticflow.blogspot.com/2023/05/til-atlatl-antenna-lauch.html">atlatl</a>. </p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTDS3BwuONdYflfXkJduWIO5kER3kBQGcJdLjzz7YiObD050X7QjzCnRtlhS9s40maC-iN0WZ5KgFKKr2OxDVjVcSECZNV81ArpJbenzsAKcZGbyl5p1vyd_114lFmHwAwH7IQQ5rTtegUZCzQ6DJ2ecn-KxCbyYu2HRwaVMoL8jnfKekfpq67rw9PJvQ/s4000/IMG_20240316_171409669_HDR.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="4000" data-original-width="3000" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTDS3BwuONdYflfXkJduWIO5kER3kBQGcJdLjzz7YiObD050X7QjzCnRtlhS9s40maC-iN0WZ5KgFKKr2OxDVjVcSECZNV81ArpJbenzsAKcZGbyl5p1vyd_114lFmHwAwH7IQQ5rTtegUZCzQ6DJ2ecn-KxCbyYu2HRwaVMoL8jnfKekfpq67rw9PJvQ/w480-h640/IMG_20240316_171409669_HDR.jpg" width="480" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Shown here with lava rock that was returned to Valley of Fires, NM</td></tr></tbody></table><p>This little trick also simplifies the design of the atlatl if you happen to be camping. It turns out that folding up a segmented tent pole with the exception of the final segment, creates a very handy two segment long atlatl! The picture below shows the length of two connected segments of th test pole. Want a longer throw? You can simply add more segments. The tent pole also has a bit more spring to it than a typical limb which adds yet a little more loft ot the twine spool. But why does the rock matter you ask? In addition to adding weight, it prevents the tent pole from emerging from the other side of the twine tube making for a more controlled lauch with less thought and less practice.</p><p></p><div class="separator" style="clear: both; text-align: center;"><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhVOamu9q6dLgxAsq-NbTNzEPfgRdchAi9BAsBjuD0I10TfvTTrHRDz7z5ke2Ncc4S9otwTmXe-rSs7bw6WIhxCFRdTCMyseJGExXwqQdW1lpNuuMGu-CofE5GHybYuLa1Ebvm0VLncElMz1R76TU_XejHJhSKDG6ODrH6XDvKHcq9MNeKTogadSq_hp2s" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="662" data-original-width="1499" height="282" src="https://blogger.googleusercontent.com/img/a/AVvXsEhVOamu9q6dLgxAsq-NbTNzEPfgRdchAi9BAsBjuD0I10TfvTTrHRDz7z5ke2Ncc4S9otwTmXe-rSs7bw6WIhxCFRdTCMyseJGExXwqQdW1lpNuuMGu-CofE5GHybYuLa1Ebvm0VLncElMz1R76TU_XejHJhSKDG6ODrH6XDvKHcq9MNeKTogadSq_hp2s=w640-h282" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Sleeping pad as well as three year-old and five year-old's booted feet included for scale</td></tr></tbody></table><br /><br /></div><br /><br /><p></p><p><br /></p><p></p>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com2tag:blogger.com,1999:blog-2269351477810212131.post-26927034010288266582024-03-15T10:06:00.000-07:002024-03-15T13:04:58.370-07:00Spain on a 4 Foot Elevated Dipole on 20 meters with QRP: A Project TouCans Wireless Adventure<p> Spain!!! My first QSO yesterday afternoon was with EA1EC in Spain. This is a new Project TouCans record—of sorts—for QSOs with a very-low-height 20 meter dipole! Do the Organ Mountains—<a href="https://pota.app/#/park/K-4551">K-4551—</a>just have the <a href="https://copaseticflow.blogspot.com/2023/12/new-mexico-sweden-and-grey-line-project.html">knack</a> for this? Maybe. In any event, TouCans does very, very well there.</p><p>As usual, TouCans was running five Watts.</p><p>Here's the QSO map from yesterday afternoon</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg3urGzZrILeTYRkPPyCLJN05mQzp10ykN6wDc8WK8DmMWdkejFK_3FhDeqoDfi_Idv_7t-1K-AvbIdAcreVKURyNunCuDw3Q4J7Ru_9mSSUz16rzTMxuOC9yPB6l-4ZDQgBMjKg8CXQmuYggbkIY3-RbeCzDyTM2uleVPlDXDwsY8Y4O4pTOXdxOZJVbU" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="647" data-original-width="1173" height="354" src="https://blogger.googleusercontent.com/img/a/AVvXsEg3urGzZrILeTYRkPPyCLJN05mQzp10ykN6wDc8WK8DmMWdkejFK_3FhDeqoDfi_Idv_7t-1K-AvbIdAcreVKURyNunCuDw3Q4J7Ru_9mSSUz16rzTMxuOC9yPB6l-4ZDQgBMjKg8CXQmuYggbkIY3-RbeCzDyTM2uleVPlDXDwsY8Y4O4pTOXdxOZJVbU=w640-h354" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">Also notice the QSO to Alaska! Here's the antenna placement:</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxdNzSoJ0PGLDNKc9K76G9tjd586LIidmFpQTUfrOr8LOKfNbgy4b0yaCdzDNicDDTo1M2JR-5Jp08KugUTZl3-jNPa8opJGLNL73PQZctse4fOdZUs-BzsJGmagFRtB2Do_oHepC90bXvqg8yCSXXfkq4xNHNxKJQy0wEPDQxtB9tVhq2CH_pCZ-1Lio/s1362/Screenshot%202024-03-15%20093826.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1029" data-original-width="1362" height="484" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxdNzSoJ0PGLDNKc9K76G9tjd586LIidmFpQTUfrOr8LOKfNbgy4b0yaCdzDNicDDTo1M2JR-5Jp08KugUTZl3-jNPa8opJGLNL73PQZctse4fOdZUs-BzsJGmagFRtB2Do_oHepC90bXvqg8yCSXXfkq4xNHNxKJQy0wEPDQxtB9tVhq2CH_pCZ-1Lio/w640-h484/Screenshot%202024-03-15%20093826.png" width="640" /></a></div><br />The antenna feed point is about four feet up! Just as strange, the antenna was supported—via a piece of tarred twine—by a metal picnic shelter on the other end, as shown in the video below<div><br /><br /><div style="text-align: center;"><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="480" src="https://www.youtube.com/embed/3QmYblTy7v8?si=0zsyUy2QCuAywFMS" title="YouTube video player" width="640"></iframe></div><div style="text-align: center;"><br /></div><div style="text-align: left;">One of the things TouCans has demonstrated really well is that amateur radio operators should 'just get an antenna in the air.' The rest usually takes care of itself.</div><div style="text-align: left;"><br /></div>
<p></p><p></p></div>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-35678673630355341732024-03-13T11:03:00.000-07:002024-03-13T12:28:49.881-07:00Things I Learned: Time Stamps on QSO Maps using the Google Charts API, Datasette, and KML<p> I'm still using that API that was deprecated. I know I should give it up, but it just keeps being useful. It's possibly the best Google product ever. (In that it just keeps on existing rather than falling into the deprecation void.)</p><p>Specifically, I used the <a href="https://developers.google.com/chart/infographics/docs/dynamic_icons#bubbles">dynamic icon</a> portion of the Google Charts API. </p><p>The Google Earth Pro animations of our QSO are missing something. (OK, maybe lots of things, but one thing I saw that I could add on this iteration.) They don't have a way to easily view the time of each QSO, or the progression of time during the POTA or SOTA session. Thanks to a <a href="https://stackoverflow.com/a/20846546/1429266">suggestion</a> from a StackOverlow <a href="https://stackoverflow.com/users/543969/codemonkey">user</a>, dynamic bubble icons have provided that!</p>
<div style="text-align: center;"><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="480" src="https://www.youtube.com/embed/-PbQ8_g-wUg?si=KtNJCVUzyC26OBrf" title="YouTube video player" width="640"></iframe></div><p><br /></p><p>I've added icons that appear with each QSO on the map, displaying the callsign, received RST, and and time of the QSO, as well as a different set of time icons that simply update each minute of map time to display the UTC time as the map animates.</p><h4 style="text-align: left;">Using the Google Dynamic Icon API</h4><p>The following address gives back a bubble icon for a QSO with N5KIP.</p><p>https://chart.apis.google.com/chart?chst=d_bubble_icon_texts_big&chld=glyphish_clock|bbT|00ff00|000000|n5kip|Received+RST+539|2024-03-09T13:35:00</p><img src="https://chart.apis.google.com/chart?chst=d_bubble_icon_texts_big&chld=glyphish_clock|bbT|00ff00|000000|n5kip|Received+RST+539|2024-03-09T13:35:00" /><p><br /></p><p>But, I also wanted to know how time was progressing as the map advanced, so I also added bubble icons that updated once per minute. </p><p>I built all of this in the Datasette QSO application I've been developing. Adding kml features has been much easier since I moved to using Datasette's Jinja capabilites.</p><p>For example, to add the icons that update each minute, I simply added a jinja <a href="https://stackoverflow.com/questions/29706099/how-to-make-a-for-loop-in-jinja">loop</a> to the <a href="https://github.com/hcarter333/rm-rbn-history/blob/ed92040f2d4ed627135f4d0d64a86ec4079e506d/plugins/templates/qso_map_header.kml#L57C1-L70C13">kml template</a> that creates one screen overlay per minute during the time span between the first and last QSOs.</p><p>{% for map_minute in Map_minutes %}</p><p> <ScreenOverlay></p><p> <name>Map Time</name></p><p> <Icon></p><p> <href><![CDATA[https://chart.apis.google.com/chart?chst=d_bubble_icon_texts_big&chld=glyphish_clock|bb|00ff00|000000|{{ map_minute }}]]></href></p><p> </Icon></p><p> <drawOrder>{{loop.index}}</drawOrder></p><p> <overlayXY x="0" y="1" xunits="fraction" yunits="fraction"/></p><p> <screenXY x="0.4" y="0.1" xunits="fraction" yunits="fraction"/></p><p> <rotationXY x="0" y="0" xunits="fraction" yunits="fraction"/></p><p> <size x="0" y="0" xunits="fraction" yunits="fraction"/></p><p> <TimeStamp>{{ map_minute }}</TimeStamp></p><p> </ScreenOverlay></p><p>{% endfor %}</p><h4 style="text-align: left;">What Happens When the API Goes Away Forever</h4><p>What about deprecation concerns? For now, I'm studiously recording each animated map as a video. The recordings do not depend on the API. This might not be a sustainable model for new videos... eventually. Still, worst case, none of the existing videos will break.</p><p><br /></p><h4 style="text-align: left;">References:</h4><div>Small world! The StackOverflow user mentioned above had also provided the <a href="https://kml4earth.appspot.com/circlegen.html">kml circle generator</a> I use on some of my QSO maps.</div><p></p>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-17617233173165154172024-03-12T07:18:00.000-07:002024-03-12T07:18:53.475-07:00First Wireless Toucans POTA K-1178<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijb0mYy6wArVEGAzNI8xiwdJttDL9qFH2ZTwl_WyoKz23MSa4WFfkp6V0gpzdhxQWZZ3KX5iw873jpocXsDlKcm47Y9Pk9QmmulxFAkUYG2on3WAag5BFWKu9R31fQVT0vf1dDB-Vjbmoeeknbzr2XoXjvycAJ948LEjYv-lbBbKBIomgRb1YWQcbBPw4/s4352/fwpota.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2031" data-original-width="4352" height="298" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijb0mYy6wArVEGAzNI8xiwdJttDL9qFH2ZTwl_WyoKz23MSa4WFfkp6V0gpzdhxQWZZ3KX5iw873jpocXsDlKcm47Y9Pk9QmmulxFAkUYG2on3WAag5BFWKu9R31fQVT0vf1dDB-Vjbmoeeknbzr2XoXjvycAJ948LEjYv-lbBbKBIomgRb1YWQcbBPw4/w640-h298/fwpota.png" width="640" /></a></div><br /><p>Project TouCans made its first POTA flight this weekend! The rig made 51 QSOs! Alas, there were issues we get to fix.. Which is actually kind cool :)</p><p><br /></p><h3 style="text-align: left;">What the rig did well</h3><div>OK, the rig made it coast to coast, up to Alaska, and into Canada! Pretty impressive if I do say so myself.</div><div><br /></div><div>You might n otice that the bottom of the irg is about eight feet off the ground.That might make it seem like our radiation angle for 20 meters would be pretty high based on this</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjj1ADidn_G_9nLd9s9NCjWu35GxW74M6IDxtX8M6DXcOkQjQgpNsvrLrX3YPiCx4lvCHkfdE0upniyG6RyyidElK11wmMtwwoWAxRbqKMYZWilAFGiytUhpvK8G95yUDgJCqm3Lito8r7TEbryOpwTpQi-Mxi0-uIFCqJ3PrxKH8yzlEzaqL_v8Iw87Ho" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="404" data-original-width="552" height="468" src="https://blogger.googleusercontent.com/img/a/AVvXsEjj1ADidn_G_9nLd9s9NCjWu35GxW74M6IDxtX8M6DXcOkQjQgpNsvrLrX3YPiCx4lvCHkfdE0upniyG6RyyidElK11wmMtwwoWAxRbqKMYZWilAFGiytUhpvK8G95yUDgJCqm3Lito8r7TEbryOpwTpQi-Mxi0-uIFCqJ3PrxKH8yzlEzaqL_v8Iw87Ho=w640-h468" width="640" /></a></div><br /><br /></div><div style="text-align: center;"><span face="Lato, sans-serif" style="background-color: white; color: #292929; font-size: 20px;">Taken from </span><a href="http://www.vias.org/radioanteng/radio_antenna_engineering_03_06_02.html" style="background: rgb(255, 255, 255); color: #d67f3f; cursor: pointer; font-family: Lato, sans-serif; font-size: 20px; text-decoration-line: none;">Radio Antenna Engineering</a></div><div><br /></div><div><br /></div><div>The antenna is about 0.12 wavelengths off the ground, so the angle—and I'm being kind giving it that extra .012, but the twine was stretchy making that within the margtin of errorr for this back of the envelope estimation—should be about 60 degrees as marked by the red arrow. But, that's if the ground is flat. We were on the edge of a ridge. I know this because I kept having to chase the roll of butcher's twine down the hill. I used the SOTA map for nearby <a href="https://sotl.as/summits/W6/CC-063">Mt. Tamalpais</a> (CC-063) summit to show that the slope of the hill was about 18 degrees.</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgPdFXBNisU1-xwoM772Ploo6iaRYd8uo5oCuHCwyzEXekJztpnUSt_Pe_qq4JaGbtNHDRZXODJUDFtjtQ8xLX7v-knkw6LGttzh4VVy_h7BLJEUByd2y3jx94XR6DKp6eOrRyVwY3a8TNtP-R_xiU1XUmlXwYL5fZU7XHIoPpBvew5J__Fc9hAt1i_KwA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="165" data-original-width="507" height="208" src="https://blogger.googleusercontent.com/img/a/AVvXsEgPdFXBNisU1-xwoM772Ploo6iaRYd8uo5oCuHCwyzEXekJztpnUSt_Pe_qq4JaGbtNHDRZXODJUDFtjtQ8xLX7v-knkw6LGttzh4VVy_h7BLJEUByd2y3jx94XR6DKp6eOrRyVwY3a8TNtP-R_xiU1XUmlXwYL5fZU7XHIoPpBvew5J__Fc9hAt1i_KwA=w640-h208" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">The units are in meters for run and feet for rise.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Then, we have </div><div class="separator" style="clear: both; text-align: left;"><blockquote style="background-color: white; color: #292929; font-family: "EB Garamond", serif; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size: 44px; font-stretch: normal; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-weight: 600; line-height: normal; quotes: "“" "”" "‘" "’";">For simplicity, first consider an antenna on the top of a hill with a constant slope downward. The general effect is to lower the effective elevation angle by an amount equal to the downslope of the hill. For example, if the downslope is −3° for a long distance away from the tower and the flat-ground peak elevation angle is 10° (due to the height of the antenna), then the net result will be 10° − 3° = 7° peak angle.</blockquote><p style="background-color: white; color: #292929; font-family: Lato, sans-serif; font-size: 20px;"></p><p style="background-color: white; color: #292929; font-family: Lato, sans-serif; font-size: 20px;">--from the very fb "<a href="https://www.arrl.org/files/file/antplnr.pdf" style="background: transparent; color: #d67f3f; cursor: pointer; text-decoration-line: none;">Antenna Height and Communications Effectiveness</a>" by By R. Dean Straw, N6BV, and Gerald L. Hall, K1TD.</p></div><br />Taking that into account gives us 62 - 18 or a launch angle of about 42 degrees as shown in green circle above. The hill slope giving us the effect of having an antenna at 0.4 wavelengths up isn't a bad deal!</div><div><br /></div><div>So! With our almost half a wavelength up antenna, the dinnertime QSOs looked like this</div><div><br /></div><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3baqGJ70CeKlG5q3UwyusxRsm0smVXi6qIhMzcpsJ5vpb-K_ABN1lulO8mpCHvpwmsEnf0IANgefiZ5n8u2cUlZTUXV6gY55ytA6F44-mxvS-pMEVdqCX8hmw9_Z_tUFL4QjZmIUb_9uxHXqE87vxJahoYlLUNl5jPe47udsFjHFFB2p2VfWXJ5OcZBs/s640/wireless_pota_part_1c.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="450" data-original-width="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3baqGJ70CeKlG5q3UwyusxRsm0smVXi6qIhMzcpsJ5vpb-K_ABN1lulO8mpCHvpwmsEnf0IANgefiZ5n8u2cUlZTUXV6gY55ytA6F44-mxvS-pMEVdqCX8hmw9_Z_tUFL4QjZmIUb_9uxHXqE87vxJahoYlLUNl5jPe47udsFjHFFB2p2VfWXJ5OcZBs/s16000/wireless_pota_part_1c.gif" /></a></div><br /><div>From there, it's slightly less shocking that the rig 0.12 wavelengths up reached the opposite coast, and Alaska, and was spotted in Hawaii.</div><div><br /></div><div>Here's the QSO map for the first portion of the following morning.</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7U9QfdTHaJFuPxg8YDsqXRdER8qVIw6weEyUexneFBxRQ0sOZM1BMroChGw00lsWjyuvcXvPh1vJrdlh7uP7iESuRxajMDR3vTGJcU94yZuE9gJEwB99WDxW630so7U849AwLbvUqQC7txDt8YCJzZqSv8CeJmweTTdpgU0GzTxVhGRKPQW83pA7iLqQ/s640/POTA_wireless_2_map.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="351" data-original-width="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7U9QfdTHaJFuPxg8YDsqXRdER8qVIw6weEyUexneFBxRQ0sOZM1BMroChGw00lsWjyuvcXvPh1vJrdlh7uP7iESuRxajMDR3vTGJcU94yZuE9gJEwB99WDxW630so7U849AwLbvUqQC7txDt8YCJzZqSv8CeJmweTTdpgU0GzTxVhGRKPQW83pA7iLqQ/s16000/POTA_wireless_2_map.gif" /></a></div><br /><div><br /></div><div><br /></div><div>Then, the gang and I took a break for oatmeal that they cooked—yes I am bragging. Here's the QSO map between the end of oatmeal and our hike down the hill to the bus stop to go home.'</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihODnw80SkfnNELXH7CQ2AFW-A45JvZ78a56xQq248hgSYIys89evM74t_qLKUaI1qb2CDum6Saz1MBQn3eU8OHU1h_MJu2CXtSeTLVPlhHyLI9rBmomzc4DZ5HWssVXX6Hal1wawkedPupipCcTLlBXInY2Q6m23Gj36CcPLf3_cMqhVChnv4riopLKg/s904/pota_wireless_3.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="904" data-original-width="840" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihODnw80SkfnNELXH7CQ2AFW-A45JvZ78a56xQq248hgSYIys89evM74t_qLKUaI1qb2CDum6Saz1MBQn3eU8OHU1h_MJu2CXtSeTLVPlhHyLI9rBmomzc4DZ5HWssVXX6Hal1wawkedPupipCcTLlBXInY2Q6m23Gj36CcPLf3_cMqhVChnv4riopLKg/w594-h640/pota_wireless_3.png" width="594" /></a></div><br /><div><br /></div><div><br /></div><div><h3>Where the rig could improve</h3></div><div>There were WiFi connectivity and rig noise—as opposed to QRM—issues throughout. Let's talk about the rig noise first. It wasn't awful. A lot of the QSOs shown above are at 339 from the opposite coast. At least one of them was also QRP. That's pretty good and pretty cool! By taping down the audio out wire to the battery pack can, I was able to get rid of some of the noise. The thing is that sometimes, all of the rig noise is gone. I'm working on making that the typical case. The next step will probably be to mount the headphone jack in the battery pack can. We'll see.</div><div><br /></div><div>WiFi though! Geesh! It seemed to be getting swamped by the gang's cell phones. It was also just generally spotty, sometimes taking tens of seconds to respond. I need to figure out a better system. Towards that end, here are some things the gang an I will try over the next several weeks:</div><div><br /></div><h4 style="text-align: left;">Pico-W WiFi Interference Characterization</h4><div>We can test the keyer in a somewhat controlled environment in the houe. It doesn't know it runs the same firmware on and off the radio. We need to vary the following:</div><div><ul style="text-align: left;"><li>Distance between controlling laptop and Pico</li><li>Number of other WiFi devices present</li><ul><li>Distance of those devices from the Pico</li><li>Amount of traffic being executed by those devices during Pico Operation</li></ul></ul><h4 style="text-align: left;">Pico-W WiFi Directionality</h4></div><div>We can tape board to the cieling, point it at and away from the controlling laptop and position the Pico-W behind and in front of soup cans.</div><div><br /></div><div><h3>The Whole Experience</h3></div><div>All in all, this was pretty awesome! We need to get stronger twine now that the rig is heavier. Then, we need to test out suspending the rig. We might do this in McLaren Park. We won't get as much data on QSOs since it won't be a POTA activation, but we will get to practice the pragmatic aspects of getting the dipole mounted rig up in the trees. </div><div><br /></div><div>One final thought:</div><div><blockquote>It was really surprising and unique not to have to worry about running into or tripping over any wires from the radio to the ground!</blockquote></div><div><br /></div><div><br /></div><div><br /></div>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-32727979931285976762024-03-06T06:16:00.000-08:002024-03-06T06:17:39.675-08:00The straight key is up and Ummm... Limping!!!<p> <a href="https://blogger.googleusercontent.com/img/a/AVvXsEhR5iFzWU1ZG6EAjI1-aY055Iw3TlTTzlyyjHGp9rUeACU3d4QRDzzoDPz7k5opcDcOJqRDF6e-hCuJ3LPJik0BI9UWt-Vy0_E8D6WZ9nEDn651xvEKr_zV8afK4ugM95gTtMiobaGUlTxPuTjXP0WSe9frocApk7SrSZy16HhqI4sQF4HG38LAFWi5YJw" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img alt="" data-original-height="555" data-original-width="987" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEhR5iFzWU1ZG6EAjI1-aY055Iw3TlTTzlyyjHGp9rUeACU3d4QRDzzoDPz7k5opcDcOJqRDF6e-hCuJ3LPJik0BI9UWt-Vy0_E8D6WZ9nEDn651xvEKr_zV8afK4ugM95gTtMiobaGUlTxPuTjXP0WSe9frocApk7SrSZy16HhqI4sQF4HG38LAFWi5YJw=w640-h360" width="640" /></a></p><br /><p></p><p>Wireless TouCans made its first straight key QSO with N2TNN last night! There are definitely kinks to work out in the straight keyer—most of them having to do with the keyer locking on—but I was able to hobble along at about twelve words per minute to complete the QSO!</p><p>As you can see, the QSO was just about coast to coast, from San Francisco to Gloucester, VA on five watts!</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjv6dHswE9zI6H7fpa0zmb2ytDZ-dz44MBz5BtJQ4eaoldAumhjX_VEq6I_tswvCjXmk_sUAXRfuYMAHuYw_4mvKs2tuSYiEEBgOWjkROE3qU3Vq6rUyLgm4W1Cxk1iEvkf5-VMKeW3Xim8PD3cKHxCVYVLBu7eOI7WYEPBQXYJXUFsMeIceed_ZxCy94M" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="506" data-original-width="1106" height="292" src="https://blogger.googleusercontent.com/img/a/AVvXsEjv6dHswE9zI6H7fpa0zmb2ytDZ-dz44MBz5BtJQ4eaoldAumhjX_VEq6I_tswvCjXmk_sUAXRfuYMAHuYw_4mvKs2tuSYiEEBgOWjkROE3qU3Vq6rUyLgm4W1Cxk1iEvkf5-VMKeW3Xim8PD3cKHxCVYVLBu7eOI7WYEPBQXYJXUFsMeIceed_ZxCy94M=w640-h292" width="640" /></a></div><br />For now, the straight keyer constructs a stream of keyboard key up and key down times in milliseconds. When the op hits the 'esc' key, that list is sent to the Pico-W that lives on the rig. The Pico-W then holds down the key for the first number of milliseconds in the list, releases the key for the second number and so on. Essentially, it records the op's fist, and then plays it back just a little bit later.<div><br /></div><div>Next steps include auto-buffering up key presses and shipping them off so that the op isn't bothered with that part of the process. Another nice feature might be a relay that shuts off the audio out line in stright key mode while the op is keying. The script does a fine job of making a sidetone... At least on Windows boxes. Turns out that Linux boxes don't like to give PyGame access to speakers quite as easily, but anyway...<br /><div><br /></div><div>Here's a video of the contraption in operation:</div><div><br /></div><div> <p></p><p></p></div></div>
<div style="text-align: center;"><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="640" src="https://www.youtube.com/embed/5D1Bue0KSss?si=3MnCtoyuuxqOJbdh" title="YouTube video player" width="480"></iframe></div>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-28365406307120531432024-03-06T06:14:00.000-08:002024-03-06T06:19:21.024-08:00Things I Learned: Embedding YouTube Shorts<p> For me at least, there's no embed button on the share tab for YouTube shorts. I figured out how to get the videos in anyway.</p><p><br /></p><p>Step 1:</p><p>Start with an embed iframe from any of your videos that aren't shorts. For example:</p><p><iframe width="560" height="315" src="https://www.youtube.com/embed/idZ80-7WR4w?si=CFqyqDeqzq24OLVh" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></p><p>Then, grab the web link to your short from the sharing tab that you can access</p><p><br /></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhVojG8Aie70_O_LbFvxkvh1hoYB_AcfAjK8wHq8mjXeXqzZvvY7Wu6jmp5kZ0r0w0vpyNhbXko1V8n1z471C_ulwvyQYvCPsqgaAktsGe89k6fErZO0ejMIuMoF8Uh-YE_V_f52aw-VKJcQlpkDhH5j-eaLh3BC2UBB0pCZHcfXJCMWIr1ykEx5T68Osc" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="735" data-original-width="665" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEhVojG8Aie70_O_LbFvxkvh1hoYB_AcfAjK8wHq8mjXeXqzZvvY7Wu6jmp5kZ0r0w0vpyNhbXko1V8n1z471C_ulwvyQYvCPsqgaAktsGe89k6fErZO0ejMIuMoF8Uh-YE_V_f52aw-VKJcQlpkDhH5j-eaLh3BC2UBB0pCZHcfXJCMWIr1ykEx5T68Osc" width="217" /></a></div><br />For example:<p></p><p>https://youtube.com/shorts/5D1Bue0KSss?si=3MnCtoyuuxqOJbdh</p><p>Copy the portion of the link that follows 'shorts/'. In the above example, you'd copy:</p><p>5D1Bue0KSss?si=3MnCtoyuuxqOJbdh</p><p>Paste it into your usual iframe over the portion o the link that follows 'embed/' like so:</p><p><iframe width="560" height="315" src="https://www.youtube.com/embed/5D1Bue0KSss?si=3MnCtoyuuxqOJbdh" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjycm10C-YyjK96OVFvPsd-roxntwV4ElgHqvEH1Q5GyC5rEe1fKlqgJSziKp7eknxrkrOOQWkLZvkR5leHI1zDTa036kA5vJmqRHqiOOLpGfCVmB_pHpggq3kekioBcOoGsXa3y2DiEdwO6I6EYmUHTu9jai3J_-Hpo7ILE3D4b6fITjGCH9TPSig0fvg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="87" data-original-width="676" height="41" src="https://blogger.googleusercontent.com/img/a/AVvXsEjycm10C-YyjK96OVFvPsd-roxntwV4ElgHqvEH1Q5GyC5rEe1fKlqgJSziKp7eknxrkrOOQWkLZvkR5leHI1zDTa036kA5vJmqRHqiOOLpGfCVmB_pHpggq3kekioBcOoGsXa3y2DiEdwO6I6EYmUHTu9jai3J_-Hpo7ILE3D4b6fITjGCH9TPSig0fvg" width="320" /></a></div><br />Now, plop your iframe for your short wherever you like!<p></p><p>Update: You might also want to update the size of the player specified in the iframe. I like using 480 for width and 640 for height as shown here:</p><p><br /></p><p><br /></p><p></p>
<div style="text-align: center;"><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="640" src="https://www.youtube.com/embed/5D1Bue0KSss?si=3MnCtoyuuxqOJbdh" title="YouTube video player" width="480"></iframe></div>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-65858510810797469012024-03-03T20:02:00.000-08:002024-03-03T20:04:19.245-08:00Project TouCans Week Notes<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD-P1TrabnTzReI-oJnVFxtJMKtJhqKxU4_aM8JduNbQVcNuXWpxzKp5LeP5KqsFX-0YSTAjNFWnn4GNCCLWIeUGMxaS77LYwxQEhaQ_T0Uq0md_WIDOJuYnHCYeSrTBx0SqzdLVBCAw7miUVXmBiqIGONEOmRi08J4zROMHwpX4WUVzmEiaFtAJ3-7-U/s4400/toucanslogo.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1167" data-original-width="4400" height="170" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD-P1TrabnTzReI-oJnVFxtJMKtJhqKxU4_aM8JduNbQVcNuXWpxzKp5LeP5KqsFX-0YSTAjNFWnn4GNCCLWIeUGMxaS77LYwxQEhaQ_T0Uq0md_WIDOJuYnHCYeSrTBx0SqzdLVBCAw7miUVXmBiqIGONEOmRi08J4zROMHwpX4WUVzmEiaFtAJ3-7-U/w640-h170/toucanslogo.png" width="640" /></a></div><div class="separator" style="clear: both; text-align: left;">Project TouCans has a logo!!!! A banner!!!??? A mascot!!!???!!!</div><p></p><p></p><div style="text-align: center;">I don't know!</div><div style="text-align: center;"><br /></div><div style="text-align: center;"><blockquote>But, it's cool!!!</blockquote></div><div style="text-align: center;"><br /></div><div style="text-align: left;">The gang and I played aroudn with Dall-E this afternoon via ChatGPT4. We started by asking for something that looked like a cross between github's octocat and a TouCan. Then, we started describing the radio, and we wound up with the above. And I like it!</div><div style="text-align: left;"><br /></div><div style="text-align: left;">It's been a busy week. I was out of town, so I didn't get to get on the air as much as I would have liked. The radio is working great though! </div><div style="text-align: left;"><br /></div><div style="text-align: left;">Most of the innovation this week came in the form of the Pico-W keyer software. We can now change the keying speed with special commands sent in in the form of 'F' for a 0.005 second faster dah, or 'S' sent in for a 0.005 second longer dit. All other timings at the moment are based on the dit.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">Work continues on the straight key via WiFi project. The biggest technical issue at this point is figuring out how to create a Python sidetone that is cross-platform capable. Maybe PyGame? It doesn't seem like it shoudl be so hard to make a sound on key down. But, wait! As I was writing this, I asked ChatGPT how to code a sidetone generator, and <a href="https://github.com/hcarter333/pico-w-mem-keyer/blob/main/sidetone.py">here we go</a>!</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-28154869729347358902024-02-26T22:01:00.000-08:002024-02-28T04:29:11.306-08:00Hacking the 1Mii Bluetooth 5.3 Transmitter Receiver: Auto Shutoff No More<p> Here's a thing that happens. The 1 Mii Bluetooth 5.3 Transmitter/Reciver shuts off its power automatically when it either doesn't hear audio for five minutes, or when it's not paired to a pair of headphones for five minutes. These are pretty common things when you're out on a POTA camping trip as the gang and I frequently are. </p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW9YhSaKNuAQo78XVlaLQEeE1CAh3ul-4Ux58FoQk9G9itcI8UacC9BKdKiYNx3uNg1DGqTiSCZqjarvTEKlc_6nk14P-Km5ZtkbLBL4eiU9_9AjiUafbF6SjrKP3SYGvPV_Q-CuY6XdE2loW9380uUBuzICXQd8LKbxo1yPCqdZVfSAW9PUC6zsUjw4M/s1920/mwcinema.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1040" data-original-width="1920" height="346" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW9YhSaKNuAQo78XVlaLQEeE1CAh3ul-4Ux58FoQk9G9itcI8UacC9BKdKiYNx3uNg1DGqTiSCZqjarvTEKlc_6nk14P-Km5ZtkbLBL4eiU9_9AjiUafbF6SjrKP3SYGvPV_Q-CuY6XdE2loW9380uUBuzICXQd8LKbxo1yPCqdZVfSAW9PUC6zsUjw4M/w640-h346/mwcinema.gif" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;">(Yes, I do see them. No, I haven't had time to figure out what they are <a href="https://www.designnews.com/aerospace/ufos-sunset-fighter-jets-dawn">this time</a> :) )</div><p></p><p>One of my favorite things to do is wake at about 3 in the morning to see what weird things the F2 layer is doing. I can actually hear far away signals when there's not a whole city's worth, (I love you San Francicsco, but geesh), of noise. That's how we wound up talking to three stations in Europe on our last POTA above Mountainair while it was snowing outside!</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjn1lwB3cI6UfagvnABL3WYpHKaO7hQA2_x2DW1SEFfMWhUW5kr6rQMZnhDqnXdBfi_lkR482Z9G7gqMz9SWPCZ_zdzLZP1-ct9sY6zSKUWZh0T_9cptAaMgPG8lZp7MRgRSyeYI5X6HI9iIokVRoycqPP30OV7AmWw_g2xm9JM8ZEvzzUpYIESX9hpI6I" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="284" data-original-width="640" height="284" src="https://blogger.googleusercontent.com/img/a/AVvXsEjn1lwB3cI6UfagvnABL3WYpHKaO7hQA2_x2DW1SEFfMWhUW5kr6rQMZnhDqnXdBfi_lkR482Z9G7gqMz9SWPCZ_zdzLZP1-ct9sY6zSKUWZh0T_9cptAaMgPG8lZp7MRgRSyeYI5X6HI9iIokVRoycqPP30OV7AmWw_g2xm9JM8ZEvzzUpYIESX9hpI6I=w640-h284" width="640" /></a></div><br />But! If the power goes off on the Bluetooth transmitter now that Project TouCans is completely wireless, then I have to bring the whole rig down to reset it. There's an answer though, and like many other answers for Project TouCans since it's gone wireless, it involves a relay.<div><br /></div><div>If we can setup a releay—controlled by the Pico-W—that can cycle power on the Bluetooth transmitter, receiver aka an ML300, then we're off and running. That's what 11 year-old Mota, 9 year-old Tawnse, and I worked on today. Our first step was to try to expose the RX/OFF/TX switch terminals. That meant device surgery!</div><div><br /></div><div>We got as far as learning where two of the three switch terminals can be found. We'll get the third terminal soon, and give it a try. Here's what we saw so far:</div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgAlQ8UPt6a53GvhUr1quInBH4aYXs2mZvfoq4eVzP0AYjycu3O-znGXAbaWZptphY9pNi9zi06-PNZKQbN_MbswqBa65F0dUB5Lfok9_tgMcwtBzqYuhXzmS-sxefyxphs2_pSQB2v_A1hEM6GDAHRXT7oUwrFKap9ZoxJFI6-FspTAKdjLKPtfACfUd4" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="764" data-original-width="1015" height="482" src="https://blogger.googleusercontent.com/img/a/AVvXsEgAlQ8UPt6a53GvhUr1quInBH4aYXs2mZvfoq4eVzP0AYjycu3O-znGXAbaWZptphY9pNi9zi06-PNZKQbN_MbswqBa65F0dUB5Lfok9_tgMcwtBzqYuhXzmS-sxefyxphs2_pSQB2v_A1hEM6GDAHRXT7oUwrFKap9ZoxJFI6-FspTAKdjLKPtfACfUd4=w640-h482" width="640" /></a></div><br /><br /></div><div>If you look closely, you can see there's a post labeled RX. There's a similar one hidden by the screwdriver that says TX. Tawsnse and Mota learned how to slowly, somewhat methodically take something a part to modify it. It was a cool morning!</div><div><br /><div><p></p><p><br /></p><p></p></div></div>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-69463972999417334812024-02-25T19:52:00.000-08:002024-02-25T19:52:01.411-08:00Week Notes: TouCans and Other Birds, Power Cycling, Soft Keys, and Night Ops<style>
.grid-container {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
gap: 10px;
}
figure {
margin: 0;
}
figcaption {
padding-top: 10px
}
img {
width: 100%;
}
.grid-container-row {
display: grid;
grid-template-columns: 1fr;
gap: 10px;
}
figure {
margin: 0;
}
figcaption {
padding-top: 10px
}
img {
width: 100%;
}</style>
<p> TouCans continues to fly on its own! We need to work through the bluetooth transmitter turning itself off to save power. We also need to work through strategies to extend battery life with the Pico-W. At the moment, I'm looking into the MicroPython <a href="https://docs.micropython.org/en/latest/library/machine.html#power-related-functions">machine.lightsleep</a> method. It looks like I can suspend operation of the Pico-W for a set amount of time after which it will automatically wake back up. This might be particularly handy for camping expeditions where I could essentially snooze the rig while I snooze. </p><p>Work continues on the <a href="https://github.com/hcarter333/pico-w-mem-keyer/blob/main/keyflex.html">straight key</a> via WiFi for the rig.</p><p>Yesterday I hauled the rig around with me all over Lands End hoping for a chance to set up a POTA. It didn't happen, but I did find out that the rig travels well. No issues at all when I reinstalled it in the backyard.</p><p>As far as kinda cool pictures of the rig for the week, I managed to capture it framed between an almost full moon and Orion</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgV0fY3M9U-S-CBUH59HsNjupFtSHAyyQZxUWQMbZKVkNtveU4lQVE71mB-7900xPlSAhLS2QMibFyerYOXeEhvc3pIWrqAzs0kkg1KdmEwpqN0Bcj8wMvH8GrXqTy3CTCZiaydN3xWqZmwJqj-oSYGj8juZLwKmBtY7KbZkNesKTqkU2oj7VYXO_V0748" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="769" data-original-width="1025" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEgV0fY3M9U-S-CBUH59HsNjupFtSHAyyQZxUWQMbZKVkNtveU4lQVE71mB-7900xPlSAhLS2QMibFyerYOXeEhvc3pIWrqAzs0kkg1KdmEwpqN0Bcj8wMvH8GrXqTy3CTCZiaydN3xWqZmwJqj-oSYGj8juZLwKmBtY7KbZkNesKTqkU2oj7VYXO_V0748=w640-h480" width="640" /></a></div><br />It appears that the local aviary life think that TouCans was more than an apt name the rig. While wind testing the rig last week, I noticed a bird fly through the video, behind the rig. I've been learning ffmpeg over the last few weeks, and this was a really cool result!<p></p><p><br /></p>
<div class="grid-container">
<figure>
<img alt="" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS7-KDsD4ibM4BSI4ClimLrNEAl7fiqG4GNvG4Lpd7hsiiflSlwNVVC3r-YfiBUm8SkjodkQGdqyYRjngJcmw8qZC929oEzXoXWtueYAGxj-C9pEeOJr8TWc4yTB2Q8KxqN5dl3Yzko7Pv1I8Li1LMeKjJViHleW2Du_Le7UPsZ8CUIM7HjmHzidxR6kg/w640-h360/024.jpg" />
<figcaption>1</figcaption>
</figure>
<figure>
<img alt="" height="200" loading="lazy" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW_fPh9vkbenUS56oY32BoNtyqlkZuk_8Lh4W2qTAXskknbyEcVjxfxssNK8NOb4YTUjFueKpitAQwPY_REZGRoCYFtWPHWTzzHEnSwcRIkR9CI6OxjYTu8s-OS6x0h2_dbvz2vsAvvcuKr7mjBCUmTOVH9qR8hy_yjQH7rA3-Ugx6MdsfMlRMEJS4JyA/w640-h360/025.jpg" />
<figcaption>2</figcaption>
</figure>
<figure>
<img alt="" height="200" loading="lazy" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiNj_PWB3USxIffpP_JGc6ft35pPdEHfWFYpCkQs5qwRP7erQRckdqq6I-OWXRVJy1VlYfP1I3TAQDthy2hD2c2323ZRYE-bEYP6OAEbnrbsICFtDaNAjG_dqSePEEPoEmlWAATxXRTN82XRcudpGf4keo6d6Mh_rrj2T88ziDUvGpbZzDprUyXliWcCQ/w640-h360/026.jpg" />
<figcaption>3</figcaption>
</figure>
<figure>
<img alt="" height="200" loading="lazy" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1Lc1-5V7wYdN71Rz-6amRh4d_pA2EuEDp6KIhlknmNpxFyFzSC4KfTqUO957kajK1xkvu5VOGSm-fOm20Br0apM6-cQs0nte7mxumTd8DCINTYiZuPzQYJgnNQOvLTGHS4oyAVQmEyMitCc5BVqknjqdqEczUGs79BmkvUz0o0NQU67u-ZVWiuoZ1ckM/w640-h360/027.jpg" />
<figcaption>4</figcaption>
</figure>
<figure>
<img alt="Tuna Topper RF Out" height="200" loading="lazy" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhJbf1wEvBmsyg8fOtqF2_OI_2HDT0PS_zkb-3eLBF8WkKy_jQGppkEqY618aRiRqLCLtK9AcLYN85m_WeM4m8_5dbSBAkdcEzlLI1-ygTqADERc1pWTwBKXog4gNHr1HWzyD2Th7_GPYn8dV8GjUxGA7PzhDMdM6CWGdzFWnqKJ8n8CKsbN0oh1DbG6E/s1920/028.jpg" />
<figcaption>5</figcaption>
</figure>
<figure>
<img alt="Tuna Topper RF Out" height="200" loading="lazy" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHK35nylzHNYyw3ItIaLJw3JQnc7lzIepwTFIiPAgsPF1PmX3eo2ZFNYRorR6f_jmNdHESA7nMXYOJpIQw9xH8t6Vc_VA22Dtx8Bh-ZiyUt_Dx9Tyru1c9_zaFoAKXzvIX88ux3ys8UacrUkRa9JtagOUYnawRDSF_a9Q0d78mrOQ2chul8vK_yJBxWDs/w640-h360/029.jpg" />
<figcaption>6</figcaption>
</figure>
<figure>
<img alt="Tuna Topper RF Out" height="200" loading="lazy" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoX59Ld_SXy04bL_Tgsibqcx8sHgA4p3M_oAR9o3TeofIkT78ojr8ixunr0z6Zxd0OJPK18WJRhBn4K75Uk0hyphenhyphen9njNo9KuCoSGoNetmaPKW6Xcg5JOoevz6Q0kcaUKrnfaYw7r27HYqSnciNrBrN1GymnSZ3QlbLlpzXjkgLzOVVLcfVYN52klwxu0kPE/w640-h360/030.jpg" />
<figcaption>7</figcaption>
</figure>
<figure>
<img alt="bird frame 7" height="200" loading="lazy" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjY21po3pC1YR_A4hvFgpddfYmdalqEK3laKUBIeHitQAhptN6QTUYKd5Xhf8hFouBkCw5VC99yZ68b6qAQlglNUt-JxkAl-892FLO6asfzlh2x51xzrW-NGaXuck3mu-vUp8oKidthy6slANccO5vST-4EuPD3lT9LSuY3o5Ool7iSSMROFHj9d-p_Bpo/w640-h360/031.jpg" />
<figcaption>8</figcaption>
</figure>
<figure>
<img alt="Tuna Topper RF Out" height="200" loading="lazy" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZRRuXlDPjQHsm9LJoyF5BqjjliLanrQYUj8t6Q7agmWgPREFY3S4-NeBL6_nqE51hbELDo6a6pbsovVSOxWxjHtH0CIs4iIshhM06VN05Azin7INpsHOsnToebTklexQnHcpECc7lr89ucI1dJgsoGQ08r3uU6DZJM0EAbW_UW5qyVjNJM5J-Ptf9lBE/w640-h360/032.jpg" />
<figcaption>9</figcaption>
</figure>
<figure>
<img alt="Tuna Topper RF Out" height="200" loading="lazy" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhl85Uo52pS1ZevVZ5-21U2OGCxOJyjN6u3oMedw-gB_lThA5TkuNCPt55O0M6tfBukBOan_IOpQ-Ju5hm2lCs9uxRRRSV5t-qdI9HqJpVMFGdGqEXaUBjEJo_QdVG2mOkZCnnsKOVo_sCPf61r3zj_BSmBgnlO7E8TJCDPwVWQSC1-rEAMK5QtWfwQS4/w640-h360/033.jpg" />
<figcaption>10</figcaption>
</figure>
<figure>
<img alt="Tuna Topper RF Out" height="200" loading="lazy" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdqpvgb-jMsnSlmT0UDdGPcEJwyEicw2liKVmlYLrcZgjQfhfKls3J4B3-yvLeRTr61ijWhj4imogLrFp2XA1DTPHiXP-a5p6RIsq8t9xuqDMzh2hnS1ti-HXOdxT8imAT4eOH_3IsM0iG0dPZWdJJyeIxGIEbQXxUVzMN1NV3BejMX-W5dt3000KlLXM/w640-h360/034.jpg" />
<figcaption>11</figcaption>
</figure>
<figure>
<img alt="Tuna Topper RF Out" height="200" loading="lazy" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc0VNYEH_mMPMAsmPtip8sav44uP0lZ74YIOS65cuQMt9yoRAyIltJD-8wN_xhXCVQ0nZVEzKw3ArGIv8m2hAswnw73fn1fGHhQ3YKZkhviGi2-Yf_TDvGBGEYWWbEm37_l6C0xu9ej8GRwq3cDRPMbzyQCtCw2ZYmLJEdLUco0n-KoegBCQQUQU-_2Xs/w640-h360/035.jpg" />
<figcaption>12</figcaption>
</figure>
<figure>
<img alt="Tuna Topper RF Out" height="200" loading="lazy" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW9VreNOGiQIy22zCwNBacrbIPRdkAHjsJgsx5bHzqGFre_GNt0G-kgKdMb6EPEZKe1zLetJb0a5cARhyphenhyphen0rpnDpQ-X9Bdc6BAQ5lG0J3AD667nY6l4WLjthIHvWtjcvWwWIuC_U9N_cV-BkohJVo0OKOijaQjV6frNl2c-yAPMOSZIkfENCc6ltiF8_zU/w640-h360/036.jpg" />
<figcaption>13</figcaption>
</figure>
<figure>
<img alt="Tuna Topper RF Out" height="200" loading="lazy" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicyWKWdkRz7PvWskzjPeAfD4JFW0GM68TYe5SwUYUQrrgK7U4lD36fzmrOfMvFUKdyWYkgK3_uPqiBiy6zCiARy_9BRwZ3Gekr6wUYC8JZLukCrhncBPwbdf23de56RDYGfzUAzN_DRaY5f5aRGKIQQTDjp6g2Y92Ha_6dRAf7rDxBCkde4O4G5gT7dWU/w640-h360/037.jpg" />
<figcaption>14</figcaption>
</figure>
<figure>
<img alt="Tuna Topper RF Out" height="200" loading="lazy" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqTc9_TGT3Jr-PmHwCoFWhbjR-5YUV_BZAp8fLBJUPFoE5MbHHRsD61cS8hB2zFuVr4Q3_tdznDDl4sOh-emze5rEOwwMBGUQq6cro4GzpKEpjFrLedzGlUUrU9TzFmmcPlmUoV0tKu0H7Z6AuMzW6WR4alkaBRcOjhkaIn0yXoC8PL8muX1nFPn7lgIQ/w640-h360/038.jpg" />
<figcaption>15</figcaption>
</figure>
<figure>
<img alt="Tuna Topper RF Out" height="200" loading="lazy" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYsjlyVbVk7yWiNoAAhztqNLWZWL6cuTD0GtbnmngpbQp8Jyrni5v7xmUFJm3DuO0-2p1gwMFaErA2BEMBOCE5cfFW6hXSnH7IDsTwoD5Cr_Jp_ZDTFUsjhX8VrUyyDt49zoidTaJ4yMjB84iTEbegXfzj03PSM3N9L36VkYttvVnw76mxVsqEXICxq44/w640-h360/039.jpg" />
<figcaption>16</figcaption>
</figure>
</div>
<p><br /></p><p><br /></p><p><br /></p><p></p>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-49623012571380825942024-02-23T12:42:00.000-08:002024-02-25T19:48:14.662-08:00TouCans Power Cycling via Pico-W Remote Keyer<p>TouCans has always had an issue of accumulating charge... somewhere.</p><p>This manifests itself as the Rockmite's keyer chip rebooting the first time the key is closed after a long delay (on the order of minutes usually.) The downside of all this is what happens next. The keyer (even though it's in straight key mode) is unresponsive until the Rockmite is power cycled.</p><p>Here's the thing though. TouCans' power source is in the air now. It's in the antenna with the rest of the rig.</p><p>It's up there:</p><p style="text-align: center;">
<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/UawTdNCLdAc?si=S25qlt0mUbYm-TzK" title="YouTube video player" width="560"></iframe>
<br /></p><p>Consequently, cycling power has become a bit of an issue. Not to worry though. KO6BTY and I added two additional relays this morning, (we're eventually going to also be able to toggle the RockMite's programming line to be back to working on two frequencies.) We changed the keyer code just a bit to interpret a capital 'P' as a command to reboot the Rockmite. The command fires GPIO-17 on the Pico-W. That pin is used as the control line on the first additional relay. The ground line of the TouCans power supply is wired through the normally closed contact on that relay. When the Pico-W breaks that line for a time equivalent to 8 CW dits. After that, the power to the radio is restored! We can now do reboots in the air! </p><p><br /></p><p><br /></p><p><br /></p><p></p>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-45455034926714461422024-02-22T05:00:00.000-08:002024-02-22T05:00:43.860-08:00TouCans and Battery Drain<p> Project TouCans is still on the air! I made a QSO with W2AZZ last night, and the rig was spotted in Europe again last night.</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj2gYYBh4FcjF931djXr-ORV3DR9WMdR3AO09U0Kfzt8Vd4Bo5gVmkcYL_elmJltPV3u9uoElSWi4subG-h-MVtmDulTQAbq5DdB5UPAeh6avI2frX4F5m_bfZab2cUobjeJe2iiOABlpdqCfiAVeThN9yN-R7N3OkWGVjOvDFcpZE_8lahMfScbVX98fc" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="474" data-original-width="832" height="364" src="https://blogger.googleusercontent.com/img/a/AVvXsEj2gYYBh4FcjF931djXr-ORV3DR9WMdR3AO09U0Kfzt8Vd4Bo5gVmkcYL_elmJltPV3u9uoElSWi4subG-h-MVtmDulTQAbq5DdB5UPAeh6avI2frX4F5m_bfZab2cUobjeJe2iiOABlpdqCfiAVeThN9yN-R7N3OkWGVjOvDFcpZE_8lahMfScbVX98fc=w640-h364" width="640" /></a></div><br /><br /><p></p><p>The rig has a bit of an issue in that the Pico-W drains its two AA batteries over the course of less that 12 hours. For POTA outings of a few hours, this won't really be an issue. For our POTA camping outings, this is a bit more of a problem. We're going to look into ways to have the Pico-W got into a semi-sleep mode via firmware. The plans I'm thinking of right now would entail the keyer turning off its WiFi and then checking back in say every two minutes for 30 seconds. Seems like kind of a reasonable tradeoff. I mean, I've had tube rigs that needed that long to warm up :)</p><p><br /></p><p><br /></p><p></p>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-67311645303189175722024-02-16T15:24:00.000-08:002024-02-16T15:24:43.053-08:00First Powered TouCans QSO and Other Updates<p>Powered TouCans made its first QSO today. The operator on the other end was K8IIJ north of San Diego, CA. Rather fittingly it was a QRP to QRP QSO! </p><p>KO6BTY had the idea to power the Raspberry Pi Pico-W from the same Imuto battery bank as well. We'd abandoned this idea early on in the prototype stages of the keyer because RFI on the battery return line from the rig would flumox things about 7 characters into a CQ call. I thought we might have better luck now that the battery line's only six inches long. We had different luck. In this incarnation, the Pico is unable to make WiFi connections when powered by the brick, so back to the 2 AAs we went.</p><div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim8s5EJ3dFC4pPz7SGnMbkpCTioU42g9_3pHSHBRGo0vgpxs6rARPbFnQ9d5Kbhi9TrbIPiMY6N3U5udJT0OyNm4eaVQGpOB1QxTVt32naOGqOWmu8PSI9gtp4cnQP1MPSmXcVKZSYP2x2MX1Czp6NTTS6uwxH6Jp-Nt9Dz186fjQcXMACS0ZOfrAe4J8/s2304/PXL_20240215_153257547.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2002" data-original-width="2304" height="556" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim8s5EJ3dFC4pPz7SGnMbkpCTioU42g9_3pHSHBRGo0vgpxs6rARPbFnQ9d5Kbhi9TrbIPiMY6N3U5udJT0OyNm4eaVQGpOB1QxTVt32naOGqOWmu8PSI9gtp4cnQP1MPSmXcVKZSYP2x2MX1Czp6NTTS6uwxH6Jp-Nt9Dz186fjQcXMACS0ZOfrAe4J8/w640-h556/PXL_20240215_153257547.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">In other news, the rig survived its first unintentional drop test this morning! The cranky antenna connector acted up again. This time, the bolt simply stripped away from the threads dropping the rig ten feet to the ground. The Bluetooth audio transmitter popped its stereo cable on both ends, but that was the extent of the damage! The rig's pretty solid still!</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><h4 style="clear: both; text-align: left;">Steps for the rig powered Pico Test</h4><div style="text-align: left;"><ol><li>the VSys line from the Pico and tape it.</li><li>Plug the Pico into the rigs battery using the ferrite beaded Micro-B USB cable</li><li>Turn on Bluetooth audio</li><li>Turn on wireless headphones</li><li>Plug in rig to battery</li><li>Fly the rig</li><li>Operate</li></ol><div><br /></div></div><br /></div><br /><br /></div><p></p><p></p>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-64727579978158501902024-02-16T03:52:00.000-08:002024-02-16T12:04:34.779-08:00Project TouCans Makes its First Powered, Wireless Flight<p> When we talk about wireless we usually mean propagation. But what if a ham radio didn't even have a feed line!? Project TouCans has done exactly that!</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSLpPh4cQVCBsrD1bIINiZeez-xueNgHQMzY6hib-KmjbSjjKWj5M2cnWQKBkRWI6Km4Tf9KFkgAGqJgM-CLVqUHDeL48lV19VBNXCZYdbw38JUv9uudLIusblF9ixvxVMXzRcdoR2XkMzW9zw39DnU-aFYRkNiSdvvkHtXD7waT9u3yeMC7CuZhtK1Do/s4032/PXL_20240214_164750552.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSLpPh4cQVCBsrD1bIINiZeez-xueNgHQMzY6hib-KmjbSjjKWj5M2cnWQKBkRWI6Km4Tf9KFkgAGqJgM-CLVqUHDeL48lV19VBNXCZYdbw38JUv9uudLIusblF9ixvxVMXzRcdoR2XkMzW9zw39DnU-aFYRkNiSdvvkHtXD7waT9u3yeMC7CuZhtK1Do/w480-h640/PXL_20240214_164750552.jpg" width="480" /></a></div><br /><p>If you're new here, the goal of Project <a href="https://copaseticflow.blogspot.com/p/project-toucans.html">TouCans</a> has always been to have a simple, (I know, it doesn't look simple at the moment), radio that alleviates the operator from needing to think about feelines and SWRs. (Becuase I'm the operator and I don't like thinking about those sorts of things.) The first, very fruitful, year long iteration of this was to move the radio into the antenna. The rig still had wires descending to the ground for the keyer controls, power, and audio though. They all traveled along an Ethernet cable terminated in an RJ-45 jack at either end. There was RFI. It was not as cool as it could have been.</p><p>Over the last two weeks KO6BTY and I finally accomplished our ultimate goal: We got rid of the Ethernet cable!!!</p><p>A week and a half ago, we rid ourselves of the need for keyer wires by adding a Pico-W keyer of our own <a href="https://copaseticflow.blogspot.com/2024/01/the-kd0fnr-ko6bty-auto-keyer-from-picow.html">design</a> to the rig. The Pico-W lives on the sides of the cans which block its WiFi signals otherwise. We ground-tested the keyer's field readiness in the Monzano Mountains of New Mexico. The results were <a href="https://copaseticflow.blogspot.com/2024/02/i-swear-i-dont-have-yagi-k-4514-pota.html">promising</a>.</p><p>Upon our arrival back home, KO6BTY got to work, and we tried out an incremental prototype Tuesday night with the remote/auto-keyer added to TouCans. We were immediately rewarded by spots in both Spain and Hawaii! And while we'd eliminated the need for keyer wires, we still had the Ethernet cable for power and audio.</p><p>Wedneday, we plopped the battery into a Progresso soup can and taped a bluetooth audio transmitter to that same can, and then wired and taped the assembly to the rig. Then? Then we removed the Ethernet cable. Project TouCans is now free-flying!</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhdmgMvaVwFoeTT9j6mfQEmtZrKorsR4YHwxuyiu3T0-Fsx2ZXpKBL26mOH5RupeAg0b93QDSdPurujNX72KBhAxGBjYYQGb_ADFOSx-Ar2taAFyn92fwDdv9iyKH6ZxSwWZ1te8I8HO_QDvCMPf-M5db1ZunvlljLu8xj-t-effwcLoBdrv__2BwaGniw" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="901" data-original-width="1352" height="426" src="https://blogger.googleusercontent.com/img/a/AVvXsEhdmgMvaVwFoeTT9j6mfQEmtZrKorsR4YHwxuyiu3T0-Fsx2ZXpKBL26mOH5RupeAg0b93QDSdPurujNX72KBhAxGBjYYQGb_ADFOSx-Ar2taAFyn92fwDdv9iyKH6ZxSwWZ1te8I8HO_QDvCMPf-M5db1ZunvlljLu8xj-t-effwcLoBdrv__2BwaGniw=w640-h426" width="640" /></a></div><br />We're recording data on battery life and slowly making other refinements. No QSOos yet, but here's where the rigs been spotted.<div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgvRpLxvrm-rKfJ8V-bMZR0guwm6X-0HJh_a1ePFXGsM9EGhffsXLNekSWjK_p2j0ddbTqxNiaP58yoK21NygW18z_puzJGRu8nC6JTeZMXBgJ1Ta7BOgF10QU4zLm_1K7gMKzJ4rRBJvUqs23wX58TDfOPMeBZ8-PIkwQZKclVASCq6aU6gMMHjVaGAJ0" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="628" data-original-width="764" height="526" src="https://blogger.googleusercontent.com/img/a/AVvXsEgvRpLxvrm-rKfJ8V-bMZR0guwm6X-0HJh_a1ePFXGsM9EGhffsXLNekSWjK_p2j0ddbTqxNiaP58yoK21NygW18z_puzJGRu8nC6JTeZMXBgJ1Ta7BOgF10QU4zLm_1K7gMKzJ4rRBJvUqs23wX58TDfOPMeBZ8-PIkwQZKclVASCq6aU6gMMHjVaGAJ0=w640-h526" width="640" /></a></div><br /><br /></div><div><br /><p></p><p><br /></p><p></p></div>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-9593548377253199912024-02-12T18:01:00.000-08:002024-02-12T18:08:53.954-08:00I Swear I Don't Have a Yagi! K-4514 POTA: Cibola National Forest Trip Report<p> Hey Everyone! It snowed! The ham radio was awesome though! Project TouCans was spotted in England, and made three QSOs into Europe about about 4 AM in the morning in New Mexico!</p><p>Here's TouCans braving the winter storm.</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEildGk8iChbWf2Rrx1OHKx7u4K2OXLiPzWwNxyjX-670DAAutEQ7CGJ7TRAW_ygDlhET9nHIQ9Jz_PZf8owa8ujA4LictvFltiXCTbLKNyqY870hDkfmPO6vdPwUaDr2kHj8itkmlqBHgmh2g8RoijxQdEcBP0t11_9qRjHgkYuI2F-TSxqlhi62iUU_ic" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="913" data-original-width="1216" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEildGk8iChbWf2Rrx1OHKx7u4K2OXLiPzWwNxyjX-670DAAutEQ7CGJ7TRAW_ygDlhET9nHIQ9Jz_PZf8owa8ujA4LictvFltiXCTbLKNyqY870hDkfmPO6vdPwUaDr2kHj8itkmlqBHgmh2g8RoijxQdEcBP0t11_9qRjHgkYuI2F-TSxqlhi62iUU_ic=w640-h480" width="640" /></a></div><br />It's low in the center of the picture in it's coffee bag rain/snow shield. The white streaks are the camera picking up rather rapidly falling snow flakes.<p></p><p>Unbeknownst to me, the rental car that KO6BTY and I had picked up the night before was very, very much not a 4WD SUV. Just two, and not a good two at that. We'd checked the weather three times on the way up the mountain the day before, and snow was not in the forecast. When I woke up t midnight to a gentle pattering on the top of the tent, since it was a bit warmer, I asssumed the pattering was rain. It wasn't. It was snow. A thin layer of snow on the rain fly will actually serve as insulation, warming the tent a bit. Oh boy.</p><p>As an aside, Tawnse, the youngetst of the gang ( now 9 ) and I had a similar <a href="https://www.designnews.com/aerospace/ufos-at-sunset-fighter-jets-at-dawn">experience</a> last year. Of course, we set out ot do it on purpose, had a flatter camping spot, and apparently a better rental car.</p><p>KO6BTY and I wound up sitting in the car for a few hours while she did her College Algebra homework waiting for a truck to pull us over the tiny hump the car couldn't manage on it's own and out to the road. Annoying, but in no way harrowing. And, once we were down the hill, we realized, the snow was actually fairly gorgeous!</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU1iTcuWvAmPFnDYmF21sX89L6C6TWjyLQFgQqOGcrsP4QzGlhlUwN6Mfnr-gRNttFEpzCGzPPMssHn5ClDM8fg6QJ8XbfwxcLC96VOgpnH_uVq5cTFqvx3cJdl8B46ZSYwpttt_YPNJhC6b1w3hEvzDnoLm6H8WJKJ32TMl921GHiboJJU4EFF5BRRGk/s4154/1010621.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3264" data-original-width="4154" height="502" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU1iTcuWvAmPFnDYmF21sX89L6C6TWjyLQFgQqOGcrsP4QzGlhlUwN6Mfnr-gRNttFEpzCGzPPMssHn5ClDM8fg6QJ8XbfwxcLC96VOgpnH_uVq5cTFqvx3cJdl8B46ZSYwpttt_YPNJhC6b1w3hEvzDnoLm6H8WJKJ32TMl921GHiboJJU4EFF5BRRGk/w640-h502/1010621.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEA9vKfHKHZKcSM0qRTcFwxUsERXML2VrbiwTZl57WnxPYEMr19ofx4JW6tiTYtE8Igpdt4zO7YkeMUrIFMWzHvnxRhoZKHUskbRIl_pxLS8F6h2YMeLAI2f6VdXjniEBZftv6zKJJ54xLyAHcUrPZrH6bNUh8N9XS2GQ-FrL2ZJfPPIExXa4k_rfctJU/s4372/1010664%20(1).jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3264" data-original-width="4372" height="478" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEA9vKfHKHZKcSM0qRTcFwxUsERXML2VrbiwTZl57WnxPYEMr19ofx4JW6tiTYtE8Igpdt4zO7YkeMUrIFMWzHvnxRhoZKHUskbRIl_pxLS8F6h2YMeLAI2f6VdXjniEBZftv6zKJJ54xLyAHcUrPZrH6bNUh8N9XS2GQ-FrL2ZJfPPIExXa4k_rfctJU/w640-h478/1010664%20(1).jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyuFtyBsc5bQ7FrgxJc1ugzAxzE5e0zxQ7ImZi-JJOemZt8oGiU14BA1kE39EaMMZvwXr3LeXqsg72ug3BiNA4QsmGxDM2Xcsyb9sY_roM7WKNfqR37DceplzjbPBHF_AwD954PbTF67HgBH5IHAGl_SkwOQDHsCj78TVmiI5vUxpNG2w7emtMP_3ruLs/s4896/1010671.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3264" data-original-width="4896" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyuFtyBsc5bQ7FrgxJc1ugzAxzE5e0zxQ7ImZi-JJOemZt8oGiU14BA1kE39EaMMZvwXr3LeXqsg72ug3BiNA4QsmGxDM2Xcsyb9sY_roM7WKNfqR37DceplzjbPBHF_AwD954PbTF67HgBH5IHAGl_SkwOQDHsCj78TVmiI5vUxpNG2w7emtMP_3ruLs/w640-h426/1010671.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3E0LMt79Mwcy-TfdP2OQRvwu9_p2zR2Dxca9WTbinGxxiAVMlqg6ir2DbCrKFmYesoIk2f3LMNwYiz8RsaaYeX2M7UaHKvzN9gNNqjsJtlgXikIbY0A6EXlDTW1ak2a9195noglIH52uBKA9ImJCEigt8js39hBxq_0l72xKzrdzTInfhLvNp0g17ric/s4896/1010676(0).jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3264" data-original-width="4896" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3E0LMt79Mwcy-TfdP2OQRvwu9_p2zR2Dxca9WTbinGxxiAVMlqg6ir2DbCrKFmYesoIk2f3LMNwYiz8RsaaYeX2M7UaHKvzN9gNNqjsJtlgXikIbY0A6EXlDTW1ak2a9195noglIH52uBKA9ImJCEigt8js39hBxq_0l72xKzrdzTInfhLvNp0g17ric/w640-h426/1010676(0).jpg" width="640" /></a></div><br /><p>We finally made it down the hill to Mountainair at about 1 in the afternoon after detouring to Estancia to hit an ATM to pay the truck operator, and descended on our favorite breakfast joint, Alpine Alley. If you're ever working K-4514 and want a really good breakfast, I can't recommend it enough. The people are friendly, the food is excellent, and the interior is cozy.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZ9f9RUY49aFseqV2wtW9Be3_webcwLMgKTdCRNNuULdhzSoUUSZQZfWsb_G3UKdEVFFCgGB9YqPcKw6zsWEq9T9Xilgy35NyvFXfrR0xeMRgvUzQsYaRxR0D7TvOWhNpA-O011-lKuSiOaKG8vfdFd3de9bqLsgqTf9kpKDEuIm750WrzL8JWjkvYzZ8/s4032/PXL_20230917_162630594.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZ9f9RUY49aFseqV2wtW9Be3_webcwLMgKTdCRNNuULdhzSoUUSZQZfWsb_G3UKdEVFFCgGB9YqPcKw6zsWEq9T9Xilgy35NyvFXfrR0xeMRgvUzQsYaRxR0D7TvOWhNpA-O011-lKuSiOaKG8vfdFd3de9bqLsgqTf9kpKDEuIm750WrzL8JWjkvYzZ8/w640-h480/PXL_20230917_162630594.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div>I promised a radio report though, right? OK, here goes. <div><br /></div><div>First, the remote keyer prototype worked like a champ! The gang—13, 11, and 9 year-old Daize, Mota, and Tawnse—have been learning Python programming using a PicoW and a series of YouTube videos by Lori Pfahler. We adapted the Morse code <a href="https://www.youtube.com/watch?v=_fCQueN7ErE&t=729s">epsiode</a> into the gadget you see below.</div><div><br /></div><div><br /></div>
<div style="text-align: center;"><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="400" src="https://www.youtube.com/embed/idZ80-7WR4w?si=-deVA2fvxNN83lhD" title="YouTube video player" width="680"></iframe></div><div>The blinking LED is on the same Pico-W output as the relay whose orange light you can see dimly behind the rig's power supply. The whole thing adds a bit of ambiance to the tent. Watch for it to all be packaged into Project TouCans soon. If you listen to the very end of the video, you'll hear NN3Z calling in!</div><div><br /></div><div>I started in operating the rig after KO6BTY and I got the campsite setup at about 02:00 UTC. An all time record early setup for us. (We ususally take the red-eye to New Mexico, and wind up setting up camp at about midnight.) For whatever reason, the F2 layers had decided to setup a direct line to Maryland and Pennsylvalnia. My first and only call to the West came in early, NN3Z is in Washington. Everything else was out to the East Coast or even further east!</div><div><br /></div><div>Which, did I mention, Europe!!!??? At about 11 UTC the next morning in New Mexico an RBN station in England spotted TouCans and then, three QSOs came in from Europe in sucession! They were from Spain, Poland, and France in that order. You can check it all out in more detail on <a href="https://earth.google.com/web/data=MigKJgokCiAxcjM0V1JKeERWZ0JvZXNseHZ1Ynpoc2FDeWNmRkc4MCAC">Google Earth</a>. </div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmuOIGXVdYjWrfRefp2KDqQ87fyv1CFadDWeO9LpUaOEBUsJKHfkC7ZDFXliS31g08BZmKSDnj6qZkWPzC77-Z3gHIW-QLd0WObxvIdv7LicVaSfKsgUEaDph4XodR0tpQ3OH2oRFFAFcuizSl7h-WzpR5o9dgk6hYFTanlA4MWP7Qrg3qrSKdsSWREQ4/s1914/Screenshot%202024-02-12%205.58.31%20PM.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="848" data-original-width="1914" height="284" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmuOIGXVdYjWrfRefp2KDqQ87fyv1CFadDWeO9LpUaOEBUsJKHfkC7ZDFXliS31g08BZmKSDnj6qZkWPzC77-Z3gHIW-QLd0WObxvIdv7LicVaSfKsgUEaDph4XodR0tpQ3OH2oRFFAFcuizSl7h-WzpR5o9dgk6hYFTanlA4MWP7Qrg3qrSKdsSWREQ4/w640-h284/Screenshot%202024-02-12%205.58.31%20PM.png" width="640" /></a></div><br /><div><br /></div><div><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p></p></div>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-39698433677387126382024-02-11T20:10:00.000-08:002024-02-12T07:29:23.392-08:00Things I Learned: Making gifs with sationary backgrounds<p>Tracking down a mapping bug led me to watch clouds on Google Earth and after yesterday's snow storm—more on that later—I suddenly found myself scraping weather radar data to layer on top of the K-4514 POTA site KO6BTY camped at on Friday night.</p><p>Here's the map of the POTA activation/camping trip that started on a clear evening, became a dusting of snow, and then became more snow than the rental car could handle:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAKknPpfm-ra99ZblmkEvBp0iigc1KY87TrfZv2sFwdgxmJg8RVofr7FTjpOgsBxqUplPK7LmIhnD2iwU3xfEU_tkTjpqBWrnAZShFo6Dc5BqboqTZVYqR0wSSH8yyIiI4RX51hBz67YObdfmi99h4vGd_Y14QjwUVYtsLdmyKmobk3VMp75Qe4xvGJVQ/s680/outputtx6a.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="356" data-original-width="680" height="336" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAKknPpfm-ra99ZblmkEvBp0iigc1KY87TrfZv2sFwdgxmJg8RVofr7FTjpOgsBxqUplPK7LmIhnD2iwU3xfEU_tkTjpqBWrnAZShFo6Dc5BqboqTZVYqR0wSSH8yyIiI4RX51hBz67YObdfmi99h4vGd_Y14QjwUVYtsLdmyKmobk3VMp75Qe4xvGJVQ/w640-h336/outputtx6a.gif" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div>That's the camping site/radio station there at the pink x. The not quite beautifully formatted time in the upper left-hand corner is UTC time starting at midnight at the camp site. As you can see, the snow started, thought it might give up, and then resumed with gusto. I'll talk about that on my activation report. Here's the cool thing though! I've mostly automated the creation of radar weather maps for a given POTA activation site! <div><p>Here's how:</p><h4 style="text-align: left;">The Source Data:</h4><div>I'm scraping nexrad data from this site.</div><div>https://www.ncei.noaa.gov/maps/radar/</div><div><br /></div><div>I learned how to do this sort of thing from watching Simon Willison's video and associated <a href="https://simonwillison.net/2022/Nov/26/productivity/">post</a>. Thanks Simon!</div><div>Note to self: consider <a href="https://simonwillison.net/2024/Jan/2/escalating-streaks/">this</a> more often as well.</div><div><br /></div><div>Here are the general steps:</div><div><ul style="text-align: left;"><li>Go to the site</li><li>Search for your general location</li><li>Hide the left-hand window</li><li>Get the map at the zoom level you like</li><li>Type Ctrl+Shirt+C</li><li>Switch to the Network tab</li><li>Shrink the tab panel as much as you can and still the source links</li><li>Click the 'Clear network log' button</li><li>Ever so gently resize the panel by about a pixel</li></ul></div><div><br /></div><div>You should wind up with a panel that looks about like this. If you don't, wiggle the resize of the panel a few times till you only have one "n0r" link visible under the Name column.</div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhsML485w_O0eAknKBHWRzVLklqWRvyEYWaB_Rzg5aGTOBWUPcppcHX5d6p9hpRFtUM7QmWkerJL19kynmttDkSD-vATKgPU3-NYi6h4bujuVLI01Q8BRcymsbnSlV0ZIKyCSmcr_ek5kRfP4CKYQcc_YU6RWV0atg8bo-YcQUCgUn8_Bhqjh9rAGsqyjw" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="632" data-original-width="308" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEhsML485w_O0eAknKBHWRzVLklqWRvyEYWaB_Rzg5aGTOBWUPcppcHX5d6p9hpRFtUM7QmWkerJL19kynmttDkSD-vATKgPU3-NYi6h4bujuVLI01Q8BRcymsbnSlV0ZIKyCSmcr_ek5kRfP4CKYQcc_YU6RWV0atg8bo-YcQUCgUn8_Bhqjh9rAGsqyjw=w312-h640" width="312" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">The link at the top of the Name column, the only link that starts with "n0r" is the one you want. That link contains a timestamp. It also contains an encoded bounding box of the map you see to the left. More steps</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><ul style="text-align: left;"><li>Right-click and copy the link address. </li><li>Copy it to a text editor somewhere.</li><li>Copy it into the new browser pad to see the radar pattern overlay to convince yourself it worked if you like.</li><li>Change the time on the map using the left-hand pane to a time when there is no weather overhead.</li><li>Make a screenshot of the resulting map, being careful to tuck the left-hand tool pane back away, and to capture the bottom menu bar which is an overlay of the map in your capture.</li><li>Save the capture into a file something like map_bg.png</li></ul></div><div class="separator" style="clear: both; text-align: left;">OK, take a breath. Remember how I said this was automerated? I know, what the ??????</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Now, plug your link into a version of <a href="https://github.com/hcarter333/wxrad_overlay/blob/main/wx_stream.py">this</a> script.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">What your doing is coring out the time stamp portion of the link so that you can capture all the data overlays every five minutes for whatever time span you'd like. I started the one above at midnight and downloaded overalays every five minutes for twelve hours.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">OK, now you have the parts, now let's talk about the only tool we're going to use ffmpeg.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><h4 style="clear: both; text-align: left;">ffmpeg</h4><div>I'm going to write down the steps for making the map using the tool. The commands were cryptic to me the first time I saw them this morning. I'll try to write clarifying details if I have time today. Otherwise, I'll put them in another TIL post like this one.</div><div><br /></div><div>To make the animated map with a backround map, the captured radar overlays, and (in may case) hour markers for all 12 hours, you'll use something like</div><div><br /></div><div>ffmpeg -i tx2_site_station.png -r 2 -i wx_2024_02_10_%d.png -r .1666666 -i ttime%d.png -filter_complex "[1]scale=1607:841,format=rgba,colorchannelmixer=aa=0.3[b];[2]scale=320:-1[c];[0:v][b] overlay[d];[d][c] overlay" outputtx6.gif</div><div><br /></div><div>Which, to me, looks intimidating at first sight. Here are the important bits. tx2_site_station.png is the map capture I mentioned above. I modified mine a bit to place a pink x at the station, but it's just the map. the wx_*_%d.png argument is pointing at the .png files captured by the script mentioned above. </div><div><br /></div><div>Now, let's talk about frame rates for a minute. The frame rate is specified by the -r argument. I had 144 images over 12 hours. I wanted to get through the video fairly quickly, so the -r 2 argument associated with the 144 weather images is specifying that ffmpeg should create a video by sequencing two of the images per second. My resulting video is 72 seconds long.</div><div><br /></div><div>Notice that the background png does not have a frame rate. It's there for the duration fo the video.</div><div><br /></div><div>Finally, the ttime%d.png images are layered ni at a rate of one every six seconds. There are 12 of them—one per hour—so they'll also last for 72 seconds.</div><div><br /></div><div>And now, the filter_complex!!!</div><div><br /></div><h4 style="text-align: left;">filter_complex</h4><div>Geesh!!! This thing was the most intimidating part for me. Here it is again for local reference:</div><div><br /></div><div>filter_complex "[1]scale=1607:841,format=rgba,colorchannelmixer=aa=0.3[b];[2]scale=320:-1[c];[0:v][b] overlay[d];[d][c] overlay"</div><div><br /></div><div>It's not so bad once you figure out the decoder ring. Numbers at the starts of commands reference the inputs to the ffmpeg command (-i arguments) in the order they were specified from left-to-right starting with the index 0, so [1] is the -i argument corresnding to the radar files.</div><div><br /></div><div>It took me a while to figure out how to scale those images to fit the map. it seemed to me like they just should be construction, but it wasn't so. The solution in the end was to figure out the size of the background map picture in pixels, and then just specify it in the scale command. </div><div><br /></div><div>The format command for that set of images sets the overlays to be mostly transparent . That's what the 0.3 does.</div><div><br /></div><div>Finally, [b] is the output of the scale and format commands taken together. </div><div><br /></div><div>I scaled the time overlays so that they would be 320 pixels wide and maintain their aspect ratio. That's what the -1 is for, preserving the aspect ratio. The output of that scaling is called [c].</div><div><br /></div><div>The first overlay command overlays the weather maps [b] onto the background [0]. it's output is placed in [d].</div><div><br /></div><div>The second overlay command overlays the timestamps [c] on top of [d].</div><div><br /></div><div>And then, it's all done.</div><div><br /></div><h4 style="text-align: left;">One final note: When LoFi is OK</h4><div>The resulting gif above was consumed about 92 MB worth of file space. More importantly, it slowed down the loading of this page rather noticeably. I reduced the size to 16 MB or so by changing the resolution with</div><div><br /></div><div>ffmpeg -i outputtx6.gif -filter_complex "scale=680:-1" outputtx6a.gif</div><div><br /></div><div>The gif you see above is the LoFi version.</div><div><br /></div></div><p></p></div>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-6529174031930521682024-02-07T11:55:00.000-08:002024-02-07T11:55:25.065-08:00Project TouCans Lab Notes<p> Just a quick update</p><p></p><ul style="text-align: left;"><li>New keyer chip installed last night after blowing out the old one on an SOTA outing</li><li>This morning, reattached antenna to tuna can mounts (inside) again</li><li>Moved to coffee bag rain shield</li></ul><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh-P1jFYiOsoGRi2B8NGM7TZ9zCkeHDY062nNlpHOJ-Qn8uru5qdeWAuxTkgjhWJlMdNlRGKXp8At9lKZbDsIz98UMeTlQSG8ElvVjzfd5UWm9h5EEnKVj4R7xtVOw43NKmyiD_6D7-Re3sctayEZy48vhWpvhbNv7-dBSiRj8PuvKfEH6NUx2hHTB4THc" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="921" data-original-width="1228" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEh-P1jFYiOsoGRi2B8NGM7TZ9zCkeHDY062nNlpHOJ-Qn8uru5qdeWAuxTkgjhWJlMdNlRGKXp8At9lKZbDsIz98UMeTlQSG8ElvVjzfd5UWm9h5EEnKVj4R7xtVOw43NKmyiD_6D7-Re3sctayEZy48vhWpvhbNv7-dBSiRj8PuvKfEH6NUx2hHTB4THc=w640-h480" width="640" /></a></div><br /><br /></div><p></p><p></p>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-3292580341433494662024-02-01T07:59:00.000-08:002024-02-01T07:59:12.731-08:00Morse Code AutoKeyer Relay Characterization<p> On a far less math-heavy jaunt, I finally got around to trying to figure out how fast the auto-keyer KO6BTy and I put togehter could send CW. For the moment, the keyer's record is 31 WPM without errors. I can't key that fast, so I'm going to go ahead and declare that fast enough!</p><p><br /></p><p></p>
<div style="text-align: center;"><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/d0GkTCRnWJI?si=9b40pLFSUugvmiTq" title="YouTube video player" width="560"></iframe></div>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-90874107627855318952024-01-31T05:16:00.000-08:002024-01-31T05:16:46.687-08:00Radiation Angle of the Project TouCans dipole Part III<p> OK, let's maybe wrap this up. Spoiler: I developed more cool new stuff, but didn't wrap this up.</p><p><b>Recap:</b> I set out to see what it would take to map the skips for a QSO, and then try to extrapolate those back to the launch angle of the dipole that KO6BTY and I use for Project TouCans at our home QTH . Along the way, I learned a lot including another use for the cross product. I also remembered, just now, that dipoles can have more than one launch angle.</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizaN-R_IJReGvUYYpZK7bOp8GXEae-dCFtKVQLojLtXzhhXmzSujWPl5AOUtdW-iiPyDCm2EUsgIwcLaD31R-9ZpGkqih3kuXKYIhqrf-mJoUvZP9fsgq9UR8nMbBZ4jkAJDCLVxy_Z9JiKAEWeHShby2p5bfGi-yj4wSiaN9q793um7QV_i9B38qzOrg/s733/angles.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="733" data-original-width="556" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizaN-R_IJReGvUYYpZK7bOp8GXEae-dCFtKVQLojLtXzhhXmzSujWPl5AOUtdW-iiPyDCm2EUsgIwcLaD31R-9ZpGkqih3kuXKYIhqrf-mJoUvZP9fsgq9UR8nMbBZ4jkAJDCLVxy_Z9JiKAEWeHShby2p5bfGi-yj4wSiaN9q793um7QV_i9B38qzOrg/s320/angles.png" width="243" /></a></div><br /><div class="separator" style="clear: both; text-align: center;">Taken from <a href="http://www.vias.org/radioanteng/radio_antenna_engineering_03_06_02.html">Radio Antenna Engineering</a></div><br /><br /><p></p><p>That'll be important later.</p><p>Today, as promised, I tried the three skip solution.</p><p>Here's the angle of radiation from the SF station with three skips.</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEisneNoytcoBsMRRsDpACTQsGwkXxG-8l9F-GtCM_2HlgVPAcEfUqVK6qsZASKMVr_LXb0C1VjEZd6E29BtAJibvxKCbD1Eut4UTxxHaXt8iCu88r62AHydcg2fszQgGSMEDtP56vd3WP2G3HWAy2r5NOStyWxqiGoThJZ3iPHOATeSyp7ixRewXe2rz9E" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="525" data-original-width="1107" height="304" src="https://blogger.googleusercontent.com/img/a/AVvXsEisneNoytcoBsMRRsDpACTQsGwkXxG-8l9F-GtCM_2HlgVPAcEfUqVK6qsZASKMVr_LXb0C1VjEZd6E29BtAJibvxKCbD1Eut4UTxxHaXt8iCu88r62AHydcg2fszQgGSMEDtP56vd3WP2G3HWAy2r5NOStyWxqiGoThJZ3iPHOATeSyp7ixRewXe2rz9E=w640-h304" width="640" /></a></div><br />But what's the numeric quantity for the angle in degrees? Well, I worked through yet more math. It's getting easier though. I added the code for the cross product of two vectors (position vectors in our case) as well as the usage I'm making of the cosine and sine laws to to <a href="https://github.com/hcarter333/rm-rbn-history/blob/main/earthmid.py">earthmid.py</a>.<p>The numeric result of three skips is 7.714120504450855 degrees.</p><p>Here's a quick visual rough check on this</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhtlUM8XUAdoud3yRm5DJrZ2LZBr9X0gvNBTsZixOPGGHPOc-636hm46rsJ48OgPUOX4qywP3UWVlkvpnJWo3S7jxsBSPnU0tLgDn4Z89Z_0LNFWT_ozKAVbCbNed_PV7a0IXKz0JvhqY1JR0NruLzic_1Sv_fW7_n52z3csJw_AAIXKrTLde-N3IdLvqc" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="303" data-original-width="886" height="218" src="https://blogger.googleusercontent.com/img/a/AVvXsEhtlUM8XUAdoud3yRm5DJrZ2LZBr9X0gvNBTsZixOPGGHPOc-636hm46rsJ48OgPUOX4qywP3UWVlkvpnJWo3S7jxsBSPnU0tLgDn4Z89Z_0LNFWT_ozKAVbCbNed_PV7a0IXKz0JvhqY1JR0NruLzic_1Sv_fW7_n52z3csJw_AAIXKrTLde-N3IdLvqc=w640-h218" width="640" /></a></div><br /><p>Which, I gotta admit is pretty cool! Yeah, yeah, I know the math should just work, but still!</p><p>But was three skips really the answer? Probably not. Why? Check out where the first skip of the four skip solution lands.</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEie6HuxUFz8YpLhOF0_xpqsaoPH5XN844M6fAP0jzmTPYjhdSlmX97tzNHIa0J7ESyKonVz7oHI327ZI93IGszrSgcbAMeiPJPFmyr-vNoAIZAd0C6zDKZosTeqJ1eU4TRwN69Rj0yp5Q51Qk0Tt9q9dH8r_LUyGkLAzYfgNfjfcpa4L3kQOs-pBzLUOAQ" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="512" data-original-width="473" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEie6HuxUFz8YpLhOF0_xpqsaoPH5XN844M6fAP0jzmTPYjhdSlmX97tzNHIa0J7ESyKonVz7oHI327ZI93IGszrSgcbAMeiPJPFmyr-vNoAIZAd0C6zDKZosTeqJ1eU4TRwN69Rj0yp5Q51Qk0Tt9q9dH8r_LUyGkLAzYfgNfjfcpa4L3kQOs-pBzLUOAQ=w592-h640" width="592" /></a></div><br />A mere fifty miles from the RBN station that picks up Project TouCans VE6JY is the reverse beacon network station with the largest snr value most days. Four skips gives us a launch angle of 14.686256246402552 degrees.<p>Now, we have an estimate for the launch angle that fits well with our emperical data from SM5CAK and VE6JY.</p><p>What else though? Well, have I mentioned K2PO/7 near Portland? The rig hits that RBN station pretty frequently as well. Since it's getting easier and easier to calculate these, let's see where a five skip solution lands</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5HzHD66C2ZmxXREEiU-ZhQMQkaXJ7IrkOdtJd4SC8ibxoE0qpEaECEmGH2NFXnbqXCQ1mh2WhLNFEcMOaZWbczY8u1CDG6R7Ti6mM1UprPttS3n2ho61QhyTlH2Cwc2ir60QE_2cRAs5NQGf7A-kzYURRg_LNdKrykudKgx2ez2L7GXb7x4EnIerSt78/s730/fiveskiplanding.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="607" data-original-width="730" height="532" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5HzHD66C2ZmxXREEiU-ZhQMQkaXJ7IrkOdtJd4SC8ibxoE0qpEaECEmGH2NFXnbqXCQ1mh2WhLNFEcMOaZWbczY8u1CDG6R7Ti6mM1UprPttS3n2ho61QhyTlH2Cwc2ir60QE_2cRAs5NQGf7A-kzYURRg_LNdKrykudKgx2ez2L7GXb7x4EnIerSt78/w640-h532/fiveskiplanding.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div>That's not super close, so let's try six skips. I think this might work out better anyway. Really. <p></p><p>But, nope. I'll give you, it makes for a more cluttered map, but that's not what we were going for.</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBEwaWJkI_lrJybjya-BqEUKnurOMx7xgQ8nonH7DO1iDWyoXYmc2E08LFL-hC6I5nX3Tbzoan-2e4KBmICAVWaUuyU3dLzgYZnVv3BsLsE6bVfXQb86Ez4n9ySsvgOacoUWTnl8R5US2xpb0TOCJp4jsJdCQjjasL_vdB_-afBVBH5tSrGKcjPnFhssM/s1145/sixskiplanding.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="477" data-original-width="1145" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBEwaWJkI_lrJybjya-BqEUKnurOMx7xgQ8nonH7DO1iDWyoXYmc2E08LFL-hC6I5nX3Tbzoan-2e4KBmICAVWaUuyU3dLzgYZnVv3BsLsE6bVfXQb86Ez4n9ySsvgOacoUWTnl8R5US2xpb0TOCJp4jsJdCQjjasL_vdB_-afBVBH5tSrGKcjPnFhssM/w640-h266/sixskiplanding.png" width="640" /></a></div><p>Let's try 7 skips.... Better!</p><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiNAWf7-YwOhXMSlWU3gwBPzA1wsy_pBTCxL_NZquvhx5mQj2KXVD7DUhOJ6DOi7pOTsYzTWf76X1FYNf6KS63FSllucPwHjOmEVebj4ayuK21q78PK2AochTvMnMWAKhh42I5P4GXq60JwOjNIq4h5-2A8_ebW4qwu9bjP6BcpaEVgIA3xp4cjz5zisU8" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="565" data-original-width="701" height="515" src="https://blogger.googleusercontent.com/img/a/AVvXsEiNAWf7-YwOhXMSlWU3gwBPzA1wsy_pBTCxL_NZquvhx5mQj2KXVD7DUhOJ6DOi7pOTsYzTWf76X1FYNf6KS63FSllucPwHjOmEVebj4ayuK21q78PK2AochTvMnMWAKhh42I5P4GXq60JwOjNIq4h5-2A8_ebW4qwu9bjP6BcpaEVgIA3xp4cjz5zisU8=w640-h515" width="640" /></a></div><br />Let's measure the distance between that landing site and my QTH. It's about 616 miles. The distance to K2PO/7 is about 528 miles. Meanwhile, the distance to the four skip peak projected to the ground is 582 miles. That's the closest so far, so let's go with an eight skip solution.</div><div><br /></div><div>What's the launch angle for eight skips? Well, take the landing site, and divide that distance by two to find the distance to the first eight skip peak at 41.29982090608962,-120.5723896615752.</div><div><br /></div><div>We plug that coordinate into our swept angle formula to determine the angle between my QTH and that peak. It gives 3.849189776873525 degrees. We plug that number into the law of cosines method along with the radius of the Earth and the height of the F2 layer in km to get 549.0986270603281 for the length of the third side of the triangle.</div><div><br /></div><div>We plug that into our law of sines method along with the swept angle and the radius of the Earth to get the third angle of the triangle in this derivation</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiMEPe0GIwb5aya0QF6d_z4cu1wApFXC38k4JLP-ZOtzMTWjB3ARdWBYA0qaF1sHROU44rGm68cmXqe7h9Lbqvw_7POWcI7BP1NoVXznogsvzcUfACUCRXI0BIa-D0dri-XD-MOFuQmvkF_oFtH1QV-QHmAIpFoVVleRhMHfy-V6KaC1LiaKOHiXy7V31o" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="665" data-original-width="1280" height="332" src="https://blogger.googleusercontent.com/img/a/AVvXsEiMEPe0GIwb5aya0QF6d_z4cu1wApFXC38k4JLP-ZOtzMTWjB3ARdWBYA0qaF1sHROU44rGm68cmXqe7h9Lbqvw_7POWcI7BP1NoVXznogsvzcUfACUCRXI0BIa-D0dri-XD-MOFuQmvkF_oFtH1QV-QHmAIpFoVVleRhMHfy-V6KaC1LiaKOHiXy7V31o=w640-h332" width="640" /></a></div><br />Note: As I mentioned in the first part, this all going to be quick and dirty back of the envelope stuff until it isn't.</div><div><br /></div><div>Finally, we plug that angle into the launch angle method along with the QTH to peak swept angle to get a final answer of 34.99157663415465 degrees. And, well, that just doesn't really fit any of the radiation patterns shown above. Except! Did I mention the antennas at a 33 degree angle to the horizontal as it slopes down a hill? OK, there's going to be a part four.</div><div><br /></div><div>New additions: <a href="https://github.com/hcarter333/rm-rbn-history/blob/main/earthmid.py">earthmid.py</a> now has a single method launch_angle_skips that returns the launch angle from the dipole given the receiving station and the number of skips the signal makes.</div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><p></p><p><br /></p><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><br /><p></p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p></p></div>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-29081824665003149592024-01-29T19:30:00.000-08:002024-01-29T19:30:53.179-08:00Radiation angle of the Project TouCans dipole part II<p>Let's get going. Here's the figure explaining the formula we'll be using. It's the one I alluded to yesterday. The formula of which I speak will tell us the minimum F2 height required for a radio signal to skip off the ionoshphere and back to another station. The geometry used to derive the formula has a single constraint: the lowest angle, (radiation angle), the radio signal is allowed to leave the transmitting antenna at is 0 degrees—in otherwords, parallel with and tangential to the ground.</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgJCtVdpUHeLfEe4ZTpWQb7fwQkq0z58-45_l2vOJr1-4K5mcqLiAFKHddBHS4ECv0Sppo67G8iXWvYafPaRgXHD2_gU890T70Rtufjf_xFZOel0eX8mH_LhHTxDjHAL3Np9ET7sHM0zPNC3CRPfW8fFWznypMNXqelIW6TYj9hk-eIq5QrltbwbiaGcik" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="640" data-original-width="480" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEgJCtVdpUHeLfEe4ZTpWQb7fwQkq0z58-45_l2vOJr1-4K5mcqLiAFKHddBHS4ECv0Sppo67G8iXWvYafPaRgXHD2_gU890T70Rtufjf_xFZOel0eX8mH_LhHTxDjHAL3Np9ET7sHM0zPNC3CRPfW8fFWznypMNXqelIW6TYj9hk-eIq5QrltbwbiaGcik=w480-h640" width="480" /></a></div><p>The formula will be used in a larger application to programmatically determine the number of skips that are required to make a QSO via the F2 layer of the ionosphere. I'll explain more in a bit.</p><div>Picking up where we left off yesterday, we're using the measured height of the ionosphere in Pt. Arguello ~330km, and we're assuming the signal skipped twice, (remember that in yesterday's post we saw that if the signal only skipeed once, the only way to reach Sweden was in fact to go unerground.) The path of propagation with these assumptions didn't quite make it the half-way distance to Sweden. Instead, it went underground about here,</div><div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjVAYFvXKiUJ4sWE4KmUciDDVhxSRx4dkOWTOGYHKqrxzd-exCEbo55R9_kvqOJ3uUlrOQ8I3FYNMRTGkPwYjBJLSnz5WValoEnW8ee6fqYmgcLA5XmjCuT166iQITZz7_oLyyRO2PVRtZBahgUponhu0QmUKkoGDpo4aQKXU7drv_Th_wiwZNGhgT9w-o" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="358" data-original-width="759" height="302" src="https://blogger.googleusercontent.com/img/a/AVvXsEjVAYFvXKiUJ4sWE4KmUciDDVhxSRx4dkOWTOGYHKqrxzd-exCEbo55R9_kvqOJ3uUlrOQ8I3FYNMRTGkPwYjBJLSnz5WValoEnW8ee6fqYmgcLA5XmjCuT166iQITZz7_oLyyRO2PVRtZBahgUponhu0QmUKkoGDpo4aQKXU7drv_Th_wiwZNGhgT9w-o=w640-h302" width="640" /></a></div><br /><br /></div>about 161 miles short of it's goal. Remember that goal was to make it half the distance to the station in Sweden where the second skip would bring the signal the rest of the way in.</div><div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjICrmbMssQcjzk0ioYBMiVTsCsKGZQlwOr4NxI-UGEiqpccmhYVg9nU2QQphXTVkdoBKwplTHHjcGhPu58s2MOklkXab7EXTiPHtrPbVqMwC3Q_YCiWyp9nnOAHoOZrEcdYSwgsCQdXJY6nFlwZKAb8LgqqxffDoxKlrZS73qencen90QrDYBdg_0ffPQ" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="443" data-original-width="1087" height="260" src="https://blogger.googleusercontent.com/img/a/AVvXsEjICrmbMssQcjzk0ioYBMiVTsCsKGZQlwOr4NxI-UGEiqpccmhYVg9nU2QQphXTVkdoBKwplTHHjcGhPu58s2MOklkXab7EXTiPHtrPbVqMwC3Q_YCiWyp9nnOAHoOZrEcdYSwgsCQdXJY6nFlwZKAb8LgqqxffDoxKlrZS73qencen90QrDYBdg_0ffPQ=w640-h260" width="640" /></a></div><br /><br /></div><br />To further elucidate, that landing site is where the peak of the original F2 skip was when we were looking at a single skip. In other words, we know exactly, (mathematically), where the landing site fo the first skip should be for the purposes of this problem. </div><div><br /></div><div>A final reminder from yesterday: the skip was only 160 miles short on a 5000 mile path, so that's actually really, really close, and for a diffracting radio wave, close enough.<br /><br /></div><div><br /></div><div>So, that's the results we saw with the measured F2 height of 330 km at Pt. Arguello, CA. But, what would the exact height need to be, (calculated using the formula derived above)? The formula derived above shows that the minimum F2 height to make the double skip we discussed is 381.2190729008156 km. Plugging that into the kml map gives us a path that does in fact land at the half way point. Wooo! Math, and specifically, this derviation works!</div><div><div><br /></div><div><br /></div><div>Here's a view from Google Earth Pro where we can see the new path sailing in over the landing point of the 330 km F2 path.</div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh2bsHOWLxgqIJYCZ6rT5MF-30_tiFmObFnyC6T00Riuh523NAiwoXfdnBS7Lg8rblRxPX6oNAQYiO3R2p5HObUVXv5MIXuOIEKo9TWGwwnEOplhXxm5BAzRhYCoef2-TUTtMjrNCf2kAyj1P4ZG3mPivpsMZoDRlWcJL3pTxeluiIS2Hj3mscsjFuq8Lk" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="857" data-original-width="1363" height="402" src="https://blogger.googleusercontent.com/img/a/AVvXsEh2bsHOWLxgqIJYCZ6rT5MF-30_tiFmObFnyC6T00Riuh523NAiwoXfdnBS7Lg8rblRxPX6oNAQYiO3R2p5HObUVXv5MIXuOIEKo9TWGwwnEOplhXxm5BAzRhYCoef2-TUTtMjrNCf2kAyj1P4ZG3mPivpsMZoDRlWcJL3pTxeluiIS2Hj3mscsjFuq8Lk=w640-h402" width="640" /></a></div><div><br /></div>Here's a gif of the surrounding region</div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh53fDmzpsBuJzcoPmC1nodFekYSQCMglOBI8TWNU-SESSeXs6v5qxLI2wVgSZ1kjTlrBObv-N2UfTDysYsl8QRPRWvU6DsK96oPtdN5WmASFPN2vas7J7KV_8i7Ev-BgA2vIZs0M5OeSs-xCsTqf0TQ8beU3Y1OOLw1pkV2Tlos1AoT-w9qHg6db8r4as" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="231" data-original-width="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEh53fDmzpsBuJzcoPmC1nodFekYSQCMglOBI8TWNU-SESSeXs6v5qxLI2wVgSZ1kjTlrBObv-N2UfTDysYsl8QRPRWvU6DsK96oPtdN5WmASFPN2vas7J7KV_8i7Ev-BgA2vIZs0M5OeSs-xCsTqf0TQ8beU3Y1OOLw1pkV2Tlos1AoT-w9qHg6db8r4as=s16000" /></a></div><div><br /></div>Finally, here's a video showing that the signal lands right at the midpoint of the path to Sweden:</div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh64Tz7BVXRE5I0LmPnXHA_Hx4CLWE-zhHXpMtS7Ns8uDEhtuvRWxFPsHSxoWfhlBQS1G0ZVRA2oj4jezqxgRLLgM4S9c6OzfrqWtoSVWf1VxjPHFAlRQzMvvHouoqZyjvKMd6TL234VIspXoR8jXAi32dUL9B0kfytUqg9JC8MKQKo2-ZZWzVlmnC_4Eo" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="210" data-original-width="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEh64Tz7BVXRE5I0LmPnXHA_Hx4CLWE-zhHXpMtS7Ns8uDEhtuvRWxFPsHSxoWfhlBQS1G0ZVRA2oj4jezqxgRLLgM4S9c6OzfrqWtoSVWf1VxjPHFAlRQzMvvHouoqZyjvKMd6TL234VIspXoR8jXAi32dUL9B0kfytUqg9JC8MKQKo2-ZZWzVlmnC_4Eo=s16000" /></a></div><br /><br /></div><div>Another thing that makes me grin about all this, is that you can see the sun is just over the horizon along this portion of the path ala grey line!</div><div><br /></div><div><br /></div><div>The formula above involves the angle that's swept out along the surface of the Earth between stations. How do we get that angle? It turns out we use cross products <a href="https://copaseticflow.blogspot.com/2024/01/sphere-test.html">again</a>. Here are the steps<br />1. Convert both locations to Cartesian coordinats</div><div>2. Complete the cross product</div><div>3. Take the magnitude of the cross product</div><div>4. Take the arcsin of that magnitude. The result is the angle swept out along the sphere between the two stations.</div><div><br /></div><div>I'm trying to keep the notes here short with only the highlights—mostly so I'll keep writing—so, rather than lay out all the math details here, let me point you to the Sage enabled cocalc <a href="https://cocalc.com/share/public_paths/f695687e01945011d2539954e470482729906677">worksheet</a> for this series of posts.</div><div><br /><p></p><p>And that's all for today! Since two skips involved the signal leaving our dipole at 0 degrees, and then missing by 160 miles or so, tomorrow, we're going to try three skips. Watch here for more.</p><p><b>The steps so far:</b></p><p>Get Pt. Arguello F2 height, assume that's the height along entire path</p><p>Map skip path</p><p><span> It goes under the Earth</span></p><p>Assume there are two skips</p><p>Use the same F2 height, and map a path to the midway pont on the QSO path</p><p><span> <b><i>It goes under the Earth 160 miles short of the midway point</i></b></span></p><p>Calculate the minimum F2 height to make that skip</p><p><span> <b><i>The minimum F2 height is 381.2 km rather than 330 km</i></b></span></p><p>Map the skip to the endpoint using that height</p><p><span> T<b><i>he skip lands exactly at the midpoint verifying that the forumula for F2_min works</i></b></span></p><p><br /><b>Next Steps:</b></p><p>Next step: talk about the Idaho and Thule ionosondes</p><p>Next step: Talk about the RBN stations in Canada and the three skip scenario. Look at their SNR number. It looks like the first of the three skips will land pretty close the Canada RBN stations.</p><p>Next step: Map three skips</p><p></p></div></div>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-56809638573452392332024-01-28T12:16:00.000-08:002024-01-29T11:40:47.492-08:00Dipole Radiation Angle<p> Just an on paper, (so to speak), example of how to do the F2 mapping for QSOs, (and why it's more complicated than it appears at first), today.</p><p><br /></p><p>Let's consider this QSO to Sweden from San Francisco:</p><p><br /></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg4xsmJFaeda5w1gdwPr5onniNbyLHSfc266qJSWqmLF4we6zox2GxtE5FK-nDdwlYdrypLD11hLP4Qlyyjcp30MEMis3qdq3qq6dW9QKpO-_BW82NKgADE-5eDiI9147r8-Pz8ddO4w9aDuowvtJOs88WiI65rP_N-15yT7t-wTTkS4_k_ZiByI3yZ9QU" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="336" data-original-width="419" height="514" src="https://blogger.googleusercontent.com/img/a/AVvXsEg4xsmJFaeda5w1gdwPr5onniNbyLHSfc266qJSWqmLF4we6zox2GxtE5FK-nDdwlYdrypLD11hLP4Qlyyjcp30MEMis3qdq3qq6dW9QKpO-_BW82NKgADE-5eDiI9147r8-Pz8ddO4w9aDuowvtJOs88WiI65rP_N-15yT7t-wTTkS4_k_ZiByI3yZ9QU=w640-h514" width="640" /></a></div><br />Retrieving the F2 height data immediately led me to the conclusion that the mapping app has to work in spacetime, (sadly, that's not a relativistic reference), as opposed to just in sapce. Here's the output of the Pt. Arguello ionosonde for the times around that QSO:<p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiTw2KGretX-wbtWSHoHFwZI10IdOD9_btOtqHB8eMNp7dR-g8cLmJje81nZtT8zNcw2tAGSilu85ZjOu2Gds2FP16l50eqDt4XfLT6NEkBHVZHEultEQApBSAw0J3nZp4hnIdeIR7LFyi0Nx5aRLakA8ZJKutXzSMMX3mz3hsGb3IJBKdNzDLFLBMijNU" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="525" data-original-width="705" height="476" src="https://blogger.googleusercontent.com/img/a/AVvXsEiTw2KGretX-wbtWSHoHFwZI10IdOD9_btOtqHB8eMNp7dR-g8cLmJje81nZtT8zNcw2tAGSilu85ZjOu2Gds2FP16l50eqDt4XfLT6NEkBHVZHEultEQApBSAw0J3nZp4hnIdeIR7LFyi0Nx5aRLakA8ZJKutXzSMMX3mz3hsGb3IJBKdNzDLFLBMijNU=w640-h476" width="640" /></a></div><br />Notice that there is no value for hmF2 (the maximum estimated height of the F2 layer) at the actual time of the QSO. I'll need to work on statistical data selection as a result, but for now, I'm just going to go with 330 km as an estimate of what the height was at the time of the QSO.<p></p><p>Here's what the path along the Earth looked like</p><p></p><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjX1j5lc3N4mL81ya99LoEYC3byzNNc-eNvb3bWzafezjqgWHr2ntmVDzRJ5i9IM8_jPlh7aKGtmF8yRcWUNRtCNCs-FNx-oG_2VsRQjPJNa7iTFmJ2grv-2H185HimawVUDwY8nJV5T2iyjTRnCBZdhOf2GlLEi0xH1TJbMAW2wqF6xF4CA0n9Z91LERU" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="721" data-original-width="1290" height="358" src="https://blogger.googleusercontent.com/img/a/AVvXsEjX1j5lc3N4mL81ya99LoEYC3byzNNc-eNvb3bWzafezjqgWHr2ntmVDzRJ5i9IM8_jPlh7aKGtmF8yRcWUNRtCNCs-FNx-oG_2VsRQjPJNa7iTFmJ2grv-2H185HimawVUDwY8nJV5T2iyjTRnCBZdhOf2GlLEi0xH1TJbMAW2wqF6xF4CA0n9Z91LERU=w640-h358" width="640" /></a></div><br /><div style="text-align: left;">Turning on the current implementation of F2 mapping reveals we'll have lots of things to look at</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgjmuOR-2YoNbA12HWccKtjHZsrkBHjPBAXiQj6fSfqRjcs_Hklb1XeCgQLilE6RrzqIv9iUL2ZEjTdefbqAGHhOdpG7ErjiO49HUqrhaJJ1ZuGHnTCna0-w5-G6t96QjkYe7Ul7_w7VNFTyIOKQEbFo2M05Z4Qtq_SkX9himWBtm3ytiTVzMxYZ6kXxQA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="659" data-original-width="1039" height="406" src="https://blogger.googleusercontent.com/img/a/AVvXsEgjmuOR-2YoNbA12HWccKtjHZsrkBHjPBAXiQj6fSfqRjcs_Hklb1XeCgQLilE6RrzqIv9iUL2ZEjTdefbqAGHhOdpG7ErjiO49HUqrhaJJ1ZuGHnTCna0-w5-G6t96QjkYe7Ul7_w7VNFTyIOKQEbFo2M05Z4Qtq_SkX9himWBtm3ytiTVzMxYZ6kXxQA=w640-h406" width="640" /></a></div><br /><br /></div></div>But the reason I'm writing today is that skip coming from underground to go to Sweden :)<p></p><p><br /></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjdZjEE9xmlxwWOUicIcb9xdyPsRHR5tTjKpo8adTz6dR3AXC_-8u7PTQvObCorX0rSJygsv7scMY3kwK8D_ViF4dl65Xuw9IWwatcoq9m730H7CP9A1xczFQsb5PTTh837GVyY3hO6IiyDGZFq4Vj3outot0269cQG55yU3zcz5dgUjqHruYJqtscR374" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="476" data-original-width="858" height="356" src="https://blogger.googleusercontent.com/img/a/AVvXsEjdZjEE9xmlxwWOUicIcb9xdyPsRHR5tTjKpo8adTz6dR3AXC_-8u7PTQvObCorX0rSJygsv7scMY3kwK8D_ViF4dl65Xuw9IWwatcoq9m730H7CP9A1xczFQsb5PTTh837GVyY3hO6IiyDGZFq4Vj3outot0269cQG55yU3zcz5dgUjqHruYJqtscR374=w640-h356" width="640" /></a></div><br /><br />Changing the estimated F2 height makes thing better, but only a little. Clearly, the signal skipped more than once.<p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhPb3pKQXUclBol5mrRZzSuTi4NmpuxnFHC4XIUacOpGYWVml-10PtbEW8WXZEHe_KVhG4ykHduv69wuGBtU4o5Y1cFogeh9RFfsml3ENpMdbxJj-Ec6zipbxqPWiUSaHis7K-8RmXr7yd9Csfk5Nn6A4AxL-uWydohlFER9u6WDoZymPGwxFzM6c0FqVg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="419" data-original-width="981" height="274" src="https://blogger.googleusercontent.com/img/a/AVvXsEhPb3pKQXUclBol5mrRZzSuTi4NmpuxnFHC4XIUacOpGYWVml-10PtbEW8WXZEHe_KVhG4ykHduv69wuGBtU4o5Y1cFogeh9RFfsml3ENpMdbxJj-Ec6zipbxqPWiUSaHis7K-8RmXr7yd9Csfk5Nn6A4AxL-uWydohlFER9u6WDoZymPGwxFzM6c0FqVg=w640-h274" width="640" /></a></div><br />This post is about determining how many skips were required, and what that means for the resultant angle of radiation for our dipole antenna.<p></p><p>Well, since one skip isn't enough, the next thing to consider is two.</p><p>Using the midpoint method already defined in the rm-rnb-history package, I arrived at the first skip peek being located at </p><p>55.24556451189041,-110.29305571520665</p><p>Mapping that out by hacking the kml file, we wind up with the following. the lowest white line is the incoming skip with the new midpoint listed above.</p><p><br /></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg73uHndzmQlP1vA1KT_LZwfPhrBfjoK5FFQiaD4UitUNu58D6Hl4TKuMrqyK52ONRnNqNVd7bI8QuSS7vJapzq2V5ZGIBi9hgTomlE4BpMn8gsWVXPD2g82eg7SOtcUwiMOPkehcd5rf7_6WFeavah7eHwUWXtQrZdqvjRFG8i2csNKKuKxveZ97cPi7o/s1427/two_skips.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="575" data-original-width="1427" height="258" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg73uHndzmQlP1vA1KT_LZwfPhrBfjoK5FFQiaD4UitUNu58D6Hl4TKuMrqyK52ONRnNqNVd7bI8QuSS7vJapzq2V5ZGIBi9hgTomlE4BpMn8gsWVXPD2g82eg7SOtcUwiMOPkehcd5rf7_6WFeavah7eHwUWXtQrZdqvjRFG8i2csNKKuKxveZ97cPi7o/w640-h258/two_skips.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div>In reality, the skip is about 167 miles short of its mark. Give that we're not working with laser beams, that's probably fine. Here's another look at the near miss:<div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEisuCeD2nPfaSG1CIQOfHycy7FFKfl4T_nGswFe8_NtlULMVEwewqLZ5UzdMqLe9DU9sdwCgG86LO487vVFD88jEodmiYH1UbBAq7H76qBg5EI47J_NYm2NPOmSCcTfXLsYdy8HZYu4JxM85IRBZoo_ASozCw0wj4JkSONwYjBVWXDapYk3_DmQJT7FmwQ" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="860" data-original-width="1149" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEisuCeD2nPfaSG1CIQOfHycy7FFKfl4T_nGswFe8_NtlULMVEwewqLZ5UzdMqLe9DU9sdwCgG86LO487vVFD88jEodmiYH1UbBAq7H76qBg5EI47J_NYm2NPOmSCcTfXLsYdy8HZYu4JxM85IRBZoo_ASozCw0wj4JkSONwYjBVWXDapYk3_DmQJT7FmwQ=w640-h480" width="640" /></a></div><br /><br />I particularly enjoy that the first skip landing sight was covered in seawater, a very good ground.</div><div><br /></div><div>Tomorrow, the actual math that I should have used. Here's a preview</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMnlqAe1KlZJTcc6PjhpR9U2qOzSx1eox0SIO0cSq5kFLGIH2j4DsIIvc-YPwcpZQdOpqQwhUDjTGThTOctODfYP_Z_6tTtg9M1n3BUIwwjiw5KXDlnqejV9ARAwt0stggyv-EDW2EJDeK05gH3NIXdV_uGThpq3PhQGNB3x0Jfo2pKnkOlWlonygkEDM/s4032/PXL_20240128_194446731.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMnlqAe1KlZJTcc6PjhpR9U2qOzSx1eox0SIO0cSq5kFLGIH2j4DsIIvc-YPwcpZQdOpqQwhUDjTGThTOctODfYP_Z_6tTtg9M1n3BUIwwjiw5KXDlnqejV9ARAwt0stggyv-EDW2EJDeK05gH3NIXdV_uGThpq3PhQGNB3x0Jfo2pKnkOlWlonygkEDM/w480-h640/PXL_20240128_194446731.jpg" width="480" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><br /><p></p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p></p></div>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-31526326667111281932024-01-26T08:43:00.000-08:002024-01-26T08:43:41.225-08:00datasette-haversine-point-to-path Initial Release<p> I made the first release of the package yesterday.</p><p>The case for finding the shortest distance from the point to the path when the distance is not along a perpendicular to the path has been <a href="https://github.com/hcarter333/datasette-haversine-point-path/issues/7">implemented</a>. The <a href="https://pypi.org/project/datasette-haversine-point-path/">package</a> has been released with the tag <a href="https://github.com/hcarter333/datasette-haversine-point-path/releases/tag/0.1">0.1</a> .</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh_v2ngKG7RJwBOwKDRMxt_Fg2WzyMnPllPeAwjjgxxVcuoRLsM9O04AmiAfgfhOY6jubHqkpwGJKuLg5b1CsKoIXoikEF7d886KxJNnfPSjKGb4N4CCEJZ8kNaEjtEpFFRfCstmFDgDUdDsmk1p2e5e8qC2eYFTR-IG5yZPwOOroNlL_8DRxUW9NYfdps" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="638" data-original-width="776" height="526" src="https://blogger.googleusercontent.com/img/a/AVvXsEh_v2ngKG7RJwBOwKDRMxt_Fg2WzyMnPllPeAwjjgxxVcuoRLsM9O04AmiAfgfhOY6jubHqkpwGJKuLg5b1CsKoIXoikEF7d886KxJNnfPSjKGb4N4CCEJZ8kNaEjtEpFFRfCstmFDgDUdDsmk1p2e5e8qC2eYFTR-IG5yZPwOOroNlL_8DRxUW9NYfdps=w640-h526" width="640" /></a></div><br /><br /><p></p><p></p>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-23921456058714421812024-01-24T22:30:00.000-08:002024-01-24T22:30:11.801-08:00datasette-haversine-point-to-path<p> I got to play around with <a href="https://copaseticflow.blogspot.com/2024/01/sphere-test.html">spherical trig</a> last week under the guise of improving the accuracy of the model that KO6BTY's and my <a href="https://copaseticflow.blogspot.com/2023/10/f2-skip-maps-project-toucans-side.html">F2 skip maps</a> utilize. </p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjqvLXAfD2mVtKSNR0LveKBQFneS50qq4_W_9z_TTPKjLX919ShD1EU3rsG9EHdbcwrf6BaqYkXIwCZsnlVdYddLQAKwtIsjeaLR5MMBUjzi0H9hlxgvFOgmZC3TgrhxT-0sdXQxzEwdLZ28Or9GUrUwOzNgVBjlge07-yDIrtVHZShM87aj-7JoBiW8t4" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="843" data-original-width="1176" height="458" src="https://blogger.googleusercontent.com/img/a/AVvXsEjqvLXAfD2mVtKSNR0LveKBQFneS50qq4_W_9z_TTPKjLX919ShD1EU3rsG9EHdbcwrf6BaqYkXIwCZsnlVdYddLQAKwtIsjeaLR5MMBUjzi0H9hlxgvFOgmZC3TgrhxT-0sdXQxzEwdLZ28Or9GUrUwOzNgVBjlge07-yDIrtVHZShM87aj-7JoBiW8t4=w640-h458" width="640" /></a></div><br />Today, I took the first steps towards formalizing the algorithm I modeled into a datasette plugin so we can use our kml plugin to create skip maps (I'll probably also add a configuration flag to turn skip mapping on and off.) Using <a href="https://github.com/simonw/datasette-haversine">datasette-haversine</a> as a model, I created <a href="https://github.com/hcarter333/datasette-haversine-point-path">datasette-haversine-point-path</a>. The new plugin allows users to specify three lat/lng pairs that define the enpoints of a QSO and the location of an ionosonde. Given this information, the newly defined sqlite method will return the shortest distance between the ionosonde and the QSO's propagation path along the Earth. (I still need to add the special case where the shortest distance to the path is in fact between the ionosonde and one of the endpoints. I'll talk about this in my next post.)<p></p><p>I re-puprosed the <a href="https://github.com/simonw/datasette-haversine/blob/3b045775c30fd191f92cf358988580b948d9f081/tests/test_haversine.py">test case</a> from datasette-haversine as well. This new <a href="https://github.com/hcarter333/datasette-haversine-point-path/blob/main/tests/test_haversine_point_path.py">test case</a> made for really easy, really systematic <a href="https://github.com/hcarter333/datasette-haversine-point-path/issues?q=is%3Aissue+is%3Aclosed">debugging</a> as unit test cases almost always do. Just a little more work to do on this one!</p><p><br /></p><p></p>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-44697480947687914152024-01-22T04:22:00.000-08:002024-01-29T19:07:18.438-08:00Weeknotes: Stabilizing the PicoW Autokeyer; Ionosonde Distance to a QSO Path; Starting Google Visualization Conversions<script src="https://sagecell.sagemath.org/static/embedded_sagecell.js"></script>
<script>sagecell.makeSagecell({"inputLocation": '#intersectiondemo',
template: sagecell.templates.minimal,
evalButtonText: 'Activate'});</script>
<p> The gang, (12 year-old Diaze aka KO6BTY, 11 year-old Mota, and 8 year-old Tawnse), and I did things with vector cross products, operated Raspberry Pis in the face of radio frequency interference (RFI) and started to update the ham radio exams Javascript charting package calls this week.</p><h4 style="text-align: left;">Ionosphere and Cross Products</h4><div>KO6BTY and I put together kml files that show the approximated F2 skip of a QSO last year. The maps are very approximate because they only take the Pt Arguello ionosonde down the coast from us into consideration. To determine what other ionosondes to use data from, we needed to know how far each of the ionosondes was from the path between an arbitrary pair of QSO stations. In other words, we needed to work with spherical trigonometry. The first step was to figure out the algorithm. The solution was easy to find on StackOverflow, but it was hard to picture at first. I fixed that by getting back into using Sage for <a href="https://copaseticflow.blogspot.com/2024/01/sphere-test.html">demos</a>. The final step is shown below.</div>
<p></p>
<div id="intersectiondemo">
<script type="text/x-sage">
import numpy
import math
deg2rad = math.pi/180
rad2deg = 180/math.pi
def cartesian_x(f,l):
#f = latitude, l = longitude
return (math.cos(f*deg2rad)*math.cos(l*deg2rad))
def cartesian_y(f,l):
#f = latitude, l = longitude
return (math.cos(f*deg2rad)*math.sin(l*deg2rad))
def cartesian_z(f,l):
#f = latitude, l = longitude
return (math.sin(f*deg2rad))
def cross_x(x, y, z, i,j,k):
return ((y*k)-(z*j))
def cross_y(x, y, z, i,j,k):
return ((z*i)-(x*k))
def cross_z(x, y, z, i,j,k):
return ((x*j)-(y*i))
def spherical_lat(x,y,z):
r = math.sqrt(x*x + y*y)
#Omitting the special cases because points will always
#be separated for this application
return (math.atan2(z, r)*rad2deg) # return degrees
def spherical_lng(x,y,z):
#Omitting the special cases because points will always
#be separated for this application
return (math.atan2(y, x)*rad2deg) # return degrees
#lat, lng for tx
t_lat = 37.7248952200944
t_lng = -122.422936174405
#lat,lng for rx
r_lat = 51.9561076
r_lng = 5.2400448
#lat,lng for ionosonde
c_lat = 45.07
c_lng = -83.56
tx_x = cartesian_x(t_lat,t_lng)
tx_y = cartesian_y(t_lat,t_lng)
tx_z = cartesian_z(t_lat,t_lng)
rx_x = cartesian_x(r_lat,r_lng)
rx_y = cartesian_y(r_lat,r_lng)
rx_z = cartesian_z(r_lat,r_lng)
c_x = cartesian_x(c_lat,c_lng)
c_y = cartesian_y(c_lat,c_lng)
c_z = cartesian_z(c_lat,c_lng)
#The plane containing the path
g_x = cross_x(tx_x, tx_y, tx_z, rx_x, rx_y, rx_z)
g_y = cross_y(tx_x, tx_y, tx_z, rx_x, rx_y, rx_z)
g_z = cross_z(tx_x, tx_y, tx_z, rx_x, rx_y, rx_z)
#The plane containing the ionosonde and perpendicular to the path?
f_x = cross_x(c_x, c_y, c_z, g_x, g_y, g_z)
f_y = cross_y(c_x, c_y, c_z, g_x, g_y, g_z)
f_z = cross_z(c_x, c_y, c_z, g_x, g_y, g_z)
t_x = cross_x(g_x, g_y, g_z, f_x, f_y, f_z)
t_y = cross_y(g_x, g_y, g_z, f_x, f_y, f_z)
t_z = cross_z(g_x, g_y, g_z, f_x, f_y, f_z)
t_mag = math.sqrt(t_x**2 + t_y**2 + t_z**2)
tp_x = t_x/t_mag
tp_y = t_y/t_mag
tp_z = t_z/t_mag
earth = sphere(color='pink', center=(0,0,0), size=1, opacity=0.3)
intersectpoint = line3d(numpy.array([(0,0,0), (tx_x,tx_y,tx_z)]))+line3d(numpy.array([(0,0,0), (rx_x,rx_y,rx_z)]))+line3d(numpy.array([(0,0,0), (c_x,c_y,c_z)]), color='purple')+line3d(numpy.array([(0,0,0), (g_x,g_y,g_z)]), radius=0.01, color='green')+line3d(numpy.array([(0,0,0), (f_x,f_y,f_z)]), radius=0.01, color='red')+line3d(numpy.array([(0,0,0), (tp_x,tp_y,tp_z)]), radius=0.01, color='black')+polygon3d([[0,0,0], [tx_x,tx_y,tx_z], [rx_x,rx_y,rx_z]],color=(0,1,0), opacity=0.7)+polygon3d([[0,0,0], [c_x,c_y,c_z], [g_x,g_y,g_z]],color=(1,0,0), opacity=0.5)+polygon3d([[0,0,0], [g_x,g_y,g_z], [f_x,f_y,f_z]],color=(1,1,0), opacity=0.3)+earth
show(intersectpoint)
print("intersection of perpendicular path from ionosphere to QSO path: lat,lng: " + str(spherical_lat(tp_x,tp_y,tp_z)) + "," + str(spherical_lng(tp_x,tp_y,tp_z)))
</script></div>
<p></p>
<p><br /></p><h4 style="text-align: left;">Raspberry PI RFI</h4><div>KO6BTY and I built an auto-keyer for the her FT-840. It worked pretty well, but had RFI issues. Over the course of the week, we've isntalled a balun on her dipole, moved the keyer and the laptop that controls it, and shortened interconnect wires in the keyer. We're now able to key the transmitter on 10 meters at the rig's maximum power without the keyer rebooting.</div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgIimrs1nKLW99LIKlJnzbZi1hmAejQkJRMiFzR0eM_CBtBnPwQ4XBoatSuM9qNUnEuwh9rI2N1fO8BiGxQFxlvIh3OAXwOsFskzqN8RngE5_IFCBubRlwhRC9JWL5o5zuZ8kcQFlf5b1s5dlib-Xvu6aq8POis0uiw-MDuX7_K-bBilY3ae121OmcDUGo" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="813" data-original-width="610" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEgIimrs1nKLW99LIKlJnzbZi1hmAejQkJRMiFzR0eM_CBtBnPwQ4XBoatSuM9qNUnEuwh9rI2N1fO8BiGxQFxlvIh3OAXwOsFskzqN8RngE5_IFCBubRlwhRC9JWL5o5zuZ8kcQFlf5b1s5dlib-Xvu6aq8POis0uiw-MDuX7_K-bBilY3ae121OmcDUGo=w480-h640" width="480" /></a></div><br /><br /></div>
<h4 style="text-align: left;">Google Visualization Chart API Update</h4><div>The chart API we've been using for the ham radio exams <a href="https://github.com/hcarter333/ham-radio-freedom/issues/17">changed</a>. More than a decade ago as it turns out. I'm working out how to assign the necessary updates as worksheet sort of assignments for the gang. This is a big experiment because I am mostly un-enamored of the whole worksheet model. The gang's schedule, and mine are getting too busy to easily support the talk-it-through while doing it <a href="https://copaseticflow.blogspot.com/2018/03/division-distributing-work.html">model</a> of unschooling learning that we've had really good success with until now though.</div><div><br /></div><div><br /></div><h4 style="text-align: left;">Coming up:</h4><p>I'm starting to design a Datasette enabled version of the ham radio practice exams. It just makes sense. I used to widely distribute them as a Google App Engines deployment, but that's been a lot of work. Having something that's open-source and that just does the job for the gang and myself sounds pretty cush.</p><p><br /></p><p></p>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-16712629546987837972024-01-17T06:18:00.000-08:002024-01-18T05:15:52.891-08:00Calculating the Shortest Distance from an Ionosonde to a QSO Path Using Sage, Cross Products, and Geometry<script src="https://sagecell.sagemath.org/static/embedded_sagecell.js"></script>
<script>sagecell.makeSagecell({"inputLocation": '#graphdemo',
template: sagecell.templates.minimal,
evalButtonText: 'Activate'});</script>
<script>sagecell.makeSagecell({"inputLocation": '#planedemo',
template: sagecell.templates.minimal,
evalButtonText: 'Activate'});</script>
<script>sagecell.makeSagecell({"inputLocation": '#perpplanedemo',
template: sagecell.templates.minimal,
evalButtonText: 'Activate'});</script>
<script>sagecell.makeSagecell({"inputLocation": '#intersectiondemo',
template: sagecell.templates.minimal,
evalButtonText: 'Activate'});</script>
<p> I've run into an interesting math problem. Project TouCans occasionally makes dx contacts. That's not a problem, that's actually really awesome! However, KO6BTY and I would like to be able to map the <a href="https://copaseticflow.blogspot.com/2014/07/project-smoke-puff-haarp-chemtrails.html">F2 skips</a> our radio signal makes on its way to the receiving station. We have plenty of data about the F2 layer of the ionosphere that is captured by <a href="https://prop.kc2g.com/stations/">ionosondes</a> around the world. The issue is how do we determine which set of ionosonde data to use? Our first guess is that we should use the ionosonde closest to the path of the signal at any point. OK... Now, how do we determine that?</p><p>First, we'll calculate the shortest distance from each ionosonde to the path of the QSO between ham radio stations. Then, we can sort the distances so that we can only include the ionosondes that are closest to the path. Armed with that data, we can perhpas used the distances to calculate a weighted, estimated height of the F2 layer at any point along the signals path as it skips from station to station.</p><p>Here's an example of the first problem we're trying to solve, namely what's the shortest distance from a given Ionosonde to the path between the two amateur radio stations involved in the QSO?</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg6kWpN5t1rkRuQysm7zkpIViTwgIiduixx9taVhYFUb_F7C-WIW-6JCUuC4yfcrrJQIK836SoRyRjP1w3ilSa-NdiaiKD2EZyOOCyEnys6aUsuxiF3IbEWY43j3Asus_QtU3Yi9YFb2O6ElPqSVlPi8KK7i-pIXNbd7q-2mZesDChjCSR4M0S_q1cwELU" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="575" data-original-width="1132" height="326" src="https://blogger.googleusercontent.com/img/a/AVvXsEg6kWpN5t1rkRuQysm7zkpIViTwgIiduixx9taVhYFUb_F7C-WIW-6JCUuC4yfcrrJQIK836SoRyRjP1w3ilSa-NdiaiKD2EZyOOCyEnys6aUsuxiF3IbEWY43j3Asus_QtU3Yi9YFb2O6ElPqSVlPi8KK7i-pIXNbd7q-2mZesDChjCSR4M0S_q1cwELU=w640-h326" width="640" /></a></div><br />The yellow line is the path between our station and PG4I in the Netherlands. The red line is the perpendicular line from the <a href="https://lgdc.uml.edu/common/ShowIonogramPage?mid=54614013&ursiCode=AL945&time=2024.01.18%20(018)%2012:52:30.000">ionosonde</a> located in Alpena, Michigan to the path of our signal, (that's the shortest distance between the ionosonde and the signal path.)<p></p><p>But, how do we find the distance along the red line? That problem was handled and explained quite handily <a href="https://stackoverflow.com/questions/1299567/how-to-calculate-distance-from-a-point-to-a-line-segment-on-a-sphere">here</a>, but I wanted to see the geometry, so we're going to model it using <a href="https://cocalc.com/share/public_paths/b777ec4557ea5627034212b01dc2efb9caa9c68b">Sage</a> cells on this page. To see the graphical demonstration of each step, click the 'Activate' buttons.</p>
First, let's draw the two station locatiosn and the ionosonde location. Each location is denoted by a vector that extends from the origin (x=0, y=0, z=0) out to the point.
<div id="graphdemo">
<script type="text/x-sage">
import numpy
import math
deg2rad = math.pi/180
rad2deg = 180/math.pi
def cartesian_x(f,l):
#f = latitude, l = longitude
return (math.cos(f*deg2rad)*math.cos(l*deg2rad))
def cartesian_y(f,l):
#f = latitude, l = longitude
return (math.cos(f*deg2rad)*math.sin(l*deg2rad))
def cartesian_z(f,l):
#f = latitude, l = longitude
return (math.sin(f*deg2rad))
def cross_x(x, y, z, i,j,k):
return ((y*k)-(z*j))
def cross_y(x, y, z, i,j,k):
return ((z*i)-(x*k))
def cross_z(x, y, z, i,j,k):
return ((x*j)-(y*i))
def spherical_lat(x,y,z):
r = math.sqrt(x*x + y*y)
#Omitting the special cases because points will always
#be separated for this application
return (math.atan2(z, r)*rad2deg) # return degrees
def spherical_lng(x,y,z):
#Omitting the special cases because points will always
#be separated for this application
return (math.atan2(y, x)*rad2deg) # return degrees
#lat, lng for tx
t_lat = 37.7248952200944
t_lng = -122.422936174405
#lat,lng for rx
r_lat = 51.9561076
r_lng = 5.2400448
#lat,lng for ionosonde
c_lat = 45.07
c_lng = -83.56
tx_x = cartesian_x(t_lat,t_lng)
tx_y = cartesian_y(t_lat,t_lng)
tx_z = cartesian_z(t_lat,t_lng)
rx_x = cartesian_x(r_lat,r_lng)
rx_y = cartesian_y(r_lat,r_lng)
rx_z = cartesian_z(r_lat,r_lng)
c_x = cartesian_x(c_lat,c_lng)
c_y = cartesian_y(c_lat,c_lng)
c_z = cartesian_z(c_lat,c_lng)
#The plane containing the path
g_x = cross_x(tx_x, tx_y, tx_z, rx_x, rx_y, rx_z)
g_y = cross_y(tx_x, tx_y, tx_z, rx_x, rx_y, rx_z)
g_z = cross_z(tx_x, tx_y, tx_z, rx_x, rx_y, rx_z)
#The plane containing the ionosonde and perpendicular to the path?
f_x = cross_x(c_x, c_y, c_z, g_x, g_y, g_z)
f_y = cross_y(c_x, c_y, c_z, g_x, g_y, g_z)
f_z = cross_z(c_x, c_y, c_z, g_x, g_y, g_z)
t_x = cross_x(g_x, g_y, g_z, f_x, f_y, f_z)
t_y = cross_y(g_x, g_y, g_z, f_x, f_y, f_z)
t_z = cross_z(g_x, g_y, g_z, f_x, f_y, f_z)
t_mag = math.sqrt(t_x**2 + t_y**2 + t_z**2)
tp_x = t_x/t_mag
tp_y = t_y/t_mag
tp_z = t_z/t_mag
earth = sphere(color='pink', center=(0,0,0), size=1, opacity=0.4)
print("stations and ionosonde")
testgraph = line3d(numpy.array([(0,0,0), (tx_x,tx_y,tx_z)]))+line3d(numpy.array([(0,0,0), (rx_x,rx_y,rx_z)]))+line3d(numpy.array([(0,0,0), (c_x,c_y,c_z)]),color='purple')+earth
show(testgraph)
</script></div>
Taking the cross product of the vectors that point from the center of the Earth to the two radio staions defines a plane that contains both stations and the path between them.
<div id="planedemo">
<script type="text/x-sage">
import numpy
import math
deg2rad = math.pi/180
rad2deg = 180/math.pi
def cartesian_x(f,l):
#f = latitude, l = longitude
return (math.cos(f*deg2rad)*math.cos(l*deg2rad))
def cartesian_y(f,l):
#f = latitude, l = longitude
return (math.cos(f*deg2rad)*math.sin(l*deg2rad))
def cartesian_z(f,l):
#f = latitude, l = longitude
return (math.sin(f*deg2rad))
def cross_x(x, y, z, i,j,k):
return ((y*k)-(z*j))
def cross_y(x, y, z, i,j,k):
return ((z*i)-(x*k))
def cross_z(x, y, z, i,j,k):
return ((x*j)-(y*i))
def spherical_lat(x,y,z):
r = math.sqrt(x*x + y*y)
#Omitting the special cases because points will always
#be separated for this application
return (math.atan2(z, r)*rad2deg) # return degrees
def spherical_lng(x,y,z):
#Omitting the special cases because points will always
#be separated for this application
return (math.atan2(y, x)*rad2deg) # return degrees
#lat, lng for tx
t_lat = 37.7248952200944
t_lng = -122.422936174405
#lat,lng for rx
r_lat = 51.9561076
r_lng = 5.2400448
#lat,lng for ionosonde
c_lat = 45.07
c_lng = -83.56
tx_x = cartesian_x(t_lat,t_lng)
tx_y = cartesian_y(t_lat,t_lng)
tx_z = cartesian_z(t_lat,t_lng)
rx_x = cartesian_x(r_lat,r_lng)
rx_y = cartesian_y(r_lat,r_lng)
rx_z = cartesian_z(r_lat,r_lng)
c_x = cartesian_x(c_lat,c_lng)
c_y = cartesian_y(c_lat,c_lng)
c_z = cartesian_z(c_lat,c_lng)
#The plane containing the path
g_x = cross_x(tx_x, tx_y, tx_z, rx_x, rx_y, rx_z)
g_y = cross_y(tx_x, tx_y, tx_z, rx_x, rx_y, rx_z)
g_z = cross_z(tx_x, tx_y, tx_z, rx_x, rx_y, rx_z)
#The plane containing the ionosonde and perpendicular to the path?
f_x = cross_x(c_x, c_y, c_z, g_x, g_y, g_z)
f_y = cross_y(c_x, c_y, c_z, g_x, g_y, g_z)
f_z = cross_z(c_x, c_y, c_z, g_x, g_y, g_z)
t_x = cross_x(g_x, g_y, g_z, f_x, f_y, f_z)
t_y = cross_y(g_x, g_y, g_z, f_x, f_y, f_z)
t_z = cross_z(g_x, g_y, g_z, f_x, f_y, f_z)
t_mag = math.sqrt(t_x**2 + t_y**2 + t_z**2)
tp_x = t_x/t_mag
tp_y = t_y/t_mag
tp_z = t_z/t_mag
earth = sphere(color='pink', center=(0,0,0), size=1, opacity=0.3)
stationplane = line3d(numpy.array([(0,0,0), (tx_x,tx_y,tx_z)]))+line3d(numpy.array([(0,0,0), (rx_x,rx_y,rx_z)]))+line3d(numpy.array([(0,0,0), (c_x,c_y,c_z)]), color='purple')+line3d(numpy.array([(0,0,0), (g_x,g_y,g_z)]), radius=0.01, color='green')+polygon3d([[0,0,0], [tx_x,tx_y,tx_z], [rx_x,rx_y,rx_z]],color=(0,1,0), opacity=0.7)+earth
show(stationplane)
</script></div>
<p></p>
The vector result of the cross product is shown a thicker green vector. We're going to use it again in just a moment. You might remember from geometry class that a line perpindicular to a plane defines a family of planes that will all be perpendicular to that original plane. Let's use that to find the perpendicular path from the ionosonde to the path between the radio stations. If we take a cross product of the green cross product vector we just calculated, (remember, it's perpendicular to the plane that contains the two radio stations and the path between them), and the vector to the ionosonde, we'll get back a vector that defines a plane parallel to and the green cross product vector, (and therefore perpendicular to the plane between the stations), and the ionosonde's position vector.
<div id="perpplanedemo">
<script type="text/x-sage">
import numpy
import math
deg2rad = math.pi/180
rad2deg = 180/math.pi
def cartesian_x(f,l):
#f = latitude, l = longitude
return (math.cos(f*deg2rad)*math.cos(l*deg2rad))
def cartesian_y(f,l):
#f = latitude, l = longitude
return (math.cos(f*deg2rad)*math.sin(l*deg2rad))
def cartesian_z(f,l):
#f = latitude, l = longitude
return (math.sin(f*deg2rad))
def cross_x(x, y, z, i,j,k):
return ((y*k)-(z*j))
def cross_y(x, y, z, i,j,k):
return ((z*i)-(x*k))
def cross_z(x, y, z, i,j,k):
return ((x*j)-(y*i))
def spherical_lat(x,y,z):
r = math.sqrt(x*x + y*y)
#Omitting the special cases because points will always
#be separated for this application
return (math.atan2(z, r)*rad2deg) # return degrees
def spherical_lng(x,y,z):
#Omitting the special cases because points will always
#be separated for this application
return (math.atan2(y, x)*rad2deg) # return degrees
#lat, lng for tx
t_lat = 37.7248952200944
t_lng = -122.422936174405
#lat,lng for rx
r_lat = 51.9561076
r_lng = 5.2400448
#lat,lng for ionosonde
c_lat = 45.07
c_lng = -83.56
tx_x = cartesian_x(t_lat,t_lng)
tx_y = cartesian_y(t_lat,t_lng)
tx_z = cartesian_z(t_lat,t_lng)
rx_x = cartesian_x(r_lat,r_lng)
rx_y = cartesian_y(r_lat,r_lng)
rx_z = cartesian_z(r_lat,r_lng)
c_x = cartesian_x(c_lat,c_lng)
c_y = cartesian_y(c_lat,c_lng)
c_z = cartesian_z(c_lat,c_lng)
#The plane containing the path
g_x = cross_x(tx_x, tx_y, tx_z, rx_x, rx_y, rx_z)
g_y = cross_y(tx_x, tx_y, tx_z, rx_x, rx_y, rx_z)
g_z = cross_z(tx_x, tx_y, tx_z, rx_x, rx_y, rx_z)
#The plane containing the ionosonde and perpendicular to the path?
f_x = cross_x(c_x, c_y, c_z, g_x, g_y, g_z)
f_y = cross_y(c_x, c_y, c_z, g_x, g_y, g_z)
f_z = cross_z(c_x, c_y, c_z, g_x, g_y, g_z)
t_x = cross_x(g_x, g_y, g_z, f_x, f_y, f_z)
t_y = cross_y(g_x, g_y, g_z, f_x, f_y, f_z)
t_z = cross_z(g_x, g_y, g_z, f_x, f_y, f_z)
t_mag = math.sqrt(t_x**2 + t_y**2 + t_z**2)
tp_x = t_x/t_mag
tp_y = t_y/t_mag
tp_z = t_z/t_mag
earth = sphere(color='pink', center=(0,0,0), size=1, opacity=0.3)
ionosondeplane = line3d(numpy.array([(0,0,0), (tx_x,tx_y,tx_z)]))+line3d(numpy.array([(0,0,0), (rx_x,rx_y,rx_z)]))+line3d(numpy.array([(0,0,0), (c_x,c_y,c_z)]), color='purple')+line3d(numpy.array([(0,0,0), (g_x,g_y,g_z)]), radius=0.01, color='green')+line3d(numpy.array([(0,0,0), (f_x,f_y,f_z)]), radius=0.01, color='red')+polygon3d([[0,0,0], [tx_x,tx_y,tx_z], [rx_x,rx_y,rx_z]],color=(0,1,0), opacity=0.7)+polygon3d([[0,0,0], [c_x,c_y,c_z], [g_x,g_y,g_z]],color=(1,0,0), opacity=0.5)+earth
show(ionosondeplane)
</script></div>
<p></p>
With the above result, you can see that a path from the ionosonde along the plane defined by the cross product in the last step is in fact a perpendicular line from the ionosonde to the path between the QSO stations. The only remaining issue is that even though we can see the point where the intersection occurs, we don't know where it is. We don't have a numeric latitude and longitude. One more cross product will provide the answer. If we take the cross product of the two vectors produced in the last two steps, we'll get a vector that has to be perpendicular to both of the original vectors. Since those vectors are perpendicular to the two planes they defined, the only place the result of the new cross product can exist is along the intersection of the two perpendicular planes! Here's what that looks like:<p></p>
<div id="intersectiondemo">
<script type="text/x-sage">
import numpy
import math
deg2rad = math.pi/180
rad2deg = 180/math.pi
def cartesian_x(f,l):
#f = latitude, l = longitude
return (math.cos(f*deg2rad)*math.cos(l*deg2rad))
def cartesian_y(f,l):
#f = latitude, l = longitude
return (math.cos(f*deg2rad)*math.sin(l*deg2rad))
def cartesian_z(f,l):
#f = latitude, l = longitude
return (math.sin(f*deg2rad))
def cross_x(x, y, z, i,j,k):
return ((y*k)-(z*j))
def cross_y(x, y, z, i,j,k):
return ((z*i)-(x*k))
def cross_z(x, y, z, i,j,k):
return ((x*j)-(y*i))
def spherical_lat(x,y,z):
r = math.sqrt(x*x + y*y)
#Omitting the special cases because points will always
#be separated for this application
return (math.atan2(z, r)*rad2deg) # return degrees
def spherical_lng(x,y,z):
#Omitting the special cases because points will always
#be separated for this application
return (math.atan2(y, x)*rad2deg) # return degrees
#lat, lng for tx
t_lat = 37.7248952200944
t_lng = -122.422936174405
#lat,lng for rx
r_lat = 51.9561076
r_lng = 5.2400448
#lat,lng for ionosonde
c_lat = 45.07
c_lng = -83.56
tx_x = cartesian_x(t_lat,t_lng)
tx_y = cartesian_y(t_lat,t_lng)
tx_z = cartesian_z(t_lat,t_lng)
rx_x = cartesian_x(r_lat,r_lng)
rx_y = cartesian_y(r_lat,r_lng)
rx_z = cartesian_z(r_lat,r_lng)
c_x = cartesian_x(c_lat,c_lng)
c_y = cartesian_y(c_lat,c_lng)
c_z = cartesian_z(c_lat,c_lng)
#The plane containing the path
g_x = cross_x(tx_x, tx_y, tx_z, rx_x, rx_y, rx_z)
g_y = cross_y(tx_x, tx_y, tx_z, rx_x, rx_y, rx_z)
g_z = cross_z(tx_x, tx_y, tx_z, rx_x, rx_y, rx_z)
#The plane containing the ionosonde and perpendicular to the path?
f_x = cross_x(c_x, c_y, c_z, g_x, g_y, g_z)
f_y = cross_y(c_x, c_y, c_z, g_x, g_y, g_z)
f_z = cross_z(c_x, c_y, c_z, g_x, g_y, g_z)
t_x = cross_x(g_x, g_y, g_z, f_x, f_y, f_z)
t_y = cross_y(g_x, g_y, g_z, f_x, f_y, f_z)
t_z = cross_z(g_x, g_y, g_z, f_x, f_y, f_z)
t_mag = math.sqrt(t_x**2 + t_y**2 + t_z**2)
tp_x = t_x/t_mag
tp_y = t_y/t_mag
tp_z = t_z/t_mag
earth = sphere(color='pink', center=(0,0,0), size=1, opacity=0.3)
intersectpoint = line3d(numpy.array([(0,0,0), (tx_x,tx_y,tx_z)]))+line3d(numpy.array([(0,0,0), (rx_x,rx_y,rx_z)]))+line3d(numpy.array([(0,0,0), (c_x,c_y,c_z)]), color='purple')+line3d(numpy.array([(0,0,0), (g_x,g_y,g_z)]), radius=0.01, color='green')+line3d(numpy.array([(0,0,0), (f_x,f_y,f_z)]), radius=0.01, color='red')+line3d(numpy.array([(0,0,0), (tp_x,tp_y,tp_z)]), radius=0.01, color='black')+polygon3d([[0,0,0], [tx_x,tx_y,tx_z], [rx_x,rx_y,rx_z]],color=(0,1,0), opacity=0.7)+polygon3d([[0,0,0], [c_x,c_y,c_z], [g_x,g_y,g_z]],color=(1,0,0), opacity=0.5)+polygon3d([[0,0,0], [g_x,g_y,g_z], [f_x,f_y,f_z]],color=(1,1,0), opacity=0.3)+earth
show(intersectpoint)
print("intersection of perpendicular path from ionosphere to QSO path: lat,lng: " + str(spherical_lat(tp_x,tp_y,tp_z)) + "," + str(spherical_lng(tp_x,tp_y,tp_z)))
</script></div>
<p></p>
I've taken the liberty of converting the Cartesian coordinates back to Earth based spherical coordinates. From that point, it's a simple matter to use the <a href="https://copaseticflow.blogspot.com/2024/01/things-i-learned-datasette-haversine.html">haversine</a> plugin in <a href="https://datasette.io/plugins/datasette-haversine">Datasette</a> to determine the distance from the Ionosonde to the path of the QSO. If you're curious about the code that created these demonstrations, I've stashed it away at the <a href="https://github.com/hcarter333/rm-rbn-history/blob/5f2bb42441e66a4bbdd60e1112f9f2a070c5d574/ionosond_dist.py">repo</a> for the ham radio and Reverse Beacon Netowrk logger KO6BTY and I have been working on.
antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0tag:blogger.com,1999:blog-2269351477810212131.post-79388196323669241822024-01-10T16:41:00.000-08:002024-01-10T19:52:31.816-08:00The KD0FNR KO6BTY Auto Keyer From a PicoW<p> We built a keyer!</p><p>KO6BTY was gifted a FT-840 by the family of a silent key over the holidays. (It was very, very nice of them. Thank you all!)</p><p>She also received a straight key kit from <a href="https://www.qrpme.com/">W1REX</a>. (Thanks Rex!)</p><p>Daize—as she's kown in these pages—quickly constructed her key; she and I added a 10 meter dipole to our <u>now</u> growing antenna farm; and the kid was up and transmitting CW on 10 meters with her technician class license! Also! She's a new <a href="https://www.skccgroup.com/">SKCC</a> member!</p><p>Here's the thing though. Neither one of us is good enough with a straight key—she's better than I am to be frank—to convince the Reverse Beacon Network that our callsign is actually decipherable. So, to make sure our signal was getting out and to help people spot us for event lke SKCC's SKM.</p><p>Project TouCans has a memory keyer in the Rockmite that works quite admirably for just this sort of thing, but now so much the venerable FT-840.</p><p>That's ok though. We built our own <a href="blob">autokeyer</a>! Here it is in all it's early-prototype glory.</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVZRtGElxYjkFXAEjxYfInqRb0D_H4Outv8mp-SRYfgZNTUpRXrrNIbcEMc18ktlcc3YD0JWd5VWQ9qjmWzlZY-lIx-QOvzP_twQBJuznST399xNFyqspmx6VsEhL53uCbn5TYj-OWvhUMJBSrccYpD_Nfqy57RmKuZCSD77wYo76A1PGEw5yJxLtzGkI/s4032/PXL_20240109_171940299.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVZRtGElxYjkFXAEjxYfInqRb0D_H4Outv8mp-SRYfgZNTUpRXrrNIbcEMc18ktlcc3YD0JWd5VWQ9qjmWzlZY-lIx-QOvzP_twQBJuznST399xNFyqspmx6VsEhL53uCbn5TYj-OWvhUMJBSrccYpD_Nfqy57RmKuZCSD77wYo76A1PGEw5yJxLtzGkI/w480-h640/PXL_20240109_171940299.jpg" width="480" /></a></div><br /><div class="separator" style="clear: both; text-align: center;">Just in case you were wondering... Yes, yes I was trying to use that C-clamp as an inductor and most of the rest of this post will in fact be about RFI</div><br /><p></p><p>The 12, 11, and 8 year old gang have been working at teaching themselves Python using a Pico W and a set of <a href="https://www.youtube.com/watch?v=_fCQueN7ErE&t=715s">videos</a> on YouTube. One of the video lessons detailed how to blink an LED with the Morse Code for whatever had been input at its prompt. Voila! That was the codebase for the keyer.</p><p>Coding was the easy part as it tunred out. We had to figure out how to change the words per minute (WPM) <a href="https://docs.google.com/spreadsheets/d/1GGoX7-gphE-8OH0eHKi2RE_MIp1khLehaVxtopysZhw/edit?usp=sharing">speed</a> of the code, and then we were off and running.</p><p>Building the hardware wasn't too daunting either. Once again, we had a <a href="https://youtu.be/eMCdo2bSzos?si=DXUc5TGzejmafuu0&t=2336">video</a> to work from and I'd already purchased a package of very cheap relays from Amazon.</p><p>What KO6BTY and I weren't counting on—and we really should have—was <a href="https://github.com/hcarter333/pico-w-mem-keyer/issues/1">RFI</a>. We struggled quite a bit with the issue. Our relays were not setup in anyway shape or fashion for RFI and our rig—as usual—wasn't grounded (I mean, come on, it's in a 2nd floor kitchen; even if we grounded it, it wouldn't be grounded.) The first problem was that the RFI eminating from the rig's case reset the USB connection from the Chromebook to the Pico W. it was easily solved by moving the Pico W a few feet away. The next issue was that the RFI actually made the relays stick in the key down position. Talk about a positive feedback loop!</p><p>We tried adding a second relay in series with the first one to provide more isolation. It didn't work, while the first relay no longer stuck, the second one did. We tried adding 8 mH of inductance to one of the key leads. That did buy us usage of the rig up to 22 Watts. Beyond that, though we were back to RFI induced autokeyer silence. I tried cutting one of the fancy optoisolated relay boards in half so that we only had a relay in the second stage. That made things worse.</p><p>Then, this morning, we finally hit on the solution and it was a typical Project TouCans solve. When I lay both hands on the FT-840's case, I create enough of a capacitive coupling to shunt the RFI in sufficient quantities away from the keyer and we can use up to a hundred Watts of transmit power!</p><p>After that, well, yes we did turn up on the RBN</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW2gjyNM26KhhRhx-NNUe_CyYl5HsJEoiuBddUBBcqs0VA55KfydG-S3GuKks3LMrmWopgOwCSSY3u9p4IImXb0Ee5v2SJWcmSTtjgPUgiTgddzT50vNcXB_V8VwPlvk4HY1b458sYhmklpmQXcMXZ88shTaIQ1DrWKIGw9My1kdE9atJtavHugB2HNXQ/s376/rbn_10m.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="282" data-original-width="376" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW2gjyNM26KhhRhx-NNUe_CyYl5HsJEoiuBddUBBcqs0VA55KfydG-S3GuKks3LMrmWopgOwCSSY3u9p4IImXb0Ee5v2SJWcmSTtjgPUgiTgddzT50vNcXB_V8VwPlvk4HY1b458sYhmklpmQXcMXZ88shTaIQ1DrWKIGw9My1kdE9atJtavHugB2HNXQ/w640-h480/rbn_10m.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div>And even (although it's SKM so I didn't use the autokeyer) made a few QSOs!<br /><br /><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-st74qPaFvuSlCeuO0CElsrwCGlxYnuNSdoYFBY0qUB7gj5ZhthqQ4NuYkC63WKrJKzFMnlyOxPNn2Rf08BjHoDEidNK8sz1XTY5CYBXcgoLoUvvIX9hDxT8IEJS2eh51JrjPnGPMrEaY5PdCAFw8UeWYpyjJ5w-0YeuWqPT2Xzi54jQJwU-zzi-JLB4/s1184/autokey.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="486" data-original-width="1184" height="262" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-st74qPaFvuSlCeuO0CElsrwCGlxYnuNSdoYFBY0qUB7gj5ZhthqQ4NuYkC63WKrJKzFMnlyOxPNn2Rf08BjHoDEidNK8sz1XTY5CYBXcgoLoUvvIX9hDxT8IEJS2eh51JrjPnGPMrEaY5PdCAFw8UeWYpyjJ5w-0YeuWqPT2Xzi54jQJwU-zzi-JLB4/w640-h262/autokey.png" width="640" /></a></div><br /><p>Pssstttt, also, one of the QSOs to Texas and the QSO to West Virginia were QRP on 20 meters.</p><p><br /></p><p></p>antigrav_kids KD0FNRhttp://www.blogger.com/profile/08273077706643157078noreply@blogger.com0