İçindekiler:
- Adım 1: Basit Donanım
- 2. Adım: Eskizler
- 3. Adım: Eric Kroki
- Adım 4: PHP Kodu
- Adım 5: Videolar ve Daha Fazla ISS ve Ham Bilgisi
- Adım 6: Son Düşünceler…
Video: Basit ISS Bildirim Sistemi: 6 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:21
Uluslararası Uzay İstasyonu nedir ve nerede olduğunu neden tahmin etmek istiyorsunuz?
İlk soruyu cevaplamak için bir cevap için NASA web sitesine bakabiliriz. Hangisi kısaca:
Uluslararası Uzay İstasyonu büyük bir uzay aracıdır. Dünya'nın etrafında dönüyor. Astronotların yaşadığı bir evdir. Uzay istasyonu aynı zamanda bir bilim laboratuvarıdır. Birçok ülke onu inşa etmek için birlikte çalıştı. Ayrıca onu kullanmak için birlikte çalışırlar. Uzay istasyonu birçok parçadan oluşur. Parçalar astronotlar tarafından uzayda bir araya getirildi. Uzay istasyonunun yörüngesi Dünya'nın yaklaşık 220 mil üzerindedir. NASA, uzayda yaşamayı ve çalışmayı öğrenmek için istasyonu kullanıyor. Bu dersler NASA'nın uzayı keşfetmesine yardımcı olacak.
www.nasa.gov/audience/forstudents/k-4/stor…
İkinci soruyu cevaplamak biraz daha zor - Ama deneyeceğim.
Ben bir Amatör Radyo Operatörüyüm (veya Ham Radyo Operatörü) - her zaman eğlenceli bulduğum bir şey, düşük güçlü (5 watt veya daha az) bir el telsizi kullanmak ve yörüngedeki uydularla iletişim kurmaktı. ISS gemide radyo ekipmanına sahiptir.
Jambon günlerimin başlarında, uydularla biraz iletişim kurarım, hatta sadece lastik ördek anteniyle bazı bağlantılar kurarım - yapması çok zor bir şey. APRS (otomatik paket raporlama sistemi) kullanarak ISS ile birkaç bağlantı kurdum. 2013'teydi - uzun zaman önce, o zamandan beri çok hareketsizdim. Sana geri dönmek istediğim bir şeydi.
2013'te komut satırı için bana ISS'nin yerini söyleyecek ve ne zaman biteceğini tahmin etmeye yardımcı olacak birkaç PHP betiği yazdım. O zaman bir göz kırpma çubuğu kullandım ve ISS yaklaştıkça renk değiştirmesini sağladım. https://open-notify.org'daki çalışma ve API'si sayesinde bunları yapmak oldukça kolaydı.
2018 - 5 yıl sonra nihayet bu PHP'yi Arduino C'ye dönüştürdüm (aslında yapması çok kolaydı.)
Projem bir D-Duino kullanıyor (ki bu gerçekten yerleşik bir OLED'li bir NodeMCU'dur), hepsi bu kadar.
Hâlâ https://open-notify.org adresinden aynı API'yi kullanıyorum
Ayrıca bir D1 Mini ve bir WS2812 Kalkanı kullanmak için bazı kodlar yazdım (bununla ilgili daha fazla bilgi için Süpervizör Eric Projeme bakın).
Adım 1: Basit Donanım
D-Duino (NodeMCU)
www.aliexpress.com/item/NodeMCU-CP2102-ESP…
İşte bu, gerekli olan tek şey bu. Elbette diğer donanımları da kullanabilirsiniz - bu, I2C OLED kullanabilen herhangi bir ESP8266 cihazında çalışmalıdır. D-Duino, çoğunlukla OLED'in eklenmesiyle bir NodeMCU'dur.
Kod https://github.com/kd8bxp/Simple-ISS-Notification-… adresinde bulunabilir.
Arduino IDE'de ESP8266 kartlarının kurulu olması gerekir. Talimatlar burada bulunabilir:
(en kolay yol pano yöneticisidir)
Ayrıca bazı kitaplıklara da ihtiyacınız olacak - bunların hepsinin artık kitaplık yöneticisinde bulunabileceğini düşünüyorum (ancak bundan %100 emin değilim).
Gerekli Kütüphaneler: ArduinoJson.h
Adafruit_NeoPixel
WifiManager.h
TimeLib.h
esp8266-oled-ssd1306
(TIMELib'i nereden aldığımdan emin değilim ve belki Arduino IDE'ye dahil edilmiştir?)
Bunları kurmanın en basit yolu kütüphane yöneticisini kullanmaktır. Değilse, her kitaplıktaki talimatları izleyin.
2. Adım: Eskizler
Şu anda github deposuna dahil edilmiş iki eskiz ve üç PHP betiği var.
D-Duino donanımıyla yukarıdan kullanılması gereken DDuino_ISS_notification.
Ve "People of Earth" projesindeki önceki "Supervisor Eric"imi kullanan EricISS notification. (Daha sonra bu konuda daha fazlası)
Her iki çizimde de 30. satıra yakın (veya ona gerçekten yakın bir yerde) - mylat ve mylon adında birkaç değişken değişken göreceksiniz. Enlem ve Boylam bilgileriniz ile bu iki çizgiyi değiştirmeniz gerekecektir - Enlem ve Boylamınızı bilmiyorsanız bu web sitesini kullanabilirsiniz https://www.latlong.net Kasabanızın merkezi iyi olmalıdır. Çıkardığınız enlem veya boylamla eşleşmesi gerekmez. Eskizler, ABD Millerinde ISS'nin yaklaşık mesafesini bulmak için biraz yuvarlama ve diğer matematik işlemleri yapıyor.
Bence skeçlerde değiştirilmesi gereken tek şey bu.
Mesafe hesaplaması için matematik, iki nokta arasındaki büyük daire mesafesine dayanmaktadır ve resmi burada bulunabilir -
Bu site, iki enlem ve boylam arasındaki mesafenin yanı sıra kerteriz arasındaki mesafenin nasıl hesaplanacağı hakkında birçok bilgi sağlar. Bunun için herhangi bir rulman hesaplaması kullanmıyoruz.
Formalin çalışması için bir teta almamız ve bir dereceyi radyant'a çevirmemiz gerekir, bunun tersi de radyantı dereceye çevirmemiz gerekir. Arduino o kadar iyi matematik yapmadığı için, dönüşümlerle biraz yardım etmemiz gerekiyor.
geçersiz getDistance() {
float teta, dist, mil;
teta = mylon - isslon;
dist = günah(deg2rad(mylat)) * günah(deg2rad(isslat)) + cos(deg2rad(mylat)) * cos(deg2rad(isslat)) * cos(deg2rad(theta));
dist = acos(dist); dist = rad2deg(dist);
mil = uzak * 60 * 1.1515;
mesafe = mil;
}
float deg2rad(float n) {
kayan radyan = (n * 71)/4068;
dönüş radyan;
}
float rad2deg(float n) {
kayan nokta derecesi = (n*4068)/71;
dönüş derecesi;
}
Matematiğin büyük kısmı 127. satırın yakınında yapılır - EĞER farklı bir mesafe istiyorsanız (KM veya Deniz Mili)
"mil = dist * 60 * 1.1515;" değerini değiştirebilirsiniz. hat.
KM için "mil = (dist*60*1.1155) * 1.609344;" gibi bir şey olurdu.
Deniz Milleri için "mil = (dist*60*1.1155)*0.8684;" gibi bir şey
Muhtemelen, yeni ölçümünüze göre kilometreler yazan Seri baskı satırını ve OLED ekran satırını da değiştirmek isteyeceksiniz.
Bu, DDuino_ISS_notification taslağındaki satır 86 ve 96'dır.
3. Adım: Eric Kroki
Süpervizör Eric, TBS TV People of Earth'ten bir AI veya uzaylı, Lütfen yapımdaki diğer Eğitilebilir Tabloma bakın.
Bu bildirim sistemi için ihtiyacınız olan en temel şey, bir D1 Mini ve WS2812 kalkanıdır - güzel bir lensli güzel bir kutuda bulundurmak, iyi görünmesini sağlar.
Bir kez daha, WS2812 pikselli herhangi bir ESP8266 çalışmalıdır, burada gerçekten bir sihir yoktur - WS2812 kalkanı D1 mini'deki D2'ye bağlıdır (bunun NodeMCU panolarında ve belki diğer ESP8266 panolarında pin 4 olduğuna inanıyorum).
Kroki için:
Yukarıdaki gibi, 27. satırın yakınındaki çizimde enlem ve boylamınızı değiştirmeniz gerekecektir. Ve yukarıdaki gibi, bu çizim de enlem ve boylamlar arasındaki mesafeyi hesaplar. Yukarıdaki çizimden farklı olarak, bu tek ekran WS2812 Neopiksel LED'lidir.
Matematik satır 96'ya yakındır, ancak bunun dışında yukarıdakiyle aynıdır. Neler olup bittiğini görmek istiyorsanız hala seri çıktı var. Bu Sketch yalnızca ISS konum ve mesafe hesaplamaları yapar - geçiş tahminlerini veya uzayda kaç kişinin olduğunu yapmaz.
* Unutulmamalıdır ki buradaki mesafe Mil cinsindendir, isterseniz değiştirilebilir, ancak birimleriniz için birkaç değişiklik daha yapmanız gerekecektir. *
Yakın Hat 116:
geçersiz setColor() {
if (mesafe =1201) {colorDisplay(strip. Color(255, 0, 0), p);}
if (mesafe =1151) {colorDisplay(strip. Color(255, 153, 0), p);} //bana daha sarı görünüyor
if (mesafe = 951) {colorDisplay(strip. Color(255, 255, 0), p);} //bana yeşil/sarı görünüyor
if (mesafe <=950) {colorDisplay(strip. Color(0, 255, 0), p);}
if (mesafe >= 1351) {colorDisplay(strip. Color(0, 0, 0), p);}
}
Birimler mil cinsindendir ve KM veya NM olarak değiştirmeniz gerekiyorsa bu satırları da değiştirmek isteyeceksiniz.
Burada neler oluyor, 1350 milde, ISS tam ufukta ve radyodan transponderleri duymaya başlayabilirsiniz - bu harika değil ve bu noktada iletişim gerçekten olamaz. LED KIRMIZIya dönüyor - bu bir uyarı - ISS yaklaşıyor.
Kısa bir süre sonra veya ISS 1150 ile 1200 mil arasındaysa, LED turuncuya döner - bu gerçekten daha sarı görünür ancak turuncu olması desteklenir. - 1150 mil'de biraz daha fazla duymaya başlamalısınız - 5 watt HT'de muhtemelen iki yönlü iletişim mümkün olmayacaktır.
950 ila 1150 mil arasında - LED sarıya dönmelidir - temas kurmak için iyi bir şansınız var - hala harika değil, ama en azından bu noktada mümkün (Sarı bana sarıdan daha yeşil görünüyor - bu yüzden çalışacak başka bir şey var) üzerinde)
950 milin altında LED sabit YEŞİL olacaktır - ve iki yönlü temas kurulabilir.
ISS LED'den uzaklaştıkça Yeşil'den Sarı'ya, Turuncu'dan Kırmızı'ya ve ardından son olarak KAPALI'ya gidecektir.
Burada not edilmelidir, bunların hepsi çok hızlı gerçekleşir - bölgemdeki geçişlerin çoğu 10 dakikadan kısa sürer ve normal kullanılabilir temas süresi 5 dakikanın altındadır.
Ayrıca ISS'nin konumunu değiştirebileceğine ve API'nin güncellenip güncellenmeyebileceğine dikkat edilmelidir - bu nedenle yeşil ışık yansa bile - hiçbir şey duymayabilirsiniz.
** Amatör ekipmanı çalıştırmak isteğe bağlı ve gönüllü olarak da yapılır ve ekipmanı çalıştırmaya çalışırken güç için veya yapmaları gerekenlerden dolayı kapatmak zorunda kaldıkları zamanlar vardır. AMsat veya ARISS web sitelerini kontrol etmek her zaman iyi bir fikirdir **
Adım 4: PHP Kodu
Github deposuna 2013'ten itibaren PHP kodumu ekledim.
Kod, CLI'den (veya Komut satırından) çalışacak şekilde tasarlanmıştır. Bunları yazalı epey oldu ama sanırım tek gereklilik JSON uzantılarının etkinleştirilmesiydi.
Komut dosyaları hala çalışıyor ve bunları çalıştırmak istiyorsanız, bunu yapmaktan çekinmeyin!
Windows Kullanıcıları için burada PHP https://windows.php.net/ kurulumu hakkında bilgi bulunmaktadır.
CLI sürümünü yüklediğinizden emin olun. Yüklerken hangi uzantıların açılacağını seçebileceğinizi düşünüyorum.
Linux kullanıcıları dağıtımınıza bağlıdır - Ubuntu tabanlı bir dağıtım kullanıyorum - ve paket yöneticim olarak sinaptik.
php7.0-common, php7.0-json, php7.0-cli, php7.0-curl isteyeceksiniz
Bunlarla CURL kullandığımı sanmıyorum, bu yüzden buna ihtiyacınız olmayabilir. Geri kalanı, seçtiğiniz paket yöneticinizde veya https://php.net web sitesinde bulunmalıdır.
Komut dosyalarının ikisinin enlem ve boylamınızla düzenlenmesi gerekecek - bunlar çok uzun değil ve değiştirilmesi gerekenler komut dosyasının tam üstünde. Bunlar iss-location.php ve iss-pass-api.php'dir.
iss-location.php'de eski flash stick çağrılarım kaldı - bunların artık işe yaradığından emin değilim - ama LED'i "Eric Bildirimi" ile yaptığım gibi değiştirdiğimi görebilirsiniz. Herhangi bir soruna neden olduklarını sanmıyorum, ancak bunları yorumlamak isteyebilirsiniz.
iss-pass-api.php epoch zamanını kullanır ve tahmin edilen geçişlerin yerel zamanını verir. Dürüst olmak gerekirse, DDuino sürümüyle karşılaştırıldığında bu betiğin PHP sürümünü tercih ediyorum (şu anda yalnızca UTC tahminlerini yapıyor)
PHP sürümü ayrıca görüntülenmek için daha iyi biçimlendirilmiştir - ancak bu gerçekten küçük bir şeydir.
Son PHP betiği iss-people.php - ve isimleri ve hangi uzay gemisinde olduklarını gösterecek. Tüm yaptığı bu. (Ve bu bilgi sık sık değişmez)
PHP betiğini komut satırından çalıştırmanın temelleri şunlardır:
$ php iss-people.php
PHP dosyaları metin dosyalarıdır ve herhangi bir metin düzenleyici tarafından açılabilir. Windows kullanıcıları, bunları hem satır hem de satır dönüşleri olsun diye kaydettiğimi düşünüyorum. EĞER https://www.editpadlite.com/ onlar için işe yarayabilir.
Adım 5: Videolar ve Daha Fazla ISS ve Ham Bilgisi
Amerika Birleşik Devletleri'nde Jambon Lisansı Alma:
ABD'de değil mi? Her ülkenin kendi kuralları ve lisans kılavuzları vardır - iletişiminizi kimin yönettiğini kontrol edin (Burada ABD'de FCC Federal İletişim Komisyonu budur)
Enlem ve boylam noktaları arasındaki mesafeyi, yönü ve daha fazlasını hesaplayın.
Open Notify'ın çok kullanışlı API'leri olmadan bunu yapmak çok daha zor olurdu.
Uzay İstasyonu Yerden Nasıl Görülür?
AMSAT Radyo Amatör Uydu
ISS'de Radyo Hakkında AMSAT Bilgileri
ARISS Amatör Radyo Uluslararası Uzay İstasyonunda
ISS Fan Club - ISS Frekansları
APRS'de Wikipedia Girişi
APRS.org
Adım 6: Son Düşünceler…
Bu çok basit bir donanıma sahip eğlenceli bir projeydi.
Değiştirmek istediğim birkaç şey var ama genel olarak sonuçlardan çok memnunum.
Değiştirilmesi gereken şeyler:
1) UTC'de değil, yerel saatte geçen tahminlere sahip olmanın bir yolunu bulun
2) Turuncu ve sarı için daha iyi renk kodu numaraları bulun.
3) OLED ve 4 Neopiksel ile ESP32 X-board ile çalışacak şekilde güncelleyin.
Bunu veya herhangi bir projemi faydalı veya eğlenceli bulursanız, lütfen beni destekleyin.
Aldığım her şey daha fazla parça satın almak ve daha fazla/daha iyi projeler yapmak için gidiyor.
www.patreon.com/kd8bxp
ko-fi.com/lfmiller
Önerilen:
Harita Oluşturucu - Haritalama + Bildirim Sistemi: 9 Adım
Harita Oluşturucu - Haritalama + Bildirim Sistemi: Gece sürüşü oldukça eğlencelidir. Ancak çoğu zaman, yolun karşısına geçen hayvanlar şeklinde bir kabus olduğu ortaya çıkıyor (özellikle de karşıya geçebilmeleri için yanlarına gitmenizi bekleyen başıboş kedi ve köpekler!!). Bu yüzden öyle yapmayı düşündüm
ForgetMeNot - Akıllı Ev Bildirim Platformu: 14 Adım (Resimlerle)
ForgetMeNot - Akıllı Ev Bildirim Platformu: Meşgul üniversite öğrencileri olarak, dersler, işler ve aile yükümlülükleri arasında koşuştururken, küçük şeyleri unutma eğilimindeyiz. Bir doğum günü biz fark etmeden gelir ve gider, tamamen unutkanlık nedeniyle önemli bir son teslim tarihi kaçırılır ve bazen, sadece
Geri Bildirim Toplama Sistemi: 4 Adım
Geribildirim Toplama Sistemi: Etkinlikler ve çalıştaylar sonrasında geri bildirim toplamak her zaman ilgi çekicidir. Bu sorunu çözmek için arduino tabanlı bir geri bildirim toplama sistemi yaptık. Bu projede, basılan düğmeye göre geri bildirim toplayacak bir elektronik cihaz yapacağız,
IoT Tabanlı Çamaşırhane Bildirim Sistemi: 18 Adım
IoT Tabanlı Çamaşırhane Bildirim Sistemi: HiBu talimat, IoT tabanlı bir çamaşırhane bildirim sisteminin nasıl oluşturulacağı konusunda adım adım giriş sağlar. Cihaz, çekmecelerinize ve çamaşır çantanıza takılıdır. Burada demo olsun diye iki çekmece ve bir çamaşır torbası aldık. Hissediyor
Otomatik Kahve Bildirim Sistemi: 7 Adım (Resimli)
Otomatik Kahve Bildirim Sistemi: Bu projede, birisi taze bir demlik kahve hazırladığında Slack bildirimleri gönderen bir kahve uyarı sistemi kurarak bir ofis kahve makinesini akıllı hale getiriyorum. Kod, bir e-posta veya kısa mesaj göndermek için değiştirilebilir. Bu proje bir R üzerine inşa edilmiştir