Mundarija:

Erta ogohlantirish Raspberry PI uchish -qo'nish yo'lagining yorug'ligi parvoz xaritasi ma'lumotlari yordamida: 14 qadam (rasmlar bilan)
Erta ogohlantirish Raspberry PI uchish -qo'nish yo'lagining yorug'ligi parvoz xaritasi ma'lumotlari yordamida: 14 qadam (rasmlar bilan)

Video: Erta ogohlantirish Raspberry PI uchish -qo'nish yo'lagining yorug'ligi parvoz xaritasi ma'lumotlari yordamida: 14 qadam (rasmlar bilan)

Video: Erta ogohlantirish Raspberry PI uchish -qo'nish yo'lagining yorug'ligi parvoz xaritasi ma'lumotlari yordamida: 14 qadam (rasmlar bilan)
Video: ORANGE PI5 PLUS на RK3588, мощный одноплатный компьютер, для работы, разработок и развлечений 2024, Iyul
Anonim
Erta ogohlantirish Raspberry PI uchish -qo'nish yo'lagi yorug'ligi parvoz xaritasi ma'lumotlaridan foydalangan holda
Erta ogohlantirish Raspberry PI uchish -qo'nish yo'lagi yorug'ligi parvoz xaritasi ma'lumotlaridan foydalangan holda
Erta ogohlantirish Raspberry PI uchish -qo'nish yo'lagi yorug'ligi parvoz xaritasi ma'lumotlaridan foydalangan holda
Erta ogohlantirish Raspberry PI uchish -qo'nish yo'lagi yorug'ligi parvoz xaritasi ma'lumotlaridan foydalangan holda
Erta ogohlantirish Raspberry PI uchish -qo'nish yo'lagi yorug'ligi parvoz xaritasi ma'lumotlaridan foydalangan holda
Erta ogohlantirish Raspberry PI uchish -qo'nish yo'lagi yorug'ligi parvoz xaritasi ma'lumotlaridan foydalangan holda
Erta ogohlantirish Raspberry PI uchish -qo'nish yo'lagining yorug'ligi parvoz xaritasi ma'lumotlaridan foydalangan holda
Erta ogohlantirish Raspberry PI uchish -qo'nish yo'lagining yorug'ligi parvoz xaritasi ma'lumotlaridan foydalangan holda

Bu chiroq bir necha sabablarga ko'ra paydo bo'ldi, chunki men doimo tepada uchadigan samolyotlarga qiziqaman, yozda esa dam olish kunlari tez -tez uchib ketadigan samolyotlar bor. Garchi siz ularni o'tmishda eshitishga moyil bo'lsangiz ham. Boshqa sabab shundaki, London Siti aeroportidan chiqadigan samolyotlarning parvozi ba'zida eshitiladi va ular juda shovqinli reyslarni amalga oshiradi. YouTube -da ba'zi videolarni yozib olayotganimda, shovqinli samolyot tufayli yozuvni olib tashlash zerikarli. Menimcha, "flyhtradar24" kabi saytlarda siz ko'radigan ma'lumotlar hammaga ochiq bo'ladimi, deb o'ylayman, ochilgan tarmoqdan shunga o'xshash narsa borligini aniqlagandan so'ng, erta ogohlantiruvchi chiroq paydo bo'ldi. Loyihani joylashtirish uchun uchish -qo'nish yo'lagi chirog'ining nusxasini ishlatish g'oyasi paydo bo'lishi uchun ko'p vaqt talab qilinmadi.

Siz OpenSky tarmog'i haqida ko'proq ma'lumotni https://www.opensky-network.org saytida topishingiz mumkin, men ham bu safar shaffof PLA ishlatish o'rniga yaxshi qatronli linzalar yasashni xohlardim va menda ADS-B qabul qilgichi bo'lsa ham, men saqlamoqchi edim. bu oddiy va arzon. ADS-B-ga antenna ham kerak, va bu chiroq ofisdagi tokchaga tushishi uchun kerak emas. Umid qilamanki, sizga qurilish qiziqarli bo'ladi, chunki u 3D bosib chiqarish, qatronlar va matematikani o'z ichiga oladi, shuningdek, samolyotlarning yukini kesib o'tishi mumkin bo'lgan joylarini ekstrapolyatsiya qiladi.

1 -qadam: Kosonni loyihalash

Google qidiruvi uchish -qo'nish yo'lagi chiroqlarining turli xil dizaynlarini o'z ichiga oladi va uning dizayni turli xil haqiqiy lampalarning dizayn ta'siridan foydalangan holda yaratilgan. Bundan tashqari, xonada yoki tokchada o'tirish kattaligi emas, chunki ular haqiqiy hayotda kattaroqdir.

Dizaynlar Fusion 360 -da tuzilgan va men oldingi loyihalardan malina pi nol ushlagichi kabi oldingi elementlarni import qilganman. Elementlarni qayta ishlata olish, ko'p narsalarni boshidan olib tashlash uchun ko'p bosh og'rig'ini oladi. Fayllarni bu erdan ham yuklab olishingiz mumkin

2 -qadam: linzalarni quyish - #muvaffaqiyatsiz

Linzalarni quyish - #muvaffaqiyatsiz
Linzalarni quyish - #muvaffaqiyatsiz
Linzalarni quyish - #muvaffaqiyatsiz
Linzalarni quyish - #muvaffaqiyatsiz
Linzalarni quyish - #muvaffaqiyatsiz
Linzalarni quyish - #muvaffaqiyatsiz

Ushbu chiroqning dizayndagi eng muhim elementi linzalar bo'ladi. Shunday qilib, men bu masalani hal qildim, chunki chiroyli stakan bo'lmagan holda loyiha ishlay boshladi. Men bu erda men muvaffaqiyatga erishgan muvaffaqiyatsizliklarimni hujjatlashtiryapman, lekin men ham ob'ektivni kehribar qilishga qaror qildim. Uchish -qo'nish yo'lagining chiroqlari ham kehribar, ham ko'k rangda bo'ladi va men kehribarni yasashni boshlaganimdan keyingina fikrimni o'zgartirdim va ko'k chiroqni xohlayman deb qaror qildim.

Men shuni bilib olamanki, kehribar lampalar ushlab turish chizig'ida, ko'klari esa uchish -qo'nish yo'lagida ishlatiladi, va agar siz uchish -qo'nish yo'lagi chiroqlarini qidirsangiz, ular ko'proq arxetiplarga o'xshaydi. Ammo, mana, kehribar linzalarni yasashdagi birinchi urinishim. Ob'ektivni yaratish uchun men rangli qo'shimchali tiniq qatronlardan foydalanmoqchi edim va garchi men 3D qolipni chop etish va undan foydalanish mumkinmi, deb o'ylamaganimdan oldin, bir nechta qoliplar qilgan bo'lsam ham. Shunday qilib, men 3D formatida bo'linadigan qolip yasashni va uni PetG -da chop etishni boshladim. Mog'orni bo'shatish uchun oqilona miqdordagi qolipni ajratish uchun etarli bo'lishiga amin bo'ldim. Ma'lum bo'lishicha, bir nechta urinish natijasida men qatronni qolipga yopishtirgandek yopishtirib qo'ydim va ularni ajratish mumkin emasdek tuyuldi. Men foydalanmoqchi bo'lgan to'liq o'lchovli o'lchagichga ega bo'lsam -da, men bunga qarshi qaror qildim va an'anaviy silikon kalıplama uchun ishlatiladigan linzalarni chop etdim.

3 -qadam: Har xil turdagi qatronlar

Har xil turdagi qatronlar
Har xil turdagi qatronlar
Har xil turdagi qatronlar
Har xil turdagi qatronlar
Har xil turdagi qatronlar
Har xil turdagi qatronlar
Har xil turdagi qatronlar
Har xil turdagi qatronlar

Tezroq, men ushbu loyiha uchun 3 turdagi shaffof/rangli qatronlardan foydalandim.

Birinchisi, Pebeo -Gedeo deb nomlangan sevimli mashg'ulot bozori edi va u odatda mayda -chuydalarni o'rash uchun sotiladi, zargarlik buyumlari va stol qog'ozi uchun ishlatiladi. Bu juda yaxshi ishladi va taxminan 24-36 soat ichida yaxshi davolandi. Bu siz olgan summa uchun juda qimmat, lekin qulay va sevimli mashg'ulotlari va hunarmandchilik do'konlarida oson sotiladi. U 2: 1 nisbatda aralashtiriladi. Ikkinchisi, oldindan tayyorlanadigan qatron bo'lib, uni sertleştirici bilan 10: 1 nisbatda aralashtirib yubordi va uni davolash uchun eng uzoq vaqt kerak bo'ldi. Ikkinchisi 2: 1 nisbatda aralashtirilgan aniq qatron edi va u taxminan 2 kun ichida davolandi, siz uni pigment tomchilari bilan bo'yashingiz mumkin, lekin agar siz har doim bir xil rang nisbatini ishlatganingizga ishonch hosil qilishingiz kerak. alohida partiyalar tayyorlaydilar. Bundan tashqari, u iqtisodiy jihatdan eng samarali hisoblanadi. Nihoyat, qolip uchun RTV GP-3481 RTV edi va uni o'rnatish uchun taxminan 24 soat vaqt ketadi va qozonda juda uzoq vaqt bor, shuning uchun uni aralashtirish va keyin to'kish uchun ko'p vaqtingiz bor.

Hozir menda bo'sh idish yo'q (hozirda buyurtma bo'yicha), shuning uchun siz ham qolib, ham qatronlar to'kilib ketishi mumkin. Buning uchun juda ko'p muammo emas, lekin aniq linzali yoki shunga o'xshash bo'lsa, siz pufakchalarni aralashmalardan olib tashlash haqida o'ylashni xohlaysiz.

4 -qadam: 2 -sonli silikon qolipga linzalarni quyish

Image
Image
2 -sonli silikon qolipdagi linzalarni quyish
2 -sonli silikon qolipdagi linzalarni quyish
2 -sonli silikon qolipdagi linzalarni quyish
2 -sonli silikon qolipdagi linzalarni quyish

Shunday qilib, bu qatron linzalarini yasashning ikkinchi urinishi va birinchi bosqich - Fusion 360 -da linzalarni yasash, keyin uni ABS -da chop etish va ushlab turish uchun chelak. Bu mog'or uchun avvalgisi bo'ladi va ishlatiladigan silikon miqdorini kamaytirishga yordam beradi. Siz buni kartadan osongina qilishingiz mumkin, lekin bu boshqacha yondashuv. Mog'ordan qutulish imkoniyatini berish uchun avval uni laklab, so'ngra unga mum chiqaruvchi vositani yaxshi yopishtirdim.

Keyin men 27 RTV sohilidagi GP-3481 ni to'kdim va demontajdan oldin uni keyingi 24 soat ichida o'rnatishga ruxsat berdim. Bu bajarilgandan so'ng, men 2: 1 nisbatda 4/5 tomchi rangli pigment bilan aralashtirilgan shaffof qatrondan foydalandim va yaxshilab to'rt daqiqa davomida aralashtirdim. Buni qolipga to'kib tashladik, shundan keyin qatronga stakan qo'ydik, shundan keyin chiroq yoki svetodiod uchun bo'sh joy paydo bo'ldi. Taxminan 24 soatdan keyin bu qatronni olib tashlashga tayyor edi va optikasi juda yaxshi chiqdi. Havo pufakchalari bor, lekin hozircha menda qatronni to'kishdan oldin gazsizlantirish uchun vakuumli idish yo'q.

5 -qadam: 3D bosib chiqarish va tayyorlash

3D bosib chiqarish va tayyorlash
3D bosib chiqarish va tayyorlash
3D bosib chiqarish va tayyorlash
3D bosib chiqarish va tayyorlash
3D bosib chiqarish va tayyorlash
3D bosib chiqarish va tayyorlash

Model markaziy qism taglikka ulanadigan tarzda yaratilgan. Bu binoni jarayonida maskalanishdan saqlanish uchun qilingan. Butun model Hatchbox ABS -da chop etilgan va keyin zımparalanadi. 60 gritdan boshlab, taxminan 800 gritgacha, bu model uchun etarli darajada yaxshi sirt qoplamasini berdi.

6 -qadam: montaj va rasm

Rasm va montaj
Rasm va montaj
Rasm va montaj
Rasm va montaj
Rasm va montaj
Rasm va montaj

Bosimlarni silliqlashdan so'ng, u yuqori sifatli astar bilan bo'yalgan. Bir oz zımparalanadi va keyin kulrang astar bilan sepiladi. Asosiy qismlar ford signalli sariq rangga bo'yalgan, so'ngra tayanch uchun ishlatilgan yashil rangli brooklandlar. Tamiya kumushining diqqatga sazovor joylari murvatlarga va linzalar ushlagichida ishlatilgan molotov kumushli kromga qo'llanilgan.

7 -qadam: Avval chegara zonasida samolyotlarni toping

Uskuna saralangan holda, dasturiy ta'minot ustida ishlash kerak edi. Hozirda parvozlarni kuzatishni ta'minlaydigan bir nechta saytlar bor, lekin bu ma'lumotlarga kirish uchun API ta'minlaydigan ko'p emas. Ba'zilar buni faqat tijorat maqsadlarida qilishadi, lekin baxtga ko'ra, https://opensky-network.org deb nomlangan bitta sayt bor, siz undan tekin foydalanishingiz mumkin.

Ushbu ma'lumotlarga kirish uchun siz ro'yxatdan o'tishingiz kerak, keyin siz ularning API -dan foydalanishingiz mumkin, u ma'lumotlarni olishning bir nechta funktsiyalari va usullarini taqdim etadi. Biz mintaqadagi barcha reyslarga qiziqamiz va ular uchun Live API qo'ng'irog'i mavjud. https://opensky-network.org/apidoc/ chegara qutisi deb nomlangan. API chaqiruvi sizga qiziq bo'lgan qutining burchaklarini talab qiladi, albatta, markaziy nuqta sifatida bizning Lat/Lon. Siz matematik ishlarni bu saytda tekshirishingiz mumkin, bu siz kiritgan narsaga qarab katakchani belgilaydi. Http://tools.geofabrik.de, lekin hozircha quyidagi skript bizni API -ga ulashimiz kerak bo'lgan nuqtalarni beradi.

get_bounding_box funktsiyasi ($ 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); $ radiusi = 6371; $ parallel_radius = $ radius*cos ($ lat); $ lat_min = $ lat - $ half_side_in_km/$ radiusi; $ lat_max = $ lat + $ half_side_in_km/$ radiusi; $ 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); qaytish qatori ($ box_lat_min, $ box_lon_min, $ box_lat_max, $ box_lon_max);

Agar siz kodingizni tekshirmoqchi bo'lsangiz, siz lat/lon -ni kiritishingiz va natijalarni xaritada ko'rishingiz mumkin bo'lgan sayt bor: Xaritadagi chegara qutisi misolini ko'ring

8 -qadam: Bizga nisbatan samolyotlarning yo'nalishini hisoblash

Bizga bog'liq holda samolyotlarning sarlavhasini hisoblash
Bizga bog'liq holda samolyotlarning sarlavhasini hisoblash

API qo'ng'irog'ining chegara qutisidan olingan natijalar bizga samolyotlar ro'yxatini, ularning Lon/lat, tezlik, balandlik va sarlavhasini beradi. Shunday qilib, biz qilishimiz kerak bo'lgan har bir narsa, biz hech bo'lmaganda umumiy yo'nalishimizda ketayotganlarni qayta ishlashimiz uchun, har bir samolyotning o'ziga tegishli nomini olishdir. Biz buni o'z pozitsiyamizni bilgan holda qila olamiz va bizdan har bir tekislikka burchakni aniqlay olamiz.

Buning uchun men dastlab Javascript -da bo'lgan kodni ishlataman, shuning uchun uni PHP -ga o'zgartirdim, * Ikki nuqta orasidagi (dastlabki) hisobni hisoblash get_bearing funktsiyasi ($ home_lat, $ home_lon, $ tekislik_lat, $ tekislik_lon) {$ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ tekislik_lat);

$ dLon = deg2rad ($ tekislik_lon- $ uy_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 qaytarish;

Agar siz javascriptning asl nusxalari joylashgan sahifaga qarashni xohlasangiz, bu havola:

ushbu kod ichida siz har bir hisob turi uchun turli xil tartib -qoidalarni ko'rishingiz mumkin.

9 -qadam: aylanaga qarab kesishishni hisoblash

Doiraga qarab kesishishni hisoblash
Doiraga qarab kesishishni hisoblash

Shunday qilib, hozir bizda samolyot bor, u erda bizning joylashuvimiz orasidagi masofa 90 dan past (ijobiy yoki salbiy), shuning uchun uning yaqin uchib ketish ehtimoli bor. Haversine formulasidan foydalanib, biz samolyotning Lon/Lat va uyimizning Lon/Latini bizdan uzoqda bo'lgan masofadan foydalanib ham ishlashimiz mumkin.

Diagrammaga qarasak, agar biz o'z uyimiz atrofida aylanani aytsak, radiusi taxminan 3 mil bo'lganida, bu bizga uchib ketayotgan narsani ko'rish imkoniyatini beradi. Biz samolyot bilan biz orasidagi masofaning farqini bilamiz, shuningdek, bizdan samolyotning masofasini bilamiz, shunda biz eski SOHCAHTOA yordamida uchburchakni ishlab chiqa olamiz va bu holda biz burchakning tanini ishlatamiz. qarama -qarshi tomonning uzunligi. Agar biz bu qiymatni uy atrofidagi aylananing radius qiymatiga solishtirsak, biz uni ko'rishimiz uchun samolyot yaqin masofada uchib ketishini bilib olamiz. Biz qila oladigan keyingi narsa - bu havo tezligi va masofadan foydalanib, samolyot o'tib ketadigan vaqtni aniqlash va agar bu taxminan 45 soniyadan kam bo'lsa, biz chiroqni yoqamiz. Bu men uchib ketish imkoniyatini aniqlash uchun ishlatadigan kodning bir qismi. Men buni yaqin aeroport bo'lgani uchun qilaman va samolyotlar taksida o'tirganda, ular muqarrar ravishda uyga ishora qiladilar. Biroq, ularning balandligi nolga teng va tezlik tezlikda ketayotgani uchun bu signalni ishga solmasligi kerak.

get_intercept funktsiyasi ($ home_head, $ tekislik_head, $ tekislik_distance) {

$ flight_angle = abs (abs ($ home_head - $ təyyarasi) - 180); $ flight_angle_r = deg2rad ($ flight_angle); $ flight_angle_t = tan ($ flight_angle_r); $ flight_intercept = $ flight_angle_t * $ tekislik_distance;

if (($ flight_angle <90) && ($ flight_intercept <3)) {// o'tishi mumkin

}

$ flight_intercept -ni qaytaring;

}

10 -qadam: Xaritadagi ikkita nuqta orasidagi masofa - Haversin formulasi

Xaritadagi ikkita nuqta orasidagi masofa - Haversin formulasi
Xaritadagi ikkita nuqta orasidagi masofa - Haversin formulasi

Shunday qilib, biz samolyot va joylashuvimiz orasidagi masofani hisoblashimiz kerak. Xaritadagi qisqa masofalarda siz masofani taxminan hisoblashingiz mumkin edi, lekin er sharsimon bo'lgani uchun, egri sirtni hisobga olishga imkon beradigan haversin formulasi mavjud. Quyidagi formulada o'qishingiz mumkin:

Endi hisoblangan masofa va biz samolyotning havo tezligini bilsak, samolyot tepaga ko'tarilishidan necha soniya oldin bo'lishini aniqlay olamiz. Shunday qilib, agar chiroq uchib ketgandan keyin 30 soniya ichida biror narsa bo'lsa, chiroq yonadi va bizda ogohlantirish nuri bor.

* Instantglobe.com/CRANES/GeoCoordTool.html saytidagi 0n JS -ga asoslangan va PHPga aylangan */

get_distHaversine funktsiyasi ($ home_lat, $ home_lon, $ tekislik_lat, $ tekislik_lon) {$ R = 6371; // yerning o'rtacha radiusi km d $ dLat = deg2rad ($ tekislik_lat- $ home_lat); $ dLon = deg2rad ($ tekislik_lon- $ uy_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ tekislik_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 = $ R * $ c; $ d qaytarish; }

11 -qadam: Samolyotlar ma'lumotlar bazasini import qilish va aniqlash

Boshqa qismlardan biri shundaki, ochiladigan sayt samolyotlarning qo'ng'iroqlar va identifikatorlari bilan birga yuklab olinadigan ma'lumotlar bazasini taklif qiladi. Uning bir necha yuz ming yozuvlari. Shunday qilib, biz uni yuklab olishimiz va qidirish uchun MariaDB ma'lumotlar bazasiga mahalliy yuklashimiz mumkin (MySQL). Har bir samolyot tepada paydo bo'lganda, biz uning tafsilotlarini olamiz va hisoblagichni necha marta ko'rilganligini ko'rsatamiz.

Men ayni paytda men qiziqqan samolyotlarni ajratish uchun ma'lumotlar bazasini tahrir qilyapman. Asosan eski jangovar qushlar va shunga o'xshash boshqa qiziqarli samolyotlar. Bu yozda bir necha marta Mig-15 uchib ketdi. shuning uchun maqsad - men qo'shgan ogohlantirish maydonidan foydalanish va keyin biror narsa ketayotganida chiroqni tez o'chirish

12 -qadam: Natijalar va yangi xususiyatlarni yaxshilash

Natijalarni yaxshilash va yangi xususiyatlar
Natijalarni yaxshilash va yangi xususiyatlar
Natijalarni yaxshilash va yangi xususiyatlar
Natijalarni yaxshilash va yangi xususiyatlar
Natijalarni yaxshilash va yangi xususiyatlar
Natijalarni yaxshilash va yangi xususiyatlar

Shunday qilib, nazariy jihatdan hamma narsa juda yaxshi ishlaydi, lekin siz APIda ko'rinmaydigan uchadigan samolyotlar borligini bilib olasiz.

Buning sababi shundaki, hamma samolyotlar ham ADS-B transponderidan foydalanmaydi va MLAT asosida eski transponderlardan foydalanmaydi. MLAT -dan foydalangan holda samolyotlarning joylashuvi to'g'risida ma'lumot olish uchun, ularning pozitsiyalarini uchburchakda joylashtirish uchun bir qator qabul qiluvchilar kerak bo'ladi, va flehtradar24 kabi ba'zi saytlarda ochilganlarga qaraganda katta ishtirokchilar tarmog'i mavjud. Umid qilamanki, vaqt o'tishi bilan ularning qamrovi ham yaxshilanadi va men o'z ma'lumotimni qo'shish uchun o'z MLAT qabul qiluvchimni o'rnatyapman.

13 -qadam: ma'lumotlar bazasi

Shuni unutmangki, agar siz bundan foydalanmoqchi bo'lsangiz, agar sizda samolyotlar ma'lumotlar bazasi bo'lmasa, shuningdek, parvoz ma'lumotlariga kirish uchun o'z Lon/Lat qiymatini va API kalitini qo'shsangiz, SQL bayonotlarini olib tashlashingiz mumkin.

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

aniqlash ("INTERVAL", (20 * 1)); fexp () {$ lat = "kengligingiz" funktsiyasi; $ lon = "uzunligingiz"; $ tomon = 15.75; $ box = get_bounding_box ($ lat, $ lon, $ side); $ latmin = $ quti [0]; $ lonmin = $ quti [1]; $ latmax = $ quti [2]; $ lonmax = $ quti [3]; $ flyurl = "https://opensky-network.org/api/states/all?lamin=$latmin&lomin=$lonmin&lamax=$latmax&lomax=$lonmax"; echo "SKYni skanerlash"; $ start_time = mikrotime (rost); $ json = file_get_contents ($ flyurl); $ data = json_decode ($ json, TRUE); $ kiruvchi = FALSE; $ num_planes = hisoblash ($ ma'lumotlar ['shtatlar']); if ($ num_planes> 0) {echo "va biz $ num_planes samolyotlarini / n" ko'rishimiz mumkin; uchun ($ x = 0; $ x 0) {$ tekislik_eta = $ distplane/$ air_speed_kmh; } boshqa {$ eta = 1; } if ((($ intercept) 0)) && ($ distplane0) {$ inbound = TRUE; aks sado "------------------------------------------------ -------------------- / n "; echo "$ icao24 - [$ country $ callsign] at [$ geo_altitude_m M - $ geo_altitude_f ft]"; echo "[speed $ air_speed_kmh kmh and", round ($ distplane, 1), "km narida] n"; echo "[sarlavhasida", yumaloq ($ tekislik_boshlovchisi, 1), "] [homeangle $ heading_d]"; echo "[$ kenglik, $ uzunlik] n"; echo "[flypast in", decimal_to_time ($ tekislik_eta), "hozir", yumaloq ($ kesish, 1), "km narida / n"; aks sado "------------------------------------------------ -------------------- / n "; $ DBi = yangi mysqli ("127.0.0.1", "root", "parolingiz", "awacs"); $ sql = "samolyotlar ma'lumotlar bazasidan * ni tanlang, bu erda` icao24` = '$ icao24' "; mysqli_set_charset ($ DBi, "utf8"); $ getplanedata = mysqli_query ($ DBi, $ sql) yoki o'lib ketish (mysqli_error ($ DBi)); $ row_getplanedata = mysqli_fetch_assoc ($ getplanedata); $ rows_getplanedata = mysqli_num_rows ($ getplanedata); if ($ rows_getplanedata> 0) {do {echo "callsign ="; echo $ row_getplanedata ['ro'yxatdan o'tish']; echo "bu"; echo $ row_getplanedata ['ishlab chiqaruvchining nomi']; aks sado ""; echo $ row_getplanedata ['model']; echo "by"; echo $ row_getplanedata ['Manufacturicao']; echo "egalik qiladi"; echo $ row_getplanedata ['egasi']; aks -sado "ko'rilgan"; echo $ row_getplanedata ['tashriflar']; echo "vaqtlar"; echo "maxsus reyting ="; echo $ row_getplanedata ['maxsus']; echo "\ n"; $ tashriflar = $ row_getplanedata ['tashriflar']+1; } while ($ row_getplanedata = mysqli_fetch_assoc ($ getplanedata)); mysqli_free_result ($ getplanedata); $ sqli = "Samolyot ma'lumotlar bazasini SET tashriflarini YANGILASH = $ tashriflari UCHA icao24 = '$ icao24'"; mysqli_set_charset ($ DBi, "utf8"); $ updateplanedata = mysqli_query ($ DBi, $ sqli) yoki o'lib ketish (mysqli_error ($ DBi)); } else {echo "JBda bu samolyot topilmadi, shuning uchun uni qo'shib qo'ydi"; $ sqli = "INSERT INTO samolyotlar ma'lumotlar bazasi (icao24, tashriflar, maxsus) VALUES ('$ icao24', 1, 1)"; $ updateplanedata = mysqli_query ($ DBi, $ sqli) yoki o'lib ketish (mysqli_error ($ DBi)); } echo "----------------------------------------------- --------------------- / n "; } else {// echo "$ callsign"; }}} boshqa {echo "va osmon ochiq / n"; } if ($ inbound) {echo "Kiruvchi tekislik / n"; $ buyrug'i = "cho'chqalar w 17 1"; execInBackground ($ buyrug'i); } else {echo "kiruvchi reyslar yo'q / n"; $ command = "cho'chqalar w 17 0"; execInBackground ($ buyrug'i); }} funksiya decimal_to_time ($ o'nlik) {$ ofset = 0.002778; if ($ o'nlik> $ ofset) {$ o'nlik = $ o'nlik - 0.002778; } $ soat = gmdate ('H', qavat ($ o'nlik * 3600)); $ daqiqa = gmdate ('i', qavat ($ o'nlik * 3600)); $ seconds = gmdate ('s', qavat ($ o'nlik * 3600)); str_pad -ni qaytaring ($ soat, 2, "0", STR_PAD_LEFT). ":". str_pad ($ daqiqa, 2, "0", STR_PAD_LEFT). ":". str_pad ($ soniya, 2, "0", STR_PAD_LEFT); }/ * * ikkita nuqta orasidagi * boshlang'ichni hisoblang * * dan: Ed Uilyamsning aviatsiya formulasi, https://williams.best.vwh.net/avform.htm#Crs * source = instantglobe.com/CRANES/GeoCoordTool. html */ get_bearing funktsiyasi ($ home_lat, $ home_lon, $ tekislik_lat, $ tekislik_lon) {$ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ tekislik_lat); $ dLon = deg2rad ($ tekislik_lon- $ uy_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 qaytarish; } get_intercept funktsiyasi ($ home_head, $ təyyarasi_koshi, $ tekisligi_distance) {$ flight_angle = abs (abs ($ home_head - $ samolyot_head) - 180); $ flight_angle_r = deg2rad ($ flight_angle); $ flight_angle_t = tan ($ flight_angle_r); $ flight_intercept = $ flight_angle_t * $ tekislik_distance; $ flight_intercept -ni qaytaring; } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *// * * Haversin formulasidan foydalanib, * kenglik/uzunlik (sonli darajalarda) * * tomonidan ko'rsatilgan ikkita nuqta orasidagi masofani (km bilan) hisoblash: Haversin formulasi - RWSinnott, "Haversin fazilatlari", * Osmon va teleskop, 68 -jild, 2 -son, 1984 * https://williams.best.vwh.net/avform.htm#Crs * * formadan foydalanish misollari: * result.value = LatLon.distHaversine (lat1.value.parseDeg (), long1.value.parseDeg (), * lat2.value.parseDeg (), long2.value.parseDeg ()); * bu erda lat1, long1, lat2, long2 va natija - shakl maydonlari * source = instantglobe.com/CRANES/GeoCoordTool.html */function get_distHaversine ($ home_lat, $ home_lon, $ təyyarasi, $ tekislik_lon) {$ R = 6371; // yerning o'rtacha radiusi km d $ dLat = deg2rad ($ tekislik_lat- $ home_lat); $ dLon = deg2rad ($ tekislik_lon- $ uy_lon); $ lat1 = deg2rad ($ home_lat); $ lat2 = deg2rad ($ tekislik_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 = $ R * $ c; $ d qaytarish; } get_bounding_box funktsiyasi ($ 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); $ radiusi = 6371; # Berilgan kenglikdagi parallel radiusi; $ parallel_radius = $ radius*cos ($ lat); $ lat_min = $ lat - $ half_side_in_km/$ radiusi; $ lat_max = $ lat + $ half_side_in_km/$ radiusi; $ 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); qaytish qatori ($ box_lat_min, $ box_lon_min, $ box_lat_max, $ box_lon_max); } funktsiyasi execInBackground ($ cmd) {if (substr (php_uname (), 0, 7) == "Windows") {pclose (popen ("start /B". $ cmd, "r")); } boshqa {exec ($ cmd. "> /dev /null &"); }} funktsiyasi checkForStopFlag () {// butunlay ixtiyoriy qaytish (TRUE); } funksiya start () {echo "boshlang'ich / n"; $ buyrug'i = "cho'chqalar w 17 1"; execInBackground ($ buyrug'i); $ faol = TRUE; while ($ active) {usleep (1000); // ixtiyoriy, agar ehtiyot bo'lishni istasangiz, agar (microtime (true)> = $ nextTime) {fexp (); $ nextTime = microtime (true) + INTERVAL; } $ faol = checkForStopFlag (); }} fexp (); boshlash (); ?>

14 -qadam: LED va O'chirish tugmachasini ulash

LED va O'chirish tugmachasini ulash
LED va O'chirish tugmachasini ulash

Loyihaning simli ulanishi, albatta, osonroq bo'la olmaydi. 17 -pin va 270R rezistorli erga ulangan bitta LED bor.

Shuningdek, men TXd ma'lumot pinidan o'chadigan LED bilan birga o'chirish va yoqish tugmachasini o'z ichiga olaman. O'chirish funktsiyasi va kerakli kod haqida ko'proq ma'lumotni https://github.com/Howchoo/pi-power-button.git saytida https://howchoo.com/g/mwnlytk3zmm/how-to- saytidan o'qishingiz mumkin. Quvvat chiroqini qo'shish haqida o'qishingiz mumkin

Tavsiya: