Paprasta ISS pranešimų sistema: 6 žingsniai (su paveikslėliais)
Paprasta ISS pranešimų sistema: 6 žingsniai (su paveikslėliais)
Anonim
Paprasta ISS pranešimų sistema
Paprasta ISS pranešimų sistema
Paprasta ISS pranešimų sistema
Paprasta ISS pranešimų sistema

Kas yra Tarptautinė kosminė stotis ir kodėl norite nuspėti, kur ji yra?

Norėdami atsakyti į pirmąjį klausimą, atsakymo galime ieškoti NASA svetainėje. Kas trumpai yra:

Tarptautinė kosminė stotis yra didelis erdvėlaivis. Jis skrieja aplink Žemę. Tai namai, kuriuose gyvena astronautai. Kosminė stotis taip pat yra mokslo laboratorija. Daugelis šalių kartu dirbo ją kurdamos. Jie taip pat dirba kartu, kad jį naudotų. Kosminė stotis sudaryta iš daugybės dalių. Gabalėlius erdvėje surinko astronautai. Kosminės stoties orbita yra maždaug 220 mylių virš Žemės. NASA naudoja stotį, kad sužinotų apie gyvenimą ir darbą kosmose. Šios pamokos padės NASA tyrinėti kosmosą.

www.nasa.gov/audience/forstudents/k-4/stor…

Į antrąjį klausimą atsakyti šiek tiek sunkiau - bet aš pabandysiu.

Aš esu radijo mėgėjas (arba „Ham Radio“operatorius) - vienas dalykas, kuris man visada buvo įdomus, buvo naudoti mažos galios rankinį (5 vatų ar mažiau) radiją ir bendrauti su orbitoje skriejančiais palydovais. ISS turi radijo įrangą.

Ankstyvosiomis kumpio dienomis aš gana dažnai bendrauju su palydovais, netgi užmezgau kontaktus tik su gumine antine antena - tai labai sunku padaryti. Aš užmezgiau keletą kontaktų su ISS naudodamas APRS (automatinę paketų ataskaitų teikimo sistemą). Tai buvo 2013 m. - seniai buvau labai neaktyvi. Tai kažkas, ką norėjau sugrįžti į tave.

2013 m. Komandinei eilutei parašiau keletą PHP scenarijų, kurie man pasakytų ISS vietą ir padėtų nuspėti, kada tai bus virš galvos. Tuo metu aš naudoju mirksėjimo lazdelę ir pakeičiau spalvas artėjant TKS. Dėl darbo adresu https://open-notify.org ir jo API juos buvo gana lengva padaryti.

2018 - po 5 metų aš pagaliau konvertavau šiuos PHP į „Arduino C“(iš tikrųjų tai buvo labai lengva padaryti.)

Mano projekte naudojamas „D-Duino“(kuris iš tikrųjų yra „NodeMCU“su OLED bortu), ir viskas.

Aš vis dar naudoju tą pačią API iš

Aš taip pat parašiau tam tikrą kodą, kad galėčiau naudoti „D1 Mini“ir „WS2812 Shield“(daugiau apie tai žr. Mano vadovą Ericą).

1 žingsnis: paprasta aparatinė įranga

Paprasta aparatinė įranga
Paprasta aparatinė įranga

„D-Duino“(„NodeMCU“)

www.aliexpress.com/item/NodeMCU-CP2102-ESP…

Tai yra viskas, ko reikia. Žinoma, galite naudoti kitą aparatūrą - tai turėtų veikti bet kuriame ESP8266 įrenginyje, kuris gali naudoti I2C OLED. „D-Duino“iš esmės yra „NodeMCU“, pridėjus OLED.

Kodą rasite

Į „Arduino IDE“turėsite įdiegti ESP8266 plokštes. Instrukcijas rasite čia:

(lengviausias būdas yra naudojant lentų tvarkyklę)

Jums taip pat reikės kai kurių bibliotekų - manau, kad visa tai dabar galima rasti bibliotekos tvarkytuvėje (bet nesu tuo 100% tikras).

Reikalingos bibliotekos: ArduinoJson.h

„Adafruit_NeoPixel“https://github.com/adafruit/Adafruit_NeoPixel

„WifiManager.h“https://github.com/adafruit/Adafruit_NeoPixel

LaikasLib.h

esp8266-oled-ssd1306

(Aš nesu tikras, iš kur aš gavau „TImeLib“ir galbūt jis įtrauktas į „Arduino IDE“?)

Paprasčiausias būdas juos įdiegti yra bibliotekos tvarkyklė. Jei ne, vadovaukitės kiekvienos bibliotekos instrukcijomis.

2 žingsnis: eskizai

Eskizai
Eskizai

Šiuo metu „github“saugykloje yra du eskizai ir trys PHP scenarijai.

„DDuino_ISS_notification“, kuris turėtų būti naudojamas su „D-Duino“aparatine įranga iš viršaus.

Ir „EricISSnotification“, kuriame naudojamas mano ankstesnis „supervizorius Ericas“iš projekto „Žmonės iš žemės“. (Daugiau apie tai vėliau)

Abiejuose eskizuose netoli 30 linijos (arba kažkur tikrai arti jos) - pamatysite porą plūdės kintamųjų, vadinamų mylat ir mylon. Turėsite pakeisti šias dvi eilutes naudodami savo platumą ir ilgumą - jei nežinote savo platumos ir ilgumos, galite naudotis šia svetaine https://www.latlong.net Jūsų miesto centre turėtų būti viskas gerai. Jis neturi atitikti jūsų nustatytos platumos ar ilgumos. Eskizai šiek tiek apvalina, o kita matematika pateikia apytikslį TKS atstumą JAV myliomis.

Manau, kad tai yra vienintelis dalykas, kurį reikia pakeisti eskizuose.

Atstumo skaičiavimo matematika yra pagrįsta didžiojo apskritimo atstumu tarp dviejų taškų, o oficialųjį rasite čia-https://www.movable-type.co.uk/scripts/latlong.htm…

Šioje svetainėje pateikiama daug informacijos apie tai, kaip apskaičiuoti atstumą tarp dviejų platumos ir ilgumos bei guolio. Tam mes nenaudojame jokių guolių skaičiavimų.

Kad formaliai veiktų, turime gauti teta ir tam tikrą laipsnį paversti spinduliuojančiu, o atvirkščiai - spinduliuojančiu laipsniu. Kadangi „Arduino“nelabai moka matematikos, turime šiek tiek padėti jai atlikti konversijas.

void getDistance () {

plūdė teta, dist, mylios;

teta = mylon - isslon;

dist = sin (deg2rad (mylat)) * sin (deg2rad (isslat)) + cos (deg2rad (mylat)) * cos (deg2rad (isslat)) * cos (deg2rad (teta));

dist = acos (dist); dist = rad2deg (dist);

mylios = dist * 60 * 1,1515;

atstumas = mylios;

}

float deg2rad (float n) {

plūdės radianas = (n * 71)/4068;

grąžinimo radianas;

}

plūdė rad2deg (plūdė n) {

plūdės laipsnis = (n*4068)/71;

grąžinimo laipsnis;

}

Didžioji dalis matematikos atliekama netoli 127 linijos - JEI norėtumėte kitokio atstumo (tarkime, KM arba jūrmylės)

galite pakeisti "mylių = dist * 60 * 1,1515;" linija.

KM tai būtų kažkas panašaus į "mylių = (dist*60*1.1515)*1.609344;"

„Nautical Miles“kažkas panašaus į „mylių = (dist*60*1,1515)*0,8684;“

Tikriausiai taip pat norėsite pakeisti serijinio spausdinimo eilutę ir OLED ekrano eilutę, nurodančią mylių iki naujo matavimo.

Tai yra DDuino_ISS_notification eskizo 86 ir 96 eilutės.

3 žingsnis: Eriko eskizas

Eriko eskizas
Eriko eskizas
Eriko eskizas
Eriko eskizas
Eriko eskizas
Eriko eskizas

Prižiūrėtojas Ericas yra dirbtinis intelektas arba ateivis iš TBS televizijos „Žmonės iš Žemės“. Žr. Kitą mano instrukciją.

Šiai pranešimų sistemai jums labai reikalingas „D1 Mini“ir „WS2812“skydas - turint jį gražioje dėžutėje su gražiu objektyvu, jis atrodo gerai.

Vėlgi, bet koks ESP8266 su WS2812 pikseliu turėtų veikti, čia tikrai nėra jokios magijos - „WS2812“skydas yra prijungtas prie D2 „D1 mini“(kuris, manau, yra 4 kaištis „NodeMCU“plokštėse, o gal ir kitos ESP8266 plokštės).

Prie eskizo:

Kaip ir aukščiau, eskize šalia 27 linijos turėsite pakeisti savo platumą ir ilgumą. Kaip ir aukščiau, eskizas taip pat apskaičiuoja atstumą tarp platumos ir ilgumos. Skirtingai nuo aukščiau eskizo, šis ekranas yra tik su WS2812 Neopixel LED.

Matematika yra netoli 96 linijos, bet kitaip yra tokia pati kaip aukščiau. Jei norite pamatyti, kas vyksta, vis dar yra serijinė išvestis. Šis eskizas atlieka tik ISS vietos ir atstumo skaičiavimus - jis neatlieka praėjimo prognozių ar žmonių skaičiaus erdvėje.

* Reikėtų pažymėti, kad atstumas čia yra Miles, jei norite, jį galima pakeisti, tačiau turėsite atlikti dar keletą pakeitimų savo vienetams. *

Netoli 116 linijos:

void setColor () {

if (atstumas = 1201) {colorDisplay (strip. Color (255, 0, 0), p);}

if (atstumas = 1151) {colorDisplay (strip. Color (255, 153, 0), p);} // man atrodo labiau geltona

if (atstumas = 951) {colorDisplay (strip. Color (255, 255, 0), p);} // man atrodo žalia/geltona

if (atstumas <= 950) {colorDisplay (strip. Color (0, 255, 0), p);}

if (atstumas> = 1351) {colorDisplay (strip. Color (0, 0, 0), p);}

}

Vienetai yra myliomis, o jei jums reikia pakeisti į KM arba NM, taip pat norėsite pakeisti šias eilutes.

Kas čia vyksta, tu, 1350 mylių atstumu, ISS yra tiesiog horizonte, ir tu gali tiesiog pradėti girdėti atsakiklius iš radijo - tai nėra puiku, o bendravimas šiuo metu tikrai negali įvykti. Šviesos diodas tampa RAUDONAS - tai yra aukštyn - ISS artėja.

Po trumpo laiko arba jei ISS yra nuo 1150 iki 1200 mylių, šviesos diodas pasidarys oranžinis - tai iš tikrųjų atrodo labiau geltona, tačiau palaikoma oranžinė spalva. - 1150 mylių atstumu turėtumėte pradėti girdėti šiek tiek daugiau - dvipusis ryšys greičiausiai vis tiek nebus įmanomas naudojant 5 vatų HT.

Nuo 950 iki 1150 mylių - šviesos diodas turėtų pagelsti - jūs turite gerą galimybę užmegzti kontaktą - vis tiek nėra puiku, bet bent jau šiuo metu tai įmanoma (geltona spalva man atrodo labiau žalia nei geltona - taigi kažkas gali veikti) įjungta)

Mažiau nei 950 mylių šviesos diodas bus tvirtas ŽALIAS - ir galima užmegzti abipusį kontaktą.

Kai ISS nutolsta nuo šviesos diodo, jis iš žalios į geltoną pereis į oranžinę į raudoną ir galiausiai išjungs.

Reikėtų pažymėti, kad visa tai vyksta labai greitai - dauguma praėjimų mano rajone trunka mažiau nei 10 minučių, o įprastas tinkamas naudoti kontaktinis laikas yra mažesnis nei 5 minutės.

Taip pat reikėtų pažymėti, kad ISS gali pakeisti savo buvimo vietą ir kad API gali būti atnaujinta arba neatnaujinta, taigi, net jei turite žalią šviesą, galite nieko negirdėti.

** Mėgėjiška įranga taip pat veikia neprivalomai ir savanoriškai, ir nors jie bando paleisti įrangą, yra laiko, kai jie turi ją išjungti dėl elektros energijos arba dėl to, ką jiems reikia padaryti. Visada gera idėja yra patikrinti „AMsat“ar ARISS svetaines **

4 žingsnis: PHP kodas

PHP kodas
PHP kodas

Į „github“saugyklą įtraukiau savo PHP kodą nuo 2013 m.

Kodas buvo sukurtas paleisti iš CLI (arba komandinės eilutės). Jau seniai rašiau, bet manau, kad vienintelis reikalavimas buvo įjungti JSON plėtinius.

Scenarijai vis dar veikia, ir jei norite juos paleisti, nedvejodami tai padarykite!

„Windows“vartotojams čia yra informacijos apie PHP diegimą

Būtinai įdiekite CLI versiją. Manau, kad diegdami galite pasirinkti, kuriuos plėtinius įjungti.

„Linux“vartotojai priklauso nuo jūsų distribucijos - aš naudoju „Ubuntu“pagrįstą distro - ir „sinaptic“kaip savo paketų tvarkyklę.

Norėsite „php7.0-common“, „php7.0-json“, „php7.0-cli“, „php7.0-curl“

Nemanau, kad su jais naudoju CURL, todėl jums to gali neprireikti. Likusią dalį galite rasti pasirinktame paketų tvarkytuvėje arba https://php.net svetainėje.

Du scenarijus reikės redaguoti atsižvelgiant į jūsų platumą ir ilgumą - jie nėra labai ilgi, o tai, ką reikia pakeisti, yra scenarijaus viršuje. Jie yra iss-location.php ir iss-pass-api.php

iss -location.php yra mano senų mirksėjimo skambučių skambučių - aš nesu tikras, kad jie nebeveikia - bet matote, kad šviesos diodą keičiau beveik taip pat, kaip ir „Erico pranešimas“. Nemanau, kad jie sukelia problemų, bet galbūt norėsite juos pakomentuoti.

iss-pass-api.php naudoja epochos laiką ir pateikia vietinį numatytų praėjimų laiką. Atvirai kalbant, man labiau patinka šio scenarijaus PHP versija, palyginti su „DDuino“versija (šiuo metu tai tik UTC prognozės)

PHP versija taip pat yra gražesnė, kad būtų rodoma - bet tai tikrai nereikšmingas dalykas.

Galutinis PHP scenarijus yra iss -people.php - jame bus rodomi jų pavadinimai ir erdvėlaiviai. Tai viskas. (Ir ši informacija dažnai nesikeičia)

PHP scenarijaus paleidimo iš komandų eilutės pagrindai yra šie:

$ php iss-people.php

PHP failai yra teksto failai ir juos gali atidaryti bet kuris teksto redaktorius. Manau, kad „Windows“vartotojai juos išsaugojau, kad jie galėtų grąžinti linijas ir vežimus. Jiems ne, jei ne

5 veiksmas: vaizdo įrašai ir daugiau informacijos apie ISS ir kumpį

Image
Image

Kumpio licencijos gavimas Jungtinėse Valstijose:

Ne JAV? Kiekviena šalis turi savo taisyklių rinkinį ir licencijų vadovus - pasitarkite, kas valdo jūsų ryšius (čia, JAV, FCC Federalinė komunikacijos komisija)

Apskaičiuokite atstumą, guolį ir daugiau tarp platumos ir ilgumos taškų.

Tai būtų buvę daug sunkiau padaryti be labai naudingų „Open Notify“API

Kaip pamatyti kosminę stotį iš žemės.

AMSAT radijo mėgėjų palydovas

AMSAT informacija radijuje ISS

ARISS mėgėjų radijas Tarptautinėje kosminėje stotyje

ISS gerbėjų klubas - ISS dažniai

Įrašas Vikipedijoje apie APRS

APRS.org

6 žingsnis: paskutinės mintys …

Tai buvo įdomus projektas su labai paprasta aparatūra.

Yra keletas dalykų, kuriuos norėčiau pakeisti, bet apskritai esu labai patenkinta rezultatais.

Dalykai, kuriuos reikia keisti:

1) Sugalvokite būdą, kaip numatyti prognozes vietos laiku, o ne UTC

2) Raskite geresnius oranžinės ir geltonos spalvų kodų numerius.

3) Atnaujinkite, kad galėtumėte dirbti su ESP32 X plokšte, su OLED ir 4 neopikseliais.

Jei manote, kad šis ar bet kuris mano projektas yra naudingas ar malonus, palaikykite mane.

Viskas, ką gaunu, perka daugiau dalių ir sukuria daugiau/geresnių projektų.

www.patreon.com/kd8bxp

ko-fi.com/lfmiller