Mục lục:

Hệ thống thông báo ISS đơn giản: 6 bước (có hình ảnh)
Hệ thống thông báo ISS đơn giản: 6 bước (có hình ảnh)

Video: Hệ thống thông báo ISS đơn giản: 6 bước (có hình ảnh)

Video: Hệ thống thông báo ISS đơn giản: 6 bước (có hình ảnh)
Video: NGƯỜI THÀNH CÔNG LUÔN CÓ LỐI ĐI RIÊNG #Shorts 2024, Tháng bảy
Anonim
Hệ thống thông báo ISS đơn giản
Hệ thống thông báo ISS đơn giản
Hệ thống thông báo ISS đơn giản
Hệ thống thông báo ISS đơn giản

Trạm Vũ trụ Quốc tế là gì và Tại sao bạn muốn dự đoán nó ở đâu?

Để trả lời câu hỏi đầu tiên, chúng ta có thể xem trang web của NASA để biết câu trả lời. Nói ngắn gọn là:

Trạm vũ trụ quốc tế là một tàu vũ trụ lớn. Nó quay quanh Trái đất. Đây là ngôi nhà nơi các phi hành gia sinh sống, trạm vũ trụ cũng là một phòng thí nghiệm khoa học. Nhiều quốc gia đã làm việc cùng nhau để xây dựng nó. Họ cũng làm việc cùng nhau để sử dụng nó. Trạm vũ trụ được làm từ nhiều mảnh. Các mảnh ghép được các phi hành gia ghép lại với nhau trong không gian. Quỹ đạo của trạm vũ trụ cách Trái đất khoảng 220 dặm. NASA sử dụng trạm để tìm hiểu về cuộc sống và làm việc trong không gian. Những bài học này sẽ giúp NASA khám phá không gian.

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

Câu hỏi thứ hai khó trả lời hơn một chút - Nhưng tôi sẽ cố gắng.

Tôi là Điều hành viên vô tuyến nghiệp dư (hay Điều hành viên vô tuyến Ham) - một điều mà tôi luôn cảm thấy thú vị là sử dụng một chiếc radio cầm tay có công suất thấp (5 watt trở xuống) và giao tiếp với các vệ tinh quay quanh. ISS có thiết bị vô tuyến trên tàu.

Những ngày đầu còn ham chơi, tôi thường liên lạc với các vệ tinh khá ít, thậm chí còn liên lạc chỉ với một chiếc ăng-ten cao su hình mỏ vịt - một điều rất khó thực hiện. Tôi đã thực hiện một vài liên hệ với ISS bằng APRS (hệ thống báo cáo gói tự động) Đó là vào năm 2013 - một thời gian dài trước đây, tôi đã rất ít hoạt động kể từ đó. Đó là điều mà tôi muốn lấy lại cho bạn.

Vào năm 2013, tôi đã viết một vài đoạn mã PHP cho dòng lệnh sẽ cho tôi biết vị trí của ISS và giúp dự đoán khi nào nó sẽ hoạt động. Vào thời điểm đó, tôi đã sử dụng một thanh nhấp nháy và nó sẽ thay đổi màu sắc khi ISS đến gần. Nhờ công việc tại https://open-notify.org và API của anh ấy, việc tạo ra chúng khá dễ dàng.

2018 - 5 năm sau, cuối cùng tôi đã chuyển đổi những PHP này sang Arduino C (thực sự thì nó rất dễ làm.)

Dự án của tôi sử dụng D-Duino (thực sự là một NodeMCU với màn hình OLED trên bo mạch), đó là tất cả những gì cần có.

Tôi vẫn đang sử dụng cùng một API từ

Tôi cũng đã viết một số mã để sử dụng D1 Mini và WS2812 Shield (xem Người giám sát Eric Project của tôi để biết thêm về điều đó).

Bước 1: Phần cứng đơn giản

Phần cứng đơn giản
Phần cứng đơn giản

D-Duino (NodeMCU)

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

Đó là nó, đó là tất cả những gì được yêu cầu. Tất nhiên bạn có thể sử dụng phần cứng khác - điều này sẽ hoạt động trên bất kỳ thiết bị ESP8266 nào có thể sử dụng I2C OLED. D-Duino phần lớn là NodeMCU với việc bổ sung OLED.

Mã có thể được tìm thấy

Bạn sẽ cần phải cài đặt bảng ESP8266 trong Arduino IDE. Hướng dẫn có thể được tìm thấy ở đây:

(cách dễ nhất là với trình quản lý bảng)

Bạn cũng sẽ cần một số thư viện - tôi nghĩ rằng tất cả những thứ này có thể được tìm thấy trong trình quản lý thư viện ngay bây giờ (nhưng tôi không chắc chắn 100% về điều đó).

Thư viện cần thiết: ArduinoJson.h

Adafruit_NeoPixel

WifiManager.h

TimeLib.h

esp8266-oled-ssd1306

(Tôi không chắc mình lấy TImeLib từ đâu và nó có thể được bao gồm trong Arduino IDE ??)

Cách đơn giản nhất để cài đặt chúng là sử dụng trình quản lý thư viện. Nếu không làm theo hướng dẫn với từng thư viện.

Bước 2: Bản phác thảo

Bản phác thảo
Bản phác thảo

Hiện tại có hai bản phác thảo và ba tập lệnh PHP được bao gồm trong kho lưu trữ github.

DDuino_ISS_notification sẽ được sử dụng với phần cứng D-Duino từ bên trên.

Và EricISSnotification sử dụng "Người giám sát Eric" trước đây của tôi từ chương trình "Người của Trái đất". (Thêm về điều này sau)

Trong cả hai bản phác thảo gần dòng 30 (hoặc một nơi nào đó thực sự gần với nó) - Bạn sẽ thấy một vài biến số float được gọi là mylat và mylon. Bạn sẽ cần thay đổi hai đường này với Vĩ độ và Kinh độ của mình - nếu bạn không biết Vĩ độ và Kinh độ của mình, bạn có thể sử dụng trang web này https://www.latlong.net Trung tâm thị trấn của bạn sẽ ổn. Nó không cần phải khớp với vĩ độ hoặc kinh độ đã khai quật của bạn. Các bản phác thảo thực hiện một số phép làm tròn và các phép toán khác để đưa ra khoảng cách gần đúng với ISS tính bằng Dặm Hoa Kỳ.

Tôi tin rằng đây là điều duy nhất cần thay đổi trong các bản phác thảo.

Các phép tính để tính khoảng cách dựa trên khoảng cách đường tròn lớn giữa hai điểm và phương pháp này có thể được tìm thấy tại đây -

Trang web này cung cấp rất nhiều thông tin về cách tính khoảng cách giữa hai vĩ độ và kinh độ cũng như mang. Chúng tôi không sử dụng bất kỳ tính toán chịu lực nào cho việc này.

Để trang trọng hoạt động, chúng ta cần phải có một theta và chuyển đổi một mức độ nào đó thành rạng rỡ, và ngược lại, rạng rỡ theo mức độ. Vì Arduino không làm toán quá tốt, chúng tôi phải giúp nó một chút với các chuyển đổi.

void getDistance () {

float theta, dist, dặm;

theta = mylon - Isslon;

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

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

dặm = dist * 60 * 1,1515;

khoảng cách = dặm;

}

float deg2rad (float n) {

float radian = (n * 71) / 4068;

trả về radian;

}

float rad2deg (float n) {

độ nổi = (n * 4068) / 71;

trả lại bằng cấp;

}

Phần lớn các phép toán được thực hiện gần dòng 127 - NẾU bạn muốn một khoảng cách khác (giả sử KM hoặc Dặm Hải lý)

bạn có thể thay đổi "dặm = dist * 60 * 1.1515;" hàng.

Đối với KM, nó sẽ là một cái gì đó giống như "dặm = (dist * 60 * 1.1515) * 1.609344;"

Đối với Dặm hải lý một cái gì đó như "dặm = (dist * 60 * 1,1515) * 0,8684;"

Có thể bạn cũng sẽ muốn thay đổi dòng in Serial và dòng màn hình OLED cho biết số dặm đối với phép đo mới của bạn.

Đó là dòng 86 và 96 trong bản phác thảo DDuino_ISS_notification.

Bước 3: Phác thảo Eric

Phác thảo Eric
Phác thảo Eric
Phác thảo Eric
Phác thảo Eric
Phác thảo Eric
Phác thảo Eric

Người giám sát Eric là một AI hoặc người ngoài hành tinh từ Đài truyền hình TBS Người của Trái đất, Vui lòng xem Người hướng dẫn khác của tôi trên bản dựng của tôi.

Điều cơ bản bạn cần cho hệ thống thông báo này là D1 Mini và tấm chắn WS2812 - có nó trong một chiếc hộp đẹp với một ống kính đẹp làm cho nó trông - cũng đẹp.

Một lần nữa, bất kỳ ESP8266 nào có điểm ảnh WS2812 sẽ hoạt động, thực sự không có điều kỳ diệu nào xảy ra ở đây - Tấm chắn WS2812 được kết nối với D2 trên D1 mini (mà tôi tin là chân 4 trên bảng NodeMCU và có thể là các bảng ESP8266 khác).

Đối với bản phác thảo:

Như ở trên, bạn sẽ cần thay đổi vĩ độ và kinh độ của mình trong bản phác thảo gần dòng 27. Và giống như trên bản phác thảo này cũng tính toán khoảng cách giữa vĩ độ và kinh độ. Không giống như bản phác thảo ở trên, màn hình duy nhất này là với đèn LED Neopixel WS2812.

Các phép toán gần dòng 96, nhưng nếu không thì giống như trên. Vẫn có đầu ra nối tiếp nếu bạn muốn xem những gì đang xảy ra. Sketch này chỉ thực hiện tính toán vị trí và khoảng cách của ISS - nó không thực hiện dự đoán vượt qua hoặc có bao nhiêu người trong không gian.

* Cần lưu ý rằng khoảng cách ở đây tính bằng Dặm, có thể thay đổi nếu bạn muốn, nhưng bạn sẽ cần thực hiện thêm một số thay đổi cho các đơn vị của mình. *

Gần Dòng 116:

void setColor () {

if (distance = 1201) {colorDisplay (dải. Color (255, 0, 0), p);}

if (distance = 1151) {colorDisplay (strip. Color (255, 153, 0), p);} // với tôi thì trông màu vàng hơn

if (distance = 951) {colorDisplay (strip. Color (255, 255, 0), p);} // với tôi là màu xanh lục / màu vàng

if (khoảng cách <= 950) {colorDisplay (dải. Color (0, 255, 0), p);}

if (distance> = 1351) {colorDisplay (dải. Color (0, 0, 0), p);}

}

Các đơn vị tính bằng dặm, và nếu bạn cần đổi sang KM hoặc NM, bạn cũng sẽ muốn thay đổi các đường này.

Điều gì đang xảy ra ở đây bạn ạ, Ở độ cao 1350 dặm, ISS đang ở trên đường chân trời và bạn có thể bắt đầu nghe thấy các bộ phát đáp từ đài phát thanh - điều đó không tuyệt vời, và việc liên lạc tại thời điểm này thực sự không thể xảy ra. Đèn LED chuyển sang màu ĐỎ - đây là một hướng lên - ISS đang đến gần.

Sau một thời gian ngắn, hoặc nếu ISS nằm trong khoảng từ 1150 đến 1200 dặm, đèn LED sẽ chuyển sang màu cam - điều này thực sự trông giống màu vàng hơn nhưng nó hỗ trợ cho màu cam. - Ở 1150 dặm, bạn sẽ bắt đầu nghe được nhiều hơn một chút - giao tiếp hai chiều có thể vẫn không thể thực hiện được trên HT 5 watt.

Trong khoảng từ 950 đến 1150 dặm - Đèn LED sẽ chuyển sang màu vàng - bạn có cơ hội tốt để liên lạc - vẫn chưa tốt, nhưng ít nhất là có thể vào thời điểm này (Tôi nhìn màu vàng có vẻ xanh hơn màu vàng - vì vậy, một cái gì đó khác hoạt động trên)

Dưới 950 dặm, đèn LED sẽ có màu XANH LÁ vững chắc - và có thể thực hiện các tiếp điểm hai chiều.

Khi ISS di chuyển khỏi đèn LED sẽ chuyển từ Xanh lục sang Vàng sang Cam sang Đỏ và cuối cùng là TẮT.

Cần lưu ý ở đây, tất cả điều này xảy ra rất nhanh - hầu hết các đường chuyền trong khu vực của tôi kéo dài dưới 10 phút và thời gian tiếp xúc có thể sử dụng bình thường là dưới 5 phút.

Cũng cần lưu ý rằng ISS có thể thay đổi vị trí của nó và API có thể được cập nhật hoặc có thể không được cập nhật - vì vậy ngay cả khi bạn bật đèn xanh - bạn có thể không nghe thấy bất cứ điều gì.

** Việc vận hành thiết bị nghiệp dư cũng được thực hiện tùy chọn và tự nguyện, và trong khi họ cố gắng chạy thiết bị, sẽ có lúc họ phải tắt thiết bị vì có điện hoặc vì những việc họ cần làm. Luôn luôn là một ý kiến hay khi kiểm tra các trang web AMsat hoặc ARISS **

Bước 4: Mã PHP

Mã PHP
Mã PHP

Trong kho lưu trữ github, tôi đã bao gồm mã PHP của mình từ năm 2013.

Mã được thiết kế để chạy từ CLI (hoặc dòng lệnh). Đã lâu kể từ khi tôi viết những điều này nhưng tôi nghĩ yêu cầu duy nhất là phải bật các tiện ích mở rộng JSON.

Các tập lệnh vẫn hoạt động và nếu bạn muốn chạy chúng, hãy làm như vậy!

Đối với Người dùng Windows, tại đây có thông tin về cách cài đặt PHP

Đảm bảo cài đặt phiên bản CLI. Tôi nghĩ rằng khi bạn cài đặt, bạn có thể chọn những tiện ích mở rộng để bật.

Người dùng Linux phụ thuộc vào bản phân phối của bạn - tôi sử dụng bản phân phối dựa trên Ubuntu - và synap làm trình quản lý gói của tôi.

Bạn sẽ muốn php7.0-common, php7.0-json, php7.0-cli, php7.0-curl

Tôi không nghĩ rằng tôi đã sử dụng CURL với những cái này, vì vậy bạn có thể không cần cái đó. Phần còn lại nên được tìm thấy trong trình quản lý gói của bạn lựa chọn hoặc trên trang web

Hai trong số các tập lệnh sẽ cần được chỉnh sửa với vĩ độ và kinh độ của bạn - chúng không dài lắm và những gì cần thay đổi nằm ngay ở đầu tập lệnh. Chúng là Iss-location.php và Iss-pass-api.php

Iss-location.php có các lệnh gọi nháy nháy cũ của tôi vẫn còn trong đó - tôi không chắc những lệnh đó hoạt động nữa - nhưng bạn có thể thấy tôi đã thay đổi đèn LED giống như cách tôi làm với "Thông báo Eric" của mình. Tôi không nghĩ rằng họ đang gây ra bất kỳ vấn đề nào, nhưng bạn có thể muốn bình luận về họ.

Iss-pass-api.php sử dụng thời gian kỷ nguyên và cung cấp thời gian địa phương của các lần vượt qua được dự đoán. Thành thật mà nói, tôi thích phiên bản PHP của tập lệnh này hơn so với phiên bản DDuino (hiện chỉ có dự đoán UTC)

Phiên bản PHP cũng được thiết kế đẹp hơn để hiển thị - nhưng đó thực sự là một điều nhỏ.

Tập lệnh PHP cuối cùng là Iss-people.php - và nó sẽ hiển thị tên và không gian mà chúng đang sử dụng. Đó là tất cả những gì nó làm. (Và thông tin này không thường xuyên thay đổi)

Những điều cơ bản để chạy một tập lệnh PHP từ dòng lệnh là:

$ php Iss-people.php

Tệp PHP là tệp văn bản và có thể được mở bằng bất kỳ trình soạn thảo văn bản nào. Người dùng Windows Tôi nghĩ rằng tôi đã lưu chúng để chúng có cả dòng và ký tự xuống dòng. NẾU không thì https://www.editpadlite.com/ có thể phù hợp với họ.

Bước 5: Video và thêm thông tin ISS & Ham

Image
Image

Nhận Giấy phép Ham ở Hoa Kỳ:

Không ở Hoa Kỳ? Mỗi quốc gia có bộ quy tắc và hướng dẫn cấp phép riêng - hãy kiểm tra xem ai là người quản lý thông tin liên lạc của bạn (Ở Hoa Kỳ, đó là Ủy ban Truyền thông Liên bang FCC)

Tính toán khoảng cách, mang và hơn thế nữa giữa các điểm vĩ độ và kinh độ.

Điều này sẽ khó thực hiện hơn rất nhiều nếu không có các API rất hữu ích từ Open Notify

Cách nhìn thấy Trạm vũ trụ từ Mặt đất.

AMSAT Radio Amateur Satellite

Thông tin AMSAT trên Đài phát thanh trên ISS

Đài phát thanh nghiệp dư ARISS trên Trạm vũ trụ quốc tế

ISS Fan Club - Tần suất ISS

Mục nhập Wikipedia trên APRS

APRS.org

Bước 6: Kết luận…

Đây là một dự án thú vị, với phần cứng rất đơn giản.

Có một số điều tôi muốn thay đổi, nhưng nhìn chung tôi rất hài lòng với kết quả.

Những điều cần thay đổi:

1) Tìm ra cách để vượt qua dự đoán theo giờ địa phương, không phải UTC

2) Tìm số mã màu tốt hơn cho màu da cam và màu vàng.

3) Cập nhật để hoạt động với ESP32 X-board, với OLED và 4 Neopixels.

Nếu bạn thấy điều này hoặc bất kỳ dự án nào của tôi hữu ích hoặc thú vị, hãy ủng hộ tôi.

Bất cứ điều gì tôi nhận được đều đi mua nhiều bộ phận hơn và tạo ra nhiều dự án / tốt hơn.

www.patreon.com/kd8bxp

ko-fi.com/lfmiller

Đề xuất: