{"id":1033,"date":"2022-10-24T12:13:30","date_gmt":"2022-10-24T03:13:30","guid":{"rendered":"https:\/\/rfsec.ddns.net\/db\/?p=1033"},"modified":"2022-10-24T16:35:53","modified_gmt":"2022-10-24T07:35:53","slug":"adsb%e3%81%ae%e9%9b%bb%e6%b3%a2%e3%82%92%e5%8f%97%e4%bf%a1%e3%81%97%e3%80%81%e8%88%aa%e7%a9%ba%e6%a9%9f%e3%81%ae%e7%94%bb%e5%83%8f%e3%82%92%e6%92%ae%e5%bd%b1","status":"publish","type":"post","link":"https:\/\/rfsec.ddns.net\/db\/?p=1033","title":{"rendered":"ADSB\u306e\u96fb\u6ce2\u3092\u53d7\u4fe1\u3057\u3001\u822a\u7a7a\u6a5f\u306e\u753b\u50cf\u3092\u64ae\u5f71"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<p><strong>\u5229\u7528\u30bd\u30d5\u30c8<\/strong>\uff1a<a href=\"https:\/\/github.com\/adsbxchange\/dump1090-fa\">dump1090-fa<\/a>\u3068<a href=\"https:\/\/nachoplus.github.io\/pysynscan\/\">pysynscan<\/a>\u3000\uff0b\u3000\u81ea\u4f5c\u306epython\u30b9\u30af\u30ea\u30d7\u30c8<\/p>\n\n\n\n<p><strong>ADSB\u53d7\u4fe1\u7528SDR<\/strong>:<a href=\"https:\/\/www.rtl-sdr.com\/buy-rtl-sdr-dvb-t-dongles\/\">RTL-SDR RTL2832U<\/a><\/p>\n\n\n\n<p><strong>\u30ab\u30e1\u30e9\u5236\u5fa1\u7528\u7d4c\u7def\u53f0<\/strong>\uff1a<a href=\"https:\/\/www.skywatcher.jp\/product\/equatorial_pedestal\/az-gti_mount.html\"> SkyWatcher\u306eAz-GTi<\/a><\/p>\n\n\n\n<p><strong>\u30ab\u30e1\u30e9\uff1a<\/strong>ASI1600MC-COOL\u3000\uff0b\u3000\u30ab\u30e1\u30e9\u7528\u30ec\u30f3\u30ba<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2022\/10\/PXL_20221024_030544533-1024x772.jpg\" alt=\"\" class=\"wp-image-1034\" width=\"265\" height=\"199\" srcset=\"https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2022\/10\/PXL_20221024_030544533-1024x772.jpg 1024w, https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2022\/10\/PXL_20221024_030544533-300x226.jpg 300w, https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2022\/10\/PXL_20221024_030544533-768x579.jpg 768w, https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2022\/10\/PXL_20221024_030544533-1536x1159.jpg 1536w, https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2022\/10\/PXL_20221024_030544533-2048x1545.jpg 2048w, https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2022\/10\/PXL_20221024_030544533-624x471.jpg 624w\" sizes=\"auto, (max-width: 265px) 100vw, 265px\" \/><\/figure>\n\n\n\n<p><strong>\u64ae\u5f71\u753b\u50cf\u4f8b<\/strong>\uff1a\u8ddd\u96e2\u3000\uff11\uff10\uff10\uff10\uff10\uff4d\u7a0b\u5ea6<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2022\/10\/Capture_00006.png\" alt=\"\" class=\"wp-image-1035\" width=\"275\" height=\"169\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1760\" style=\"aspect-ratio: 2328 \/ 1760;\" width=\"2328\" controls src=\"https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2022\/10\/output.mp4\"><\/video><\/figure>\n\n\n\n<p>\u304a\u307e\u3051<\/p>\n\n\n\n<p><strong>\u30b9\u30de\u30db\u3067\u822a\u7a7a\u6a5f\u3092\u64ae\u5f71<\/strong>\uff1a\u8ddd\u96e2\uff15\uff10\uff10\uff4d\u7a0b\u5ea6\uff1f\uff1f<\/p>\n\n\n\n<p>\u64ae\u5f71\u5834\u6240\u3001\u6642\u523b\u3001\u65b9\u5411\uff1a\u30b9\u30de\u30db\u306eGPS\u60c5\u5831\u3001\u52a0\u901f\u5ea6\u30bb\u30f3\u30b5\u30fc\u7b49\u304b\u3089\u53d6\u5f97<\/p>\n\n\n\n<p>\u30a2\u30e1\u30c0\u30b9\u306f\uff1a\u964d\u6c34\u91cf\u3092\u89b3\u6e2c\u3059\u308b\u89b3\u6e2c\u6240\u306f\u5168\u56fd\u306b\u7d041,300\u304b\u6240<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2022\/10\/PXL_20221024_062425721-576x1024.jpg\" alt=\"\" class=\"wp-image-1042\" width=\"339\" height=\"602\" srcset=\"https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2022\/10\/PXL_20221024_062425721-576x1024.jpg 576w, https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2022\/10\/PXL_20221024_062425721-169x300.jpg 169w, https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2022\/10\/PXL_20221024_062425721-768x1365.jpg 768w, https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2022\/10\/PXL_20221024_062425721-864x1536.jpg 864w, https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2022\/10\/PXL_20221024_062425721-1152x2048.jpg 1152w, https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2022\/10\/PXL_20221024_062425721-624x1109.jpg 624w, https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2022\/10\/PXL_20221024_062425721-scaled.jpg 1440w\" sizes=\"auto, (max-width: 339px) 100vw, 339px\" \/><\/figure>\n\n\n\n<p><strong>\u554f\u984c\u70b9\uff1a<\/strong><\/p>\n\n\n\n<p>(1)\u7d4c\u7def\u53f0\u306e\u56de\u8ee2\u901f\u5ea6\u304c\u6bd4\u8f03\u7684\u9045\u3044\u306e\u3067\u3001\u30ab\u30e1\u30e9\u306e\u6307\u5411\u304c\u9593\u306b\u5408\u308f\u306a\u3044\u3053\u3068\u304c\u3042\u308b\u3002<\/p>\n\n\n\n<p>(2)\u822a\u7a7a\u6a5f\u307e\u3067\u306e\u8ddd\u96e2\u304c\u9060\u3044\u3053\u3068\u304c\u591a\u304f\u3001200mm\u7a0b\u5ea6\u306e\u671b\u9060\u30ec\u30f3\u30ba\u3067\u306f\u3001\u753b\u50cf\u304b\u3089\u6a5f\u7a2e\u306e\u5224\u5225\u306f\u56f0\u96e3<\/p>\n\n\n\n<p><strong>STEP1<\/strong>:ADSB\u306e\u96fb\u6ce2\u3092\u53d7\u4fe1\u3057\u3001\u822a\u7a7a\u6a5f\u306eICAO\u30b3\u30fc\u30c9\u3068\u4f4d\u7f6e\uff08\u7def\u5ea6\u3001\u7d4c\u5ea6\u3001\u9ad8\u5ea6\uff09\u3092\u53d6\u5f97\u3002<\/p>\n\n\n\n<p><strong>STEP2<\/strong>:\u822a\u7a7a\u6a5f\u306e\u4f4d\u7f6e\uff08\u7def\u5ea6\u3001\u7d4c\u5ea6\u3001\u9ad8\u5ea6\uff09\u3068\u3001\u89b3\u6e2c\u5834\u6240\u306e\u7def\u5ea6\u3001\u7d4c\u5ea6\u304b\u3089\u822a\u7a7a\u6a5f\u304c\u898b\u3048\u308b\u65b9\u4f4d\u3068\u898b\u4e0a\u3052\u89d2\u5ea6\u3092\u8a08\u7b97\u3002<\/p>\n\n\n\n<p><strong>STEP3<\/strong>:\u7d4c\u7def\u53f0\u306e\u30e2\u30fc\u30bf\u3092\u3001\u822a\u7a7a\u6a5f\u306e\u65b9\u5411\u306b\u5411\u3051\u308b\u3002<\/p>\n\n\n\n<p><strong>STEP4<\/strong>:\u753b\u50cf\u3092\u64ae\u5f71<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code># -*- coding: utf-8 -*-\nfrom  math import *\nimport time,datetime\nimport os\nimport socket\nimport logging\nimport synscan\nfrom optparse import OptionParser\n\nPORT = 30003           # Running dump1090-fa\nhost = &#39;192.168.68.61&#39; #\nBUFFER_SIZE = 1024\n\nR_EARTH = 6378137\nRAD = 3.14159265 \/ 180\nLAT0,LON0=35.7973, 139.4462\n\nparser = OptionParser()\nparser.add_option(&quot;-r&quot;,&quot;--range&quot;,action=&quot;store&quot;,dest=&quot;MAX&quot;, default=0,type=&quot;int&quot;,help=&quot;Max range&quot;)\nparser.add_option(&quot;-t&quot;,&quot;--tilt&quot;,action=&quot;store&quot;,dest=&quot;TILT_MIN&quot;, default=1,type=&quot;float&quot;,help=&quot;Min tilt&quot;)\n(opts, args) = parser.parse_args()\nMAX=opts.MAX\nTILT_MIN=opts.TILT_MIN\n#MAX = 20000\nif MAX == 0:\n    TEST = True\n    pH,pT = 0,0\n    MAX = 50000\n    print(&quot;Test mode&quot;)\nelse:\n    TEST = False\n    smc=synscan.motors(udp_ip=&#39;192.168.68.200&#39;, udp_port=11880)\n    pH,pT = smc.axis_get_pos(1),smc.axis_get_pos(2)\n    print(&#39;Last PAN,TILT:&#39;,pH,pT)\n\nH_MIN ,T_MIN = 0.1, 0.1\n\ndef distance(lat1,lon1,lat2,lon2):\n    lat1,lat2 = lat1*RAD, lat2*RAD\n    lon1,lon2 = lon1*RAD, lon2*RAD\n    lat_c = (lat1 + lat2) \/ 2\n    try:\n       dx = R_EARTH*(lon2-lon1)*cos(lat_c)\n       dy = R_EARTH*(lat2-lat1)\n    except:\n        dx,dy = 100000, 100000\n        pass\n\n    return sqrt(dx*dx + dy*dy)\n\ndef azimuth(y1,x1,y2,x2):\n        x1=radians(x1)\n        y1=radians(y1)\n        x2=radians(x2)\n        y2=radians(y2)\n\n        deltax = x2 - x1\n        ans = degrees(atan2(sin(deltax),(cos(y1)*tan(y2)-sin(y1)*cos(deltax))))%360\n        return ans\n\nBuf = {}\ndBuf= {}\nT_MAX, L_MAX = 0.5,10\ndH, dT = 0, 0\nstart=time.time()\nTGT=None\nseq = 0\nwith socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:\n    s.connect((host, PORT))\n    while True:\n        str = s.recv(BUFFER_SIZE).decode()\n        if &#39;MSG,3&#39; in str:\n            t = str.split(&#39;,&#39;)\n            try:\n                ID, Lat, Lon, Alt = t[4],t[14],t[15],t[11]\n                LAT=float(Lat)\n                LON=float(Lon)\n                ALT=float(Alt)\n            except:\n                LAT, ALT = 0, 0\n                pass\n            if LAT&gt;0 and ALT&gt;0:\n                dist = round(distance(LAT0, LON0, LAT, LON),1)\n                if dist&lt;MAX:\n                    houi = round(azimuth(LAT0, LON0, LAT, LON),1) + 5 + dH\n                    tilt = round(degrees(atan(ALT*0.3048\/dist)),1) + 3 + dT\n                    Buf[ID] ={&#39;TIME&#39;:round(time.time(),0),&#39;DIST&#39;:dist,&#39;PAN&#39;:houi,&#39;TILT&#39;:tilt}\n                    dBuf[ID]=dist\n                else:\n                    pass\n            if time.time()-start &gt; T_MAX:\n                now = time.time()\n                start = time.time()\n                os.system(&#39;clear&#39;)\n\n                print(&#39;---&#39;,datetime.datetime.now(),&#39;---&#39;,&#39;ICAO:&#39;,TGT,&#39; PAN:&#39;,pH,&#39; TILT:&#39;,pT)\n                for k,v in list(Buf.items()):\n                    last = Buf[k][&#39;TIME&#39;]\n                    if now - last &gt; L_MAX:\n                        print(&#39;deleted..&#39;,k)\n                        del Buf[k]\n                        if k == TGT:\n                            TGT = None\n                print(&#39;TGT:&#39;,TGT)\n                for k,v in Buf.items():\n                    if (TGT is None) or (TGT not in Buf):\n                        TGT = k\n                        print(&#39;New target:&#39;,TGT)\n                        seq = 1\n                        dH, dT = 0,0\n                    print(k,v)\n        if TGT is not None and TGT in Buf:\n            houi, tilt = Buf[TGT][&#39;PAN&#39;], Buf[TGT][&#39;TILT&#39;]\n            #pH,pT = smc.axis_get_pos(1),smc.axis_get_pos(2)\n            dH, dT = round(pH - houi,1), round(pT - tilt,1)\n            if (abs(dH)&gt;H_MIN or abs(dT)&gt;T_MIN) and tilt&gt;TILT_MIN and (houi&lt;200 and tilt&lt;80):\n                pH, pT = houi, tilt\n                print(&#39;*&#39;,TGT, houi,&#39;(&#39;,dH,&#39;)&#39;, tilt,&#39;(&#39;,dT,&#39;)&#39;,&#39;SEQ:&#39;,seq)\n                seq = seq + 1\n                if not TEST :\n                    smc.goto(houi,tilt,syncronous=False)\n            else:\n                pass<\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u5229\u7528\u30bd\u30d5\u30c8\uff1adump1090-fa\u3068pysynscan\u3000\uff0b\u3000\u81ea\u4f5c\u306epython\u30b9\u30af\u30ea\u30d7\u30c8 ADSB\u53d7\u4fe1\u7528SDR:RTL-SDR RTL2832U \u30ab\u30e1\u30e9\u5236\u5fa1\u7528\u7d4c\u7def\u53f0\uff1a SkyWatcher\u306eAz-GTi \u30ab\u30e1\u30e9\uff1aASI1 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1033","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"featured_image_src":null,"author_info":{"display_name":"mars","author_link":"https:\/\/rfsec.ddns.net\/db\/?author=1"},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rfsec.ddns.net\/db\/index.php?rest_route=\/wp\/v2\/posts\/1033","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rfsec.ddns.net\/db\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rfsec.ddns.net\/db\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rfsec.ddns.net\/db\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rfsec.ddns.net\/db\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1033"}],"version-history":[{"count":4,"href":"https:\/\/rfsec.ddns.net\/db\/index.php?rest_route=\/wp\/v2\/posts\/1033\/revisions"}],"predecessor-version":[{"id":1044,"href":"https:\/\/rfsec.ddns.net\/db\/index.php?rest_route=\/wp\/v2\/posts\/1033\/revisions\/1044"}],"wp:attachment":[{"href":"https:\/\/rfsec.ddns.net\/db\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1033"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rfsec.ddns.net\/db\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1033"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rfsec.ddns.net\/db\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1033"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}