สารบัญ:

ระบบการแจ้งเตือน ISS อย่างง่าย: 6 ขั้นตอน (พร้อมรูปภาพ)
ระบบการแจ้งเตือน ISS อย่างง่าย: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ระบบการแจ้งเตือน ISS อย่างง่าย: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ระบบการแจ้งเตือน ISS อย่างง่าย: 6 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: EP 9 การทำระบบแจ้งเตือนผ่าน Facebook 2024, กรกฎาคม
Anonim
ระบบการแจ้งเตือน ISS อย่างง่าย
ระบบการแจ้งเตือน ISS อย่างง่าย
ระบบการแจ้งเตือน ISS อย่างง่าย
ระบบการแจ้งเตือน ISS อย่างง่าย

สถานีอวกาศนานาชาติคืออะไรและทำไมคุณถึงต้องการทำนายว่าอยู่ที่ไหน

เพื่อตอบคำถามแรก เราสามารถดูที่เว็บไซต์ของ NASA เพื่อหาคำตอบ ซึ่งโดยย่อคือ:

สถานีอวกาศนานาชาติเป็นยานอวกาศขนาดใหญ่ มันโคจรรอบโลก เป็นบ้านที่มนุษย์อวกาศอาศัยอยู่ สถานีอวกาศยังเป็นห้องทดลองวิทยาศาสตร์อีกด้วย หลายประเทศทำงานร่วมกันเพื่อสร้างมันขึ้นมา พวกเขายังทำงานร่วมกันเพื่อใช้งาน สถานีอวกาศที่ทำขึ้นจากหลายชิ้น ชิ้นส่วนเหล่านี้ถูกประกอบขึ้นในอวกาศโดยนักบินอวกาศ วงโคจรของสถานีอวกาศอยู่ห่างจากโลกประมาณ 220 ไมล์ NASA ใช้สถานีนี้เพื่อเรียนรู้เกี่ยวกับการใช้ชีวิตและการทำงานในอวกาศ บทเรียนเหล่านี้จะช่วยให้ NASA สำรวจอวกาศ

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

คำถามที่สองตอบยากขึ้นเล็กน้อย - แต่ฉันจะพยายาม

ฉันเป็นนักวิทยุสมัครเล่น (หรือ Ham Radio Operator) - สิ่งหนึ่งที่ฉันพบความสนุกมาตลอดคือการใช้วิทยุมือถือพลังงานต่ำ (5 วัตต์หรือน้อยกว่า) และสื่อสารกับดาวเทียมที่โคจรอยู่ สถานีอวกาศนานาชาติมีอุปกรณ์วิทยุอยู่บนเรือ

ช่วงแรกๆ ที่ฉันกินแฮม ฉันมักจะสื่อสารกับดาวเทียมบ้าง แม้กระทั่งติดต่อกับเสาอากาศเป็ดยาง ซึ่งเป็นสิ่งที่ยากมากที่จะทำ ฉันได้ติดต่อกับสถานีอวกาศนานาชาติสองสามแห่งโดยใช้ APRS (ระบบรายงานแพ็คเก็ตอัตโนมัติ) นั่นคือในปี 2013 - นานมาแล้ว ฉันไม่มีการใช้งานมากตั้งแต่นั้นมา เป็นสิ่งที่ฉันต้องการกลับเข้าไปในตัวคุณ

ในปี 2013 ฉันเขียนสคริปต์ PHP สองสามตัวสำหรับบรรทัดคำสั่งที่จะบอกตำแหน่งของสถานีอวกาศนานาชาติ และช่วยทำนายว่าเมื่อใดที่มันจะอยู่เหนือหัว ตอนนั้นฉันใช้แท่งกะพริบตา และให้มันเปลี่ยนสีเมื่อสถานีอวกาศนานาชาติเข้าใกล้ ขอบคุณที่ทำงานที่ https://open-notify.org และ API ของเขา มันค่อนข้างง่ายที่จะสร้างสิ่งเหล่านี้

2018 - 5 ปีต่อมา ในที่สุดฉันก็แปลง PHP เหล่านี้เป็น Arduino C (อันที่จริงมันง่ายมากที่จะทำ)

โปรเจ็กต์ของฉันใช้ D-Duino (ซึ่งเป็น NodeMCU จริง ๆ ที่มี OLED บนบอร์ด) นั่นคือทั้งหมดที่มี

ฉันยังคงใช้ API เดิมจาก

ฉันยังเขียนโค้ดเพื่อใช้ D1 Mini และ WS2812 Shield (ดูโครงการหัวหน้างาน Eric สำหรับข้อมูลเพิ่มเติม)

ขั้นตอนที่ 1: ฮาร์ดแวร์อย่างง่าย

ฮาร์ดแวร์ที่เรียบง่าย
ฮาร์ดแวร์ที่เรียบง่าย

ดี-ดูอิโน (NodeMCU)

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

นั่นคือทั้งหมดที่จำเป็น แน่นอน คุณสามารถใช้ฮาร์ดแวร์อื่นๆ ได้ ซึ่งควรใช้งานได้กับอุปกรณ์ ESP8266 ใดๆ ที่สามารถใช้ I2C OLED ได้ D-Duino ส่วนใหญ่เป็น NodeMCU ด้วยการเพิ่ม OLED

รหัสสามารถพบได้

คุณจะต้องติดตั้งบอร์ด ESP8266 ใน Arduino IDE คำแนะนำสามารถพบได้ที่นี่:

(วิธีที่ง่ายที่สุดคือใช้ตัวจัดการบอร์ด)

คุณจะต้องมีไลบรารี่ด้วย - ฉันคิดว่าทั้งหมดนี้สามารถพบได้ในตัวจัดการห้องสมุดในขณะนี้ (แต่ฉันไม่แน่ใจ 100% เกี่ยวกับเรื่องนั้น)

ไลบรารีที่จำเป็น: ArduinoJson.h

Adafruit_NeoPixel

WifiManager.h

TimeLib.h

esp8266-oled-ssd1306

(ฉันไม่แน่ใจว่าฉันได้ TImeLib มาจากไหน และอาจรวมอยู่ใน Arduino IDE หรือไม่)

วิธีที่ง่ายที่สุดในการติดตั้งสิ่งเหล่านี้คือการใช้ตัวจัดการไลบรารี หากไม่ปฏิบัติตามคำแนะนำของห้องสมุดแต่ละแห่ง

ขั้นตอนที่ 2: ภาพสเก็ตช์

The Sketches
The Sketches

ขณะนี้มีภาพร่างสองแบบและสคริปต์ PHP สามรายการรวมอยู่ในที่เก็บ github

Dduino_ISS_notification ซึ่งควรใช้กับฮาร์ดแวร์ D-Duino จากด้านบน

และการแจ้งเตือนของ EricISS ซึ่งใช้ "Supervisor Eric" คนก่อนของฉันจากโครงการ "People of Earth" (เพิ่มเติมเกี่ยวกับเรื่องนี้ในภายหลัง)

ในภาพร่างทั้งสองใกล้บรรทัดที่ 30 (หรือที่ใกล้เคียงจริงๆ) - คุณจะเห็นตัวแปรโฟลตสองสามตัวที่เรียกว่า mylat และ mylon คุณจะต้องเปลี่ยนสองบรรทัดนี้ด้วยละติจูดและลองจิจูดของคุณ - หากคุณไม่รู้จัก Lat และ Lon คุณสามารถใช้เว็บไซต์นี้ https://www.latlong.net ใจกลางเมืองของคุณน่าจะใช้ได้ ไม่จำเป็นต้องตรงกับละติจูดหรือลองจิจูดของคุณ ภาพสเก็ตช์ใช้การปัดเศษ และการคำนวณอื่นๆ เพื่อหาระยะทางโดยประมาณของสถานีอวกาศนานาชาติในไมล์สหรัฐ

ฉันเชื่อว่านี่เป็นสิ่งเดียวที่จำเป็นต้องเปลี่ยนในภาพร่าง

คณิตศาสตร์สำหรับการคำนวณระยะทางนั้นอิงจากระยะห่างของวงกลมใหญ่ระหว่างจุดสองจุด และสามารถหาค่าเป็นทางการได้ที่นี่ -

ไซต์นี้ให้ข้อมูลมากมายเกี่ยวกับวิธีการคำนวณระยะทางระหว่างสองละติจูดและลองจิจูดรวมทั้งแบริ่ง เราไม่ได้ใช้การคำนวณแบริ่งสำหรับสิ่งนี้

สำหรับการทำงานที่เป็นทางการ เราจำเป็นต้องได้รับ theta และแปลงระดับเป็นระดับ Radiant และในทางกลับกัน คือ Radiant เป็นดีกรี เนื่องจาก Arduino คิดเลขได้ไม่ดี เราจึงต้องช่วยเรื่องการแปลงเล็กน้อย

เป็นโมฆะ getDistance () {

float theta, dist, ไมล์;

theta = mylon - อิสลอน;

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

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

ไมล์ = ระยะทาง * 60 * 1.1515;

ระยะทาง = ไมล์;

}

float deg2rad (ลอย n) {

เรเดียนลอย = (n * 71)/4068;

เรเดียนกลับ;

}

ลอย rad2deg (ลอย n) {

องศาลอย = (n*4068)/71;

ระดับผลตอบแทน;

}

คณิตศาสตร์ส่วนใหญ่ทำใกล้เส้น 127 - หากคุณต้องการระยะทางอื่น (เช่น KM หรือ Nautical Miles)

คุณสามารถเปลี่ยน "miles = dist * 60 * 1.1515;" ไลน์.

สำหรับ KM จะเป็น "miles = (dist*60*1.1515) * 1.609344;"

สำหรับ Nautical Miles เช่น "miles = (dist*60*1.1515)*0.8684;"

คุณอาจต้องการเปลี่ยนสายการพิมพ์แบบอนุกรมและเส้นแสดงผล OLED ที่ระบุว่าเป็นไมล์ไปยังการวัดใหม่ของคุณ

ซึ่งเป็นบรรทัดที่ 86 และ 96 ใน Dduino_ISS_notification sketch

ขั้นตอนที่ 3: The Eric Sketch

The Eric Sketch
The Eric Sketch
The Eric Sketch
The Eric Sketch
The Eric Sketch
The Eric Sketch

หัวหน้างาน Eric เป็น AI หรือมนุษย์ต่างดาวจาก TBS TV People of Earth โปรดดูคำแนะนำอื่น ๆ ของฉันในการสร้างของฉัน

พื้นฐานที่สุดที่คุณต้องการสำหรับระบบการแจ้งเตือนนี้คือ D1 Mini และ WS2812 shield - การมีไว้ในกล่องที่สวยงามพร้อมเลนส์ที่สวยงามทำให้ดูดี - ดีมาก

เป็นอีกครั้งที่ ESP8266 ที่มีพิกเซล WS2812 ใช้งานได้ ไม่มีเวทมนตร์เกิดขึ้นจริง - โล่ WS2812 เชื่อมต่อกับ D2 บน D1 mini (ซึ่งฉันเชื่อว่าเป็นพิน 4 บนบอร์ด NodeMCU และอาจเป็นบอร์ด ESP8266 อื่น ๆ)

ไปที่ร่าง:

คุณจะต้องเปลี่ยนละติจูดและลองจิจูดในภาพร่างใกล้กับเส้น 27 และเช่นเดียวกับข้างต้น ภาพร่างนี้ยังคำนวณระยะห่างระหว่างละติจูดและลองจิจูดด้วย ต่างจากภาพร่างด้านบน จอแสดงผลนี้มีเฉพาะ WS2812 Neopixel LED

คณิตศาสตร์อยู่ใกล้เส้น 96 แต่อย่างอื่นก็เหมือนกับข้างบน ยังมีเอาต์พุตแบบอนุกรมหากคุณต้องการดูว่าเกิดอะไรขึ้น Sketch นี้ใช้เฉพาะการคำนวณตำแหน่งและระยะทางของ ISS เท่านั้น ไม่ได้ทำการคาดการณ์ผ่านหรือจำนวนคนในอวกาศ

* ควรสังเกตว่าระยะทางที่นี่เป็นไมล์ สามารถเปลี่ยนได้หากต้องการ แต่คุณจะต้องทำการเปลี่ยนแปลงเพิ่มเติมอีกเล็กน้อยสำหรับหน่วยของคุณ *

ใกล้สาย 116:

เป็นโมฆะ setColor () {

if (ระยะทาง =1201) {colorDisplay(strip. Color(255, 0, 0), p);}

if (ระยะทาง =1151) {colorDisplay(strip. Color(255, 153, 0), p);} // ดูเป็นสีเหลืองมากขึ้นสำหรับฉัน

if (distance = 951) {colorDisplay(strip. Color(255, 255, 0), p);} // มองเป็นสีเขียว/เหลือง

ถ้า (ระยะทาง <=950) {colorDisplay(strip. Color(0, 255, 0), p);}

ถ้า (ระยะทาง >= 1351) {colorDisplay(strip. Color(0, 0, 0), p);}

}

หน่วยเป็นไมล์ และถ้าคุณต้องการเปลี่ยนเป็น KM หรือ NM คุณจะต้องเปลี่ยนเส้นเหล่านี้ด้วย

เกิดอะไรขึ้นที่นี่ ที่ 1,350 ไมล์ ISS อยู่ที่ขอบฟ้า และคุณสามารถเริ่มได้ยินช่องสัญญาณจากวิทยุ - ไม่ดีนัก และการสื่อสาร ณ จุดนี้ไม่สามารถเกิดขึ้นได้จริงๆ ไฟ LED เปลี่ยนเป็นสีแดง - นี่คือการเตือนล่วงหน้า - สถานีอวกาศนานาชาติกำลังเข้าใกล้

หลังจากช่วงเวลาสั้นๆ หรือหากสถานีอวกาศนานาชาติอยู่ระหว่าง 1,150 ถึง 1200 ไมล์ ไฟ LED จะเปลี่ยนเป็นสีส้ม ซึ่งจริงๆ แล้วดูเหมือนเป็นสีเหลืองมากกว่าแต่สนับสนุนให้เป็นสีส้ม - ที่ 1,150 ไมล์ คุณควรเริ่มได้ยินเสียงมากขึ้น - การสื่อสารสองทางอาจจะยังไม่สามารถทำได้บน 5 วัตต์ HT

ระหว่าง 950 ถึง 1150 ไมล์ - ไฟ LED ควรเปลี่ยนเป็นสีเหลือง - คุณมีโอกาสที่ดีในการติดต่อ - ยังไม่ค่อยดี แต่อย่างน้อยก็เป็นไปได้ ณ จุดนี้ (สีเหลืองดูเป็นสีเขียวมากกว่าสีเหลือง - ดังนั้นอย่างอื่นที่ใช้งานได้ บน)

ภายใต้ 950 ไมล์ LED จะเป็นสีเขียวทึบ - และสามารถทำการติดต่อสองทางได้

เมื่อสถานีอวกาศนานาชาติเคลื่อนออกจาก LED จะเปลี่ยนจากสีเขียวเป็นสีเหลืองเป็นสีส้มเป็นสีแดงและสุดท้ายจะเป็นปิด

ควรสังเกตไว้ที่นี่ ทั้งหมดนี้เกิดขึ้นเร็วมาก - ผ่านส่วนใหญ่ในพื้นที่ของฉันไม่เกิน 10 นาที และเวลาติดต่อที่ใช้งานได้ปกติจะต่ำกว่า 5 นาที

นอกจากนี้ ควรสังเกตด้วยว่า ISS สามารถเปลี่ยนตำแหน่งได้ และ API อาจมีหรือไม่มีการอัปเดต - ดังนั้นแม้ว่าคุณจะมีไฟเขียว - คุณอาจไม่ได้ยินอะไรเลย

** การใช้อุปกรณ์สำหรับมือสมัครเล่นนั้นสามารถทำได้โดยไม่จำเป็นและเป็นไปโดยสมัครใจเช่นกัน และในขณะที่พวกเขาพยายามเรียกใช้อุปกรณ์ ก็มีเวลาที่พวกเขาต้องปิดเครื่องเพื่อจ่ายไฟ หรือเพราะสิ่งที่พวกเขาต้องทำ คุณควรตรวจสอบเว็บไซต์ AMsat หรือ ARISS เสมอ **

ขั้นตอนที่ 4: รหัส PHP

รหัส PHP
รหัส PHP

ในที่เก็บ github ฉันได้รวมโค้ด PHP ของฉันไว้ตั้งแต่ปี 2013

รหัสได้รับการออกแบบให้ทำงานจาก CLI (หรือบรรทัดคำสั่ง) นานแล้วที่ฉันเขียนสิ่งเหล่านี้ แต่ฉันคิดว่าข้อกำหนดเพียงอย่างเดียวคือต้องเปิดใช้งานส่วนขยาย JSON

สคริปต์ยังคงใช้งานได้ และหากคุณต้องการเรียกใช้สคริปต์ ก็ทำได้ตามสบาย!

สำหรับผู้ใช้ Windows มีข้อมูลเกี่ยวกับการติดตั้ง PHP

อย่าลืมติดตั้งเวอร์ชัน CLI ฉันคิดว่าเมื่อคุณติดตั้ง คุณสามารถเลือกส่วนขยายที่จะเปิดได้

ผู้ใช้ Linux ขึ้นอยู่กับ distro ของคุณ - ฉันใช้ distro ที่ใช้ Ubuntu - และ synaptic เป็นตัวจัดการแพ็คเกจของฉัน

คุณจะต้องการ php7.0-common, php7.0-json, php7.0-cli, php7.0-curl

ฉันไม่คิดว่าฉันเคยใช้ CURL กับสิ่งเหล่านี้ ดังนั้นคุณอาจไม่จำเป็นต้องใช้อันนั้น ส่วนที่เหลือควรอยู่ในตัวจัดการแพ็คเกจที่คุณเลือกหรือบนเว็บไซต์

สคริปต์สองรายการจะต้องได้รับการแก้ไขด้วยละติจูดและลองจิจูดของคุณ โดยมีความยาวไม่มากนัก และสิ่งที่ต้องเปลี่ยนอยู่ที่ด้านบนสุดของสคริปต์ คือ iss-location.php และ iss-pass-api.php

iss-location.php มีการเรียกแท่งไฟกะพริบแบบเก่าของฉัน - ฉันไม่แน่ใจว่ามันใช้งานได้แล้ว - แต่คุณจะเห็นว่าฉันกำลังเปลี่ยน LED ในลักษณะเดียวกับที่ฉันทำกับ "Eric Notification" ฉันไม่คิดว่าพวกเขากำลังก่อให้เกิดปัญหาใด ๆ แต่คุณอาจต้องการแสดงความคิดเห็น

iss-pass-api.php ใช้เวลา epoch และให้เวลาท้องถิ่นของเวลาที่คาดการณ์ไว้ พูดตามตรงฉันชอบเวอร์ชัน PHP ของสคริปต์นี้เมื่อเปรียบเทียบกับเวอร์ชัน Dduino (ซึ่งตอนนี้ทำการคาดการณ์ UTC เท่านั้น)

เวอร์ชัน PHP ยังมีรูปแบบที่ดีกว่าสำหรับการแสดงผล - แต่นั่นก็เป็นเรื่องเล็กน้อยจริงๆ

สคริปต์ PHP สุดท้ายคือ iss-people.php - และจะแสดงชื่อและยานอวกาศที่พวกเขาอยู่บน นั่นคือทั้งหมดที่ทำ (และข้อมูลนี้ไม่ได้เปลี่ยนแปลงบ่อย)

พื้นฐานของการรันสคริปต์ PHP จากบรรทัดคำสั่งคือ:

$ php iss-people.php

ไฟล์ PHP เป็นไฟล์ข้อความ และสามารถเปิดได้โดยโปรแกรมแก้ไขข้อความใดๆ ผู้ใช้ Windows ฉันคิดว่าฉันบันทึกไว้เพื่อให้มีทั้งบรรทัดและขึ้นบรรทัดใหม่ หากไม่ใช่ https://www.editpadlite.com/ อาจใช้งานได้สำหรับพวกเขา

ขั้นตอนที่ 5: วิดีโอและข้อมูล ISS & Ham เพิ่มเติม

Image
Image

รับใบอนุญาตแฮมในสหรัฐอเมริกา:

ไม่ได้อยู่ในสหรัฐอเมริกา? แต่ละประเทศมีชุดกฎเกณฑ์และคู่มือใบอนุญาต - ตรวจสอบว่าใครเป็นผู้ควบคุมการสื่อสารของคุณ (ในสหรัฐฯ นั่นคือ FCC Federal Communications Commision)

คำนวณระยะทาง แบริ่ง และอื่นๆ ระหว่างจุดละติจูดและลองจิจูด

นี่คงเป็นเรื่องยากกว่ามากหากไม่มี API ที่มีประโยชน์จาก Open Notify

วิธีดูสถานีอวกาศจากพื้นดิน

AMSAT วิทยุสมัครเล่น ดาวเทียม

ข้อมูล AMSAT ทางวิทยุ ISS

ARISS วิทยุสมัครเล่น สถานีอวกาศนานาชาติ

ISS Fan Club - ISS Frequencies

รายการ Wikipedia บน APRS

APRS.org

ขั้นตอนที่ 6: ความคิดสุดท้าย…

นี่เป็นโครงการที่สนุก มีฮาร์ดแวร์ที่ง่ายมาก

มีหลายสิ่งที่ฉันอยากจะเปลี่ยน แต่โดยรวมแล้ว ฉันมีความสุขมากกับผลลัพธ์ที่ได้

สิ่งที่ต้องเปลี่ยน:

1) คิดหาวิธีที่จะผ่านการคาดการณ์ตามเวลาท้องถิ่น ไม่ใช่UTC

2) ค้นหาหมายเลขรหัสสีที่ดีกว่าสำหรับสีส้มและสีเหลือง

3) อัปเดตเพื่อใช้งานกับบอร์ด ESP32 X-board พร้อม OLED และ 4 Neopixels

หากคุณพบว่าโครงการนี้หรือโครงการใด ๆ ของฉันมีประโยชน์หรือสนุกสนาน โปรดสนับสนุนฉัน

ทุกสิ่งที่ฉันทำคือซื้อชิ้นส่วนเพิ่มเติมและทำโครงการให้มากขึ้น/ดีขึ้น

www.patreon.com/kd8bxp

ko-fi.com/lfmiller

แนะนำ: