विषयसूची:

उड़ान मानचित्रण डेटा का उपयोग करते हुए प्रारंभिक चेतावनी रास्पबेरी पीआई रनवे लाइट: 14 कदम (चित्रों के साथ)
उड़ान मानचित्रण डेटा का उपयोग करते हुए प्रारंभिक चेतावनी रास्पबेरी पीआई रनवे लाइट: 14 कदम (चित्रों के साथ)

वीडियो: उड़ान मानचित्रण डेटा का उपयोग करते हुए प्रारंभिक चेतावनी रास्पबेरी पीआई रनवे लाइट: 14 कदम (चित्रों के साथ)

वीडियो: उड़ान मानचित्रण डेटा का उपयोग करते हुए प्रारंभिक चेतावनी रास्पबेरी पीआई रनवे लाइट: 14 कदम (चित्रों के साथ)
वीडियो: ट्रेजर आइलैंड- ऑडियोबुक 2024, जुलाई
Anonim
उड़ान मानचित्रण डेटा का उपयोग करते हुए प्रारंभिक चेतावनी रास्पबेरी पीआई रनवे लाइट
उड़ान मानचित्रण डेटा का उपयोग करते हुए प्रारंभिक चेतावनी रास्पबेरी पीआई रनवे लाइट
उड़ान मानचित्रण डेटा का उपयोग करते हुए प्रारंभिक चेतावनी रास्पबेरी पीआई रनवे लाइट
उड़ान मानचित्रण डेटा का उपयोग करते हुए प्रारंभिक चेतावनी रास्पबेरी पीआई रनवे लाइट
उड़ान मानचित्रण डेटा का उपयोग करते हुए प्रारंभिक चेतावनी रास्पबेरी पीआई रनवे लाइट
उड़ान मानचित्रण डेटा का उपयोग करते हुए प्रारंभिक चेतावनी रास्पबेरी पीआई रनवे लाइट
उड़ान मानचित्रण डेटा का उपयोग करते हुए प्रारंभिक चेतावनी रास्पबेरी पीआई रनवे लाइट
उड़ान मानचित्रण डेटा का उपयोग करते हुए प्रारंभिक चेतावनी रास्पबेरी पीआई रनवे लाइट

यह दीपक कई कारणों से आया है कि मुझे हमेशा उन विमानों में दिलचस्पी है जो ऊपर की ओर उड़ते हैं और गर्मियों के दौरान सप्ताहांत में अक्सर कुछ बहुत ही रोमांचक उड़ते हैं। हालाँकि आप उन्हें केवल तभी सुनते हैं जब वे अतीत में जाते हैं। फिर दूसरा कारण यह है कि ऐसा लगता है कि लंदन सिटी हवाई अड्डे से आउटबाउंड विमानों के लिए उड़ान पथ कभी-कभी सुना जाएगा और उनके पास कुछ बहुत शोर वाली उड़ानें चल रही हैं। जैसा कि मैं YouTube के लिए कुछ वीडियो रिकॉर्ड करने में डब करता हूं, शोर वाले विमान के कारण रिकॉर्डिंग को स्क्रैप करना वास्तव में कष्टप्रद है। इसलिए मैंने सोचा कि क्या डेटा जो आप फ्लाइटराडार 24 जैसी साइटों पर देखते हैं, सार्वजनिक रूप से उपलब्ध है, एक बार जब मुझे पता चला कि ओपनस्की नेटवर्क से कुछ ऐसा ही उपलब्ध था तो प्रारंभिक चेतावनी दीपक का जन्म हुआ। प्रोजेक्ट को घर में रखने के लिए रनवे लाइट की प्रतिकृति का उपयोग करने के विचार के साथ आने में बहुत समय नहीं लगा।

आप https://www.opensky-network.org पर ओपनस्काई नेटवर्क के बारे में अधिक जानकारी प्राप्त कर सकते हैं, मैं इस बार पारभासी पीएलए का उपयोग करने के बजाय एक अच्छा राल लेंस बनाना चाहता था और हालांकि मेरे पास एक एडीएस-बी रिसीवर है जिसे मैं रखना चाहता था यह सरल और सस्ता। एडीएस-बी को भी एक एंटीना की आवश्यकता होती है और यह कार्यालय में शेल्फ पर जाने के लिए दीपक के लिए काम नहीं करेगा। तो उम्मीद है कि आपको बिल्ड दिलचस्प लगेगा क्योंकि इसमें 3 डी प्रिंटिंग, रेजिन मोल्डिंग और गणित के साथ-साथ विमान की स्थिति को एक्सट्रपलेशन करने के लिए शामिल किया गया है जो संभावित रूप से ओवरहेड से गुजर सकता है।

चरण 1: केस डिजाइन करना

Google खोज रनवे लैंप के कई अलग-अलग डिज़ाइनों के साथ आता है और इसका डिज़ाइन वास्तविक लैंप के कई अलग-अलग रूपों से डिज़ाइन प्रभावों का उपयोग करके बनाया गया था। इसे पूर्ण आकार के बजाय एक कमरे में या शेल्फ पर बैठने के लिए भी बढ़ाया जाता है, क्योंकि वे वास्तविक जीवन में बहुत बड़े होते हैं।

फ्यूजन 360 में डिजाइन तैयार किए गए थे और मैंने पिछले प्रोजेक्ट्स से रास्पबेरी पाई जीरो होल्डर जैसे कुछ पिछले तत्वों को आयात किया था। तत्वों का पुन: उपयोग करने में सक्षम होने के कारण मूल बातें नीचे लाने में बहुत अधिक सिरदर्द होता है। आप यहां फाइलें भी डाउनलोड कर सकते हैं

चरण 2: लेंस को कास्ट करना - #असफल

लेंस कास्ट करना - #असफल
लेंस कास्ट करना - #असफल
लेंस कास्ट करना - #असफल
लेंस कास्ट करना - #असफल
लेंस कास्ट करना - #असफल
लेंस कास्ट करना - #असफल

इस लैम्प का सबसे महत्वपूर्ण डिजाइन एलिमेंट लेंस होने वाला था। इसलिए मैंने इसे सबसे पहले निपटाया क्योंकि बिना अच्छे प्रामाणिक दिखने वाले ग्लास के प्रोजेक्ट काम करने वाला था। मैं यहां उन असफलताओं का दस्तावेजीकरण कर रहा हूं जो मुझे हासिल करने की कोशिश में थीं, इस बात के बावजूद कि मैंने शुरू में लेंस को एम्बर बनाने का फैसला किया था। रनवे लाइटें एम्बर और ब्लू दोनों में आती हैं और एम्बर को बनाने के बाद ही मैंने अपना विचार बदल दिया और फैसला किया कि मुझे एक नीला रंग चाहिए।

जो मैं कर सकता हूं उससे एम्बर वाले का उपयोग होल्डिंग लाइन पर किया जाता है और नीले रंग का उपयोग रनवे को लाइन करने के लिए किया जाता है, और ये वही हैं जो रनवे रोशनी की खोज करने पर पाए जाने वाले अधिक कट्टर लगते हैं। हालाँकि, यहाँ एम्बर लेंस बनाने का मेरा पहला प्रयास है। लेंस बनाने के लिए, मैं एक रंगीन योजक के साथ क्लीयरकास्ट राल का उपयोग करने जा रहा था, और हालांकि मैंने कुछ मोल्ड किए हैं इससे पहले कि मैं सोचता था कि क्या 3 डी मोल्ड को प्रिंट करना और उसका उपयोग करना संभव होगा। इसलिए मैंने 3D में स्प्लिट मोल्ड बनाने और इसे PETG में प्रिंट करने के साथ शुरुआत की। मोल्ड रिलीज की विवेकपूर्ण मात्रा में मुझे विश्वास था कि मोल्ड को दूर करने के लिए पर्याप्त होगा। जैसा कि कुछ प्रयासों से पता चलता है कि मैंने राल को गोंद की तरह मोल्ड से चिपका दिया और उन्हें अलग करना संभव नहीं था। हालाँकि मेरे पास पूर्ण पैमाने पर एक था जिसका मैं उपयोग करने जा रहा था, मैंने इसके खिलाफ फैसला किया और पारंपरिक सिलिकॉन मोल्डिंग के साथ उपयोग करने के लिए लेंस का प्रिंट आउट लिया।

चरण 3: विभिन्न प्रकार के राल

राल के विभिन्न प्रकार
राल के विभिन्न प्रकार
राल के विभिन्न प्रकार
राल के विभिन्न प्रकार
राल के विभिन्न प्रकार
राल के विभिन्न प्रकार
राल के विभिन्न प्रकार
राल के विभिन्न प्रकार

एक तरफ के रूप में, मैंने इस परियोजना के लिए 3 प्रकार के स्पष्ट/रंगीन रेजिन का उपयोग किया।

पहला हॉबी मार्केट टाइप था जिसे Pebeo - Gedeo कहा जाता था और इसे आम तौर पर छोटी वस्तुओं को एनकैप्सुलेट करने के लिए बेचा जाता है और इसका उपयोग आभूषण और डेस्क पेपरवेट आदि के लिए किया जाता है। इसने बहुत अच्छा काम किया और लगभग 24-36 घंटों में अच्छी तरह से ठीक हो गया। हालाँकि यह आपको मिलने वाली राशि के लिए काफी महंगा है, लेकिन शौक और शिल्प की दुकानों में आसान और आसानी से उपलब्ध है। इसे 2:1 के अनुपात में मिलाया जाता है। दूसरा एक पूर्व-रंगीन राल था जिसे हार्डनर के साथ 10: 1 के अनुपात में मिलाया जाता है और इसे पूरी तरह से ठीक होने से पहले ईमानदार होने में लगभग एक सप्ताह का समय लगता है। अंतिम एक स्पष्ट राल था, जिसे 2: 1 के अनुपात में भी मिलाया गया था और यह लगभग 2 दिनों में ठीक हो गया था, आप इसे वर्णक की बूंदों से रंग सकते हैं, लेकिन आपको यह सुनिश्चित करने की आवश्यकता है कि आप हमेशा एक ही रंग अनुपात का उपयोग करें यदि आप अलग बैच बना रहे हैं। यह सबसे अधिक लागत प्रभावी भी काम करता है। अंत में मोल्ड के लिए RTV एक GP-3481 RTV था और इसे सेट होने में लगभग 24 घंटे लगते हैं और इसमें पॉट का समय काफी लंबा होता है इसलिए आपके पास इसे मिलाने और फिर डालने के लिए पर्याप्त समय होता है।

वर्तमान में मेरे पास एक वैक्यूम पॉट नहीं है (वर्तमान में ऑर्डर पर) ताकि आप मोल्ड और राल डालने वाले दोनों में बुलबुले से घिरे रह सकें। इसके लिए बहुत अधिक समस्या नहीं है, लेकिन एक स्पष्ट लेंस या इसी तरह के साथ आप मिश्रण से बुलबुले निकालने के लिए किसी तरह के बारे में सोचना चाहेंगे।

चरण 4: लेंस को सिलिकॉन मोल्ड में ढलाई करना #2

Image
Image
सिलिकॉन मोल्ड में लेंस कास्टिंग #2
सिलिकॉन मोल्ड में लेंस कास्टिंग #2
सिलिकॉन मोल्ड में लेंस कास्टिंग #2
सिलिकॉन मोल्ड में लेंस कास्टिंग #2

तो यह रेसिन लेंस बनाने का दूसरा प्रयास है और पहला चरण दोनों लेंस को फ़्यूज़न 360 में बनाना था और फिर इसे ABS में प्रिंट करना था और साथ ही इसे रखने के लिए एक बाल्टी भी। यह मोल्ड के लिए पूर्व होगा और उपयोग किए जाने वाले सिलिकॉन की मात्रा को कम रखने में मदद करता है। आप इसे आसानी से कार्ड से बना सकते हैं, लेकिन यह एक अलग तरीका है। इसे मोल्ड से मुक्त होने का एक बेहतर मौका देने के लिए मैंने पहले इसे वार्निश किया और फिर इसे मोम रिलीज एजेंट का एक अच्छा कवर दिया।

फिर मैंने कुछ GP-3481 डाला जो कि 27 RTV के किनारे के बारे में है और फिर इसे डिमोल्डिंग से पहले अगले 24 घंटों में सेट होने दें। एक बार यह हो जाने के बाद मैंने रंग वर्णक की लगभग 4/5 बूंदों के साथ 2:1 अनुपात में मिश्रित स्पष्ट राल का उपयोग किया और इसे चार मिनट के लिए अच्छी तरह मिश्रित किया। इसे सांचे में डाला और फिर एक शॉट ग्लास को राल में रखा और साथ ही बाद में एक दीपक या एलईडी के लिए एक शून्य प्रदान किया। लगभग 24 घंटों के बाद यह राल निकालने के लिए तैयार हो गया और लेंस बहुत अच्छा निकला। हवा के बुलबुले मौजूद हैं, लेकिन अभी तक मेरे पास डालने से पहले राल को हटाने के लिए एक वैक्यूम बर्तन नहीं है।

चरण 5: 3डी प्रिंटिंग और तैयारी

3डी प्रिंटिंग और तैयारी
3डी प्रिंटिंग और तैयारी
3डी प्रिंटिंग और तैयारी
3डी प्रिंटिंग और तैयारी
3डी प्रिंटिंग और तैयारी
3डी प्रिंटिंग और तैयारी

मॉडल को इस तरह से डिजाइन किया गया था कि केंद्रीय खंड आधार में प्लग करता है। यह पेंटिंग प्रक्रिया के दौरान मास्किंग से बचने के लिए था। पूरे मॉडल को हैचबॉक्स एबीएस में प्रिंट किया गया और फिर सैंड किया गया। 60 ग्रिट से शुरू होकर लगभग 800 ग्रिट तक इस मॉडल के लिए एक अच्छा पर्याप्त सरफेस फिनिश दिया गया।

चरण 6: असेंबली और पेंटिंग

असेंबली और पेंटिंग
असेंबली और पेंटिंग
असेंबली और पेंटिंग
असेंबली और पेंटिंग
असेंबली और पेंटिंग
असेंबली और पेंटिंग

एक बार जब प्रिंटों को रेत दिया जाता है, तो इसे कुछ उच्च बिल्ड प्राइमर के साथ चित्रित किया जाता है। हल्के से रेत और फिर ग्रे प्राइमर में छिड़का। मुख्य भागों को फोर्ड सिग्नल पीले रंग में चित्रित किया गया था, और फिर आधार के लिए ब्रुकलैंड्स हरे रंग का इस्तेमाल किया गया था। तमिया सिल्वर के हाइलाइट्स को फिर बोल्ट पर लगाया गया और लेंस होल्डर पर कुछ मोलोटो सिल्वर क्रोम का इस्तेमाल किया गया।

चरण 7: पहले एक बाउंडिंग एरिया के भीतर विमानों का पता लगाएं

हार्डवेयर को सॉर्ट करने के साथ, सॉफ़्टवेयर पर काम करने की आवश्यकता होती है। अब कुछ ऐसी साइटें हैं जो फ़्लाइट ट्रैकिंग प्रदान करती हैं, लेकिन बहुत सी ऐसी साइटें नहीं हैं जो उस डेटा तक पहुँचने के लिए API प्रदान करती हैं। कुछ लोग ऐसा करते हैं, केवल व्यावसायिक आधार पर ऐसा करते हैं लेकिन सौभाग्य से https://opensky-network.org नामक एक साइट है जिसका आप मुफ्त में उपयोग कर सकते हैं।

इस डेटा तक पहुंचने के लिए आपको पंजीकरण करना होगा और फिर आप उनके एपीआई का उपयोग कर सकते हैं, यह डेटा खींचने के कई कार्य और तरीके प्रदान करता है। हम एक क्षेत्र के भीतर सभी उड़ानों में रुचि रखते हैं और उनके पास इसके लिए एक लाइव एपीआई कॉल है। https://opensky-network.org/apidoc/ जिसे बाउंडिंग बॉक्स कहा जाता है। एपीआई कॉल के लिए उस बॉक्स के कोनों की आवश्यकता होती है जिसमें आप रुचि रखते हैं, निश्चित रूप से केंद्र बिंदु के रूप में हमारा अक्षांश/देशांतर। आप इस साइट पर गणित के काम की जांच कर सकते हैं, जो आपके द्वारा टाइप किए जाने के आधार पर एक बॉक्स बनाता है। https://tools.geofabrik.de लेकिन अभी के लिए निम्न स्क्रिप्ट उन बिंदुओं को बताती है जिन्हें हमें एपीआई में प्लग करने की आवश्यकता है।

फ़ंक्शन get_bounding_box($latitude_in_degrees, $longitude_in_degrees, $half_side_in_miles){ $half_side_in_km = $half_side_in_miles * 1.609344; $lat = deg2rad($latitude_in_degrees); $lon = deg2rad($longitude_in_degrees); $त्रिज्या = 6371; $parallel_radius = $radius*cos($lat); $lat_min = $lat - $half_side_in_km/$radius; $lat_max = $lat + $half_side_in_km/$त्रिज्या; $lon_min = $lon - $half_side_in_km/$parallel_radius; $lon_max = $lon + $half_side_in_km/$parallel_radius; $box_lat_min = rad2deg($lat_min); $box_lon_min = rad2deg($lon_min); $box_lat_max = rad2deg($lat_max); $box_lon_max = rad2deg($lon_max); वापसी सरणी($box_lat_min, $box_lon_min, $box_lat_max, $box_lon_max);

यदि आप अपने कोड का परीक्षण करना चाहते हैं, तो एक साइट है जहां आप अक्षांश/देशांतर में प्रवेश कर सकते हैं और मानचित्र पर परिणाम देख सकते हैं: मानचित्र पर एक बाउंडिंग बॉक्स उदाहरण देखें

चरण 8: हमारे संबंध में विमानों के शीर्षक की गणना करना

हमारे संबंध में विमानों के शीर्षक की गणना करना
हमारे संबंध में विमानों के शीर्षक की गणना करना

बाउंडिंग बॉक्स एपीआई कॉल के परिणाम हमें विमानों की सूची, उनके लोन/अक्षांश, गति, ऊंचाई और शीर्षक देते हैं। तो अगली चीज़ जो हमें करने की ज़रूरत है वह है हमारे संबंध में प्रत्येक विमान का शीर्षक प्राप्त करना ताकि हम उन लोगों को आगे संसाधित कर सकें जो कम से कम हमारी सामान्य दिशा में जा रहे हैं। हम ऐसा कर सकते हैं क्योंकि हम अपनी स्थिति जानते हैं और हम से प्रत्येक तल पर कोण का पता लगा सकते हैं।

ऐसा करने के लिए मैं कोड के एक टुकड़े का उपयोग करता हूं जिसमें से मूल रूप से जावास्क्रिप्ट में था इसलिए मैंने इसे यहां PHP में परिवर्तित कर दिया, * दो बिंदुओं के बीच गणना (प्रारंभिक) असर * * से: एड विलियम्स का एविएशन फॉर्मूला, https://williams.best.vwh.net/avform.htm#Crs * स्रोत = Instantglobe.com/CRANES/GeoCoordTool.html */ समारोह get_ Bearing($home_lat, $home_lon, $plane_lat, $plane_lon) {$lat1 = deg2rad($home_lat); $lat2 = deg2rad($plane_lat);

$dLon = deg2rad($plane_lon-$home_lon);

$y = sin($dLon) * cos($lat2);

$x = cos($lat1)*sin($lat2) - sin($lat1)*cos($lat2)*cos($dLon); $z = atan2($y, $x); $zz = (rad2deg($z) +360)% 360; $ zz वापसी;

यदि आप उस पृष्ठ को देखना चाहते हैं जहां मूल जावास्क्रिप्ट संस्करण हैं, तो यह लिंक है:

उस कोड के भीतर, आप प्रत्येक प्रकार की गणना के लिए विभिन्न उप रूटीन भी देख सकते हैं।

चरण 9: एक वृत्त को देखकर एक अवरोधन की गणना करना

एक वृत्त को देखकर एक अवरोधन की गणना करना
एक वृत्त को देखकर एक अवरोधन की गणना करना

तो अब हमारे पास एक ऐसा विमान है जहां इसके और हमारे स्थान के बीच का असर 90 से कम है (या तो सकारात्मक या नकारात्मक) और इसका मतलब है कि एक मौका है कि यह पास से उड़ सकता है। हैवरसाइन फॉर्मूले का उपयोग करके हम विमान के लोन/अक्षांश और हमारे घर के लोन/अक्षांश का उपयोग करके भी यह पता लगा सकते हैं कि यह हमसे कितनी दूरी पर है।

आरेख को देखते हुए, यदि हम अपने घर के चारों ओर लगभग 3 मील के दायरे में एक वृत्त खींचते हैं, तो इससे हमें कुछ भी उड़ते हुए देखने का मौका मिलता है। हम विमान और हमारे बीच के शीर्ष में अंतर जानते हैं, हम विमान की दूरी भी जानते हैं ताकि हम अच्छे पुराने SOHCAHTOA का उपयोग करके त्रिभुज का काम कर सकें, और इस मामले में कोण के टैन का उपयोग करके हम प्राप्त कर सकते हैं विपरीत पक्ष की लंबाई। इसलिए यदि हम इस मान की तुलना घर के चारों ओर वृत्त के त्रिज्या मान से करते हैं तो हम यह पता लगा सकते हैं कि क्या विमान हमारे देखने के लिए पर्याप्त रूप से उड़ान भरेगा। अगला बिट जो हम कर सकते हैं, वह समय है कि विमान हवा की गति और दूरी का उपयोग करके उड़ान भरेगा और यदि यह लगभग 45 सेकंड से कम है या तो हम प्रकाश चालू करते हैं। यह थोड़ा सा कोड है जिसका उपयोग मैं फ्लाई ओवर की संभावना को पूरा करने के लिए करता हूं। मैं ऐसा इसलिए करता हूं क्योंकि पास में एक हवाई अड्डा है और जब विमान टैक्सी कर रहे होते हैं तो वे अनिवार्य रूप से घर की ओर इशारा करते हैं। हालाँकि, उनकी ऊँचाई शून्य है और गति चलने की गति है, इससे अलार्म नहीं बजना चाहिए।

समारोह get_intercept($home_head, $plane_head, $plane_distance) {

$flight_angle = abs(abs($home_head - $plane_head) - 180); $flight_angle_r = deg2rad($flight_angle); $flight_angle_t = tan($flight_angle_r); $flight_intercept = $flight_angle_t * $plane_distance;

अगर (($flight_angle<90) && ($flight_intercept<3)){// संभव फ्लाई पास्ट

}

$flight_intercept वापसी;

}

चरण 10: मानचित्र पर दो बिंदुओं के बीच की दूरी - हावरसाइन सूत्र

मानचित्र पर दो बिंदुओं के बीच की दूरी - हावरसाइन फॉर्मूला
मानचित्र पर दो बिंदुओं के बीच की दूरी - हावरसाइन फॉर्मूला

इसलिए हमें विमान और हमारे स्थान के बीच की दूरी की गणना करनी होगी। मानचित्र पर कम दूरी पर आप लगभग दूरी की गणना कर सकते हैं, लेकिन चूंकि पृथ्वी गोलाकार है, इसलिए हावर्सिन सूत्र नामक एक सूत्र है जो आपको घुमावदार सतह को ध्यान में रखने की अनुमति देता है। आप आगे सूत्र में पढ़ सकते हैं:

अब गणना की गई दूरी के साथ और हम विमान की हवाई गति को जानते हैं, हम यह पता लगा सकते हैं कि विमान के ऊपर की ओर जाने से पहले यह कितने सेकंड में होगा। तो अगर फ्लाईपास्ट के ३० सेकंड के भीतर कुछ होता है तो प्रकाश आ जाएगा और अंत में हमारे पास हमारी चेतावनी प्रकाश है।

* Instantglobe.com/CRANES/GeoCoordTool.html पर आधारित 0n JS और PHP में बदल गया */

समारोह get_distHaversine ($home_lat, $home_lon, $plane_lat, $plane_lon) {$R = 6371; // पृथ्वी का माध्य त्रिज्या किमी में $dLat = deg2rad($plane_lat-$home_lat); $dLon = deg2rad($plane_lon-$home_lon); $lat1 = deg2rad($home_lat); $lat2 = deg2rad($plane_lat);

$a = sin($dLat/2) * sin($dLat/2) + cos($lat1) * cos($lat2) * sin($dLon/2) * sin($dLon/2);

$c = 2 * atan2(sqrt($a), sqrt(1-$a)); $ डी = $ आर * $ सी; $d वापसी; }

चरण 11: प्लेन डेटाबेस को आयात और परिभाषित करना

अन्य टुकड़ों में से एक यह है कि ओपनस्की साइट उनके कॉलसाइन और पहचान के साथ विमानों का एक डाउनलोड करने योग्य डेटाबेस प्रदान करती है। इसकी कई सौ हजार प्रविष्टियाँ। तो हम इसे डाउनलोड कर सकते हैं और इसे स्थानीय रूप से लुकअप (MySQL) के लिए मारियाडीबी डेटाबेस में लोड कर सकते हैं। ऊपर दिखाई देने वाले प्रत्येक विमान के साथ, हम इसके विवरण प्राप्त करते हैं और यह दिखाने के लिए काउंटर को अपडेट करते हैं कि इसे कितनी बार देखा गया है।

मैं वर्तमान में उन विमानों को हाइलाइट करने के लिए डेटाबेस को संपादित कर रहा हूं जिनमें मुझे रूचि है। मुख्य रूप से पुराने युद्ध पक्षी और अन्य समान रोचक विमान। इस गर्मी में कई बार मिग-15 उड़ चुका है। इसलिए उद्देश्य मेरे द्वारा जोड़े गए अलर्ट फ़ील्ड का उपयोग करना है और फिर कुछ दिलचस्प होने पर प्रकाश को तेजी से फ्लैश करना है

चरण 12: परिणाम और नई सुविधाओं में सुधार

परिणाम और नई सुविधाओं में सुधार
परिणाम और नई सुविधाओं में सुधार
परिणाम और नई सुविधाओं में सुधार
परिणाम और नई सुविधाओं में सुधार
परिणाम और नई सुविधाओं में सुधार
परिणाम और नई सुविधाओं में सुधार

तो सिद्धांत रूप में सब कुछ बहुत अच्छी तरह से काम करता है, लेकिन आप डेटा के साथ पाएंगे कि ऐसे विमान हैं जो उस पर उड़ते हैं जो एपीआई में दिखाई नहीं देते हैं।

ऐसा इसलिए है क्योंकि सभी विमान एडीएस-बी ट्रांसपोंडर का उपयोग नहीं कर रहे हैं और एमएलएटी पर आधारित पुराने ट्रांसपोंडर का उपयोग नहीं कर रहे हैं। एमएलएटी का उपयोग करके विमान पर स्थिति डेटा प्राप्त करने के लिए जमीन पर रिसीवर की एक श्रृंखला की आवश्यकता होती है ताकि उनकी स्थिति त्रिभुज हो और कुछ साइटों जैसे फ्लाइटराडार 24 में ओपनस्की की तुलना में योगदानकर्ताओं का एक बड़ा नेटवर्क है। उम्मीद है कि समय के साथ उनके कवरेज में भी सुधार होगा और मैं इस डेटा को जोड़ने के लिए अपना खुद का एमएलएटी रिसीवर स्थापित कर रहा हूं।

चरण 13: कोडबेस

यदि आप इसका उपयोग करने जा रहे हैं तो यह न भूलें कि यदि आपके पास विमानों का डेटाबेस नहीं है तो आप SQL कथनों को हटाना चाह सकते हैं और उड़ान डेटा तक पहुँचने के लिए अपना स्वयं का Lon/Lat मान और API कुंजी भी जोड़ सकते हैं।

github.com/ajax-jones/runway-light-awacs

परिभाषित करें ("अंतराल", (20 * 1)); फ़ंक्शन fexp () {$ lat = "आपका अक्षांश"; $lon = "आपका देशांतर"; $ पक्ष = 15.75; $बॉक्स = get_bounding_box($lat, $lon, $side); $ लैटमिन = $ बॉक्स [0]; $लोनमिन = $बॉक्स[1]; $ लैटमैक्स = $ बॉक्स [2]; $लोनमैक्स = $बॉक्स[3]; $flyurl = "https://opensky-network.org/api/states/all?lamin=$latmin&lomin=$lonmin&lamax=$latmax&lomax=$lonmax"; इको "स्कैनिंग द स्काई"; $ start_time = माइक्रोटाइम (सच); $json = file_get_contents($flyurl); $ डेटा = json_decode ($ json, TRUE); $ इनबाउंड = FALSE; $num_planes = गिनती ($ डेटा ['राज्यों']); अगर ($num_planes>0) {echo " और हम $num_planes प्लेन\n "; के लिए ($x =0; $x 0) { $plane_eta = $distplane/$air_speed_kmh; } और {$ एटा = 1; } अगर ((($अवरोध) 0)) && ($distplane0){ $inbound = TRUE; गूंज "------------------------------------------------ --------------------\एन"; इको "$icao24 - [$देश $callsign] [$geo_altitude_m M -- $geo_altitude_f ft]" पर; इको "[स्पीड $air_speed_kmh kmh और ", राउंड($डिस्टप्लेन, १), "किमी दूर]\n"; इको "[एक शीर्षक पर", गोल($plane_heading, 1), "] [होमएंगल $heading_d] "; गूंज "[$अक्षांश, $देशांतर]\n"; इको "[फ्लाईपास्ट इन ", दशमलव_to_time($plane_eta), " now ", राउंड($इंटरसेप्ट, 1), "किमी दूर\n"; गूंज "------------------------------------------------ --------------------\एन"; $DBi = नया mysqli ("127.0.0.1", "रूट", "आपका पासवर्ड", "अवेक"); $ sql = "एयरक्राफ्टडेटाबेस से चुनें * जहां `icao24`='$icao24'"; mysqli_set_charset ($ डीबीआई, "utf8"); $getplanedata = mysqli_query($DBi, $sql) या die(mysqli_error($DBi)); $row_getplanedata = mysqli_fetch_assoc($getplanedata); $rows_getplanedata = mysqli_num_rows($getplanedata); अगर($rows_getplanedata>0) { do {echo "callsign="; इको $ row_getplanedata ['पंजीकरण']; गूंज "एक" है; इको $row_getplanedata['manufacturername']; गूंज ""; इको $ row_getplanedata ['मॉडल']; गूंज "द्वारा"; इको $row_getplanedata['manufacturricao']; गूंज "स्वामित्व"; इको $ row_getplanedata ['मालिक']; गूंज "देखा"; गूंज $row_getplanedata['विज़िट']; गूंज "समय"; गूंज "विशेष रेटिंग ="; इको $ row_getplanedata ['विशेष']; गूंज "\ n"; $विज़िट = $row_getplanedata['visit']+1; } जबकि ($row_getplanedata = mysqli_fetch_assoc($getplanedata)); mysqli_free_result ($ getplanedata); $sqli = "अपडेट एयरक्राफ्टडेटाबेस SET विज़िट = $ विज़िट जहां icao24 = '$icao24'"; mysqli_set_charset ($ डीबीआई, "utf8"); $updateplanedata = mysqli_query($DBi, $sqli) या die(mysqli_error($DBi)); } और {गूंज "इस विमान को डीबी में नहीं ढूंढ सका इसलिए इसे जोड़ना"; $sqli = "इन्सर्ट इनटू एयरक्राफ्टडेटाबेस (icao24, विज़िट्स, स्पेशल) VALUES ('$icao24', 1, 1)"; $updateplanedata = mysqli_query($DBi, $sqli) या die(mysqli_error($DBi)); } गूंज "-------------------------------------------------------- ---------------------\एन"; } और {// गूंज "$ कॉलसाइन"; } } } और {गूंज "और आसमान साफ है\n"; } अगर ($इनबाउंड) {गूंज "इनबाउंड प्लेन\n"; $command = "सूअर w 17 1"; execInBackground($कमांड); } और {गूंज "कोई इनबाउंड फ़्लाइट नहीं\n"; $command = "सूअर w 17 0"; execInBackground($कमांड); } } फंक्शन दशमलव_to_time($दशमलव) { $offset = 0.002778; अगर ($दशमलव>$ऑफसेट) {$दशमलव = $दशमलव - 0.002778; } $ घंटे = gmdate ('एच', मंजिल ($ दशमलव * 3600)); $मिनट = gmdate('i', फ़्लोर($दशमलव * 3600)); $ सेकंड = जीएमडेट ('एस', मंजिल ($ दशमलव * 3600)); वापसी str_pad($hours, 2, "0", STR_PAD_LEFT) । ":"। str_pad($मिनट, 2, "0", STR_PAD_LEFT) । ":"। str_pad($सेकंड, 2, "0", STR_PAD_LEFT); } /* * दो बिंदुओं के बीच असर की गणना (प्रारंभिक) करें * * से: एड विलियम्स का एविएशन फॉर्मूला, https://williams.best.vwh.net/avform.htm#Crs * source = Instantglobe.com/CRANES/GeoCoordTool। html */ फ़ंक्शन get_ Bearing($home_lat, $home_lon, $plane_lat, $plane_lon) { $lat1 = deg2rad($home_lat); $lat2 = deg2rad($plane_lat); $dLon = deg2rad($plane_lon-$home_lon); $y = sin($dLon) * cos($lat2); $x = cos($lat1)*sin($lat2) - sin($lat1)*cos($lat2)*cos($dLon); $z = atan2($y, $x); $zz = (rad2deg($z) +360)% 360; $ zz वापसी; } फ़ंक्शन get_intercept($home_head, $plane_head, $plane_distance) { $flight_angle = abs(abs($home_head - $plane_head) - 180); $flight_angle_r = deg2rad($flight_angle); $flight_angle_t = tan($flight_angle_r); $flight_intercept = $flight_angle_t * $plane_distance; $flight_intercept वापसी; } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* * अक्षांश/देशांतर (संख्यात्मक डिग्री में) * * द्वारा निर्दिष्ट दो बिंदुओं के बीच की दूरी (किमी में) की गणना करने के लिए हैवरसाइन सूत्र का उपयोग करें: हावर्सिन सूत्र - आरडब्ल्यूसिनोट, "वर्च्युज ऑफ द हैवर्सिन", * स्काई एंड टेलीस्कोप, वॉल्यूम 68, नंबर 2, 1984 * https://williams.best.vwh.net/avform.htm#Crs * * फॉर्म से उदाहरण उपयोग: * result.value = LatLon.distHaversine(lat1.value.parseDeg(), long1.value.parseDeg(), * lat2.value.parseDeg(), long2.value.parseDeg()); * जहां lat1, long1, lat2, long2, और परिणाम प्रपत्र फ़ील्ड हैं * स्रोत = Instantglobe.com/CRANES/GeoCoordTool.html */ function get_distHaversine ($home_lat, $home_lon, $plane_lat, $plane_lon) { $R = 6371; // पृथ्वी का माध्य त्रिज्या किमी में $dLat = deg2rad($plane_lat-$home_lat); $dLon = deg2rad($plane_lon-$home_lon); $lat1 = deg2rad($home_lat); $lat2 = deg2rad($plane_lat); $a = sin($dLat/2) * sin($dLat/2) + cos($lat1) * cos($lat2) * sin($dLon/2) * sin($dLon/2); $c = 2 * atan2(sqrt($a), sqrt(1-$a)); $ डी = $ आर * $ सी; $d वापसी; } फ़ंक्शन get_bounding_box($latitude_in_degrees, $longitude_in_degrees, $half_side_in_miles){ $half_side_in_km = $half_side_in_miles * 1.609344; $lat = deg2rad($latitude_in_degrees); $lon = deg2rad($longitude_in_degrees); $त्रिज्या = 6371; # दिए गए अक्षांश पर समानांतर की त्रिज्या; $parallel_radius = $radius*cos($lat); $lat_min = $lat - $half_side_in_km/$radius; $lat_max = $lat + $half_side_in_km/$त्रिज्या; $lon_min = $lon - $half_side_in_km/$parallel_radius; $lon_max = $lon + $half_side_in_km/$parallel_radius; $box_lat_min = rad2deg($lat_min); $box_lon_min = rad2deg($lon_min); $box_lat_max = rad2deg($lat_max); $box_lon_max = rad2deg($lon_max); वापसी सरणी($box_lat_min, $box_lon_min, $box_lat_max, $box_lon_max); } फ़ंक्शन execInBackground($cmd) { if (substr(php_uname(), 0, 7) == "Windows"){ pclose(popen("start /B ". $cmd, "r")); } और {निष्पादन ($cmd। "> /dev/null &"); } } फ़ंक्शन checkForStopFlag () {// पूरी तरह से वैकल्पिक रिटर्न (TRUE); } फंक्शन स्टार्ट () {इको "स्टार्टिंग / n"; $command = "सूअर w 17 1"; execInBackground($कमांड); $ सक्रिय = सत्य; जबकि ($ सक्रिय) { सो (1000); // वैकल्पिक, यदि आप विचारशील होना चाहते हैं यदि (microtime(true)>= $nextTime) {fexp(); $अगला समय = माइक्रोटाइम (सच) + अंतराल; } $ सक्रिय = checkForStopFlag (); } } fexp (); प्रारंभ(); ?>

चरण 14: एलईडी और शटडाउन स्विच को तार देना

एलईडी और शटडाउन स्विच को तार देना
एलईडी और शटडाउन स्विच को तार देना

इस परियोजना की वायरिंग वास्तव में सरल नहीं हो सकती है। सिर्फ एक एलईडी है जो पिन 17 से जुड़ी है और 270R रेसिस्टर इनलाइन के साथ ग्राउंड है।

मैं एक पावर एलईडी के साथ शटडाउन और पावर अप बटन भी शामिल करता हूं जो TXd डेटा पिन से चलता है। आप साइट https://howchoo.com/g/mwnlytk3zmm/how-to- से https://github.com/Howchoo/pi-power-button.git पर शटडाउन फ़ंक्शन और आवश्यक कोड के बारे में अधिक पढ़ सकते हैं। ऐड-ए-पाउ… आप यहां पावर लाइट जोड़ने के बारे में पढ़ सकते हैं

सिफारिश की: